Build: Allow disabling tests/command-line tools

This is useful for downstream projects that include libjpeg-turbo via
ExternalProject_Add().

Closes #818
This commit is contained in:
DRC
2025-06-14 07:45:48 -04:00
parent 91b3d4be42
commit 942ac87e47
3 changed files with 154 additions and 99 deletions

View File

@@ -265,8 +265,18 @@ option(WITH_SIMD "Include SIMD extensions, if available for this platform"
TRUE) TRUE)
boolean_number(WITH_SIMD) boolean_number(WITH_SIMD)
option(WITH_TURBOJPEG option(WITH_TURBOJPEG
"Include the TurboJPEG API library and associated test programs" TRUE) "Include the TurboJPEG API library and associated command-line tools/test programs"
TRUE)
boolean_number(WITH_TURBOJPEG) boolean_number(WITH_TURBOJPEG)
option(WITH_TOOLS
"Build command-line tools (Disabling this disables WITH_TESTS)" TRUE)
boolean_number(WITH_TOOLS)
option(WITH_TESTS "Enable regression tests, and build associated test programs"
TRUE)
boolean_number(WITH_TESTS)
if(NOT WITH_TOOLS)
set(WITH_TESTS 0)
endif()
option(WITH_FUZZ "Build fuzz targets" FALSE) option(WITH_FUZZ "Build fuzz targets" FALSE)
macro(report_option var desc) macro(report_option var desc)
@@ -315,6 +325,8 @@ report_option(WITH_ARITH_ENC "Arithmetic encoding support")
report_option(WITH_TURBOJPEG "TurboJPEG API library") report_option(WITH_TURBOJPEG "TurboJPEG API library")
report_option(WITH_JAVA "TurboJPEG Java wrapper") report_option(WITH_JAVA "TurboJPEG Java wrapper")
report_option(WITH_TOOLS "Command-line tools")
report_option(WITH_TESTS "Regression tests")
if(NOT WITH_JPEG8) if(NOT WITH_JPEG8)
set(MEM_SRCDST_FUNCTIONS "global: jpeg_mem_dest; jpeg_mem_src;") set(MEM_SRCDST_FUNCTIONS "global: jpeg_mem_dest; jpeg_mem_src;")
@@ -754,24 +766,28 @@ if(WITH_TURBOJPEG)
LINK_FLAGS "${TJMAPFLAG}${TJMAPFILE}") LINK_FLAGS "${TJMAPFLAG}${TJMAPFILE}")
endif() endif()
add_executable(tjunittest src/tjunittest.c src/tjutil.c src/md5/md5.c if(WITH_TESTS)
src/md5/md5hl.c) add_executable(tjunittest src/tjunittest.c src/tjutil.c src/md5/md5.c
target_link_libraries(tjunittest turbojpeg) src/md5/md5hl.c)
target_link_libraries(tjunittest turbojpeg)
add_executable(tjbench src/tjbench.c src/tjutil.c) add_executable(tjcomp src/tjcomp.c)
target_link_libraries(tjbench turbojpeg) target_link_libraries(tjcomp turbojpeg)
if(UNIX)
target_link_libraries(tjbench m) add_executable(tjdecomp src/tjdecomp.c)
target_link_libraries(tjdecomp turbojpeg)
add_executable(tjtran src/tjtran.c)
target_link_libraries(tjtran turbojpeg)
endif() endif()
add_executable(tjcomp src/tjcomp.c) if(WITH_TOOLS)
target_link_libraries(tjcomp turbojpeg) add_executable(tjbench src/tjbench.c src/tjutil.c)
target_link_libraries(tjbench turbojpeg)
add_executable(tjdecomp src/tjdecomp.c) if(UNIX)
target_link_libraries(tjdecomp turbojpeg) target_link_libraries(tjbench m)
endif()
add_executable(tjtran src/tjtran.c) endif()
target_link_libraries(tjtran turbojpeg)
add_custom_target(tjdoc COMMAND doxygen -s ../doc/doxygen.config add_custom_target(tjdoc COMMAND doxygen -s ../doc/doxygen.config
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src) WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src)
@@ -785,54 +801,68 @@ if(WITH_TURBOJPEG)
set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg) set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg)
endif() endif()
add_executable(tjunittest-static src/tjunittest.c src/tjutil.c if(WITH_TESTS)
src/md5/md5.c src/md5/md5hl.c) add_executable(tjunittest-static src/tjunittest.c src/tjutil.c
target_link_libraries(tjunittest-static turbojpeg-static) src/md5/md5.c src/md5/md5hl.c)
target_link_libraries(tjunittest-static turbojpeg-static)
endif()
add_executable(tjbench-static src/tjbench.c src/tjutil.c) if(WITH_TOOLS)
target_link_libraries(tjbench-static turbojpeg-static) add_executable(tjbench-static src/tjbench.c src/tjutil.c)
if(UNIX) target_link_libraries(tjbench-static turbojpeg-static)
target_link_libraries(tjbench-static m) if(UNIX)
target_link_libraries(tjbench-static m)
endif()
endif() endif()
endif() endif()
endif() endif()
if(WIN32) if(WITH_TOOLS)
set(USE_SETMODE "-DUSE_SETMODE") if(WIN32)
set(USE_SETMODE "-DUSE_SETMODE")
endif()
set(CDJPEG_COMPILE_FLAGS
"-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED ${USE_SETMODE}")
endif() endif()
set(CDJPEG_COMPILE_FLAGS
"-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED ${USE_SETMODE}")
if(ENABLE_STATIC) if(ENABLE_STATIC)
add_executable(cjpeg-static src/cjpeg.c src/cdjpeg.c src/rdbmp.c src/rdgif.c if(WITH_TOOLS)
src/wrapper/rdppm-8.c src/wrapper/rdppm-12.c src/wrapper/rdppm-16.c add_executable(cjpeg-static src/cjpeg.c src/cdjpeg.c src/rdbmp.c
src/rdswitch.c src/rdtarga.c) src/rdgif.c
set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS src/wrapper/rdppm-8.c src/wrapper/rdppm-12.c src/wrapper/rdppm-16.c
${CDJPEG_COMPILE_FLAGS}) src/rdswitch.c src/rdtarga.c)
target_link_libraries(cjpeg-static jpeg-static) set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS
${CDJPEG_COMPILE_FLAGS})
target_link_libraries(cjpeg-static jpeg-static)
add_executable(djpeg-static src/djpeg.c src/cdjpeg.c add_executable(djpeg-static src/djpeg.c src/cdjpeg.c
src/wrapper/rdcolmap-8.c src/wrapper/rdcolmap-12.c src/wrapper/rdcolmap-8.c src/wrapper/rdcolmap-12.c
src/rdswitch.c src/wrbmp.c src/rdswitch.c src/wrbmp.c
src/wrapper/wrgif-8.c src/wrapper/wrgif-12.c src/wrapper/wrgif-8.c src/wrapper/wrgif-12.c
src/wrapper/wrppm-8.c src/wrapper/wrppm-12.c src/wrapper/wrppm-16.c src/wrapper/wrppm-8.c src/wrapper/wrppm-12.c src/wrapper/wrppm-16.c
src/wrtarga.c) src/wrtarga.c)
set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS
${CDJPEG_COMPILE_FLAGS}) ${CDJPEG_COMPILE_FLAGS})
target_link_libraries(djpeg-static jpeg-static) target_link_libraries(djpeg-static jpeg-static)
add_executable(jpegtran-static src/jpegtran.c src/cdjpeg.c src/rdswitch.c add_executable(jpegtran-static src/jpegtran.c src/cdjpeg.c src/rdswitch.c
src/transupp.c) src/transupp.c)
target_link_libraries(jpegtran-static jpeg-static) target_link_libraries(jpegtran-static jpeg-static)
set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS "${USE_SETMODE}") set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS
"${USE_SETMODE}")
endif()
add_executable(example-static src/example.c) if(WITH_TESTS)
target_link_libraries(example-static jpeg-static) add_executable(example-static src/example.c)
target_link_libraries(example-static jpeg-static)
endif()
endif() endif()
add_executable(rdjpgcom src/rdjpgcom.c) if(WITH_TOOLS)
add_executable(rdjpgcom src/rdjpgcom.c)
add_executable(wrjpgcom src/wrjpgcom.c) add_executable(wrjpgcom src/wrjpgcom.c)
endif()
############################################################################### ###############################################################################
@@ -843,6 +873,8 @@ if(WITH_FUZZ)
add_subdirectory(fuzz) add_subdirectory(fuzz)
endif() endif()
if(WITH_TESTS)
add_executable(strtest src/strtest.c) add_executable(strtest src/strtest.c)
add_subdirectory(src/md5) add_subdirectory(src/md5)
@@ -1954,6 +1986,8 @@ if(WITH_TURBOJPEG)
${CMAKE_CURRENT_BINARY_DIR}/test/tjtrantest) ${CMAKE_CURRENT_BINARY_DIR}/test/tjtrantest)
endif() endif()
endif() # WITH_TESTS
############################################################################### ###############################################################################
# INSTALLATION # INSTALLATION
@@ -1968,8 +2002,10 @@ if(WITH_TURBOJPEG)
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin) RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin)
install(TARGETS tjbench if(WITH_TOOLS)
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin) install(TARGETS tjbench
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin)
endif()
if(NOT CMAKE_VERSION VERSION_LESS "3.1" AND MSVC_LIKE AND if(NOT CMAKE_VERSION VERSION_LESS "3.1" AND MSVC_LIKE AND
CMAKE_C_LINKER_SUPPORTS_PDB) CMAKE_C_LINKER_SUPPORTS_PDB)
install(FILES "$<TARGET_PDB_FILE:turbojpeg>" install(FILES "$<TARGET_PDB_FILE:turbojpeg>"
@@ -1986,8 +2022,11 @@ if(WITH_TURBOJPEG)
else() else()
set(DIR ${CMAKE_CURRENT_BINARY_DIR}) set(DIR ${CMAKE_CURRENT_BINARY_DIR})
endif() endif()
install(PROGRAMS ${DIR}/tjbench-static${EXE} if(WITH_TOOLS)
DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin RENAME tjbench${EXE}) install(PROGRAMS ${DIR}/tjbench-static${EXE}
DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin
RENAME tjbench${EXE})
endif()
endif() endif()
endif() endif()
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/turbojpeg.h install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/turbojpeg.h
@@ -2004,17 +2043,22 @@ if(ENABLE_STATIC)
else() else()
set(DIR ${CMAKE_CURRENT_BINARY_DIR}) set(DIR ${CMAKE_CURRENT_BINARY_DIR})
endif() endif()
install(PROGRAMS ${DIR}/cjpeg-static${EXE} if(WITH_TOOLS)
DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin RENAME cjpeg${EXE}) install(PROGRAMS ${DIR}/cjpeg-static${EXE}
install(PROGRAMS ${DIR}/djpeg-static${EXE} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin RENAME cjpeg${EXE})
DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin RENAME djpeg${EXE}) install(PROGRAMS ${DIR}/djpeg-static${EXE}
install(PROGRAMS ${DIR}/jpegtran-static${EXE} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin RENAME djpeg${EXE})
DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin RENAME jpegtran${EXE}) install(PROGRAMS ${DIR}/jpegtran-static${EXE}
DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin
RENAME jpegtran${EXE})
endif()
endif() endif()
endif() endif()
install(TARGETS rdjpgcom wrjpgcom if(WITH_TOOLS)
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin) install(TARGETS rdjpgcom wrjpgcom
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin)
endif()
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.ijg install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.ijg
${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_SOURCE_DIR}/README.md
@@ -2036,12 +2080,14 @@ if(WITH_JAVA)
endif() endif()
if(UNIX OR MINGW) if(UNIX OR MINGW)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/cjpeg.1 if(WITH_TOOLS)
${CMAKE_CURRENT_SOURCE_DIR}/doc/djpeg.1 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/cjpeg.1
${CMAKE_CURRENT_SOURCE_DIR}/doc/jpegtran.1 ${CMAKE_CURRENT_SOURCE_DIR}/doc/djpeg.1
${CMAKE_CURRENT_SOURCE_DIR}/doc/rdjpgcom.1 ${CMAKE_CURRENT_SOURCE_DIR}/doc/jpegtran.1
${CMAKE_CURRENT_SOURCE_DIR}/doc/wrjpgcom.1 ${CMAKE_CURRENT_SOURCE_DIR}/doc/rdjpgcom.1
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT man) ${CMAKE_CURRENT_SOURCE_DIR}/doc/wrjpgcom.1
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT man)
endif()
endif() endif()
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libjpeg.pc install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libjpeg.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT lib) DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT lib)

