@@ -48,11 +48,7 @@ cmake_minimum_required ( VERSION 3.7 )
4848unset ( hsa-runtime64_LIB_DEPENDS CACHE )
4949
5050set (CMAKE_VERBOSE_MAKEFILE ON )
51- if (UNIX )
52- set (CMAKE_CXX_STANDARD 17)
53- else ()
54- set (CMAKE_CXX_STANDARD 20)
55- endif ()
51+ set (CMAKE_CXX_STANDARD 17)
5652
5753## Set core runtime module name and project name.
5854set ( CORE_RUNTIME_NAME "hsa-runtime64" )
@@ -93,46 +89,35 @@ if(NOT LibElf_FOUND)
9389 find_package (LibElf REQUIRED )
9490endif ()
9591
92+ pkg_check_modules (drm REQUIRED IMPORTED_TARGET libdrm )
93+
9694## Create the rocr target.
9795add_library ( ${CORE_RUNTIME_TARGET} "" )
9896
99- if (UNIX )
100- pkg_check_modules (drm REQUIRED IMPORTED_TARGET libdrm )
101- else ()
102- target_include_directories (${CORE_RUNTIME_TARGET} PRIVATE ${LIBELF_INCLUDE_DIR} )
103- if (${BUILD_SHARED_LIBS} )
104- target_link_libraries (${CORE_RUNTIME_TARGET} PRIVATE oclelf )
105- endif ()
106- endif ()
10797## Enforce uniform output file naming.
10898set_property (TARGET ${CORE_RUNTIME_TARGET} PROPERTY OUTPUT_NAME ${CORE_RUNTIME_NAME} )
10999
110100## Compiler preproc definitions.
111- if (UNIX )
112- target_compile_definitions (${CORE_RUNTIME_TARGET} PRIVATE "${HSA_COMMON_DEFS} " __linux__ HSA_EXPORT=1 HSA_EXPORT_FINALIZER=1 HSA_EXPORT_IMAGES=1 HSA_DEPRECATED=
113- ROCR_BUILD_ID= "${PACKAGE_VERSION_STRING} -${VERSION_JOB} -${VERSION_HASH} " )
114-
115- ## Check for memfd_create syscall
116- include (CheckSymbolExists )
117- CHECK_SYMBOL_EXISTS ( "__NR_memfd_create" "sys/syscall.h" HAVE_MEMFD_CREATE )
118- if ( HAVE_MEMFD_CREATE )
119- target_compile_definitions (${CORE_RUNTIME_TARGET} PRIVATE HAVE_MEMFD_CREATE )
120- endif ()
121-
122- ## Check for _GNU_SOURCE pthread extensions
123- set (CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
124- CHECK_SYMBOL_EXISTS ( "pthread_attr_setaffinity_np" "pthread.h" HAVE_PTHREAD_ATTR_SETAFFINITY_NP )
125- CHECK_SYMBOL_EXISTS ( "pthread_rwlockattr_setkind_np" "pthread.h" HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP )
126- unset (CMAKE_REQUIRED_DEFINITIONS)
127- if ( HAVE_PTHREAD_ATTR_SETAFFINITY_NP )
128- target_compile_definitions (${CORE_RUNTIME_TARGET} PRIVATE HAVE_PTHREAD_ATTR_SETAFFINITY_NP )
129- endif ()
130- if ( HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP )
131- target_compile_definitions (${CORE_RUNTIME_TARGET} PRIVATE HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP )
132- endif ()
133- else ()
134- target_compile_definitions (${CORE_RUNTIME_TARGET} PRIVATE "${HSA_COMMON_DEFS} " AMD_LIBELF=1 HSA_EXPORT=1 HSA_EXPORT_FINALIZER=1 HSA_EXPORT_IMAGES=1 HSA_DEPRECATED=
135- ROCR_BUILD_ID= "${PACKAGE_VERSION_STRING} -${VERSION_JOB} -${VERSION_HASH} " )
101+ target_compile_definitions (${CORE_RUNTIME_TARGET} PRIVATE "${HSA_COMMON_DEFS} " __linux__ HSA_EXPORT=1 HSA_EXPORT_FINALIZER=1 HSA_EXPORT_IMAGES=1 HSA_DEPRECATED=
102+ ROCR_BUILD_ID= "${PACKAGE_VERSION_STRING} -${VERSION_JOB} -${VERSION_HASH} " )
103+
104+ ## Check for memfd_create syscall
105+ include (CheckSymbolExists )
106+ CHECK_SYMBOL_EXISTS ( "__NR_memfd_create" "sys/syscall.h" HAVE_MEMFD_CREATE )
107+ if ( HAVE_MEMFD_CREATE )
108+ target_compile_definitions (${CORE_RUNTIME_TARGET} PRIVATE HAVE_MEMFD_CREATE )
109+ endif ()
110+
111+ ## Check for _GNU_SOURCE pthread extensions
112+ set (CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
113+ CHECK_SYMBOL_EXISTS ( "pthread_attr_setaffinity_np" "pthread.h" HAVE_PTHREAD_ATTR_SETAFFINITY_NP )
114+ CHECK_SYMBOL_EXISTS ( "pthread_rwlockattr_setkind_np" "pthread.h" HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP )
115+ unset (CMAKE_REQUIRED_DEFINITIONS)
116+ if ( HAVE_PTHREAD_ATTR_SETAFFINITY_NP )
117+ target_compile_definitions (${CORE_RUNTIME_TARGET} PRIVATE HAVE_PTHREAD_ATTR_SETAFFINITY_NP )
118+ endif ()
119+ if ( HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP )
120+ target_compile_definitions (${CORE_RUNTIME_TARGET} PRIVATE HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP )
136121endif ()
137122
138123## Set include directories for ROCr runtime
@@ -148,18 +133,16 @@ target_include_directories( ${CORE_RUNTIME_TARGET}
148133
149134
150135## ------------------------- Linux Compiler and Linker options -------------------------
151- if (UNIX )
152- set ( HSA_CXX_FLAGS ${HSA_COMMON_CXX_FLAGS} -fexceptions -fno-rtti -fvisibility=hidden -Wno-error=missing-braces -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 )
153-
154- ## Extra x86 specific settings
155- if ( CMAKE_SYSTEM_PROCESSOR MATCHES "i?86|x86_64|amd64|AMD64" )
156- set ( HSA_CXX_FLAGS ${HSA_CXX_FLAGS} -mmwaitx )
157- endif ()
136+ set ( HSA_CXX_FLAGS ${HSA_COMMON_CXX_FLAGS} -fexceptions -fno-rtti -fvisibility=hidden -Wno-error=missing-braces -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 )
158137
159- ## Extra image settings - audit!
160- set ( HSA_CXX_FLAGS ${HSA_CXX_FLAGS} -Wno-deprecated-declarations )
138+ ## Extra x86 specific settings
139+ if ( CMAKE_SYSTEM_PROCESSOR MATCHES "i?86|x86_64|amd64|AMD64" )
140+ set ( HSA_CXX_FLAGS ${HSA_CXX_FLAGS} -mmwaitx )
161141endif ()
162142
143+ ## Extra image settings - audit!
144+ set ( HSA_CXX_FLAGS ${HSA_CXX_FLAGS} -Wno-deprecated-declarations )
145+
163146if ( CMAKE_COMPILER_IS_GNUCXX )
164147 set ( HSA_CXX_FLAGS ${HSA_CXX_FLAGS} -Wno-error=maybe-uninitialized -Wno-error=unused-but-set-variable)
165148endif ()
@@ -170,14 +153,9 @@ if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang")
170153 endif ()
171154endif ()
172155
173- if (UNIX )
174- set ( LNKSCR "hsacore.so.link" )
175- set ( DRVDEF "${CMAKE_CURRENT_SOURCE_DIR} /hsacore.so.def" )
176- set (HSA_SHARED_LINK_FLAGS "-Wl,-Bdynamic -Wl,-z,noexecstack -Wl,${CMAKE_CURRENT_SOURCE_DIR} /${LNKSCR} -Wl,--version-script=${DRVDEF} -Wl,--enable-new-dtags" )
177- else ()
178- target_sources (${CORE_RUNTIME_TARGET} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR} /hsacore.dll.def" )
179- set (HSA_SHARED_LINK_FLAGS "" )
180- endif ()
156+ set ( DRVDEF "${CMAKE_CURRENT_SOURCE_DIR} /hsacore.so.def" )
157+ set ( LNKSCR "hsacore.so.link" )
158+ set ( HSA_SHARED_LINK_FLAGS "-Wl,-Bdynamic -Wl,-z,noexecstack -Wl,${CMAKE_CURRENT_SOURCE_DIR} /${LNKSCR} -Wl,--version-script=${DRVDEF} -Wl,--enable-new-dtags" )
181159
182160target_compile_options (${CORE_RUNTIME_TARGET} PRIVATE ${HSA_CXX_FLAGS} )
183161#target_link_options not available prior to CMake 3.13
@@ -187,9 +165,13 @@ set_property(TARGET ${CORE_RUNTIME_TARGET} PROPERTY LINK_FLAGS ${HSA_SHARED_LINK
187165## Source files.
188166set ( SRCS core/driver/driver.cpp
189167 core/driver/kfd/amd_kfd_driver.cpp
168+ core/driver/xdna/amd_xdna_driver.cpp
169+ core/util/lnx/os_linux.cpp
190170 core/util/small_heap.cpp
191171 core/util/timer.cpp
192172 core/util/flag.cpp
173+ core/runtime/amd_aie_agent.cpp
174+ core/runtime/amd_aie_aql_queue.cpp
193175 core/runtime/amd_blit_kernel.cpp
194176 core/runtime/amd_blit_sdma.cpp
195177 core/runtime/amd_cpu_agent.cpp
@@ -226,22 +208,12 @@ set ( SRCS core/driver/driver.cpp
226208 libamdhsacode/amd_hsa_code.cpp
227209 libamdhsacode/amd_core_dump.cpp )
228210
229- if (UNIX )
230- set (SRC_OS core/util/lnx/os_linux.cpp)
231- set (SRC_XDNA core/driver/xdna/amd_xdna_driver.cpp
232- core/runtime/amd_aie_agent.cpp
233- core/runtime/amd_aie_aql_queue.cpp)
234- else ()
235- target_compile_definitions (${CORE_RUNTIME_TARGET} PRIVATE NOMINMAX )
236- set (SRC_OS core/util/win/os_win.cpp)
237- endif ()
238-
239211if ( BUILD_THUNK_VIRTIO )
240212 list (APPEND SRCS core/driver/virtio/amd_kfd_virtio_driver.cpp)
241213 target_compile_definitions (hsa-runtime64 PRIVATE HSAKMT_VIRTIO_ENABLED=1 )
242214endif ()
243215
244- target_sources ( ${CORE_RUNTIME_TARGET} PRIVATE ${SRCS} ${SRC_OS} ${SRC_XDNA} )
216+ target_sources ( ${CORE_RUNTIME_TARGET} PRIVATE ${SRCS} )
245217
246218## Depend on trap handler target.
247219add_subdirectory ( ${CMAKE_CURRENT_SOURCE_DIR} /core/runtime/trap_handler )
@@ -261,15 +233,10 @@ if (${PC_SAMPLING_SUPPORT})
261233 target_sources ( ${CORE_RUNTIME_TARGET} PRIVATE ${PCS_SRCS} )
262234endif ()
263235
264- if (UNIX )
265- if ( NOT DEFINED IMAGE_SUPPORT AND CMAKE_SYSTEM_PROCESSOR MATCHES "i?86|x86_64|amd64|AMD64|loongarch64" )
266- set ( IMAGE_SUPPORT ON )
267- endif ()
268- set ( IMAGE_SUPPORT ${IMAGE_SUPPORT} CACHE BOOL "Build with image support (default: ON for x86, OFF elsewise)." )
269- else ()
270- # Force IMAGE_SUPPORT to be OFF
271- set (IMAGE_SUPPORT OFF CACHE BOOL "Build with image support (forced to OFF)" FORCE )
236+ if ( NOT DEFINED IMAGE_SUPPORT AND CMAKE_SYSTEM_PROCESSOR MATCHES "i?86|x86_64|amd64|AMD64|loongarch64" )
237+ set ( IMAGE_SUPPORT ON )
272238endif ()
239+ set ( IMAGE_SUPPORT ${IMAGE_SUPPORT} CACHE BOOL "Build with image support (default: ON for x86, OFF elsewise)." )
273240
274241## Optional image module defintions.
275242if (${IMAGE_SUPPORT} )
@@ -338,45 +305,30 @@ if(${IMAGE_SUPPORT})
338305
339306endif ()
340307
341- if (UNIX )
342- target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE elf::elf dl pthread rt )
343- else ()
344- target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE Ws2_32 )
345- target_link_directories (${CORE_RUNTIME_TARGET} PRIVATE ${DXCORE_LIB_PATH} )
346- target_link_libraries (${CORE_RUNTIME_TARGET} PRIVATE dxcore )
347- endif ()
348-
308+ target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE elf::elf dl pthread rt )
349309# For static package rocprofiler-register dependency is not required
350310# Link to hsakmt target for shared library builds
351311# Link to hsakmt-staticdrm target for static library builds
352312if ( BUILD_SHARED_LIBS )
353- if (UNIX )
354- target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE hsakmt::hsakmt PkgConfig::drm )
355- if ( BUILD_THUNK_VIRTIO )
356- message (STATUS "Building with virtio support" )
357- target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE hsakmt_virtio )
358- endif ()
359- find_package (rocprofiler-register )
360- if (rocprofiler-register_FOUND)
361- target_compile_definitions (${CORE_RUNTIME_TARGET} PRIVATE HSA_ROCPROFILER_REGISTER=1
362- HSA_VERSION_MAJOR=${VERSION_MAJOR}
363- HSA_VERSION_MINOR=${VERSION_MINOR}
364- HSA_VERSION_PATCH=${VERSION_PATCH} )
365- target_link_libraries (${CORE_RUNTIME_TARGET} PRIVATE rocprofiler-register::rocprofiler-register )
366- set (HSA_DEP_ROCPROFILER_REGISTER ON CACHE INTERNAL "" )
367- else ()
368- set (HSA_DEP_ROCPROFILER_REGISTER OFF CACHE INTERNAL "" )
369- endif () # end rocprofiler-register_FOUND
370- else ()
371- target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE hsakmt::hsakmt )
313+ target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE hsakmt::hsakmt PkgConfig::drm )
314+ if ( BUILD_THUNK_VIRTIO )
315+ message (STATUS "Building with virtio support" )
316+ target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE hsakmt_virtio )
372317 endif ()
373- else ()
374- if (UNIX )
375- include_directories (${drm_INCLUDE_DIRS} )
376- target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE hsakmt-staticdrm::hsakmt-staticdrm )
318+ find_package (rocprofiler-register )
319+ if (rocprofiler-register_FOUND)
320+ target_compile_definitions (${CORE_RUNTIME_TARGET} PRIVATE HSA_ROCPROFILER_REGISTER=1
321+ HSA_VERSION_MAJOR=${VERSION_MAJOR}
322+ HSA_VERSION_MINOR=${VERSION_MINOR}
323+ HSA_VERSION_PATCH=${VERSION_PATCH} )
324+ target_link_libraries (${CORE_RUNTIME_TARGET} PRIVATE rocprofiler-register::rocprofiler-register )
325+ set (HSA_DEP_ROCPROFILER_REGISTER ON CACHE INTERNAL "" )
377326 else ()
378- target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE hsakmt-staticdrm::hsakmt-staticdrm )
379- endif ()
327+ set (HSA_DEP_ROCPROFILER_REGISTER OFF CACHE INTERNAL "" )
328+ endif () # end rocprofiler-register_FOUND
329+ else ()
330+ include_directories (${drm_INCLUDE_DIRS} )
331+ target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE hsakmt-staticdrm::hsakmt-staticdrm )
380332endif ()#end BUILD_SHARED_LIBS
381333
382334## Set the VERSION and SOVERSION values
@@ -398,11 +350,8 @@ if( NOT ${BUILD_SHARED_LIBS} )
398350
399351 ## Add external link requirements.
400352 target_link_libraries ( ${CORE_RUNTIME_NAME} INTERFACE hsakmt-staticdrm::hsakmt-staticdrm )
401- if (UNIX )
402- target_link_libraries ( ${CORE_RUNTIME_NAME} INTERFACE elf::elf dl pthread rt )
403- else ()
404- target_link_libraries ( ${CORE_RUNTIME_NAME} INTERFACE rt )
405- endif ()
353+ target_link_libraries ( ${CORE_RUNTIME_NAME} INTERFACE elf::elf dl pthread rt )
354+
406355 install ( TARGETS ${CORE_RUNTIME_NAME} EXPORT ${CORE_RUNTIME_NAME} Targets )
407356endif ()
408357
@@ -455,12 +404,10 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CORE_RUNTIME_NAME}-config.cmake ${CM
455404
456405# Install build files needed only when using a static build.
457406if ( NOT ${BUILD_SHARED_LIBS} )
458- if (UNIX )
459- # libelf find package module
460- install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /cmake_modules/FindLibElf.cmake ${CMAKE_CURRENT_SOURCE_DIR} /cmake_modules/COPYING-CMAKE-SCRIPTS
461- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${CORE_RUNTIME_NAME}
462- COMPONENT dev)
463- endif ()
407+ # libelf find package module
408+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /cmake_modules/FindLibElf.cmake ${CMAKE_CURRENT_SOURCE_DIR} /cmake_modules/COPYING-CMAKE-SCRIPTS
409+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${CORE_RUNTIME_NAME}
410+ COMPONENT dev)
464411 # Linker script (defines function aliases)
465412 install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /${LNKSCR}
466413 DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${CORE_RUNTIME_NAME}
0 commit comments