diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 91 |
1 files changed, 48 insertions, 43 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index b7c789f..aa14f8b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,12 +49,13 @@ endif() ########################################################### # Directories ########################################################### -set(SOURCE_DIR ${CMAKE_SOURCE_DIR}/lib) -set(THIRD_PARTY_DIR ${CMAKE_SOURCE_DIR}/third_party) -set(TESTS_DIR ${CMAKE_SOURCE_DIR}/tests) -set(BENCHMARK_DIR ${CMAKE_SOURCE_DIR}/benchmark) -set(FUZZERS_DIR ${CMAKE_SOURCE_DIR}/fuzzer) -set(EXAMPLES_DIR ${CMAKE_SOURCE_DIR}/examples) +set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib) +set(THIRD_PARTY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party) +set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests) +set(BENCHMARK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/benchmark) +set(FUZZERS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/fuzzer) +set(EXAMPLES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/examples) +set(EXPORT_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR) message(WARNING "Selected in-source build. Preferably, create a build/ directory and build from there.") @@ -81,16 +82,17 @@ option_if_not_defined(UHDR_BUILD_EXAMPLES "Build examples " TRUE) option_if_not_defined(UHDR_BUILD_TESTS "Build unit tests " FALSE) option_if_not_defined(UHDR_BUILD_BENCHMARK "Build benchmark " FALSE) option_if_not_defined(UHDR_BUILD_FUZZERS "Build fuzzers " FALSE) +option_if_not_defined(UHDR_BUILD_DEPS "Build deps and not use pre-installed packages " FALSE) option_if_not_defined(UHDR_ENABLE_LOGS "Build with verbose logging " FALSE) -option_if_not_defined(UHDR_BUILD_ALWAYS "Build all deps and not use pre-installed packages " FALSE) if(UHDR_BUILD_BENCHMARK AND WIN32) message(FATAL_ERROR "Building benchmarks on current platform not supported") endif() +# side effects if(UHDR_BUILD_FUZZERS) - message(STATUS "Enforcing UHDR_BUILD_ALWAYS to TRUE") - set(UHDR_BUILD_ALWAYS TRUE) + set(UHDR_BUILD_DEPS TRUE) # for fuzz testing its best to build all dependencies from source. + # This is to instrument dependencies libs as well endif() ########################################################### @@ -187,7 +189,7 @@ set(UHDR_CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${UHDR_COMPILE_FLAGS_STR}") set(UHDR_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${UHDR_COMPILE_FLAGS_STR}") # libjpeg-turbo -if(NOT UHDR_BUILD_ALWAYS) +if(NOT UHDR_BUILD_DEPS) find_package(JPEG) endif() if(NOT JPEG_FOUND) @@ -306,42 +308,45 @@ set_property(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ########################################################### # File Lists ########################################################### -file(GLOB UHDR_LIB_LIST "${SOURCE_DIR}/src/*.cpp") -file(GLOB UHDR_TEST_LIST "${TESTS_DIR}/*.cpp") -file(GLOB UHDR_BM_LIST "${BENCHMARK_DIR}/*.cpp") -file(GLOB IMAGE_IO_LIST "${THIRD_PARTY_DIR}/image_io/src/**/*.cc") +file(GLOB UHDR_CORE_SRCS_LIST "${SOURCE_DIR}/src/*.cpp") +file(GLOB UHDR_TEST_SRCS_LIST "${TESTS_DIR}/*.cpp") +file(GLOB UHDR_BM_SRCS_LIST "${BENCHMARK_DIR}/*.cpp") +file(GLOB IMAGE_IO_SRCS_LIST "${THIRD_PARTY_DIR}/image_io/src/**/*.cc") -set(COMMON_INCLUDE_LIST ${CMAKE_SOURCE_DIR} ${SOURCE_DIR}/include/ ${JPEG_INCLUDE_DIRS}) +set(PRIVATE_INCLUDE_DIR ${SOURCE_DIR}/include/ ${JPEG_INCLUDE_DIRS}) set(COMMON_LIBS_LIST ${JPEG_LIBRARIES} Threads::Threads) ########################################################### # Targets ########################################################### -add_library(image_io STATIC ${IMAGE_IO_LIST}) -target_include_directories(image_io PRIVATE +set(IMAGEIO_TARGET_NAME image_io) +add_library(${IMAGEIO_TARGET_NAME} STATIC ${IMAGE_IO_SRCS_LIST}) +target_include_directories(${IMAGEIO_TARGET_NAME} PRIVATE "${THIRD_PARTY_DIR}/image_io/includes" "${THIRD_PARTY_DIR}/image_io/src/modp_b64" "${THIRD_PARTY_DIR}/image_io/src/modp_b64/modp_b64") -add_library(ultrahdr STATIC ${UHDR_LIB_LIST}) +set(UHDR_CORE_LIB_NAME core) +add_library(${UHDR_CORE_LIB_NAME} STATIC ${UHDR_CORE_SRCS_LIST}) if(NOT JPEG_FOUND) - add_dependencies(ultrahdr ${JPEGTURBO_TARGET_NAME}) + add_dependencies(${UHDR_CORE_LIB_NAME} ${JPEGTURBO_TARGET_NAME}) endif() -#target_compile_options(ultrahdr PRIVATE -Wall -Wextra -Wpedantic) -target_include_directories(ultrahdr PRIVATE - ${COMMON_INCLUDE_LIST} +#target_compile_options(${UHDR_CORE_LIB_NAME} PRIVATE -Wall -Wextra -Wpedantic) +target_include_directories(${UHDR_CORE_LIB_NAME} PRIVATE + ${PRIVATE_INCLUDE_DIR} "${THIRD_PARTY_DIR}/image_io/includes/" ) -target_link_libraries(ultrahdr PRIVATE ${COMMON_LIBS_LIST} image_io) +target_include_directories(${UHDR_CORE_LIB_NAME} PUBLIC ${EXPORT_INCLUDE_DIR}) + +target_link_libraries(${UHDR_CORE_LIB_NAME} PRIVATE ${COMMON_LIBS_LIST} ${IMAGEIO_TARGET_NAME}) if(UHDR_BUILD_EXAMPLES) add_executable(ultrahdr_app "${EXAMPLES_DIR}/ultrahdr_app.cpp") - add_dependencies(ultrahdr_app ultrahdr) - target_include_directories(ultrahdr_app PRIVATE ${COMMON_INCLUDE_LIST}) + add_dependencies(ultrahdr_app ${UHDR_CORE_LIB_NAME}) if(UHDR_BUILD_FUZZERS) target_link_options(ultrahdr_app PRIVATE -fsanitize=fuzzer-no-link) endif() - target_link_libraries(ultrahdr_app PRIVATE ultrahdr) + target_link_libraries(ultrahdr_app PRIVATE ${UHDR_CORE_LIB_NAME}) endif() if(UHDR_BUILD_TESTS OR UHDR_BUILD_BENCHMARK) @@ -361,30 +366,30 @@ if(UHDR_BUILD_TESTS OR UHDR_BUILD_BENCHMARK) endif() if(UHDR_BUILD_TESTS) - add_executable(ultrahdr_unit_test ${UHDR_TEST_LIST}) - add_dependencies(ultrahdr_unit_test ${GTEST_TARGET_NAME} ultrahdr) + add_executable(ultrahdr_unit_test ${UHDR_TEST_SRCS_LIST}) + add_dependencies(ultrahdr_unit_test ${GTEST_TARGET_NAME} ${UHDR_CORE_LIB_NAME}) target_include_directories(ultrahdr_unit_test PRIVATE - ${COMMON_INCLUDE_LIST} + ${PRIVATE_INCLUDE_DIR} ${GTEST_INCLUDE_DIRS} ) if(UHDR_BUILD_FUZZERS) target_link_options(ultrahdr_unit_test PRIVATE -fsanitize=fuzzer-no-link) endif() - target_link_libraries(ultrahdr_unit_test ultrahdr ${GTEST_BOTH_LIBRARIES}) + target_link_libraries(ultrahdr_unit_test ${UHDR_CORE_LIB_NAME} ${GTEST_BOTH_LIBRARIES}) add_test(NAME UHDRUnitTests, COMMAND ultrahdr_unit_test) endif() if(UHDR_BUILD_BENCHMARK) - add_executable(ultrahdr_bm ${UHDR_BM_LIST}) - add_dependencies(ultrahdr_bm ${BM_TARGET_NAME} ultrahdr) + add_executable(ultrahdr_bm ${UHDR_BM_SRCS_LIST}) + add_dependencies(ultrahdr_bm ${BM_TARGET_NAME} ${UHDR_CORE_LIB_NAME}) target_include_directories(ultrahdr_bm PRIVATE - ${COMMON_INCLUDE_LIST} + ${PRIVATE_INCLUDE_DIR} ${BENCHMARK_INCLUDE_DIR} ) if(UHDR_BUILD_FUZZERS) target_link_options(ultrahdr_bm PRIVATE -fsanitize=fuzzer-no-link) endif() - target_link_libraries(ultrahdr_bm ultrahdr ${BENCHMARK_LIBRARIES}) + target_link_libraries(ultrahdr_bm ${UHDR_CORE_LIB_NAME} ${BENCHMARK_LIBRARIES}) set(RES_FILE "${TESTS_DIR}/data/UltrahdrBenchmarkTestRes-1.0.zip") set(RES_FILE_MD5SUM "96651c5c07505c37aa017c57f480e6c1") @@ -424,24 +429,24 @@ endif() if(UHDR_BUILD_FUZZERS) add_executable(ultrahdr_enc_fuzzer ${FUZZERS_DIR}/ultrahdr_enc_fuzzer.cpp) - add_dependencies(ultrahdr_enc_fuzzer ultrahdr) - target_include_directories(ultrahdr_enc_fuzzer PRIVATE ${COMMON_INCLUDE_LIST}) + add_dependencies(ultrahdr_enc_fuzzer ${UHDR_CORE_LIB_NAME}) + target_include_directories(ultrahdr_enc_fuzzer PRIVATE ${PRIVATE_INCLUDE_DIR}) if(DEFINED ENV{LIB_FUZZING_ENGINE}) target_link_options(ultrahdr_enc_fuzzer PRIVATE $ENV{LIB_FUZZING_ENGINE}) else() target_link_options(ultrahdr_enc_fuzzer PRIVATE -fsanitize=fuzzer) endif() - target_link_libraries(ultrahdr_enc_fuzzer ultrahdr) + target_link_libraries(ultrahdr_enc_fuzzer ${UHDR_CORE_LIB_NAME}) add_executable(ultrahdr_dec_fuzzer ${FUZZERS_DIR}/ultrahdr_dec_fuzzer.cpp) - add_dependencies(ultrahdr_dec_fuzzer ultrahdr) - target_include_directories(ultrahdr_dec_fuzzer PRIVATE ${COMMON_INCLUDE_LIST}) + add_dependencies(ultrahdr_dec_fuzzer ${UHDR_CORE_LIB_NAME}) + target_include_directories(ultrahdr_dec_fuzzer PRIVATE ${PRIVATE_INCLUDE_DIR}) if(DEFINED ENV{LIB_FUZZING_ENGINE}) target_link_options(ultrahdr_dec_fuzzer PRIVATE $ENV{LIB_FUZZING_ENGINE}) else() target_link_options(ultrahdr_dec_fuzzer PRIVATE -fsanitize=fuzzer) endif() - target_link_libraries(ultrahdr_dec_fuzzer ultrahdr) + target_link_libraries(ultrahdr_dec_fuzzer ${UHDR_CORE_LIB_NAME}) endif() ########################################################### @@ -542,11 +547,11 @@ function(combine_static_libs output_lib list_of_targets list_of_addl_libs) endif() endfunction() -if(UHDR_BUILD_ALWAYS) - set(INPUT_TARGETS ultrahdr image_io ${JPEGTURBO_TARGET_NAME}) +if(UHDR_BUILD_DEPS) + set(INPUT_TARGETS ${UHDR_CORE_LIB_NAME} ${IMAGEIO_TARGET_NAME} ${JPEGTURBO_TARGET_NAME}) set(ADDL_LIBS ${JPEG_LIBRARIES}) else() - set(INPUT_TARGETS ultrahdr image_io) + set(INPUT_TARGETS ${UHDR_CORE_LIB_NAME} ${IMAGEIO_TARGET_NAME}) set(ADDL_LIBS "") endif() |