aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRam Mohan <ram.mohan@ittiam.com>2024-03-29 04:00:19 +0530
committerDichenZhang1 <140119224+DichenZhang1@users.noreply.github.com>2024-04-01 09:00:23 -0700
commit2f45b472aa991efe051f74943dbc709652f0572e (patch)
tree25857603331338e185d7b5af047a47639e047a65
parentd934c4dab6421b1dc5690e688afbba77ab634269 (diff)
downloadlibultrahdr-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.txt91
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()