From 833face4f537344e0ae1ef76581fb642e02b35e8 Mon Sep 17 00:00:00 2001 From: Pascal Palenda <pascal.palenda@akustik.rwth-aachen.de> Date: Mon, 13 Feb 2023 14:44:33 +0100 Subject: [PATCH] Add script to download common libraries --- src/GetCommonLibraries.cmake | 60 +++++++++++++++++++ src/Index.cmake | 2 + .../patches/change_install_dir.patch | 13 ++++ .../patches/source_group_rel_path.patch | 17 ++++++ 4 files changed, 92 insertions(+) create mode 100644 src/GetCommonLibraries.cmake create mode 100644 src/resources/patches/change_install_dir.patch create mode 100644 src/resources/patches/source_group_rel_path.patch diff --git a/src/GetCommonLibraries.cmake b/src/GetCommonLibraries.cmake new file mode 100644 index 0000000..e14adad --- /dev/null +++ b/src/GetCommonLibraries.cmake @@ -0,0 +1,60 @@ +include_guard () + +CPMAddPackage ( + NAME GrpSrcByDir + GITHUB_REPOSITORY TheLartians/GroupSourcesByFolder.cmake + VERSION 1.0 + DOWNLOAD_ONLY YES # Delay the inclusion of this to after the patch +) + +if (GrpSrcByDir_ADDED) + find_package (Git 2.29 REQUIRED) + execute_process ( + COMMAND ${GIT_EXECUTABLE} apply --check + "${CMAKE_CURRENT_LIST_DIR}/resources/patches/source_group_rel_path.patch" + RESULT_VARIABLE patch_ok + WORKING_DIRECTORY ${GrpSrcByDir_SOURCE_DIR} + ERROR_QUIET + ) + + if (${patch_ok} STREQUAL "0") + execute_process ( + COMMAND ${GIT_EXECUTABLE} apply --whitespace=fix + "${CMAKE_CURRENT_LIST_DIR}/patches/source_group_rel_path.patch" + RESULT_VARIABLE patch_ok + WORKING_DIRECTORY ${GrpSrcByDir_SOURCE_DIR} + ) + endif () + + # The file is now pathced, add it + add_subdirectory (${GrpSrcByDir_SOURCE_DIR} ${GrpSrcByDir_BINARY_DIR}) +endif () + +CPMAddPackage ( + NAME PkgProj + VERSION 1.10.0 + GITHUB_REPOSITORY TheLartians/PackageProject.cmake + DOWNLOAD_ONLY YES # Delay the inclusion of this to after the patch +) + +if (PkgProj_ADDED) + find_package (Git 2.29 REQUIRED) + execute_process ( + COMMAND ${GIT_EXECUTABLE} apply --check "${CMAKE_CURRENT_LIST_DIR}/resources/patches/change_install_dir.patch" + RESULT_VARIABLE patch_ok + WORKING_DIRECTORY ${PkgProj_SOURCE_DIR} + ERROR_QUIET + ) + + if (${patch_ok} STREQUAL "0") + execute_process ( + COMMAND ${GIT_EXECUTABLE} apply --whitespace=fix + "${CMAKE_CURRENT_LIST_DIR}/patches/change_install_dir.patch" + RESULT_VARIABLE patch_ok + WORKING_DIRECTORY ${PkgProj_SOURCE_DIR} + ) + endif () + + # The file is now pathced, add it + add_subdirectory (${PkgProj_SOURCE_DIR} ${PkgProj_BINARY_DIR}) +endif () diff --git a/src/Index.cmake b/src/Index.cmake index 5c46147..ec136fc 100644 --- a/src/Index.cmake +++ b/src/Index.cmake @@ -20,3 +20,5 @@ if (NOT (EXISTS ${CPM_MODULE_LOCATION})) endif () include (${CPM_MODULE_LOCATION}) + +include (${CMAKE_CURRENT_LIST_DIR}/GetCommonLibraries.cmake) diff --git a/src/resources/patches/change_install_dir.patch b/src/resources/patches/change_install_dir.patch new file mode 100644 index 0000000..6e82282 --- /dev/null +++ b/src/resources/patches/change_install_dir.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 125d673..998cf1e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -126,7 +126,7 @@ function(packageProject) + NAMELINK_COMPONENT "${PROJECT_NAME}_Development" + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}${PROJECT_VERSION_SUFFIX} + COMPONENT "${PROJECT_NAME}_Development" +- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}/${PROJECT_NAME}${PROJECT_VERSION_SUFFIX} ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}$<IF:$<PLATFORM_ID:UNIX>,/${PROJECT_NAME}${PROJECT_VERSION_SUFFIX},> + COMPONENT "${PROJECT_NAME}_Runtime" + BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR}/${PROJECT_NAME}${PROJECT_VERSION_SUFFIX} + COMPONENT "${PROJECT_NAME}_Runtime" diff --git a/src/resources/patches/source_group_rel_path.patch b/src/resources/patches/source_group_rel_path.patch new file mode 100644 index 0000000..15302d5 --- /dev/null +++ b/src/resources/patches/source_group_rel_path.patch @@ -0,0 +1,17 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2a948d5..ecb06c3 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -7,7 +7,11 @@ function(GroupSourcesByFolder target) + get_target_property(sources ${target} SOURCES) + + foreach(file ${sources}) +- file(RELATIVE_PATH relative_file "${PROJECT_SOURCE_DIR}" ${file}) ++ if(IS_ABSOLUTE ${file}) ++ file(RELATIVE_PATH relative_file "${PROJECT_SOURCE_DIR}" ${file}) ++ else() ++ set(relative_file ${file}) ++ endif() + get_filename_component(dir "${relative_file}" PATH) + if(NOT "${dir}" STREQUAL "${last_dir}") + if(files) -- GitLab