From d0b69ad2b6764172078f5651b79af31164bda3ea Mon Sep 17 00:00:00 2001 From: "Jonathan R. Madsen" Date: Tue, 28 Nov 2023 18:15:40 -0600 Subject: [PATCH] Build System Fixes (#46) * Update build system - emsure CMAKE_INSTALL_LIBDIR is always lib - fix find_package(rocprofiler-register) in build tree - set rocprofiler-register_VERSION in rocprofiler-register-config.cmake - samples/library-implementation always uses find_package(rocprofiler-register) * Update cmake/rocprofiler_register_config_install.cmake - rocprofiler_register_DIR -> rocprofiler-register_DIR [ROCm/rocprofiler-register commit: b04c8478f215e40548b66223691d157a90a51a76] --- projects/rocprofiler-register/CMakeLists.txt | 7 +++++-- .../rocprofiler-register-config.cmake.in | 6 +++++- .../rocprofiler_register_config_install.cmake | 16 +++++++++++++--- .../library-implementation/CMakeLists.txt | 13 +++++++------ 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/projects/rocprofiler-register/CMakeLists.txt b/projects/rocprofiler-register/CMakeLists.txt index 699529b6fa..51e0a05004 100644 --- a/projects/rocprofiler-register/CMakeLists.txt +++ b/projects/rocprofiler-register/CMakeLists.txt @@ -73,6 +73,9 @@ set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ${PROJECT_SOURCE_DIR}/cmake/Mo include(GNUInstallDirs) # install directories +# ROCm does not use lib64 +set(CMAKE_INSTALL_LIBDIR "lib") + include(rocprofiler_register_utilities) # various functions/macros include(rocprofiler_register_interfaces) # interface libraries include(rocprofiler_register_compilers) # compiler identification @@ -96,6 +99,8 @@ include(CTest) add_subdirectory(external) add_subdirectory(source) +include(rocprofiler_register_config_install) + if(ROCPROFILER_REGISTER_BUILD_TESTS) add_subdirectory(tests) endif() @@ -104,8 +109,6 @@ if(ROCPROFILER_REGISTER_BUILD_SAMPLES) add_subdirectory(samples) endif() -# -include(rocprofiler_register_config_install) include(rocprofiler_register_config_packaging) rocprofiler_register_print_features() diff --git a/projects/rocprofiler-register/cmake/Templates/rocprofiler-register-config.cmake.in b/projects/rocprofiler-register/cmake/Templates/rocprofiler-register-config.cmake.in index db66aafc06..10d838c0ba 100644 --- a/projects/rocprofiler-register/cmake/Templates/rocprofiler-register-config.cmake.in +++ b/projects/rocprofiler-register/cmake/Templates/rocprofiler-register-config.cmake.in @@ -11,13 +11,17 @@ get_filename_component(@PROJECT_NAME@_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PAT # version include(${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-version.cmake) +set(@PROJECT_NAME@_VERSION ${PACKAGE_VERSION}) + @PACKAGE_INIT@ set_and_check(@PROJECT_NAME@_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") set_and_check(@PROJECT_NAME@_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@") get_filename_component(@PROJECT_NAME@_ROOT_DIR ${@PROJECT_NAME@_INCLUDE_DIR} PATH) -include("${@PROJECT_NAME@_CMAKE_DIR}/@PROJECT_NAME@-library-targets.cmake") +if(NOT @PROJECT_NAME@_BUILD_TREE) + include("${@PROJECT_NAME@_CMAKE_DIR}/@PROJECT_NAME@-library-targets.cmake") +endif() if(TARGET @PROJECT_NAME@::@PROJECT_NAME@) set(@PROJECT_NAME@_LIBRARIES @PROJECT_NAME@::@PROJECT_NAME@) diff --git a/projects/rocprofiler-register/cmake/rocprofiler_register_config_install.cmake b/projects/rocprofiler-register/cmake/rocprofiler_register_config_install.cmake index afa4e64c9a..6e28a4f190 100644 --- a/projects/rocprofiler-register/cmake/rocprofiler_register_config_install.cmake +++ b/projects/rocprofiler-register/cmake/rocprofiler_register_config_install.cmake @@ -57,11 +57,21 @@ install( DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PROJECT_NAME} OPTIONAL) -export(PACKAGE ${PROJECT_NAME}) - # ------------------------------------------------------------------------------# # build tree # +set(${PROJECT_NAME}_BUILD_TREE + ON + CACHE BOOL "" FORCE) + +file(RELATIVE_PATH rocp_reg_bin2src_rel_path ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}) +string(REPLACE "//" "/" rocp_reg_inc_rel_path + "${rocp_reg_bin2src_rel_path}/source/include") + +execute_process( + COMMAND ${CMAKE_COMMAND} -E create_symlink ${rocp_reg_inc_rel_path} + ${PROJECT_BINARY_DIR}/include WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) + set(_BUILDTREE_EXPORT_DIR "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/rocprofiler-register") @@ -82,6 +92,6 @@ export( NAMESPACE rocprofiler-register:: FILE "${_BUILDTREE_EXPORT_DIR}/rocprofiler-register-library-targets.cmake") -set(rocprofiler_register_DIR +set(rocprofiler-register_DIR "${_BUILDTREE_EXPORT_DIR}" CACHE PATH "rocprofiler-register" FORCE) diff --git a/projects/rocprofiler-register/samples/library-implementation/CMakeLists.txt b/projects/rocprofiler-register/samples/library-implementation/CMakeLists.txt index bff53798e3..67be155f96 100644 --- a/projects/rocprofiler-register/samples/library-implementation/CMakeLists.txt +++ b/projects/rocprofiler-register/samples/library-implementation/CMakeLists.txt @@ -3,14 +3,15 @@ # cmake_minimum_required(VERSION 3.16 FATAL_ERROR) +set(CMAKE_CXX_FLAGS_INIT "-W -Wall -Wextra") + project(rocprofiler-register-library-implementation LANGUAGES C CXX) -if("${CMAKE_PROJECT_NAME}" STREQUAL "${PROJECT_NAME}") - find_package(rocprofiler-register REQUIRED) - set(CMAKE_CXX_STANDARD 17) - set(CMAKE_CXX_EXTENSIONS OFF) - set(CMAKE_CXX_STANDARD_REQUIRED ON) -endif() +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_EXTENSIONS OFF) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(rocprofiler-register REQUIRED) add_library(rocp-reg-hip-demo SHARED) target_sources(rocp-reg-hip-demo PRIVATE demo.cpp demo.hpp)