Skip to content

Commit c872770

Browse files
author
Jehan
committed
Make mozjpeg as its own lib.
By default, mozjpeg will install with its own name, i.e. libmozjpeg.so|a|pc, etc. The public header files keep their name but are installed under include/mozjpeg/ (the pkg-config file will take care of providing proper build flags), this way no include gets broken. A new option WITH_LIBJPEG appears. Technically all it does is adding a libjpeg.pc because this is the modern way for software to find their dependencies and correct build/link flags. Anyone who wants to replace completely libjpeg with mozjpeg can therefore set WITH_LIBJPEG=on and this will be transparent.
1 parent d23e3fc commit c872770

File tree

4 files changed

+87
-56
lines changed

4 files changed

+87
-56
lines changed

CMakeLists.txt

Lines changed: 57 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ option(WITH_MEM_SRCDST "Include in-memory source/destination manager functions w
163163
boolean_number(WITH_MEM_SRCDST)
164164
option(WITH_SIMD "Include SIMD extensions, if available for this platform" TRUE)
165165
boolean_number(WITH_SIMD)
166+
option(WITH_LIBJPEG "Include standard libjpeg library" FALSE)
166167
option(WITH_TURBOJPEG "Include the TurboJPEG API library and associated test programs" TRUE)
167168
boolean_number(WITH_TURBOJPEG)
168169

@@ -569,10 +570,20 @@ if(ENABLE_SHARED)
569570
endif()
570571

571572
if(ENABLE_STATIC)
572-
add_library(jpeg-static STATIC ${JPEG_SOURCES} $<TARGET_OBJECTS:simd>
573+
add_library(mozjpeg-static STATIC ${JPEG_SOURCES} $<TARGET_OBJECTS:simd>
573574
${SIMD_OBJS})
574575
if(NOT MSVC)
575-
set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg)
576+
set_target_properties(mozjpeg-static PROPERTIES OUTPUT_NAME mozjpeg)
577+
endif()
578+
endif()
579+
580+
if(WITH_LIBJPEG)
581+
if(ENABLE_STATIC)
582+
add_library(jpeg-static STATIC ${JPEG_SOURCES} $<TARGET_OBJECTS:simd>
583+
${SIMD_OBJS})
584+
if(NOT MSVC)
585+
set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg)
586+
endif()
576587
endif()
577588
endif()
578589

@@ -672,12 +683,12 @@ else()
672683
endif()
673684

