diff --git a/src/GetCommonLibraries.cmake b/src/GetCommonLibraries.cmake new file mode 100644 index 0000000000000000000000000000000000000000..e14adad8ec0fb482c7ef773e6412f26fc3d336f2 --- /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 5c46147cf95075dafb59733cf18b3e07170709ca..ec136fc2cf4aa8f150c10d4db786bfcc6adb7ab3 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 0000000000000000000000000000000000000000..6e82282bbe9ee8867eb623225d1b72574884d066 --- /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 0000000000000000000000000000000000000000..15302d52be3df0e89905dc5a1777a387314c7ded --- /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)