From 6761845f9977a3350759fb877df44cd8eaf3b700 Mon Sep 17 00:00:00 2001 From: Georg Hagen Date: Thu, 30 May 2024 09:53:07 +0200 Subject: [PATCH 1/5] Fix libjpeg-turbo linking on systems that only have shared libjpeg installed --- 3rdParty/libjpeg-turbo/CMakeLists.txt | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/3rdParty/libjpeg-turbo/CMakeLists.txt b/3rdParty/libjpeg-turbo/CMakeLists.txt index f88af99..162f036 100644 --- a/3rdParty/libjpeg-turbo/CMakeLists.txt +++ b/3rdParty/libjpeg-turbo/CMakeLists.txt @@ -11,20 +11,29 @@ else () ) execute_process( COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/deps_ljt - RESULT_VARIABLE build_result + RESULT_VARIABLE build_result ) - if (NOT ${build_result} EQUAL "0") - message(FATAL_ERROR "Failed to build libjpeg-turbo!") - endif() + if (NOT ${build_result} EQUAL "0") + message(FATAL_ERROR "Failed to build libjpeg-turbo!") + endif() set(libjpeg-turbo_BUILT "built libjpeg-turbo" CACHE INTERNAL ON) endif () function(LinkLibJpegTurbo TARGET) - if (libjpeg-turbo_BUILT) - list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/deps_ljt/INSTALL/lib/cmake) - endif() - find_package(libjpeg-turbo REQUIRED) - target_link_libraries(${TARGET} PUBLIC libjpeg-turbo::turbojpeg-static) + if (libjpeg-turbo_BUILT) + list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/deps_ljt/INSTALL/lib/cmake) + endif() + find_package(libjpeg-turbo REQUIRED) + message("${libjpeg-turbo_LIBRARIES}") + if (TARGET libjpeg-turbo::turbojpeg-static) + target_link_libraries(${TARGET} PUBLIC libjpeg-turbo::turbojpeg-static) + message("Linking static libjpeg-turbo") + elseif (TARGET libjpeg-turbo::turbojpeg) + target_link_libraries(${TARGET} PUBLIC libjpeg-turbo::turbojpeg) + message("Linking shared libjpeg-turbo") + else () + message(FATAL_ERROR "Neither static nor shared libjpeg-turbo exists") + endif () endfunction() \ No newline at end of file From ee50d1bb3d0d6039fef0382197742008b26fee6a Mon Sep 17 00:00:00 2001 From: Georg Hagen Date: Thu, 30 May 2024 09:53:29 +0200 Subject: [PATCH 2/5] Fix VS startup project --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a475c20..c574bbe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,4 +105,4 @@ LinkAssimp(openVulkanoCpp) LinkLibArchive(openVulkanoCpp) LinkLibJpegTurbo(openVulkanoCpp) -set(VS_STARTUP_PROJECT openVulkanoCpp) +set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT openVulkanoCpp) From 16f3ed63c579e61870cfa886f5c760bea9d3b912 Mon Sep 17 00:00:00 2001 From: Georg Hagen Date: Thu, 30 May 2024 09:54:15 +0200 Subject: [PATCH 3/5] Use static libs for zstd and lz4 --- 3rdParty/libarchive/CMakeLists.txt | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/3rdParty/libarchive/CMakeLists.txt b/3rdParty/libarchive/CMakeLists.txt index 10311a9..b61fed3 100644 --- a/3rdParty/libarchive/CMakeLists.txt +++ b/3rdParty/libarchive/CMakeLists.txt @@ -38,11 +38,13 @@ ExternalProject_Add(zstd BINARY_DIR zstd-build CMAKE_GENERATOR ${CMAKE_GENERATOR} CMAKE_ARGS - -DZSTD_BUILD_PROGRAMS:BOOL=OFF - -DBUILD_SHARED_LIBS:BOOL=OFF - -DCMAKE_BUILD_TYPE:STRING=Release - -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} - -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL + -DZSTD_BUILD_PROGRAMS:BOOL=OFF + -DZSTD_BUILD_SHARED:BOOL=OFF + -DBUILD_SHARED_LIBS:BOOL=OFF + -DZSTD_BUILD_STATIC:BOOL=ON + -DCMAKE_BUILD_TYPE:STRING=Release + -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} + -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL ) ExternalProject_Add(lz4 @@ -54,13 +56,13 @@ ExternalProject_Add(lz4 SOURCE_SUBDIR build/cmake CMAKE_GENERATOR ${CMAKE_GENERATOR} CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=OFF - -DLZ4_BUILD_CLI:BOOL=OFF - -DLZ4_BUILD_LEGACY_LZ4C:BOOL=OFF - -DLZ4_BUNDLE_MODE:BOOL=OFF - -DCMAKE_BUILD_TYPE:STRING=Release - -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} - -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL + -DBUILD_SHARED_LIBS:BOOL=OFF + -DLZ4_BUILD_CLI:BOOL=OFF + -DLZ4_BUILD_LEGACY_LZ4C:BOOL=OFF + -DLZ4_BUNDLE_MODE:BOOL=ON + -DCMAKE_BUILD_TYPE:STRING=Release + -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} + -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL ) ExternalProject_Add( From 1f7e8bda432649a63b6c36f5b6da301ea961978f Mon Sep 17 00:00:00 2001 From: Georg Hagen Date: Thu, 30 May 2024 10:49:03 +0200 Subject: [PATCH 4/5] Add function to automatically find dirs containing cmake configs --- cmake/Utils.cmake | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 cmake/Utils.cmake diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake new file mode 100644 index 0000000..c10f377 --- /dev/null +++ b/cmake/Utils.cmake @@ -0,0 +1,10 @@ +function(FindCmakeConfigDirs BASE_DIR OUTPUT_NAME) + file(GLOB_RECURSE ALL_CONFIGS "${BASE_DIR}/*[Cc]onfig.cmake") + set(PACKAGE_SUB_DIRS "") + foreach(CONF ${ALL_CONFIGS}) + get_filename_component(DIR_NAME "${CONF}" DIRECTORY) + list(APPEND PACKAGE_SUB_DIRS "${DIR_NAME}") + endforeach() + list(REMOVE_DUPLICATES PACKAGE_SUB_DIRS) + set(${OUTPUT_NAME} ${PACKAGE_SUB_DIRS} PARENT_SCOPE) +endfunction() \ No newline at end of file From d0ffceca986a7b62de38311d8f2f66e0ca5c32ab Mon Sep 17 00:00:00 2001 From: Georg Hagen Date: Thu, 30 May 2024 10:50:07 +0200 Subject: [PATCH 5/5] Make search for libjpeg-turbo more reliable --- 3rdParty/libjpeg-turbo/CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/3rdParty/libjpeg-turbo/CMakeLists.txt b/3rdParty/libjpeg-turbo/CMakeLists.txt index 162f036..4b6d661 100644 --- a/3rdParty/libjpeg-turbo/CMakeLists.txt +++ b/3rdParty/libjpeg-turbo/CMakeLists.txt @@ -1,4 +1,5 @@ include(FetchContent) +include(../../cmake/Utils.cmake) Find_Package(libjpeg-turbo QUIET) if (libjpeg-turbo_FOUND) @@ -23,10 +24,10 @@ endif () function(LinkLibJpegTurbo TARGET) if (libjpeg-turbo_BUILT) - list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/deps_ljt/INSTALL/lib/cmake) + FindCmakeConfigDirs("${CMAKE_BINARY_DIR}/deps_ljt/INSTALL/" CMAKE_PREFIX_PATH) endif() find_package(libjpeg-turbo REQUIRED) - message("${libjpeg-turbo_LIBRARIES}") + message("libjpeg-turbo was found in: ${libjpeg-turbo_DIR}") if (TARGET libjpeg-turbo::turbojpeg-static) target_link_libraries(${TARGET} PUBLIC libjpeg-turbo::turbojpeg-static) message("Linking static libjpeg-turbo")