674685
if(ENABLE_STATIC)
675-
add_executable(cjpeg-static cjpeg.c cdjpeg.c rdgif.c rdppm.c rdjpeg.c rdswitch.c
686+
add_executable(mozcjpeg-static cjpeg.c cdjpeg.c rdgif.c rdppm.c rdjpeg.c rdswitch.c
676687
${CJPEG_BMP_SOURCES})
677-
set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
678-
target_link_libraries(cjpeg-static jpeg-static)
688+
set_property(TARGET mozcjpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
689+
target_link_libraries(mozcjpeg-static mozjpeg-static)
679690
if(UNIX)
680-
target_link_libraries(cjpeg-static m)
691+
target_link_libraries(mozcjpeg-static m)
681692
endif()
682693

683694
if(PNG_SUPPORTED)
@@ -697,30 +708,30 @@ if(ENABLE_STATIC)
697708
if (NOT APPLE)
698709
find_package(ZLIB REQUIRED)
699710
endif()
700-
target_include_directories(cjpeg-static PUBLIC ${PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
701-
target_link_libraries(cjpeg-static ${PNG_LIBRARY} ${ZLIB_LIBRARY})
711+
target_include_directories(mozcjpeg-static PUBLIC ${PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
712+
target_link_libraries(mozcjpeg-static ${PNG_LIBRARY} ${ZLIB_LIBRARY})
702713
endif()
703714

704-
add_executable(djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrgif.c
715+
add_executable(mozdjpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrgif.c
705716
wrppm.c ${DJPEG_BMP_SOURCES})
706-
set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
707-
target_link_libraries(djpeg-static jpeg-static)
717+
set_property(TARGET mozdjpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
718+
target_link_libraries(mozdjpeg-static mozjpeg-static)
708719
if(UNIX)
709-
target_link_libraries(djpeg-static m)
720+
target_link_libraries(mozdjpeg-static m)
710721
endif()
711722

712-
add_executable(jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c)
713-
target_link_libraries(jpegtran-static jpeg-static)
723+
add_executable(mozjpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c)
724+
target_link_libraries(mozjpegtran-static mozjpeg-static)
714725
if(UNIX)
715-
target_link_libraries(jpegtran-static m)
726+
target_link_libraries(mozjpegtran-static m)
716727
endif()
717728

718-
set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS "${USE_SETMODE}")
729+
set_property(TARGET mozjpegtran-static PROPERTY COMPILE_FLAGS "${USE_SETMODE}")
719730
endif()
720731

721-
add_executable(rdjpgcom rdjpgcom.c)
732+
add_executable(mozrdjpgcom rdjpgcom.c)
722733

723-
add_executable(wrjpgcom wrjpgcom.c)
734+
add_executable(mozwrjpgcom wrjpgcom.c)
724735

725736

726737
###############################################################################
@@ -1442,7 +1453,7 @@ if(WITH_TURBOJPEG)
14421453
endif()
14431454

14441455
if(ENABLE_STATIC)
1445-
install(TARGETS jpeg-static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
1456+
install(TARGETS mozjpeg-static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
14461457
if(NOT ENABLE_SHARED)
14471458
if(MSVC_IDE OR XCODE)
14481459
set(DIR "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}")
@@ -1458,7 +1469,7 @@ if(ENABLE_STATIC)
14581469
endif()
14591470
endif()
14601471

1461-
install(TARGETS rdjpgcom wrjpgcom RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1472+
install(TARGETS mozrdjpgcom mozwrjpgcom RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
14621473

14631474
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.ijg
14641475
${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_SOURCE_DIR}/example.txt
@@ -1474,19 +1485,37 @@ endif()
14741485

14751486
if(UNIX OR MINGW)
14761487
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cjpeg.1
1477-
${CMAKE_CURRENT_SOURCE_DIR}/djpeg.1 ${CMAKE_CURRENT_SOURCE_DIR}/jpegtran.1
1478-
${CMAKE_CURRENT_SOURCE_DIR}/rdjpgcom.1
1479-
${CMAKE_CURRENT_SOURCE_DIR}/wrjpgcom.1
1480-
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
1481-
endif()
1482-
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libjpeg.pc
1483-
${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libturbojpeg.pc
1488+
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
1489+
RENAME mozcjpeg.1)
1490+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/djpeg.1
1491+
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
1492+
RENAME mozdjpeg.1)
1493+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/jpegtran.1
1494+
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
1495+
RENAME mozjpegtran.1)
1496+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/rdjpgcom.1
1497+
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
1498+
RENAME mozrdjpgcom.1)
1499+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/wrjpgcom.1
1500+
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
1501+
RENAME mozwrjpgcom.1)
1502+
endif()
1503+
1504+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/mozjpeg.pc
14841505
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
1506+
if(WITH_LIBJPEG)
1507+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libjpeg.pc
1508+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
1509+
endif()
1510+
if(WITH_TURBOJPEG)
1511+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libturbojpeg.pc
1512+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
1513+
endif()
14851514

14861515
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/jconfig.h
14871516
${CMAKE_CURRENT_SOURCE_DIR}/jerror.h ${CMAKE_CURRENT_SOURCE_DIR}/jmorecfg.h
14881517
${CMAKE_CURRENT_SOURCE_DIR}/jpeglib.h
1489-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
1518+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mozjpeg)
14901519

14911520
include(cmakescripts/BuildPackages.cmake)
14921521

cmakescripts/BuildPackages.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,8 @@ configure_file(release/maketarball.in pkgscripts/maketarball)
177177
add_custom_target(tarball sh pkgscripts/maketarball
178178
SOURCES pkgscripts/maketarball)
179179

180+
configure_file(release/libjpeg.pc.in pkgscripts/mozjpeg.pc @ONLY)
181+
180182
configure_file(release/libjpeg.pc.in pkgscripts/libjpeg.pc @ONLY)
181183

182184
configure_file(release/libturbojpeg.pc.in pkgscripts/libturbojpeg.pc @ONLY)

release/libjpeg.pc.in

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ libdir=@CMAKE_INSTALL_FULL_LIBDIR@
44
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
55

66
Name: libjpeg
7-
Description: A SIMD-accelerated JPEG codec that provides the libjpeg API
7+
Description: MozJPEG's improvements of libjpeg-turbo providing the libjpeg API
88
Version: @VERSION@
9-
Libs: -L${libdir} -ljpeg
10-
Cflags: -I${includedir}
9+
Libs: -L${libdir} -lmozjpeg
10+
Cflags: -I${includedir}/mozjpeg/

sharedlib/CMakeLists.txt

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,37 +30,37 @@ endif()
3030

3131
if(WIN32)
3232
if(WITH_MEM_SRCDST)
33-
set(DEFFILE ../win/jpeg${SO_MAJOR_VERSION}-memsrcdst.def)
33+
set(DEFFILE ../win/mozjpeg${SO_MAJOR_VERSION}-memsrcdst.def)
3434
else()
35-
set(DEFFILE ../win/jpeg${SO_MAJOR_VERSION}.def)
35+
set(DEFFILE ../win/mozjpeg${SO_MAJOR_VERSION}.def)
3636
endif()
3737
endif()
38-
add_library(jpeg SHARED ${JPEG_SRCS} ${DEFFILE} $<TARGET_OBJECTS:simd>
38+
add_library(mozjpeg SHARED ${JPEG_SRCS} ${DEFFILE} $<TARGET_OBJECTS:simd>
3939
${SIMD_OBJS})
4040
if(UNIX)
41-
target_link_libraries(jpeg m)
41+
target_link_libraries(mozjpeg m)
4242
endif()
4343

44-
set_target_properties(jpeg PROPERTIES SOVERSION ${SO_MAJOR_VERSION}
44+
set_target_properties(mozjpeg PROPERTIES SOVERSION ${SO_MAJOR_VERSION}
4545
VERSION ${SO_MAJOR_VERSION}.${SO_AGE}.${SO_MINOR_VERSION})
4646
if(APPLE AND (NOT CMAKE_OSX_DEPLOYMENT_TARGET OR
4747
CMAKE_OSX_DEPLOYMENT_TARGET VERSION_GREATER 10.4))
4848
if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG)
4949
set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
5050
endif()
51-
set_target_properties(jpeg PROPERTIES MACOSX_RPATH 1)
51+
set_target_properties(mozjpeg PROPERTIES MACOSX_RPATH 1)
5252
endif()
5353
if(MAPFLAG)
54-
set_target_properties(jpeg PROPERTIES
54+
set_target_properties(mozjpeg PROPERTIES
5555
LINK_FLAGS "${MAPFLAG}${CMAKE_CURRENT_BINARY_DIR}/../libjpeg.map")
5656
endif()
5757
if(MSVC)
58-
set_target_properties(jpeg PROPERTIES
59-
RUNTIME_OUTPUT_NAME jpeg${SO_MAJOR_VERSION})
58+
set_target_properties(mozjpeg PROPERTIES
59+
RUNTIME_OUTPUT_NAME mozjpeg${SO_MAJOR_VERSION})
6060
# The jsimd_*.c file is built using /MT, so this prevents a linker warning.
61-
set_target_properties(jpeg PROPERTIES LINK_FLAGS "/NODEFAULTLIB:LIBCMT /NODEFAULTLIB:LIBCMTD")
61+
set_target_properties(mozjpeg PROPERTIES LINK_FLAGS "/NODEFAULTLIB:LIBCMT /NODEFAULTLIB:LIBCMTD")
6262
elseif(MINGW)
63-
set_target_properties(jpeg PROPERTIES SUFFIX -${SO_MAJOR_VERSION}.dll)
63+
set_target_properties(mozjpeg PROPERTIES SUFFIX -${SO_MAJOR_VERSION}.dll)
6464
endif()
6565

6666
if(WIN32)
@@ -80,10 +80,10 @@ else()
8080
endif()
8181
endif()
8282

83-
add_executable(cjpeg ../cjpeg.c ../cdjpeg.c ../rdgif.c ../rdppm.c ../rdjpeg.c
83+
add_executable(mozcjpeg ../cjpeg.c ../cdjpeg.c ../rdgif.c ../rdppm.c ../rdjpeg.c
8484
../rdswitch.c ${CJPEG_BMP_SOURCES})
85-
set_property(TARGET cjpeg PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
86-
target_link_libraries(cjpeg jpeg)
85+
set_property(TARGET mozcjpeg PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
86+
target_link_libraries(mozcjpeg mozjpeg)
8787

8888
if(PNG_SUPPORTED)
8989
# to avoid finding static library from CMake cache
@@ -96,28 +96,28 @@ if(PNG_SUPPORTED)
9696

9797
find_package(PNG 1.6 REQUIRED)
9898
find_package(ZLIB REQUIRED)
99-
target_include_directories(cjpeg PUBLIC ${PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
100-
target_link_libraries(cjpeg ${PNG_LIBRARY} ${ZLIB_LIBRARY})
99+
target_include_directories(mozcjpeg PUBLIC ${PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
100+
target_link_libraries(mozcjpeg ${PNG_LIBRARY} ${ZLIB_LIBRARY})
101101
endif()
102102

103-
add_executable(djpeg ../djpeg.c ../cdjpeg.c ../rdcolmap.c ../rdswitch.c
103+
add_executable(mozdjpeg ../djpeg.c ../cdjpeg.c ../rdcolmap.c ../rdswitch.c
104104
../wrgif.c ../wrppm.c ${DJPEG_BMP_SOURCES})
105-
set_property(TARGET djpeg PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
106-
target_link_libraries(djpeg jpeg)
105+
set_property(TARGET mozdjpeg PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
106+
target_link_libraries(mozdjpeg mozjpeg)
107107

108-
add_executable(jpegtran ../jpegtran.c ../cdjpeg.c ../rdswitch.c ../transupp.c)
109-
target_link_libraries(jpegtran jpeg)
110-
set_property(TARGET jpegtran PROPERTY COMPILE_FLAGS "${USE_SETMODE}")
108+
add_executable(mozjpegtran ../jpegtran.c ../cdjpeg.c ../rdswitch.c ../transupp.c)
109+
target_link_libraries(mozjpegtran mozjpeg)
110+
set_property(TARGET mozjpegtran PROPERTY COMPILE_FLAGS "${USE_SETMODE}")
111111

112112
add_executable(jcstest ../jcstest.c)
113-
target_link_libraries(jcstest jpeg)
113+
target_link_libraries(jcstest mozjpeg)
114114

115-
install(TARGETS jpeg cjpeg djpeg jpegtran
115+
install(TARGETS mozjpeg mozcjpeg mozdjpeg mozjpegtran
116116
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
117117
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
118118
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
119119
if(NOT CMAKE_VERSION VERSION_LESS "3.1" AND MSVC AND
120120
CMAKE_C_LINKER_SUPPORTS_PDB)
121-
install(FILES "$<TARGET_PDB_FILE:jpeg>"
121+
install(FILES "$<TARGET_PDB_FILE:mozjpeg>"
122122
DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL)
123123
endif()

0 commit comments

Comments
 (0)