From 7dfd2ee754170a391c87f92090044a29bfa95489 Mon Sep 17 00:00:00 2001 From: Sean Keely Date: Thu, 4 Jun 2020 19:36:14 -0500 Subject: [PATCH] Further cmake changes. Add namespacing to elf find module. Stop using CMAKE_CXX_FLAGS and start using target properties for this. Ideally we should remove the actual option strings and replace with cmake compiler properties or compile features. Change-Id: I57756387b3bd3c565c99a35fed4b37fe1a2d0556 [ROCm/ROCR-Runtime commit: 9ff0268f4ce082bf71e063d37bc011a97b1e10d6] --- .../runtime/hsa-runtime/CMakeLists.txt | 42 ++++++++--------- .../cmake_modules/FindLibElf.cmake | 6 +-- .../cmake_modules/hsa_common.cmake | 46 ++++++++----------- 3 files changed, 42 insertions(+), 52 deletions(-) diff --git a/projects/rocr-runtime/runtime/hsa-runtime/CMakeLists.txt b/projects/rocr-runtime/runtime/hsa-runtime/CMakeLists.txt index ba52277b9e..65ec7aed37 100644 --- a/projects/rocr-runtime/runtime/hsa-runtime/CMakeLists.txt +++ b/projects/rocr-runtime/runtime/hsa-runtime/CMakeLists.txt @@ -88,24 +88,13 @@ find_package(hsakmt 1.0 REQUIRED) ## Create the rocr target. add_library( ${CORE_RUNTIME_TARGET} "" ) +## Compiler preproc definitions. +target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE "${HSA_COMMON_DEFS}" __linux__ HSA_EXPORT=1 HSA_EXPORT_FINALIZER=1 HSA_EXPORT_IMAGES=1 HSA_DEPRECATED= + ROCR_BUILD_ID=${PACKAGE_VERSION_STRING} ) + ## Check for memfd_create syscall include(CheckSymbolExists) CHECK_SYMBOL_EXISTS ( "__NR_memfd_create" "sys/syscall.h" HAVE_MEMFD_CREATE ) - -## Compiler preproc definitions. -target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE __linux__ HSA_EXPORT=1 HSA_EXPORT_FINALIZER=1 HSA_EXPORT_IMAGES=1 HSA_DEPRECATED= - ROCR_BUILD_ID=${PACKAGE_VERSION_STRING} ) - -## Image definitons - audit! - target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE - UNIX_OS - LINUX - __AMD64__ - __x86_64__ - AMD_INTERNAL_BUILD - LITTLEENDIAN_CPU=1 - BRAHMA_BUILD=1 ) - if ( HAVE_MEMFD_CREATE ) target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE HAVE_MEMFD_CREATE ) endif() @@ -123,19 +112,22 @@ target_include_directories( ${CORE_RUNTIME_TARGET} set_property(TARGET ${CORE_RUNTIME_TARGET} PROPERTY INSTALL_RPATH "$ORIGIN;$ORIGIN/../../lib;$ORIGIN/../../lib64;$ORIGIN/../lib64" ) ## ------------------------- Linux Compiler and Linker options ------------------------- -set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -fexceptions -fno-rtti -fvisibility=hidden -Wno-error=sign-compare -Wno-sign-compare -Wno-write-strings -Wno-conversion-null -fno-math-errno -fno-threadsafe-statics -fmerge-all-constants -fms-extensions -Wno-error=comment -Wno-comment -Wno-error=pointer-arith -Wno-pointer-arith -Wno-error=unused-variable -Wno-error=unused-function" ) +set ( HSA_CXX_FLAGS ${HSA_COMMON_CXX_FLAGS} -Werror -fexceptions -fno-rtti -fvisibility=hidden -Wno-error=sign-compare -Wno-sign-compare -Wno-write-strings -Wno-conversion-null -fno-math-errno -fno-threadsafe-statics -fmerge-all-constants -fms-extensions -Wno-error=comment -Wno-comment -Wno-error=pointer-arith -Wno-pointer-arith -Wno-error=unused-variable -Wno-error=unused-function ) ## Extra image settings - audit! -set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations -fPIC" ) +set ( HSA_CXX_FLAGS ${HSA_CXX_FLAGS} -Wno-deprecated-declarations ) if ( CMAKE_COMPILER_IS_GNUCXX ) - set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=unused-but-set-variable") + set ( HSA_CXX_FLAGS ${HSA_CXX_FLAGS} -Wno-error=unused-but-set-variable) endif () set ( DRVDEF "${CMAKE_CURRENT_SOURCE_DIR}/hsacore.so.def" ) set ( LNKSCR "${CMAKE_CURRENT_SOURCE_DIR}/hsacore.so.link" ) -set ( CMAKE_SHARED_LINKER_FLAGS "-Wl,-Bdynamic -Wl,-z,noexecstack -Wl,${LNKSCR} -Wl,--version-script=${DRVDEF} -Wl,--enable-new-dtags" ) +set ( HSA_SHARED_LINK_FLAGS "-Wl,-Bdynamic -Wl,-z,noexecstack -Wl,${LNKSCR} -Wl,--version-script=${DRVDEF} -Wl,--enable-new-dtags" ) +target_compile_options(${CORE_RUNTIME_TARGET} PRIVATE ${HSA_CXX_FLAGS}) +#target_link_options not available prior to CMake 3.13 +set_property(TARGET ${CORE_RUNTIME_TARGET} PROPERTY LINK_FLAGS ${HSA_SHARED_LINK_FLAGS}) ## ------------------------- End Compiler and Linker options ---------------------------- ## Source files. @@ -186,7 +178,15 @@ set ( IMAGE_SUPPORT ${IMAGE_SUPPORT} CACHE BOOL "Build with image support (defau ## Optional image module defintions. if(${IMAGE_SUPPORT}) - target_compile_definitions( ${CORE_RUNTIME_TARGET} PRIVATE HSA_IMAGE_SUPPORT ) + ## Image definitons - audit! + target_compile_definitions(${CORE_RUNTIME_TARGET} PRIVATE + HSA_IMAGE_SUPPORT + UNIX_OS + LINUX + __AMD64__ + __x86_64__ + AMD_INTERNAL_BUILD + BRAHMA_BUILD=1 ) set ( IMAGE_SRCS image/addrlib/src/addrinterface.cpp image/addrlib/src/core/coord.cpp @@ -240,7 +240,7 @@ endif() ## Link dependencies. target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE hsakmt::hsakmt ) -target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE elf dl pthread rt ) +target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE elf::elf dl pthread rt ) ## Set the VERSION and SOVERSION values set_property ( TARGET ${CORE_RUNTIME_TARGET} PROPERTY VERSION "${SO_VERSION_STRING}" ) diff --git a/projects/rocr-runtime/runtime/hsa-runtime/cmake_modules/FindLibElf.cmake b/projects/rocr-runtime/runtime/hsa-runtime/cmake_modules/FindLibElf.cmake index 690eccd209..19b50eca3e 100644 --- a/projects/rocr-runtime/runtime/hsa-runtime/cmake_modules/FindLibElf.cmake +++ b/projects/rocr-runtime/runtime/hsa-runtime/cmake_modules/FindLibElf.cmake @@ -63,7 +63,7 @@ int main() { mark_as_advanced(LIBELF_INCLUDE_DIRS LIBELF_LIBRARIES ELF_GETSHDRSTRNDX) if(LIBELF_FOUND) - add_library(elf UNKNOWN IMPORTED) - set_property(TARGET elf PROPERTY IMPORTED_LOCATION ${LIBELF_LIBRARIES}) - set_property(TARGET elf PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${LIBELF_INCLUDE_DIRS}) + add_library(elf::elf UNKNOWN IMPORTED) + set_property(TARGET elf::elf PROPERTY IMPORTED_LOCATION ${LIBELF_LIBRARIES}) + set_property(TARGET elf::elf PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${LIBELF_INCLUDE_DIRS}) endif() diff --git a/projects/rocr-runtime/runtime/hsa-runtime/cmake_modules/hsa_common.cmake b/projects/rocr-runtime/runtime/hsa-runtime/cmake_modules/hsa_common.cmake index 7e8b267346..64554028f3 100644 --- a/projects/rocr-runtime/runtime/hsa-runtime/cmake_modules/hsa_common.cmake +++ b/projects/rocr-runtime/runtime/hsa-runtime/cmake_modules/hsa_common.cmake @@ -51,31 +51,21 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(ONLY64STR "64") endif() -if(UNIX) - set(PS ":") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11 ${EXTRA_CFLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic") - if (CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--unresolved-symbols=ignore-in-shared-libs") - endif () - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing") - if ( CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" ) - set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64 -msse -msse2" ) - elseif ( CMAKE_SYSTEM_PROCESSOR STREQUAL "x86" ) - set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" ) - endif () - if ( "${CMAKE_BUILD_TYPE}" STREQUAL Debug ) - set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -ggdb" ) - endif () - add_definitions(-D __STDC_LIMIT_MACROS) - add_definitions(-D __STDC_CONSTANT_MACROS) - add_definitions(-D __STDC_FORMAT_MACROS) - add_definitions (-DLITTLEENDIAN_CPU=1) -else() - set (PS "\;") -endif() - -if(MSVC) - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") -endif() +set(HSA_COMMON_CXX_FLAGS "-Wall" "-std=c++11") +set(HSA_COMMON_CXX_FLAGS ${HSA_COMMON_CXX_FLAGS} "-fPIC") +if (CMAKE_COMPILER_IS_GNUCXX) + set(HSA_COMMON_CXX_FLAGS ${HSA_COMMON_CXX_FLAGS} "-Wl,--unresolved-symbols=ignore-in-shared-libs") +endif () +set(HSA_COMMON_CXX_FLAGS ${HSA_COMMON_CXX_FLAGS} "-fno-strict-aliasing") +if ( CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set( HSA_COMMON_CXX_FLAGS ${HSA_COMMON_CXX_FLAGS} "-m64" "-msse" "-msse2") +elseif ( CMAKE_SYSTEM_PROCESSOR STREQUAL "x86" ) + set ( HSA_COMMON_CXX_FLAGS ${HSA_COMMON_CXX_FLAGS} "-m32") +endif () +if ( "${CMAKE_BUILD_TYPE}" STREQUAL Debug ) + set ( HSA_COMMON_CXX_FLAGS ${HSA_COMMON_CXX_FLAGS} "-O0" "-ggdb") +endif () +set( HSA_COMMON_DEFS "__STDC_LIMIT_MACROS") +set( HSA_COMMON_DEFS ${HSA_COMMON_DEFS} "__STDC_CONSTANT_MACROS") +set( HSA_COMMON_DEFS ${HSA_COMMON_DEFS} "__STDC_FORMAT_MACROS") +set( HSA_COMMON_DEFS ${HSA_COMMON_DEFS} "LITTLEENDIAN_CPU=1")