aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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()