From 03be0f0d1f5241a4373c08ca72b05454c65c8ac2 Mon Sep 17 00:00:00 2001 From: Liam Wrubleski Date: Thu, 31 Mar 2022 12:34:59 -0600 Subject: [PATCH 01/10] Only link library specific files --- share/rocm/cmake/ROCMInstallTargets.cmake | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/share/rocm/cmake/ROCMInstallTargets.cmake b/share/rocm/cmake/ROCMInstallTargets.cmake index 023cbfa1..95d8c7fc 100644 --- a/share/rocm/cmake/ROCMInstallTargets.cmake +++ b/share/rocm/cmake/ROCMInstallTargets.cmake @@ -159,16 +159,25 @@ function(rocm_install_targets) NAMELINK_ONLY ) endif() - if(T_TYPE MATCHES ".*_LIBRARY" AND ROCM_SYMLINK_LIBS AND NOT ROCM_CREATED_${PROJECT_NAME}_SYMLINK - AND NOT CMAKE_HOST_WIN32) + if(T_TYPE MATCHES ".*_LIBRARY" AND ROCM_SYMLINK_LIBS AND NOT CMAKE_HOST_WIN32) + cmake_policy(SET CMP0087 NEW) - set(ROCM_CREATED_${PROJECT_NAME}_SYMLINK TRUE CACHE INTERNAL "Record symlink created.") string(TOLOWER "${PROJECT_NAME}" LINK_SUBDIR) set(INSTALL_CMD " - set(LINK_DIR \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${LINK_SUBDIR}) - file(MAKE_DIRECTORY \${LINK_DIR}) - execute_process(COMMAND ln -sf ../lib \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}) + set(SRC_DIR \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}) + set(LINK_DIR \${SRC_DIR}/${LINK_SUBDIR}) + if(NOT EXISTS \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/cmake) + file(MAKE_DIRECTORY \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/cmake) + execute_process(COMMAND + ln -srf ${SRC_DIR}/${ROCM_INSTALL_LIBDIR}/cmake/${LINK_SUBDIR} + \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/cmake/${LINK_SUBDIR} + ) + endif() + execute_process(COMMAND + ln -srf ${SRC_DIR}/${ROCM_INSTALL_LIBDIR}/$ + \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/$ + ) ") rocm_install(CODE "${INSTALL_CMD}") endif() From 541dcdc4d0ef1fe5a5a79665154cc2379b2573e2 Mon Sep 17 00:00:00 2001 From: Liam Wrubleski Date: Thu, 31 Mar 2022 15:36:08 -0600 Subject: [PATCH 02/10] Circumvent lack of genex in `install(CODE)` --- share/rocm/cmake/ROCMInstallTargets.cmake | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/share/rocm/cmake/ROCMInstallTargets.cmake b/share/rocm/cmake/ROCMInstallTargets.cmake index 95d8c7fc..a1f7e3b9 100644 --- a/share/rocm/cmake/ROCMInstallTargets.cmake +++ b/share/rocm/cmake/ROCMInstallTargets.cmake @@ -160,26 +160,26 @@ function(rocm_install_targets) ) endif() if(T_TYPE MATCHES ".*_LIBRARY" AND ROCM_SYMLINK_LIBS AND NOT CMAKE_HOST_WIN32) - cmake_policy(SET CMP0087 NEW) string(TOLOWER "${PROJECT_NAME}" LINK_SUBDIR) - set(INSTALL_CMD " + file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_symlink.cmake + CONTENT " set(SRC_DIR \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}) set(LINK_DIR \${SRC_DIR}/${LINK_SUBDIR}) if(NOT EXISTS \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/cmake) file(MAKE_DIRECTORY \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/cmake) execute_process(COMMAND - ln -srf ${SRC_DIR}/${ROCM_INSTALL_LIBDIR}/cmake/${LINK_SUBDIR} + ln -srf \${SRC_DIR}/${ROCM_INSTALL_LIBDIR}/cmake/${LINK_SUBDIR} \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/cmake/${LINK_SUBDIR} ) endif() execute_process(COMMAND - ln -srf ${SRC_DIR}/${ROCM_INSTALL_LIBDIR}/$ + ln -srf \${SRC_DIR}/${ROCM_INSTALL_LIBDIR}/\$ \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/$ ) ") - rocm_install(CODE "${INSTALL_CMD}") + rocm_install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_symlink.cmake") endif() endforeach() endfunction() From 97fcde206c198951db3a6ee9231b02a6df05f9f4 Mon Sep 17 00:00:00 2001 From: Liam Wrubleski Date: Fri, 1 Apr 2022 11:19:13 -0600 Subject: [PATCH 03/10] Create cmake symlink in export --- share/rocm/cmake/ROCMInstallTargets.cmake | 43 ++++++++++++++++------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/share/rocm/cmake/ROCMInstallTargets.cmake b/share/rocm/cmake/ROCMInstallTargets.cmake index a1f7e3b9..68f4a082 100644 --- a/share/rocm/cmake/ROCMInstallTargets.cmake +++ b/share/rocm/cmake/ROCMInstallTargets.cmake @@ -159,26 +159,24 @@ function(rocm_install_targets) NAMELINK_ONLY ) endif() - if(T_TYPE MATCHES ".*_LIBRARY" AND ROCM_SYMLINK_LIBS AND NOT CMAKE_HOST_WIN32) - + if(ROCM_SYMLINK_LIBS AND NOT WIN32 AND T_TYPE MATCHES ".*_LIBRARY") string(TOLOWER "${PROJECT_NAME}" LINK_SUBDIR) - file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_symlink.cmake - CONTENT " + CONTENT " set(SRC_DIR \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}) set(LINK_DIR \${SRC_DIR}/${LINK_SUBDIR}) - if(NOT EXISTS \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/cmake) - file(MAKE_DIRECTORY \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/cmake) - execute_process(COMMAND - ln -srf \${SRC_DIR}/${ROCM_INSTALL_LIBDIR}/cmake/${LINK_SUBDIR} - \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/cmake/${LINK_SUBDIR} - ) + if(NOT EXISTS \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}) + file(MAKE_DIRECTORY \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}) endif() - execute_process(COMMAND - ln -srf \${SRC_DIR}/${ROCM_INSTALL_LIBDIR}/\$ + file(RELATIVE_PATH LINK_PATH + \${LINK_DIR}/${ROCM_INSTALL_LIBDIR} + \${SRC_DIR}/${ROCM_INSTALL_LIBDIR}) + execute_process(COMMAND \${CMAKE_COMMAND} -E create_symlink + \${LINK_PATH}/$ \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/$ ) ") + rocm_install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_symlink.cmake") endif() endforeach() @@ -328,4 +326,25 @@ function(rocm_export_targets) DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR}) + if(ROCM_SYMLINK_LIBS AND NOT WIN32) + string(TOLOWER "${PROJECT_NAME}" LINK_SUBDIR) + file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/cmake_symlink.cmake" + CONTENT " + set(SRC_DIR \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}) + set(LINK_DIR \${SRC_DIR}/${LINK_SUBDIR}) + if(NOT EXISTS \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/cmake) + file(MAKE_DIRECTORY \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/cmake) + endif() + file(RELATIVE_PATH LINK_PATH + \${LINK_DIR}/${ROCM_INSTALL_LIBDIR}/cmake + \${SRC_DIR}/${CONFIG_PACKAGE_INSTALL_DIR} + ) + execute_process(COMMAND \${CMAKE_COMMAND} -E create_symlink + \${LINK_PATH} + \${LINK_DIR}/${CONFIG_PACKAGE_INSTALL_DIR} + ) + ") + rocm_install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/cmake_symlink.cmake") + endif() + endfunction() From 9266910d724faafc39dcbf3ca155caca81f96b7a Mon Sep 17 00:00:00 2001 From: Liam Wrubleski Date: Fri, 1 Apr 2022 11:22:36 -0600 Subject: [PATCH 04/10] Correct formatting --- share/rocm/cmake/ROCMInstallTargets.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/share/rocm/cmake/ROCMInstallTargets.cmake b/share/rocm/cmake/ROCMInstallTargets.cmake index 68f4a082..ccbcf136 100644 --- a/share/rocm/cmake/ROCMInstallTargets.cmake +++ b/share/rocm/cmake/ROCMInstallTargets.cmake @@ -346,5 +346,4 @@ function(rocm_export_targets) ") rocm_install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/cmake_symlink.cmake") endif() - endfunction() From 80b1bc13731640fab1dc9d35df07621107675986 Mon Sep 17 00:00:00 2001 From: Liam Wrubleski Date: Fri, 1 Apr 2022 11:44:06 -0600 Subject: [PATCH 05/10] Don't use symlink_libs in tests --- test/test.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test.cmake b/test/test.cmake index ca933484..54d43d84 100755 --- a/test/test.cmake +++ b/test/test.cmake @@ -109,7 +109,7 @@ function(install_dir DIR) configure_dir( ${DIR} TARGETS all ${PARSE_TARGETS} install - CMAKE_ARGS ${PARSE_CMAKE_ARGS}) + CMAKE_ARGS ${PARSE_CMAKE_ARGS} -DROCM_SYMLINK_LIBS=OFF) endfunction() function(write_version_cmake DIR VERSION CONTENT) From d2daf0b989e2550a13e097123c9d56f6b6f05e75 Mon Sep 17 00:00:00 2001 From: Liam Wrubleski Date: Fri, 1 Apr 2022 13:06:36 -0600 Subject: [PATCH 06/10] Don't try to symlink interface libraries --- share/rocm/cmake/ROCMInstallTargets.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/share/rocm/cmake/ROCMInstallTargets.cmake b/share/rocm/cmake/ROCMInstallTargets.cmake index ccbcf136..17ef7688 100644 --- a/share/rocm/cmake/ROCMInstallTargets.cmake +++ b/share/rocm/cmake/ROCMInstallTargets.cmake @@ -159,7 +159,8 @@ function(rocm_install_targets) NAMELINK_ONLY ) endif() - if(ROCM_SYMLINK_LIBS AND NOT WIN32 AND T_TYPE MATCHES ".*_LIBRARY") + if(ROCM_SYMLINK_LIBS AND NOT WIN32 AND T_TYPE MATCHES ".*_LIBRARY" + AND NOT T_TYPE STREQUAL "INTERFACE_LIBRARY") string(TOLOWER "${PROJECT_NAME}" LINK_SUBDIR) file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_symlink.cmake CONTENT " From 543a964663a18dff8de239022dcde69d4f125018 Mon Sep 17 00:00:00 2001 From: Liam Wrubleski Date: Mon, 4 Apr 2022 10:07:20 -0600 Subject: [PATCH 07/10] Update test to use Windows 2022 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a746335c..d1628df6 100755 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -33,7 +33,7 @@ jobs: platform: - ubuntu-18.04 - macos-10.14 - - windows-2016 + - windows-2022 cmake-version: - 3.20.0 - 3.10.2 From a31241d4d7459bb0a4e22956366351579447059d Mon Sep 17 00:00:00 2001 From: Liam Wrubleski Date: Mon, 4 Apr 2022 10:37:36 -0600 Subject: [PATCH 08/10] Switch to Windows 2019 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d1628df6..9dc53b60 100755 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -33,7 +33,7 @@ jobs: platform: - ubuntu-18.04 - macos-10.14 - - windows-2022 + - windows-2019 cmake-version: - 3.20.0 - 3.10.2 From 5b4c1974567020d068ada4d93b8ed0c3d458be59 Mon Sep 17 00:00:00 2001 From: Liam Wrubleski Date: Mon, 4 Apr 2022 14:58:18 -0600 Subject: [PATCH 09/10] Skip CMake 3.10 on Windows --- .github/workflows/test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9dc53b60..49b59dbf 100755 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -37,6 +37,9 @@ jobs: cmake-version: - 3.20.0 - 3.10.2 + exclude: + - platform: windows-2019 + cmake-version: 3.10.2 steps: - uses: actions/checkout@v1 From 570c4c2e274dc9927090492e5015528b91f78676 Mon Sep 17 00:00:00 2001 From: Liam Wrubleski Date: Wed, 6 Apr 2022 10:47:10 -0600 Subject: [PATCH 10/10] Switch to macos 10-15 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 49b59dbf..98b5b6d0 100755 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -32,7 +32,7 @@ jobs: matrix: platform: - ubuntu-18.04 - - macos-10.14 + - macos-10.15 - windows-2019 cmake-version: - 3.20.0