diff --git a/runtime/cmake_modules/utils.cmake b/runtime/cmake_modules/utils.cmake index 58067a4d3c..0d4dab6474 100644 --- a/runtime/cmake_modules/utils.cmake +++ b/runtime/cmake_modules/utils.cmake @@ -3,7 +3,7 @@ ## The University of Illinois/NCSA ## Open Source License (NCSA) ## -## Copyright (c) 2014-2015, Advanced Micro Devices, Inc. All rights reserved. +## Copyright (c) 2014-2017, Advanced Micro Devices, Inc. All rights reserved. ## ## Developed by: ## @@ -41,31 +41,76 @@ ################################################################################ ## Parses the VERSION_STRING variable and places -## the first, second and third number values in +## the first, second and third number values in ## the major, minor and patch variables. -function(parse_version VERSION_STRING) +function( parse_version VERSION_STRING ) - string(REGEX MATCHALL "[0123456789]+" VERSIONS ${VERSION_STRING}) - list(LENGTH VERSIONS VERSION_COUNT) + string ( FIND ${VERSION_STRING} "-" STRING_INDEX ) - if (${VERSION_COUNT} GREATER 0) - list(GET VERSIONS 0 MAJOR) - set(VERSION_MAJOR ${MAJOR} PARENT_SCOPE) - set(TEMP_VERSION_STRING "${MAJOR}") + if ( ${STRING_INDEX} GREATER -1 ) + math ( EXPR STRING_INDEX "${STRING_INDEX} + 1" ) + string ( SUBSTRING ${VERSION_STRING} ${STRING_INDEX} -1 VERSION_BUILD ) endif () - if (${VERSION_COUNT} GREATER 1) - list(GET VERSIONS 1 MINOR) - set(VERSION_MINOR ${MINOR} PARENT_SCOPE) - set(TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${MINOR}") + string ( REGEX MATCHALL "[0123456789]+" VERSIONS ${VERSION_STRING} ) + list (LENGTH VERSIONS VERSION_COUNT ) + + if ( ${VERSION_COUNT} GREATER 0) + list ( GET VERSIONS 0 MAJOR ) + set ( VERSION_MAJOR ${MAJOR} PARENT_SCOPE ) + set ( TEMP_VERSION_STRING "${MAJOR}" ) endif () - if (${VERSION_COUNT} GREATER 2) - list(GET VERSIONS 2 PATCH) - set(VERSION_PATCH ${PATCH} PARENT_SCOPE) - set(TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${PATCH}") + if ( ${VERSION_COUNT} GREATER 1 ) + list ( GET VERSIONS 1 MINOR ) + set ( VERSION_MINOR ${MINOR} PARENT_SCOPE ) + set ( TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${MINOR}" ) endif () - set(VERSION_STRING "${TEMP_VERSION_STRING}" PARENT_SCOPE) + if ( ${VERSION_COUNT} GREATER 2 ) + list ( GET VERSIONS 2 PATCH ) + set ( VERSION_PATCH ${PATCH} PARENT_SCOPE ) + set ( TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${PATCH}" ) + endif () + + if (DEFINED VERSION_BUILD ) + set ( VERSION_BUILD "${VERSION_BUILD}" PARENT_SCOPE ) + endif () + + set ( VERSION_STRING "${TEMP_VERSION_STRING}" PARENT_SCOPE ) + +endfunction () + +## Gets the current version of the repository +## using versioning tags and git describe. +## Passes back a packaging version string +## and a library version string. +function ( get_version DEFAULT_VERSION_STRING ) + + parse_version ( ${DEFAULT_VERSION_STRING} ) + + find_program ( GIT NAMES git ) + + if ( GIT ) + + execute_process ( COMMAND git describe --dirty --long --match [0-9]* + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_TAG_STRING + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE RESULT ) + + if ( ${RESULT} EQUAL 0 ) + + parse_version ( ${GIT_TAG_STRING} ) + + endif () + + endif () + + set( VERSION_STRING "${VERSION_STRING}" PARENT_SCOPE ) + set( VERSION_MAJOR "${VERSION_MAJOR}" PARENT_SCOPE ) + set( VERSION_MINOR "${VERSION_MINOR}" PARENT_SCOPE ) + set( VERSION_PATCH "${VERSION_PATCH}" PARENT_SCOPE ) + set( VERSION_BUILD "${VERSION_BUILD}" PARENT_SCOPE ) endfunction() diff --git a/runtime/hsa-ext-finalize/CMakeLists.txt b/runtime/hsa-ext-finalize/CMakeLists.txt index 9d32749a52..c1a69ab24e 100755 --- a/runtime/hsa-ext-finalize/CMakeLists.txt +++ b/runtime/hsa-ext-finalize/CMakeLists.txt @@ -1,53 +1,29 @@ -cmake_minimum_required ( VERSION 2.8.0 ) ## GCC 4.8 or higher compiler required. +cmake_minimum_required ( VERSION 3.5.0 ) -if ( WIN32 ) - MESSAGE ( FATAL_ERROR "Windows build is not supported." ) -endif () - -## Process build type. -if( NOT DEFINED CMAKE_BUILD_TYPE ) - set( CMAKE_BUILD_TYPE "Debug" ) -endif() +## Verbose output. +set ( CMAKE_VERBOSE_MAKEFILE on ) +## Determine external build folder. if( "${CMAKE_BUILD_TYPE}" STREQUAL Release ) - set( BUILD_TYPE "Release" ) - set( ISDEBUG 0 ) - set( BUILD_FOLDER "B_rel" ) + set( BUILD_FOLDER "lnx64a/B_rel" ) else() - set( BUILD_TYPE "Debug" ) - set( ISDEBUG 1) - set( BUILD_FOLDER "B_dbg" ) + set( BUILD_FOLDER "lnx64a/B_dbg" ) endif() -## Process build target. -if ( "${HSA_BUILD_TARGET_BITS}" STREQUAL 32 ) - set ( ONLY64STR "" ) - set ( IS64BIT 0 ) - set ( BUILD_FOLDER "lnx/${BUILD_FOLDER}" ) -else () - set ( ONLY64STR "64" ) - set ( IS64BIT 1 ) - set ( BUILD_FOLDER "lnx64a/${BUILD_FOLDER}" ) -endif () - ## Check that the libhsail include and library directories are defined. if ( NOT DEFINED LIBHSAIL_BUILD_FOLDER ) set ( LIBHSAIL_BUILD_FOLDER ${BUILD_FOLDER} ) endif() -## Used for packaging. -set ( CORE_RUNTIME_NAME "hsa-runtime" ) -set ( CORE_RUNTIME_COMPONENT "lib${CORE_RUNTIME_NAME}" ) -set ( CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}${ONLY64STR}" ) -set ( CORE_RUNTIME_LIB "lib${CORE_RUNTIME_NAME}${ONLY64STR}.so" ) -set ( THUNK_LIB "libhsakmt.so" ) +## Set ext runtime module name and project name. +set ( FINALIZE_NAME "hsa-ext-finalize" ) +set ( FINALIZE_COMPONENT "lib${FINALIZE_NAME}" ) +set ( FINALIZE_TARGET "${FINALIZE_NAME}64" ) +project ( ${FINALIZE_TARGET} ) -MESSAGE ( ------IS64BIT: ${IS64BIT} ) -MESSAGE ( ------Compiler: ${CMAKE_CXX_COMPILER} ) -MESSAGE ( ------Version: ${CMAKE_CXX_COMPILER_VERSION} ) - -## Verbose output. -set ( CMAKE_VERBOSE_MAKEFILE on ) +## Include the cmake_modules utils.cmake +list ( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules" ) +include ( utils ) ## Compiler preproc definitions. add_definitions ( -D__linux__ ) @@ -59,11 +35,53 @@ add_definitions ( -DAMD_INTERNAL_BUILD ) add_definitions ( -DLITTLEENDIAN_CPU=1 ) add_definitions ( -D HSA_DEPRECATED= ) -## Set ext runtime module name and project name. -set ( FINALIZE_NAME "hsa-ext-finalize" ) -set ( FINALIZE_COMPONENT "lib${FINALIZE_NAME}" ) -set ( FINALIZE_TARGET "${FINALIZE_NAME}${ONLY64STR}" ) -project ( ${FINALIZE_TARGET} ) +## Get the package version. The defaults to 1.0.0. +get_version ( "1.0.0" ) + +set ( BUILD_VERSION_MAJOR ${VERSION_MAJOR} ) +set ( BUILD_VERSION_MINOR ${VERSION_MINOR} ) +set ( BUILD_VERSION_PATCH ${VERSION_PATCH} ) +set ( LIB_VERSION_STRING "${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}" ) +if ( DEFINED VERSION_BUILD ) + set ( BUILD_VERSION_PATCH "${BUILD_VERSION_PATCH}-${VERSION_BUILD}" ) +endif () +set ( BUILD_VERSION_STRING "${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}" ) + +## Find the hsakmt library and include files +find_file ( HSAKMT_INC "libhsakmt/hsakmt.h" ) +find_library ( HSAKMT_LIB libhsakmt.so ) +get_filename_component ( HSAKMT_LIB_PATH ${HSAKMT_LIB} DIRECTORY ) +get_filename_component ( HSAKMT_INC_PATH ${HSAKMT_INC} DIRECTORY ) +include_directories ( ${HSAKMT_BUILD_INC_PATH} ) +link_directories (${HSAKMT_BUILD_LIB_PATH}) + +## Find the hsa-runtime and include files +find_file ( HSA_INC "hsa/hsa.h" ) +find_library ( HSA_LIB libhsa-runtime64.so ) +get_filename_component ( HSA_LIB_PATH ${HSA_LIB} DIRECTORY ) +get_filename_component ( HSA_INC_PATH ${HSA_INC} DIRECTORY ) +include_directories ( ${HSA_BUILD_INC_PATH} ) +link_directories (${HSA_BUILD_LIB_PATH}) + +## Find the external library files and set the link command +find_library ( HSAIL_LIB libhsail.a ) +set ( LIBHSAIL -Wl,--no-whole-archive PRIVATE ${HSAIL_LIB} ) + +find_library ( HSAIL_AMD_LIB libhsail-amd.a ) +set ( LIBHSAILAMD -Wl,--no-whole-archive PRIVATE ${HSAIL_AMD_LIB} ) + +find_library ( AMDHSAFIN_LIB amdhsafin64.a ) +set ( LIBAMDHSAFIN -Wl,--no-whole-archive ${AMDHSAFIN_LIB} ) + +find_library ( LIBAMDHSACODE libamdhsacode.a ) + +find_library ( LIBCACHING libcaching.a ) + +find_library ( LIBSCP3 scSP3_R1000.a ) + +find_library ( LIBDWARF libdwarf.a ) + +find_library ( LIBELF libelf.a ) ## External dependencies and directories if ( NOT DEFINED REG_INCLUDE ) @@ -132,21 +150,8 @@ set ( FINALIZE_SRCS ${EXT_SOURCE_DIR}/finalize/hsa_ext_finalize.cpp add_library ( ${FINALIZE_TARGET} SHARED ${FINALIZE_SRCS} ) ## Set the VERSION and SOVERSION values -if ( DEFINED VERSION_STRING ) - set_property ( TARGET ${FINALIZE_TARGET} PROPERTY VERSION "${VERSION_STRING}" ) -endif () - -set_property ( TARGET ${FINALIZE_TARGET} PROPERTY SOVERSION "${VERSION_MAJOR}" ) - -## Add the core runtime in the link -set ( LIBAMDHSAFIN -Wl,--no-whole-archive ${HSA_BUILD_LIB_PATH}/amdhsafin64.a ) -set ( LIBAMDHSACODE ${HSA_BUILD_LIB_PATH}/libamdhsacode.a ) -set ( LIBCACHING ${HSA_BUILD_LIB_PATH}/libcaching.a ) -set ( LIBSCP3 ${HSA_BUILD_LIB_PATH}/scSP3_R1000.a ) -set ( LIBHSAILAMD ${HSA_BUILD_LIB_PATH}/libhsail-amd.a ) -set ( LIBHSAIL ${HSA_BUILD_LIB_PATH}/libhsail.a ) -set ( LIBDWARF ${HSA_BUILD_LIB_PATH}/libdwarf.a ) -set ( LIBELF ${HSA_BUILD_LIB_PATH}/libelf.a ) +set_property ( TARGET ${FINALIZE_TARGET} PROPERTY VERSION "${LIB_VERSION_STRING}" ) +set_property ( TARGET ${FINALIZE_TARGET} PROPERTY SOVERSION "${BUILD_VERSION_MAJOR}" ) ## Add the core runtime in the link link_directories(${HSA_BUILD_LIB_PATH}) @@ -161,8 +166,8 @@ target_link_libraries ( PRIVATE ${LIBHSAIL} PRIVATE ${LIBDWARF} PRIVATE ${LIBELF} - PRIVATE ${HSA_BUILD_LIB_PATH}/${CORE_RUNTIME_LIB} - PRIVATE ${HSA_BUILD_LIB_PATH}/${THUNK_LIB} + PRIVATE hsa-runtime64 + PRIVATE hsakmt c stdc++ dl pthread rt ) diff --git a/runtime/hsa-ext-image/CMakeLists.txt b/runtime/hsa-ext-image/CMakeLists.txt index 5326850085..34f66ce20e 100755 --- a/runtime/hsa-ext-image/CMakeLists.txt +++ b/runtime/hsa-ext-image/CMakeLists.txt @@ -1,52 +1,29 @@ -cmake_minimum_required ( VERSION 2.8.0 ) ## GCC 4.8 or higher compiler required. +cmake_minimum_required ( VERSION 3.5.0 ) -if ( WIN32 ) - MESSAGE ( FATAL_ERROR "Windows build is not supported." ) -endif () - -## Process build type. -if( NOT DEFINED CMAKE_BUILD_TYPE ) - set( CMAKE_BUILD_TYPE "Debug" ) -endif() +## Verbose output. +set ( CMAKE_VERBOSE_MAKEFILE on ) +## Determine external build folder. if( "${CMAKE_BUILD_TYPE}" STREQUAL Release ) - set( BUILD_TYPE "Release" ) - set( ISDEBUG 0 ) - set( BUILD_FOLDER "B_rel" ) + set( BUILD_FOLDER "lnx64a/B_rel" ) else() - set( BUILD_TYPE "Debug" ) - set( ISDEBUG 1) - set( BUILD_FOLDER "B_dbg" ) + set( BUILD_FOLDER "lnx64a/B_dbg" ) endif() -## Process build target. -if ( "${HSA_BUILD_TARGET_BITS}" STREQUAL 32 ) - set ( ONLY64STR "" ) - set ( IS64BIT 0 ) - set ( BUILD_FOLDER "lnx/${BUILD_FOLDER}" ) -else () - set ( ONLY64STR "64" ) - set ( IS64BIT 1 ) - set ( BUILD_FOLDER "lnx64a/${BUILD_FOLDER}" ) -endif () - ## Check that the libhsail include and library directories are defined. if ( NOT DEFINED LIBHSAIL_BUILD_FOLDER ) set ( LIBHSAIL_BUILD_FOLDER ${BUILD_FOLDER} ) endif() -## Used for packaging. -set ( CORE_RUNTIME_NAME "hsa-runtime" ) -set ( CORE_RUNTIME_COMPONENT "lib${CORE_RUNTIME_NAME}" ) -set ( CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}${ONLY64STR}" ) -set ( CORE_RUNTIME_LIB "lib${CORE_RUNTIME_NAME}${ONLY64STR}.so" ) +## Set ext runtime module name and project name. +set ( IMAGE_NAME "hsa-ext-image" ) +set ( IMAGE_COMPONENT "lib${IMAGE_NAME}" ) +set ( IMAGE_TARGET "${IMAGE_NAME}64" ) +project ( ${IMAGE_TARGET} ) -MESSAGE ( ------IS64BIT: ${IS64BIT} ) -MESSAGE ( ------Compiler: ${CMAKE_CXX_COMPILER} ) -MESSAGE ( ------Version: ${CMAKE_CXX_COMPILER_VERSION} ) - -## Verbose output. -set ( CMAKE_VERBOSE_MAKEFILE on ) +## Include the cmake_modules utils.cmake +list ( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules" ) +include ( utils ) ## Compiler preproc definitions. add_definitions ( -D__linux__ ) @@ -58,11 +35,40 @@ add_definitions ( -DAMD_INTERNAL_BUILD ) add_definitions ( -DLITTLEENDIAN_CPU=1 ) add_definitions ( -D HSA_DEPRECATED= ) -## Set ext runtime module name and project name. -set ( IMAGE_NAME "hsa-ext-image" ) -set ( IMAGE_COMPONENT "lib${IMAGE_NAME}" ) -set ( IMAGE_TARGET "${IMAGE_NAME}${ONLY64STR}" ) -project ( ${IMAGE_TARGET} ) +## Get the package version. The defaults to 1.0.0. +get_version ( "1.0.0" ) + +set ( BUILD_VERSION_MAJOR ${VERSION_MAJOR} ) +set ( BUILD_VERSION_MINOR ${VERSION_MINOR} ) +set ( BUILD_VERSION_PATCH ${VERSION_PATCH} ) +set ( LIB_VERSION_STRING "${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}" ) +if ( DEFINED VERSION_BUILD ) + set ( BUILD_VERSION_PATCH "${BUILD_VERSION_PATCH}-${VERSION_BUILD}" ) +endif () +set ( BUILD_VERSION_STRING "${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}" ) + +## Find the hsakmt library and include files +find_file ( HSAKMT_INC "libhsakmt/hsakmt.h" ) +find_library ( HSAKMT_LIB libhsakmt.so ) +get_filename_component ( HSAKMT_LIB_PATH ${HSAKMT_LIB} DIRECTORY ) +get_filename_component ( HSAKMT_INC_PATH ${HSAKMT_INC} DIRECTORY ) +include_directories ( ${HSAKMT_BUILD_INC_PATH} ) +link_directories (${HSAKMT_BUILD_LIB_PATH}) + +## Find the hsa-runtime and include files +find_file ( HSA_INC "hsa/hsa.h" ) +find_library ( HSA_LIB libhsa-runtime64.so ) +get_filename_component ( HSA_LIB_PATH ${HSA_LIB} DIRECTORY ) +get_filename_component ( HSA_INC_PATH ${HSA_INC} DIRECTORY ) +include_directories ( ${HSA_BUILD_INC_PATH} ) +link_directories (${HSA_BUILD_LIB_PATH}) + +## Find the libhsail files in the link +find_library ( HSAIL_LIB libhsail.a ) +set ( LIBHSAIL -Wl,--no-whole-archive PRIVATE ${HSAIL_LIB} ) + +find_library ( HSAIL_AMD_LIB libhsail-amd.a ) +set ( LIBHSAILAMD -Wl,--no-whole-archive PRIVATE ${HSAIL_AMD_LIB} ) ## External dependencies and directories if ( NOT DEFINED REG_INCLUDE ) @@ -122,9 +128,6 @@ include_directories ( ${HSA_CLOSED_SOURCE_DIR}/drivers/hsa/compiler/ext_finalize include_directories ( ${HSA_CLOSED_SOURCE_DIR}/drivers/hsa/compiler/finalizer/HSAIL/hsail-tools/libHSAIL-AMD ) include_directories ( ${HSA_CLOSED_SOURCE_DIR}/drivers/hsa/compiler/finalizer/HSAIL/hsail-tools/libHSAIL ) include_directories ( ${HSA_CLOSED_SOURCE_DIR}/drivers/hsa/compiler/finalizer/HSAIL/hsail-tools/libHSAIL/build/${LIBHSAIL_BUILD_FOLDER} ) -include_directories ( ${HSAKMT_BUILD_INC_PATH} ) - -link_directories (${HSAKMT_BUILD_LIB_PATH}) set ( IMAGE_SRCS ${EXT_SOURCE_DIR}/image/addrlib/addrinterface.cpp ${EXT_SOURCE_DIR}/image/addrlib/core/addrelemlib.cpp @@ -149,24 +152,15 @@ set ( IMAGE_SRCS ${EXT_SOURCE_DIR}/image/addrlib/addrinterface.cpp add_library ( ${IMAGE_TARGET} SHARED ${IMAGE_SRCS} ) ## Set the VERSION and SOVERSION values -if ( DEFINED VERSION_STRING ) - set_property ( TARGET ${IMAGE_TARGET} PROPERTY VERSION "${VERSION_STRING}" ) -endif () - -set_property ( TARGET ${IMAGE_TARGET} PROPERTY SOVERSION "${VERSION_MAJOR}" ) +set_property ( TARGET ${IMAGE_TARGET} PROPERTY VERSION "${LIB_VERSION_STRING}" ) +set_property ( TARGET ${IMAGE_TARGET} PROPERTY SOVERSION "${BUILD_VERSION_MAJOR}" ) ## Add the core runtime in the link -set ( LIBHSAIL -Wl,--no-whole-archive PRIVATE ${HSA_BUILD_LIB_PATH}/libhsail.a ) -set ( LIBHSAILAMD -Wl,--no-whole-archive PRIVATE ${HSA_BUILD_LIB_PATH}/libhsail-amd.a ) - -## Add the core runtime in the link -link_directories(${HSA_BUILD_LIB_PATH}) target_link_libraries ( ${IMAGE_TARGET} PRIVATE ${LIBHSAIL} PRIVATE ${LIBHSAILAMD} - PRIVATE ${HSA_BUILD_LIB_PATH}/libhsail.a - PRIVATE ${HSA_BUILD_LIB_PATH}/${CORE_RUNTIME_LIB} + PRIVATE hsa-runtime64 PRIVATE hsakmt c dl pthread rt ) @@ -177,4 +171,4 @@ if ( "${CMAKE_BUILD_TYPE}" STREQUAL Release ) endif () ## Set install information -install ( TARGETS ${IMAGE_TARGET} LIBRARY DESTINATION lib COMPONENT ${IMAGE_COMPONENT}) +install ( TARGETS ${IMAGE_TARGET} LIBRARY DESTINATION hsa/lib COMPONENT ${IMAGE_COMPONENT}) diff --git a/runtime/hsa-runtime-tools/CMakeLists.txt b/runtime/hsa-runtime-tools/CMakeLists.txt index 575f1782ef..0e88007d43 100755 --- a/runtime/hsa-runtime-tools/CMakeLists.txt +++ b/runtime/hsa-runtime-tools/CMakeLists.txt @@ -1,34 +1,17 @@ -cmake_minimum_required ( VERSION 2.8.0 ) -## GCC 4.8 or higher compiler required. - -if ( WIN32 ) - MESSAGE ( FATAL_ERROR "Windows build is not supported." ) -endif () - -## Process environment variables. -if ( "${HSA_BUILD_TARGET_BITS}" STREQUAL 32 ) - set ( ONLY64STR "" ) - set ( IS64BIT 0 ) -else () - set ( ONLY64STR "64" ) - set ( IS64BIT 1 ) -endif () - -## Build information -MESSAGE ( ------IS64BIT: ${IS64BIT} ) -MESSAGE ( ------Compiler: ${CMAKE_CXX_COMPILER} ) -MESSAGE ( ------Version: ${CMAKE_CXX_COMPILER_VERSION} ) - -set ( CMAKE_BUILD_TYPE ${BUILD_TYPE} ) +cmake_minimum_required ( VERSION 3.5.0 ) ## Verbose output. set ( CMAKE_VERBOSE_MAKEFILE on ) -## Used for packaging. -set ( CORE_RUNTIME_NAME "hsa-runtime" ) -set ( CORE_RUNTIME_COMPONENT "lib${CORE_RUNTIME_NAME}" ) -set ( CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}${ONLY64STR}" ) -set ( CORE_RUNTIME_LIB "lib${CORE_RUNTIME_NAME}${ONLY64STR}.so" ) +## Set ext runtime module name and project name. +set ( TOOLS_NAME "hsa-runtime-tools" ) +set ( TOOLS_COMPONENT "lib${TOOLS_NAME}" ) +set ( TOOLS_TARGET "${TOOLS_NAME}64" ) +project ( ${TOOLS_TARGET} ) + +## Include the cmake_modules utils.cmake +list ( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules" ) +include ( utils ) ## Compiler preproc definitions. add_definitions ( -D__linux__ ) @@ -40,11 +23,33 @@ add_definitions ( -DAMD_INTERNAL_BUILD ) add_definitions ( -DLITTLEENDIAN_CPU=1 ) add_definitions ( -D HSA_DEPRECATED= ) -## Set ext runtime module name and project name. -set ( TOOLS_NAME "hsa-runtime-tools" ) -set ( TOOLS_COMPONENT "lib${TOOLS_NAME}" ) -set ( TOOLS_TARGET "${TOOLS_NAME}${ONLY64STR}" ) -project ( ${TOOLS_TARGET} ) +## Get the package version. The defaults to 1.0.0. +get_version ( "1.0.0" ) + +set ( BUILD_VERSION_MAJOR ${VERSION_MAJOR} ) +set ( BUILD_VERSION_MINOR ${VERSION_MINOR} ) +set ( BUILD_VERSION_PATCH ${VERSION_PATCH} ) +set ( LIB_VERSION_STRING "${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}" ) +if ( DEFINED VERSION_BUILD ) + set ( BUILD_VERSION_PATCH "${BUILD_VERSION_PATCH}-${VERSION_BUILD}" ) +endif () +set ( BUILD_VERSION_STRING "${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}" ) + +## Find the hsakmt library and include files +find_file ( HSAKMT_INC "libhsakmt/hsakmt.h" ) +find_library ( HSAKMT_LIB libhsakmt.so ) +get_filename_component ( HSAKMT_LIB_PATH ${HSAKMT_LIB} DIRECTORY ) +get_filename_component ( HSAKMT_INC_PATH ${HSAKMT_INC} DIRECTORY ) +include_directories ( ${HSAKMT_BUILD_INC_PATH} ) +link_directories (${HSAKMT_BUILD_LIB_PATH}) + +## Find the hsa-runtime and include files +find_file ( HSA_INC "hsa/hsa.h" ) +find_library ( HSA_LIB libhsa-runtime64.so ) +get_filename_component ( HSA_LIB_PATH ${HSA_LIB} DIRECTORY ) +get_filename_component ( HSA_INC_PATH ${HSA_INC} DIRECTORY ) +include_directories ( ${HSA_BUILD_INC_PATH} ) +link_directories (${HSA_BUILD_LIB_PATH}) ## External dependencies if ( NOT DEFINED REG_INCLUDE ) @@ -216,29 +221,26 @@ add_library ( ${TOOLS_TARGET} SHARED ${CORE_SRC} ${INTERCEPT_SRC} ${PROFILER_SRC} ${THREAD_TRACE_SRC} - ${SP3_R1000_SRC} + ${SP3_R1000_SRC} ${UTIL_SRC} ) +## Set the VERSION and SOVERSION values +set_property ( TARGET ${TOOLS_TARGET} PROPERTY VERSION "${LIB_VERSION_STRING}" ) +set_property ( TARGET ${TOOLS_TARGET} PROPERTY SOVERSION "${BUILD_VERSION_MAJOR}" ) + ## Add the required link libraries -target_link_libraries ( +target_link_libraries ( ${TOOLS_TARGET} - PRIVATE ${HSA_BUILD_LIB_PATH}/${CORE_RUNTIME_LIB} - PRIVATE ${HSA_BUILD_LIB_PATH}/libhsakmt.so + PRIVATE hsa-runtime64 + PRIVATE hsakmt c dl pthread rt ) -## Set the VERSION and SOVERSION values -if ( DEFINED VERSION_STRING ) - set_property ( TARGET ${TOOLS_TARGET} PROPERTY VERSION "${VERSION_STRING}" ) -endif () - -set_property ( TARGET ${TOOLS_TARGET} PROPERTY SOVERSION "${VERSION_MAJOR}" ) - ## If the build is Release, strip the target library if ( "${CMAKE_BUILD_TYPE}" STREQUAL Release ) add_custom_command ( TARGET ${TOOLS_TARGET} POST_BUILD COMMAND ${CMAKE_STRIP} *.so ) endif () ## Set install information -install ( TARGETS ${TOOLS_TARGET} LIBRARY DESTINATION lib COMPONENT ${TOOLS_COMPONENT} ) -install ( DIRECTORY ${TOOLS_SOURCE_DIR}/inc/ DESTINATION include COMPONENT tools-headers FILES_MATCHING PATTERN "*.h" ) +install ( TARGETS ${TOOLS_TARGET} LIBRARY DESTINATION hsa/lib COMPONENT ${TOOLS_COMPONENT} ) +install ( DIRECTORY ${TOOLS_SOURCE_DIR}/inc/ DESTINATION hsa/include/hsa FILES_MATCHING PATTERN "*.h" ) diff --git a/runtime/hsa-runtime/CMakeLists.txt b/runtime/hsa-runtime/CMakeLists.txt index 00ac394805..d1b7387c13 100644 --- a/runtime/hsa-runtime/CMakeLists.txt +++ b/runtime/hsa-runtime/CMakeLists.txt @@ -3,7 +3,7 @@ ## The University of Illinois/NCSA ## Open Source License (NCSA) ## -## Copyright (c) 2014-2016, Advanced Micro Devices, Inc. All rights reserved. +## Copyright (c) 2014-2017, Advanced Micro Devices, Inc. All rights reserved. ## ## Developed by: ## @@ -40,15 +40,11 @@ ## ################################################################################ -cmake_minimum_required ( VERSION 2.8.0 ) -## GCC 4.8 or higher compiler required. - -if ( WIN32 ) - MESSAGE ( FATAL_ERROR "Windows build is not supported." ) -endif () +cmake_minimum_required ( VERSION 3.5.0 ) ## Verbose output. set ( CMAKE_VERBOSE_MAKEFILE on ) + ## Set core runtime module name and project name. set ( CORE_RUNTIME_NAME "hsa-runtime" ) set ( CORE_RUNTIME_COMPONENT "lib${CORE_RUNTIME_NAME}" ) @@ -56,6 +52,8 @@ set ( CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}64" ) project( ${CORE_RUNTIME_TARGET} ) list ( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules" ) +include ( utils ) +include ( hsa_common ) ## Find LibElf find_package(LibElf REQUIRED) @@ -67,50 +65,39 @@ add_definitions ( -DHSA_EXPORT_FINALIZER=1 ) add_definitions ( -DHSA_EXPORT_IMAGES=1 ) add_definitions ( -D HSA_DEPRECATED= ) -include ( utils ) -include ( hsa_common ) +## Get the package version. The defaults to 1.0.0. +get_version ( "1.0.0" ) -## Parse the package version -if( NOT DEFINED VERSION_STRING ) - set ( VERSION_STRING "1.1.0" ) -endif() +set ( BUILD_VERSION_MAJOR ${VERSION_MAJOR} ) +set ( BUILD_VERSION_MINOR ${VERSION_MINOR} ) +set ( BUILD_VERSION_PATCH ${VERSION_PATCH} ) +set ( LIB_VERSION_STRING "${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}" ) +if ( DEFINED VERSION_BUILD ) + set ( BUILD_VERSION_PATCH "${BUILD_VERSION_PATCH}-${VERSION_BUILD}" ) +endif () +set ( BUILD_VERSION_STRING "${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}" ) -## Parse the package version -parse_version ( ${VERSION_STRING} ) +## Find the hsakmt library and include files +find_file ( HSAKMT_INC "libhsakmt/hsakmt.h" ) +find_library ( HSAKMT_LIB libhsakmt.so ) +get_filename_component ( HSAKMT_LIB_PATH ${HSAKMT_LIB} DIRECTORY ) +get_filename_component ( HSAKMT_INC_PATH ${HSAKMT_INC} DIRECTORY ) -set ( PACKAGE_VERSION_MAJOR ${VERSION_MAJOR} ) -set ( PACKAGE_VERSION_MINOR ${VERSION_MINOR} ) -set ( PACKAGE_VERSION_PATCH ${VERSION_PATCH} ) - -## Parse the library version -if( NOT DEFINED RUNTIME_VERSION_STRING ) - set ( RUNTIME_VERSION_STRING "1" ) -endif() - -parse_version ( ${RUNTIME_VERSION_STRING} ) -set ( RUNTIME_VERSION_MAJOR ${VERSION_MAJOR} ) -set ( RUNTIME_VERSION_MINOR ${VERSION_MINOR} ) -set ( RUNTIME_VERSION_PATCH ${VERSION_PATCH} ) +## Set include and link directories for libhsakmt +include_directories ( ${HSAKMT_INC_PATH} ) +link_directories ( ${HSAKMT_LIB_PATH} ) +## Set include directories for ROCr runtime include_directories ( ${CMAKE_CURRENT_SOURCE_DIR} ) include_directories ( ${CMAKE_CURRENT_SOURCE_DIR}/inc ) include_directories ( ${CMAKE_CURRENT_SOURCE_DIR}/core/inc ) include_directories ( ${CMAKE_CURRENT_SOURCE_DIR}/libamdhsacode ) -include_directories ( ${HSAKMT_BUILD_INC_PATH}) -link_directories ( ${HSAKMT_BUILD_LIB_PATH} ) - -if ( DEFINED BUILDID ) - add_definitions ( -DROCR_BUILD_ID=${BUILDID} ) -else ( NOT DEFINED BUILDID ) - ## get date information based on UTC - full date - execute_process(COMMAND date --utc +%F WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE ROCR_BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE ) - ## get commit information - execute_process(COMMAND git rev-parse --short HEAD WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE ROCR_BUILD_COMMIT OUTPUT_STRIP_TRAILING_WHITESPACE ) - ## check dirty tree status - execute_process(COMMAND git diff --shortstat COMMAND wc -l WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE ROCR_DIRTY_TREE OUTPUT_STRIP_TRAILING_WHITESPACE ) - set ( BUILD_ID "${ROCR_BUILD_COMMIT}.${ROCR_BUILD_TIME}.${ROCR_DIRTY_TREE}" ) - add_definitions ( -DROCR_BUILD_ID=${BUILD_ID} ) +## ROCr build internal versioning +if ( DEFINED VERSION_BUILD ) + add_definitions ( -DROCR_BUILD_ID=${BUILD_VERSION_STRING} ) +else () + add_definitions ( -DROCR_BUILD_ID="${BUILD_VERSION_STRING}-unknown" ) endif () ## ------------------------- Linux Compiler and Linker options ------------------------- @@ -159,18 +146,14 @@ set ( SRCS "core/util/lnx/os_linux.cpp" "libamdhsacode/amd_hsa_code_util.cpp" "libamdhsacode/amd_hsa_locks.cpp" "libamdhsacode/amd_options.cpp" - "libamdhsacode/amd_hsa_code.cpp" + "libamdhsacode/amd_hsa_code.cpp" ) add_library( ${CORE_RUNTIME_TARGET} SHARED ${SRCS} ) -link_directories ( ${HSAKMT_BUILD_LIB_PATH} ) ## Set the VERSION and SOVERSION values -if ( DEFINED VERSION_STRING ) - set_property ( TARGET ${CORE_RUNTIME_TARGET} PROPERTY VERSION "${RUNTIME_VERSION_STRING}" ) -endif () - -set_property ( TARGET ${CORE_RUNTIME_TARGET} PROPERTY SOVERSION "${RUNTIME_VERSION_MAJOR}" ) +set_property ( TARGET ${CORE_RUNTIME_TARGET} PROPERTY VERSION "${LIB_VERSION_STRING}" ) +set_property ( TARGET ${CORE_RUNTIME_TARGET} PROPERTY SOVERSION "${BUILD_VERSION_MAJOR}" ) target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE hsakmt @@ -182,33 +165,33 @@ if ( "${CMAKE_BUILD_TYPE}" STREQUAL Release ) add_custom_command ( TARGET ${CORE_RUNTIME_TARGET} POST_BUILD COMMAND ${CMAKE_STRIP} *.so ) endif () +## Create symlinks for packaging and install +add_custom_target ( ${CORE_RUNTIME_COMPONENT} ALL WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -E create_symlink ../hsa/include/hsa hsa-link ) +add_custom_target ( ${CORE_RUNTIME_COMPONENT}.so-link ALL WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -E create_symlink ../hsa/lib/${CORE_RUNTIME_COMPONENT}.so ${CORE_RUNTIME_COMPONENT}.so-link ) + ## Set install information -install ( TARGETS ${CORE_RUNTIME_TARGET} LIBRARY DESTINATION lib COMPONENT ${CORE_RUNTIME_COMPONENT} ) -install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/inc/ DESTINATION include/hsa ) +install ( TARGETS ${CORE_RUNTIME_TARGET} LIBRARY DESTINATION hsa/lib COMPONENT ${CORE_RUNTIME_COMPONENT} ) +install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/inc/ DESTINATION hsa/include/hsa ) +install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/hsa-link DESTINATION include PERMISSIONS OWNER_WRITE OWNER_READ RENAME hsa ) +install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/${CORE_RUNTIME_COMPONENT}.so-link DESTINATION lib PERMISSIONS OWNER_WRITE OWNER_READ RENAME ${CORE_RUNTIME_COMPONENT}.so ) ## Packaging directives set ( CPACK_PACKAGE_NAME "hsa-rocr-dev" ) set ( CPACK_PACKAGE_VENDOR "AMD" ) -set ( CPACK_PACKAGE_VERSION_MAJOR ${PACKAGE_VERSION_MAJOR} ) -set ( CPACK_PACKAGE_VERSION_MINOR ${PACKAGE_VERSION_MINOR} ) -set ( CPACK_PACKAGE_VERSION_PATCH ${PACKAGE_VERSION_PATCH} ) +set ( CPACK_PACKAGE_VERSION_MAJOR ${BUILD_VERSION_MAJOR} ) +set ( CPACK_PACKAGE_VERSION_MINOR ${BUILD_VERSION_MINOR} ) +set ( CPACK_PACKAGE_VERSION_PATCH ${BUILD_VERSION_PATCH} ) set ( CPACK_PACKAGE_CONTACT "Advanced Micro Devices Inc." ) set ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "AMD Heterogeneous System Architecture HSA - Linux HSA Runtime for Boltzmann (ROCm) platforms" ) set ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md" ) -## Set dependency strings -set ( HSAKMT_ROCT_DEV_DEPS "" ) -if ( DEFINED HSAKMT_VERSION_STRING ) - set ( HSAKMT_ROCT_DEV_DEPS " (=${HSAKMT_VERSION_STRING})" ) -endif () - # Debian package specific variables -set ( CPACK_DEBIAN_PACKAGE_DEPENDS "hsakmt-roct-dev${HSAKMT_ROCT_DEV_DEPS}" ) +set ( CPACK_DEBIAN_PACKAGE_DEPENDS "hsakmt-roct-dev" ) set ( CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/RadeonOpenCompute/ROCR-Runtime" ) set ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/postinst;${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/prerm" ) ## RPM package specific variables -set ( CPACK_RPM_PACKAGE_DEPENDS "hsakmt-roct-dev${HSAKMT_ROCT_DEV_DEPS}" ) +set ( CPACK_RPM_PACKAGE_DEPENDS "hsakmt-roct-dev" ) set ( CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/RPM/rpm_post" ) set ( CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/RPM/rpm_postun" ) diff --git a/runtime/hsa-runtime/cmake_modules/utils.cmake b/runtime/hsa-runtime/cmake_modules/utils.cmake index 4085c5e55b..0d4dab6474 100644 --- a/runtime/hsa-runtime/cmake_modules/utils.cmake +++ b/runtime/hsa-runtime/cmake_modules/utils.cmake @@ -3,7 +3,7 @@ ## The University of Illinois/NCSA ## Open Source License (NCSA) ## -## Copyright (c) 2014-2016, Advanced Micro Devices, Inc. All rights reserved. +## Copyright (c) 2014-2017, Advanced Micro Devices, Inc. All rights reserved. ## ## Developed by: ## @@ -41,31 +41,76 @@ ################################################################################ ## Parses the VERSION_STRING variable and places -## the first, second and third number values in +## the first, second and third number values in ## the major, minor and patch variables. -function(parse_version VERSION_STRING) +function( parse_version VERSION_STRING ) - string(REGEX MATCHALL "[0123456789]+" VERSIONS ${VERSION_STRING}) - list(LENGTH VERSIONS VERSION_COUNT) + string ( FIND ${VERSION_STRING} "-" STRING_INDEX ) - if (${VERSION_COUNT} GREATER 0) - list(GET VERSIONS 0 MAJOR) - set(VERSION_MAJOR ${MAJOR} PARENT_SCOPE) - set(TEMP_VERSION_STRING "${MAJOR}") + if ( ${STRING_INDEX} GREATER -1 ) + math ( EXPR STRING_INDEX "${STRING_INDEX} + 1" ) + string ( SUBSTRING ${VERSION_STRING} ${STRING_INDEX} -1 VERSION_BUILD ) endif () - if (${VERSION_COUNT} GREATER 1) - list(GET VERSIONS 1 MINOR) - set(VERSION_MINOR ${MINOR} PARENT_SCOPE) - set(TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${MINOR}") + string ( REGEX MATCHALL "[0123456789]+" VERSIONS ${VERSION_STRING} ) + list (LENGTH VERSIONS VERSION_COUNT ) + + if ( ${VERSION_COUNT} GREATER 0) + list ( GET VERSIONS 0 MAJOR ) + set ( VERSION_MAJOR ${MAJOR} PARENT_SCOPE ) + set ( TEMP_VERSION_STRING "${MAJOR}" ) endif () - if (${VERSION_COUNT} GREATER 2) - list(GET VERSIONS 2 PATCH) - set(VERSION_PATCH ${PATCH} PARENT_SCOPE) - set(TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${PATCH}") + if ( ${VERSION_COUNT} GREATER 1 ) + list ( GET VERSIONS 1 MINOR ) + set ( VERSION_MINOR ${MINOR} PARENT_SCOPE ) + set ( TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${MINOR}" ) endif () - set(VERSION_STRING "${TEMP_VERSION_STRING}" PARENT_SCOPE) + if ( ${VERSION_COUNT} GREATER 2 ) + list ( GET VERSIONS 2 PATCH ) + set ( VERSION_PATCH ${PATCH} PARENT_SCOPE ) + set ( TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${PATCH}" ) + endif () + + if (DEFINED VERSION_BUILD ) + set ( VERSION_BUILD "${VERSION_BUILD}" PARENT_SCOPE ) + endif () + + set ( VERSION_STRING "${TEMP_VERSION_STRING}" PARENT_SCOPE ) + +endfunction () + +## Gets the current version of the repository +## using versioning tags and git describe. +## Passes back a packaging version string +## and a library version string. +function ( get_version DEFAULT_VERSION_STRING ) + + parse_version ( ${DEFAULT_VERSION_STRING} ) + + find_program ( GIT NAMES git ) + + if ( GIT ) + + execute_process ( COMMAND git describe --dirty --long --match [0-9]* + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_TAG_STRING + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE RESULT ) + + if ( ${RESULT} EQUAL 0 ) + + parse_version ( ${GIT_TAG_STRING} ) + + endif () + + endif () + + set( VERSION_STRING "${VERSION_STRING}" PARENT_SCOPE ) + set( VERSION_MAJOR "${VERSION_MAJOR}" PARENT_SCOPE ) + set( VERSION_MINOR "${VERSION_MINOR}" PARENT_SCOPE ) + set( VERSION_PATCH "${VERSION_PATCH}" PARENT_SCOPE ) + set( VERSION_BUILD "${VERSION_BUILD}" PARENT_SCOPE ) endfunction() diff --git a/runtime/packages/hsa-ext-rocr-dev/CMakeLists.txt b/runtime/packages/hsa-ext-rocr-dev/CMakeLists.txt index a04b39d281..be56905744 100644 --- a/runtime/packages/hsa-ext-rocr-dev/CMakeLists.txt +++ b/runtime/packages/hsa-ext-rocr-dev/CMakeLists.txt @@ -3,7 +3,7 @@ ## The University of Illinois/NCSA ## Open Source License (NCSA) ## -## Copyright (c) 2014-2016, Advanced Micro Devices, Inc. All rights reserved. +## Copyright (c) 2014-2017, Advanced Micro Devices, Inc. All rights reserved. ## ## Developed by: ## @@ -40,42 +40,36 @@ ## ################################################################################ -cmake_minimum_required(VERSION 3.5.1) +cmake_minimum_required ( VERSION 3.5.0 ) +## Verbose output. +set ( CMAKE_VERBOSE_MAKEFILE on ) + +## Set the name and project name. set ( PROJECT_STRING hsa-ext-rocr-dev ) +project ( ${PROJECT_STRING} ) -project( ${PROJECT_STRING} ) - -list(APPEND CMAKE_MODULE_PATH "${HSA_OPENSOURCE_ROOT}/cmake_modules") - +list ( APPEND CMAKE_MODULE_PATH "${HSA_OPENSOURCE_ROOT}/cmake_modules" ) include ( utils ) -if(NOT DEFINED VERSION_STRING) - set (VERSION_STRING "1.0.0") -endif() +## Get the package version. The defaults to 1.0.0. +get_version ( "1.0.0" ) -parse_version(${VERSION_STRING}) - -set ( PACKAGE_VERSION_MAJOR ${VERSION_MAJOR} ) -set ( PACKAGE_VERSION_MINOR ${VERSION_MINOR} ) -set ( PACKAGE_VERSION_PATCH ${VERSION_PATCH} ) - -if(NOT DEFINED RUNTIME_VERSION_STRING) - set (RUNTIME_VERSION_STRING "1.0.0") +set ( BUILD_VERSION_MAJOR ${VERSION_MAJOR} ) +set ( BUILD_VERSION_MINOR ${VERSION_MINOR} ) +set ( BUILD_VERSION_PATCH ${VERSION_PATCH} ) +set ( LIB_VERSION_STRING "${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}" ) +if ( DEFINED VERSION_BUILD ) + set ( BUILD_VERSION_PATCH "${BUILD_VERSION_PATCH}-${VERSION_BUILD}" ) endif () - -parse_version(${RUNTIME_VERSION_STRING}) - -set ( RUNTIME_VERSION_MAJOR ${VERSION_MAJOR} ) -set ( RUNTIME_VERSION_MINOR ${VERSION_MINOR} ) -set ( RUNTIME_VERSION_PATCH ${VERSION_PATCH} ) +set ( BUILD_VERSION_STRING "${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}" ) set ( PACKAGE_DIRECTORIES - "bin" - "hsa/bin" + "bin" + "hsa/bin" "hsa/lib") - -add_custom_command(OUTPUT ${PACKAGE_DIRECTORIES} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + +add_custom_command ( OUTPUT ${PACKAGE_DIRECTORIES} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND mkdir -p bin COMMAND mkdir -p hsa/lib COMMAND mkdir -p hsa/bin ) @@ -88,55 +82,55 @@ set ( IMAGE_NAME "libhsa-ext-image64" ) set ( AMDHSACOD_NAME "amdhsacod" ) set ( AMDHSAFIN_NAME "amdhsafin" ) -set ( FINALIZER_LIBRARY_SOURCE "${OUT_DIR}/lib/${FINALIZER_NAME}.so.${RUNTIME_VERSION_STRING}" ) -set ( TOOLS_LIBRARY_SOURCE "${OUT_DIR}/lib/${TOOLS_NAME}.so.${RUNTIME_VERSION_STRING}" ) -set ( IMAGE_LIBRARY_SOURCE "${OUT_DIR}/lib/${IMAGE_NAME}.so.${RUNTIME_VERSION_STRING}" ) +set ( FINALIZER_LIBRARY_SOURCE "${OUT_DIR}/lib/${FINALIZER_NAME}.so.${LIB_VERSION_STRING}" ) +set ( TOOLS_LIBRARY_SOURCE "${OUT_DIR}/lib/${TOOLS_NAME}.so.${LIB_VERSION_STRING}" ) +set ( IMAGE_LIBRARY_SOURCE "${OUT_DIR}/lib/${IMAGE_NAME}.so.${LIB_VERSION_STRING}" ) set ( AMDHSACOD_SOURCE "${OUT_DIR}/bin/${AMDHSACOD_NAME}" ) set ( AMDHSAFIN_SOURCE "${OUT_DIR}/bin/${AMDHSAFIN_NAME}" ) -set ( FINALIZER_LIBRARY_TARGET "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${FINALIZER_NAME}.so.${RUNTIME_VERSION_STRING}" ) -set ( TOOLS_LIBRARY_TARGET "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${TOOLS_NAME}.so.${RUNTIME_VERSION_STRING}" ) -set ( IMAGE_LIBRARY_TARGET "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${IMAGE_NAME}.so.${RUNTIME_VERSION_STRING}" ) +set ( FINALIZER_LIBRARY_TARGET "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${FINALIZER_NAME}.so.${LIB_VERSION_STRING}" ) +set ( TOOLS_LIBRARY_TARGET "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${TOOLS_NAME}.so.${LIB_VERSION_STRING}" ) +set ( IMAGE_LIBRARY_TARGET "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${IMAGE_NAME}.so.${LIB_VERSION_STRING}" ) set ( AMDHSACOD_TARGET "${CMAKE_CURRENT_BINARY_DIR}/hsa/bin/${AMDHSACOD_NAME}" ) set ( AMDHSAFIN_TARGET "${CMAKE_CURRENT_BINARY_DIR}/hsa/bin/${AMDHSAFIN_NAME}" ) -set ( FINALIZER_LIBRARY_SONAME "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${FINALIZER_NAME}.so.${RUNTIME_VERSION_MAJOR}" ) -set ( TOOLS_LIBRARY_SONAME "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${TOOLS_NAME}.so.${RUNTIME_VERSION_MAJOR}" ) -set ( IMAGE_LIBRARY_SONAME "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${IMAGE_NAME}.so.${RUNTIME_VERSION_MAJOR}" ) +set ( FINALIZER_LIBRARY_SONAME "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${FINALIZER_NAME}.so.${BUILD_VERSION_MAJOR}" ) +set ( TOOLS_LIBRARY_SONAME "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${TOOLS_NAME}.so.${BUILD_VERSION_MAJOR}" ) +set ( IMAGE_LIBRARY_SONAME "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${IMAGE_NAME}.so.${BUILD_VERSION_MAJOR}" ) set ( AMDHSACOD_LINK "${CMAKE_CURRENT_BINARY_DIR}/bin/${AMDHSACOD_NAME}" ) set ( AMDHSAFIN_LINK "${CMAKE_CURRENT_BINARY_DIR}/bin/${AMDHSAFIN_NAME}" ) -add_custom_command(OUTPUT ${FINALIZER_LIBRARY_TARGET} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy ${FINALIZER_LIBRARY_SOURCE} ${FINALIZER_LIBRARY_TARGET}) +add_custom_command ( OUTPUT ${FINALIZER_LIBRARY_TARGET} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy ${FINALIZER_LIBRARY_SOURCE} ${FINALIZER_LIBRARY_TARGET} ) -add_custom_command(OUTPUT ${TOOLS_LIBRARY_TARGET} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy ${TOOLS_LIBRARY_SOURCE} ${TOOLS_LIBRARY_TARGET}) +add_custom_command ( OUTPUT ${TOOLS_LIBRARY_TARGET} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy ${TOOLS_LIBRARY_SOURCE} ${TOOLS_LIBRARY_TARGET} ) -add_custom_command(OUTPUT ${IMAGE_LIBRARY_TARGET} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy ${IMAGE_LIBRARY_SOURCE} ${IMAGE_LIBRARY_TARGET}) +add_custom_command ( OUTPUT ${IMAGE_LIBRARY_TARGET} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy ${IMAGE_LIBRARY_SOURCE} ${IMAGE_LIBRARY_TARGET} ) -add_custom_command(OUTPUT ${AMDHSACOD_TARGET} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy ${AMDHSACOD_SOURCE} ${AMDHSACOD_TARGET}) +add_custom_command ( OUTPUT ${AMDHSACOD_TARGET} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy ${AMDHSACOD_SOURCE} ${AMDHSACOD_TARGET} ) -add_custom_command(OUTPUT ${AMDHSAFIN_TARGET} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy ${AMDHSAFIN_SOURCE} ${AMDHSAFIN_TARGET}) +add_custom_command ( OUTPUT ${AMDHSAFIN_TARGET} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy ${AMDHSAFIN_SOURCE} ${AMDHSAFIN_TARGET} ) -add_custom_command(OUTPUT ${FINALIZER_LIBRARY_SONAME} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hsa/lib - COMMAND ${CMAKE_COMMAND} -E create_symlink ${FINALIZER_NAME}.so.${VERSION_STRING} ${FINALIZER_NAME}.so.${RUNTIME_VERSION_MAJOR} ) +add_custom_command ( OUTPUT ${FINALIZER_LIBRARY_SONAME} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hsa/lib + COMMAND ${CMAKE_COMMAND} -E create_symlink ${FINALIZER_NAME}.so.${VERSION_STRING} ${FINALIZER_NAME}.so.${RUNTIME_VERSION_MAJOR} ) -add_custom_command(OUTPUT ${TOOLS_LIBRARY_SONAME} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hsa/lib - COMMAND ${CMAKE_COMMAND} -E create_symlink ${TOOLS_NAME}.so.${VERSION_STRING} ${TOOLS_NAME}.so.${RUNTIME_VERSION_MAJOR} ) +add_custom_command ( OUTPUT ${TOOLS_LIBRARY_SONAME} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hsa/lib + COMMAND ${CMAKE_COMMAND} -E create_symlink ${TOOLS_NAME}.so.${VERSION_STRING} ${TOOLS_NAME}.so.${RUNTIME_VERSION_MAJOR} ) -add_custom_command(OUTPUT ${IMAGE_LIBRARY_SONAME} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hsa/lib - COMMAND ${CMAKE_COMMAND} -E create_symlink ${IMAGE_NAME}.so.${VERSION_STRING} ${IMAGE_NAME}.so.${RUNTIME_VERSION_MAJOR} ) +add_custom_command ( OUTPUT ${IMAGE_LIBRARY_SONAME} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hsa/lib + COMMAND ${CMAKE_COMMAND} -E create_symlink ${IMAGE_NAME}.so.${VERSION_STRING} ${IMAGE_NAME}.so.${RUNTIME_VERSION_MAJOR} ) -add_custom_command(OUTPUT ${AMDHSACOD_LINK} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin - COMMAND ${CMAKE_COMMAND} -E create_symlink ../hsa/bin/${AMDHSACOD_NAME} ${AMDHSACOD_NAME} ) +add_custom_command ( OUTPUT ${AMDHSACOD_LINK} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin + COMMAND ${CMAKE_COMMAND} -E create_symlink ../hsa/bin/${AMDHSACOD_NAME} ${AMDHSACOD_NAME} ) -add_custom_command(OUTPUT ${AMDHSAFIN_LINK} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin - COMMAND ${CMAKE_COMMAND} -E create_symlink ../hsa/bin/${AMDHSAFIN_NAME} ${AMDHSAFIN_NAME} ) +add_custom_command ( OUTPUT ${AMDHSAFIN_LINK} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin + COMMAND ${CMAKE_COMMAND} -E create_symlink ../hsa/bin/${AMDHSAFIN_NAME} ${AMDHSAFIN_NAME} ) -add_custom_target (copy_targets ALL DEPENDS create_dirs +add_custom_target ( copy_targets ALL DEPENDS create_dirs ${FINALIZER_LIBRARY_TARGET} ${TOOLS_LIBRARY_TARGET} ${IMAGE_LIBRARY_TARGET} @@ -149,14 +143,14 @@ add_custom_target (copy_targets ALL DEPENDS create_dirs ${AMDHSAFIN_LINK} ) -install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin/ DESTINATION bin USE_SOURCE_PERMISSIONS ) -install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hsa/ DESTINATION hsa USE_SOURCE_PERMISSIONS ) +install ( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin/ DESTINATION bin USE_SOURCE_PERMISSIONS ) +install ( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hsa/ DESTINATION hsa USE_SOURCE_PERMISSIONS ) set ( CPACK_PACKAGE_NAME ${PROJECT_NAME} ) set ( CPACK_PACKAGE_VENDOR "AMD" ) -set ( CPACK_PACKAGE_VERSION_MAJOR ${PACKAGE_VERSION_MAJOR} ) -set ( CPACK_PACKAGE_VERSION_MINOR ${PACKAGE_VERSION_MINOR} ) -set ( CPACK_PACKAGE_VERSION_PATCH ${PACKAGE_VERSION_PATCH} ) +set ( CPACK_PACKAGE_VERSION_MAJOR ${BUILD_VERSION_MAJOR} ) +set ( CPACK_PACKAGE_VERSION_MINOR ${BUILD_VERSION_MINOR} ) +set ( CPACK_PACKAGE_VERSION_PATCH ${BUILD_VERSION_PATCH} ) set ( CPACK_PACKAGE_CONTACT "James Edwards (JamesAdrian.Edwards@amd.com)" ) set ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "AMD Heterogeneous System Architecture HSA - Linux HSA Runtime extensions for ROCm platforms" ) set ( CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/description" ) diff --git a/runtime/packages/hsa-rocr-dev/CMakeLists.txt b/runtime/packages/hsa-rocr-dev/CMakeLists.txt index 2fb73ce680..e61b9d82de 100644 --- a/runtime/packages/hsa-rocr-dev/CMakeLists.txt +++ b/runtime/packages/hsa-rocr-dev/CMakeLists.txt @@ -3,7 +3,7 @@ ## The University of Illinois/NCSA ## Open Source License (NCSA) ## -## Copyright (c) 2014-2016, Advanced Micro Devices, Inc. All rights reserved. +## Copyright (c) 2014-2017, Advanced Micro Devices, Inc. All rights reserved. ## ## Developed by: ## @@ -40,51 +40,35 @@ ## ################################################################################ -cmake_minimum_required(VERSION 3.5.1) +cmake_minimum_required ( VERSION 3.5.0 ) +## Verbose output. +set ( CMAKE_VERBOSE_MAKEFILE on ) + +## Set the name and project name. set ( PROJECT_STRING hsa-rocr-dev ) - project( ${PROJECT_STRING} ) -list(APPEND CMAKE_MODULE_PATH "${HSA_OPENSOURCE_ROOT}/cmake_modules") - +list ( APPEND CMAKE_MODULE_PATH "${HSA_OPENSOURCE_ROOT}/cmake_modules" ) include ( utils ) -if(NOT DEFINED VERSION_STRING) - set (VERSION_STRING "1.0.0") -endif() +## Get the package version. The defaults to 1.0.0. +get_version ( "1.0.0" ) -parse_version(${VERSION_STRING}) - -set ( PROJECT_VERSION_MAJOR ${VERSION_MAJOR} ) -set ( PROJECT_VERSION_MINOR ${VERSION_MINOR} ) -set ( PROJECT_VERSION_PATCH ${VERSION_PATCH} ) - -if(NOT DEFINED RUNTIME_VERSION_STRING) - set (RUNTIME_VERSION_STRING "1.0.0") +set ( BUILD_VERSION_MAJOR ${VERSION_MAJOR} ) +set ( BUILD_VERSION_MINOR ${VERSION_MINOR} ) +set ( BUILD_VERSION_PATCH ${VERSION_PATCH} ) +set ( LIB_VERSION_STRING "${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}" ) +if ( DEFINED VERSION_BUILD ) + set ( BUILD_VERSION_PATCH "${BUILD_VERSION_PATCH}-${VERSION_BUILD}" ) endif () +set ( BUILD_VERSION_STRING "${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}" ) -parse_version(${RUNTIME_VERSION_STRING}) - -set ( RUNTIME_VERSION_MAJOR ${VERSION_MAJOR} ) -set ( RUNTIME_VERSION_MINOR ${VERSION_MINOR} ) -set ( RUNTIME_VERSION_PATCH ${VERSION_PATCH} ) - -if(NOT DEFINED HSAKMT_VERSION_STRING) - set (HSAKMT_VERSION_STRING "2.0.1") -endif () - -parse_version(${HSAKMT_VERSION_STRING}) - -set ( HSAKMT_VERSION_MAJOR ${VERSION_MAJOR} ) -set ( HSAKMT_VERSION_MINOR ${VERSION_MINOR} ) -set ( HSAKMT_VERSION_PATCH ${VERSION_PATCH} ) - +## Define the runtime components set ( RUNTIME_NAME "libhsa-runtime64" ) - -set ( RUNTIME_LIBRARY_SOURCE "${OUT_DIR}/lib/${RUNTIME_NAME}.so.${RUNTIME_VERSION_STRING}" ) -set ( RUNTIME_LIBRARY_TARGET "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${RUNTIME_NAME}.so.${RUNTIME_VERSION_STRING}" ) -set ( RUNTIME_LIBRARY_SONAME "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${RUNTIME_NAME}.so.${RUNTIME_VERSION_MAJOR}" ) +set ( RUNTIME_LIBRARY_SOURCE "${OUT_DIR}/lib/${RUNTIME_NAME}.so.${LIB_VERSION_STRING}" ) +set ( RUNTIME_LIBRARY_TARGET "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${RUNTIME_NAME}.so.${LIB_VERSION_STRING}" ) +set ( RUNTIME_LIBRARY_SONAME "${CMAKE_CURRENT_BINARY_DIR}/hsa/lib/${RUNTIME_NAME}.so.${BUILD_VERSION_MAJOR}" ) set ( RUNTIME_LIBRARY_LINKNAME "${CMAKE_CURRENT_BINARY_DIR}/lib/${RUNTIME_NAME}.so" ) set ( PACKAGE_DIRECTORIES @@ -182,21 +166,21 @@ install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.md DESTINATION hsa ) ## Packaging directives set ( CPACK_PACKAGE_NAME ${PROJECT_NAME} ) set ( CPACK_PACKAGE_VENDOR "AMD" ) -set ( CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR} ) -set ( CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR} ) -set ( CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH} ) +set ( CPACK_PACKAGE_VERSION_MAJOR ${BUILD_VERSION_MAJOR} ) +set ( CPACK_PACKAGE_VERSION_MINOR ${BUILD_VERSION_MINOR} ) +set ( CPACK_PACKAGE_VERSION_PATCH ${BUILD_VERSION_PATCH} ) set ( CPACK_PACKAGE_CONTACT "James Edwards (JamesAdrian.Edwards@amd.com)" ) set ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "AMD Heterogeneous System Architecture HSA - Linux HSA Runtime for ROCm platforms" ) set ( CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/description" ) set ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/copyright" ) # Debian package specific variables -set ( CPACK_DEBIAN_PACKAGE_DEPENDS "hsa-ext-rocr-dev (=${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}), hsakmt-roct-dev (=${HSAKMT_VERSION_STRING})" ) +set ( CPACK_DEBIAN_PACKAGE_DEPENDS "hsa-ext-rocr-dev (=${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}) , hsakmt-roct-dev" ) set ( CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/RadeonOpenCompute/ROCR-Runtime" ) set ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/postinst;${CMAKE_CURRENT_SOURCE_DIR}/prerm" ) # RPM package specific variables -set ( CPACK_RPM_PACKAGE_DEPENDS "hsa-ext-rocr-dev (=${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}), hsakmt-roct-dev (=${HSAKMT_VERSION_STRING})" ) +set ( CPACK_RPM_PACKAGE_DEPENDS "hsa-ext-rocr-dev (=${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}), hsakmt-roct-dev" ) set ( CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/rpm_post" ) set ( CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/rpm_postun" )