@@ -246,10 +246,41 @@ option(WITH_MEM_SRCDST "Include in-memory source/destination manager functions w
246246boolean_number (WITH_MEM_SRCDST )
247247option (WITH_SIMD "Include SIMD extensions, if available for this platform" TRUE )
248248boolean_number (WITH_SIMD )
249- option (WITH_TURBOJPEG "Include the TurboJPEG API library and associated test programs" TRUE )
249+ option (WITH_TURBOJPEG "Include the TurboJPEG API library and associated test programs" FALSE )
250250boolean_number (WITH_TURBOJPEG )
251251option (WITH_FUZZ "Build fuzz targets" FALSE )
252252
253+ # MozJPEG build differences from upstream jpeg-turbo:
254+ # 1. WITH_TURBOJPEG is OFF by default.
255+ # 2. WITH_MOZPREFIX set to ON does the following:
256+ # * it adds a "moz" prefix to the libraries (libmozjpeg.so*, .a, .dll, etc.),
257+ # the utilities (mozcpjeg, mozjpegtran, etc.) and the man pages.
258+ # * It renames the pkg-config file mozjpeg.pc.
259+ # * It installs header files inside ${includedir}/mozjpeg/ which is properly
260+ # advertized in the pkg-config file.
261+ # This makes upstream jpeg-turbo and mozjpeg side-by-side installable and
262+ # gives the ability to know when you are building against mozjpeg in
263+ # particular.
264+ # 3. WITH_LIBJPEG_PKG_CONFIG will install both mozjpeg.pc and libjpeg.pc
265+ # (libraries are still prefixed yet these can be discovered when searching a
266+ # generic libjpeg with pkg-config).
267+ # 4. If WITH_MOZPREFIX is OFF, everything will be named generically without
268+ # prefix and headers installed in ${includedir}/.
269+ # WITH_LIBJPEG_PKG_CONFIG is ignored in this case.
270+ # WITH_MOZPREFIX is OFF by default on Windows and ON by default on other
271+ # OSes.
272+
273+ if (WIN32 )
274+ option (WITH_MOZPREFIX "Rename the library mozjpeg" FALSE )
275+ else ()
276+ option (WITH_MOZPREFIX "Rename the library mozjpeg" TRUE )
277+ endif ()
278+ option (WITH_LIBJPEG_PKG_CONFIG "Install libjpeg.pc additionally to mozjpeg.pc (ignored when WITH_MOZPREFIX=OFF)" FALSE )
279+
280+ if (WITH_MOZPREFIX)
281+ set (MOZPREFIX "moz" )
282+ endif ()
283+
253284macro (report_option var desc )
254285 if (${var} )
255286 message (STATUS "${desc} enabled (${var} = ${${var} })" )
@@ -645,10 +676,10 @@ if(ENABLE_SHARED)
645676endif ()
646677
647678if (ENABLE_STATIC)
648- add_library (jpeg-static STATIC ${JPEG_SOURCES} $<TARGET_OBJECTS :simd >
679+ add_library (${MOZPREFIX} jpeg-static STATIC ${JPEG_SOURCES} $<TARGET_OBJECTS :simd >
649680 ${SIMD_OBJS} )
650681 if (NOT MSVC )
651- set_target_properties (jpeg-static PROPERTIES OUTPUT_NAME jpeg )
682+ set_target_properties (${MOZPREFIX} jpeg-static PROPERTIES OUTPUT_NAME ${MOZPREFIX} jpeg )
652683 endif ()
653684endif ()
654685
@@ -754,12 +785,12 @@ else()
754785endif ()
755786
756787if (ENABLE_STATIC)
757- add_executable (cjpeg-static cjpeg.c cdjpeg.c rdgif.c rdppm.c rdjpeg.c rdswitch.c
788+ add_executable (${MOZPREFIX} cjpeg-static cjpeg.c cdjpeg.c rdgif.c rdppm.c rdjpeg.c rdswitch.c
758789 ${CJPEG_BMP_SOURCES} )
759- set_property (TARGET cjpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS} )
760- target_link_libraries (cjpeg-static jpeg-static )
790+ set_property (TARGET ${MOZPREFIX} cjpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS} )
791+ target_link_libraries (${MOZPREFIX} cjpeg-static ${MOZPREFIX} jpeg-static )
761792 if (UNIX )
762- target_link_libraries (cjpeg-static m )
793+ target_link_libraries (${MOZPREFIX} cjpeg-static m )
763794 endif ()
764795
765796 if (PNG_SUPPORTED)
@@ -779,30 +810,30 @@ if(ENABLE_STATIC)
779810 if (NOT APPLE )
780811 find_package (ZLIB REQUIRED )
781812 endif ()
782- target_include_directories (cjpeg-static PUBLIC ${PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} )
783- target_link_libraries (cjpeg-static ${PNG_LIBRARY} ${ZLIB_LIBRARY} )
813+ target_include_directories (${MOZPREFIX} cjpeg-static PUBLIC ${PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} )
814+ target_link_libraries (${MOZPREFIX} cjpeg-static ${PNG_LIBRARY} ${ZLIB_LIBRARY} )
784815 endif ()
785816
786- add_executable (djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrgif.c
817+ add_executable (${MOZPREFIX} djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrgif.c
787818 wrppm.c ${DJPEG_BMP_SOURCES} )
788- set_property (TARGET djpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS} )
789- target_link_libraries (djpeg-static jpeg-static )
819+ set_property (TARGET ${MOZPREFIX} djpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS} )
820+ target_link_libraries (${MOZPREFIX} djpeg-static ${MOZPREFIX} jpeg-static )
790821 if (UNIX )
791- target_link_libraries (djpeg-static m )
822+ target_link_libraries (${MOZPREFIX} djpeg-static m )
792823 endif ()
793824
794- add_executable (jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c )
795- target_link_libraries (jpegtran-static jpeg-static )
825+ add_executable (${MOZPREFIX} jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c )
826+ target_link_libraries (${MOZPREFIX} jpegtran-static ${MOZPREFIX} jpeg-static )
796827 if (UNIX )
797- target_link_libraries (jpegtran-static m )
828+ target_link_libraries (${MOZPREFIX} jpegtran-static m )
798829 endif ()
799830
800- set_property (TARGET jpegtran-static PROPERTY COMPILE_FLAGS "${USE_SETMODE} " )
831+ set_property (TARGET ${MOZPREFIX} jpegtran-static PROPERTY COMPILE_FLAGS "${USE_SETMODE} " )
801832endif ()
802833
803- add_executable (rdjpgcom rdjpgcom.c )
834+ add_executable (${MOZPREFIX} rdjpgcom rdjpgcom.c )
804835
805- add_executable (wrjpgcom wrjpgcom.c )
836+ add_executable (${MOZPREFIX} wrjpgcom wrjpgcom.c )
806837
807838
808839###############################################################################
@@ -1112,7 +1143,7 @@ foreach(libtype ${TEST_LIBTYPES})
11121143
11131144 macro (add_bittest PROG NAME ARGS OUTFILE INFILE MD5SUM )
11141145 add_test (${PROG} -${libtype}-${NAME}
1115- ${CMAKE_CROSSCOMPILING_EMULATOR} ${PROG}${suffix} ${ARGS}
1146+ ${CMAKE_CROSSCOMPILING_EMULATOR} ${MOZPREFIX}${ PROG}${suffix} ${ARGS}
11161147 -outfile ${OUTFILE} ${INFILE} )
11171148 add_test (${PROG} -${libtype}-${NAME}-cmp
11181149 ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5SUM} ${OUTFILE} )
@@ -1366,7 +1397,7 @@ foreach(libtype ${TEST_LIBTYPES})
13661397
13671398 # Context rows: Yes Intra-iMCU row: No iMCU row prefetch: No ENT: prog huff
13681399 add_test (cjpeg-${libtype}-420-islow-prog
1369- ${CMAKE_CROSSCOMPILING_EMULATOR} cjpeg${suffix} -dct int -prog
1400+ ${CMAKE_CROSSCOMPILING_EMULATOR} ${MOZPREFIX} cjpeg${suffix} -dct int -prog
13701401 -outfile testout_420_islow_prog.jpg ${TESTIMAGES} /testorig.ppm )
13711402 add_bittest (djpeg 420-islow-prog-crop62x62_71_71
13721403 "-dct;int;-crop;62x62+71+71;-ppm"
@@ -1383,15 +1414,15 @@ foreach(libtype ${TEST_LIBTYPES})
13831414
13841415 # Context rows: No Intra-iMCU row: Yes ENT: huff
13851416 add_test (cjpeg-${libtype}-444-islow
1386- ${CMAKE_CROSSCOMPILING_EMULATOR} cjpeg${suffix} -dct int -sample 1x1
1417+ ${CMAKE_CROSSCOMPILING_EMULATOR} ${MOZPREFIX} cjpeg${suffix} -dct int -sample 1x1
13871418 -outfile testout_444_islow.jpg ${TESTIMAGES} /testorig.ppm )
13881419 add_bittest (djpeg 444-islow-skip1_6 "-dct;int;-skip;1,6;-ppm"
13891420 testout_444_islow_skip1,6.ppm testout_444_islow.jpg
13901421 ${MD5_PPM_444_ISLOW_SKIP1_6} cjpeg-${libtype}-444-islow )
13911422
13921423 # Context rows: No Intra-iMCU row: No ENT: prog huff
13931424 add_test (cjpeg-${libtype}-444-islow-prog
1394- ${CMAKE_CROSSCOMPILING_EMULATOR} cjpeg${suffix} -dct int -prog -sample 1x1
1425+ ${CMAKE_CROSSCOMPILING_EMULATOR} ${MOZPREFIX} cjpeg${suffix} -dct int -prog -sample 1x1
13951426 -outfile testout_444_islow_prog.jpg ${TESTIMAGES} /testorig.ppm )
13961427 add_bittest (djpeg 444-islow-prog-crop98x98_13_13
13971428 "-dct;int;-crop;98x98+13+13;-ppm"
@@ -1527,7 +1558,7 @@ if(WITH_TURBOJPEG)
15271558endif ()
15281559
15291560if (ENABLE_STATIC)
1530- install (TARGETS jpeg-static EXPORT ${CMAKE_PROJECT_NAME} Targets
1561+ install (TARGETS ${MOZPREFIX} jpeg-static EXPORT ${CMAKE_PROJECT_NAME} Targets
15311562 INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
15321563 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} )
15331564 if (NOT ENABLE_SHARED)
@@ -1545,7 +1576,7 @@ if(ENABLE_STATIC)
15451576 endif ()
15461577endif ()
15471578
1548- install (TARGETS rdjpgcom wrjpgcom RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
1579+ install (TARGETS ${MOZPREFIX} rdjpgcom ${MOZPREFIX} wrjpgcom RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
15491580
15501581install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /README.ijg
15511582 ${CMAKE_CURRENT_SOURCE_DIR} /README.md ${CMAKE_CURRENT_SOURCE_DIR} /example.txt
@@ -1561,13 +1592,34 @@ endif()
15611592
15621593if (UNIX OR MINGW)
15631594 install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /cjpeg.1
1564- ${CMAKE_CURRENT_SOURCE_DIR} /djpeg.1 ${CMAKE_CURRENT_SOURCE_DIR} /jpegtran.1
1565- ${CMAKE_CURRENT_SOURCE_DIR} /rdjpgcom.1
1566- ${CMAKE_CURRENT_SOURCE_DIR} /wrjpgcom.1
1567- DESTINATION ${CMAKE_INSTALL_MANDIR} /man1)
1595+ DESTINATION ${CMAKE_INSTALL_MANDIR} /man1
1596+ RENAME ${MOZPREFIX} cjpeg.1)
1597+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /djpeg.1
1598+ DESTINATION ${CMAKE_INSTALL_MANDIR} /man1
1599+ RENAME ${MOZPREFIX} djpeg.1)
1600+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /jpegtran.1
1601+ DESTINATION ${CMAKE_INSTALL_MANDIR} /man1
1602+ RENAME ${MOZPREFIX} jpegtran.1)
1603+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /rdjpgcom.1
1604+ DESTINATION ${CMAKE_INSTALL_MANDIR} /man1
1605+ RENAME ${MOZPREFIX} rdjpgcom.1)
1606+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /wrjpgcom.1
1607+ DESTINATION ${CMAKE_INSTALL_MANDIR} /man1
1608+ RENAME ${MOZPREFIX} wrjpgcom.1)
1609+ endif ()
1610+
1611+ if (WITH_MOZPREFIX)
1612+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /pkgscripts/libjpeg.pc
1613+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig
1614+ RENAME mozjpeg.pc)
1615+ if (WITH_LIBJPEG_PKG_CONFIG)
1616+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /pkgscripts/libjpeg.pc
1617+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig)
1618+ endif ()
1619+ else ()
1620+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /pkgscripts/libjpeg.pc
1621+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig)
15681622endif ()
1569- install (FILES ${CMAKE_CURRENT_BINARY_DIR} /pkgscripts/libjpeg.pc
1570- DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig)
15711623if (WITH_TURBOJPEG)
15721624 install (FILES ${CMAKE_CURRENT_BINARY_DIR} /pkgscripts/libturbojpeg.pc
15731625 DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig)
@@ -1580,10 +1632,13 @@ install(EXPORT ${CMAKE_PROJECT_NAME}Targets
15801632 NAMESPACE ${CMAKE_PROJECT_NAME} ::
15811633 DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${CMAKE_PROJECT_NAME} )
15821634
1635+ if (WITH_MOZPREFIX)
1636+ set (MOZJPEG_INCLUDE_SUBDIR "${MOZPREFIX} jpeg" )
1637+ endif ()
15831638install (FILES ${CMAKE_CURRENT_BINARY_DIR} /jconfig.h
15841639 ${CMAKE_CURRENT_SOURCE_DIR} /jerror.h ${CMAKE_CURRENT_SOURCE_DIR} /jmorecfg.h
15851640 ${CMAKE_CURRENT_SOURCE_DIR} /jpeglib.h
1586- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
1641+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} / ${MOZJPEG_INCLUDE_SUBDIR} )
15871642
15881643include (cmakescripts/BuildPackages.cmake )
15891644
0 commit comments