View File

@@ -43,6 +43,7 @@ configure_file(release/makerpm.in pkgscripts/makerpm)
configure_file(release/rpm.spec.in pkgscripts/rpm.spec @ONLY) configure_file(release/rpm.spec.in pkgscripts/rpm.spec @ONLY)
add_custom_target(rpm pkgscripts/makerpm add_custom_target(rpm pkgscripts/makerpm
DEPENDS rdjpgcom wrjpgcom cjpeg djpeg jpegtran
SOURCES pkgscripts/makerpm) SOURCES pkgscripts/makerpm)
configure_file(release/makesrpm.in pkgscripts/makesrpm) configure_file(release/makesrpm.in pkgscripts/makesrpm)

View File

@@ -80,46 +80,54 @@ elseif(MINGW)
set_target_properties(jpeg PROPERTIES SUFFIX -${SO_MAJOR_VERSION}.dll) set_target_properties(jpeg PROPERTIES SUFFIX -${SO_MAJOR_VERSION}.dll)
endif() endif()
if(WIN32) if(WITH_TOOLS)
set(USE_SETMODE "-DUSE_SETMODE") if(WIN32)
set(USE_SETMODE "-DUSE_SETMODE")
endif()
set(CDJPEG_COMPILE_FLAGS
"-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED ${USE_SETMODE}")
add_executable(cjpeg ../src/cjpeg.c ../src/cdjpeg.c ../src/rdbmp.c
../src/rdgif.c
../src/wrapper/rdppm-8.c ../src/wrapper/rdppm-12.c
../src/wrapper/rdppm-16.c
../src/rdswitch.c ../src/rdtarga.c)
set_property(TARGET cjpeg PROPERTY COMPILE_FLAGS ${CDJPEG_COMPILE_FLAGS})
target_link_libraries(cjpeg jpeg)
add_executable(djpeg ../src/djpeg.c ../src/cdjpeg.c
../src/wrapper/rdcolmap-8.c ../src/wrapper/rdcolmap-12.c
../src/rdswitch.c ../src/wrbmp.c
../src/wrapper/wrgif-8.c ../src/wrapper/wrgif-12.c
../src/wrapper/wrppm-8.c ../src/wrapper/wrppm-12.c
../src/wrapper/wrppm-16.c
../src/wrtarga.c)
set_property(TARGET djpeg PROPERTY COMPILE_FLAGS ${CDJPEG_COMPILE_FLAGS})
target_link_libraries(djpeg jpeg)
add_executable(jpegtran ../src/jpegtran.c ../src/cdjpeg.c ../src/rdswitch.c
../src/transupp.c)
target_link_libraries(jpegtran jpeg)
set_property(TARGET jpegtran PROPERTY COMPILE_FLAGS "${USE_SETMODE}")
endif() endif()
set(CDJPEG_COMPILE_FLAGS
"-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED ${USE_SETMODE}")
add_executable(cjpeg ../src/cjpeg.c ../src/cdjpeg.c ../src/rdbmp.c if(WITH_TESTS)
../src/rdgif.c add_executable(example ../src/example.c)
../src/wrapper/rdppm-8.c ../src/wrapper/rdppm-12.c ../src/wrapper/rdppm-16.c target_link_libraries(example jpeg)
../src/rdswitch.c ../src/rdtarga.c)
set_property(TARGET cjpeg PROPERTY COMPILE_FLAGS ${CDJPEG_COMPILE_FLAGS})
target_link_libraries(cjpeg jpeg)
add_executable(djpeg ../src/djpeg.c ../src/cdjpeg.c add_executable(jcstest ../src/jcstest.c)
../src/wrapper/rdcolmap-8.c ../src/wrapper/rdcolmap-12.c target_link_libraries(jcstest jpeg)
../src/rdswitch.c ../src/wrbmp.c endif()
../src/wrapper/wrgif-8.c ../src/wrapper/wrgif-12.c
../src/wrapper/wrppm-8.c ../src/wrapper/wrppm-12.c ../src/wrapper/wrppm-16.c
../src/wrtarga.c)
set_property(TARGET djpeg PROPERTY COMPILE_FLAGS ${CDJPEG_COMPILE_FLAGS})
target_link_libraries(djpeg jpeg)
add_executable(jpegtran ../src/jpegtran.c ../src/cdjpeg.c ../src/rdswitch.c
../src/transupp.c)
target_link_libraries(jpegtran jpeg)
set_property(TARGET jpegtran PROPERTY COMPILE_FLAGS "${USE_SETMODE}")
add_executable(example ../src/example.c)
target_link_libraries(example jpeg)
add_executable(jcstest ../src/jcstest.c)
target_link_libraries(jcstest jpeg)
install(TARGETS jpeg EXPORT ${CMAKE_PROJECT_NAME}Targets install(TARGETS jpeg EXPORT ${CMAKE_PROJECT_NAME}Targets
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin) RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin)
install(TARGETS cjpeg djpeg jpegtran if(WITH_TOOLS)
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin) install(TARGETS cjpeg djpeg jpegtran
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin)
endif()
if(NOT CMAKE_VERSION VERSION_LESS "3.1" AND MSVC_LIKE AND if(NOT CMAKE_VERSION VERSION_LESS "3.1" AND MSVC_LIKE AND
CMAKE_C_LINKER_SUPPORTS_PDB) CMAKE_C_LINKER_SUPPORTS_PDB)
install(FILES "$<TARGET_PDB_FILE:jpeg>" install(FILES "$<TARGET_PDB_FILE:jpeg>"