diff options
author | Ram Mohan <ram.mohan@ittiam.com> | 2024-03-29 04:00:19 +0530 |
---|---|---|
committer | DichenZhang1 <140119224+DichenZhang1@users.noreply.github.com> | 2024-04-01 09:00:23 -0700 |
commit | 2f45b472aa991efe051f74943dbc709652f0572e (patch) | |
tree | 25857603331338e185d7b5af047a47639e047a65 | |
parent | d934c4dab6421b1dc5690e688afbba77ab634269 (diff) | |
download | libultrahdr-2f45b472aa991efe051f74943dbc709652f0572e.tar.gz |
Separate include folders to private and export sets
This is to add export set of ultrahdr target with PUBLIC parameter
so that its users can access them directly. Clients of the library
(sample app) need not to have access to private set
Also renamed some of the targets and vars
Test: Build
-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() |