@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.10)
22project (hiprt)
33
44# Options
5- option (BAKE_KERNEL "enable the use of encrypted and baked kernels" OFF )
5+ option (BAKE_KERNEL "Enable the use of encrypted and baked kernels" OFF )
66option (BITCODE "Enable bitcode linking" OFF )
77option (PRECOMPILE "Precompile kernels" OFF )
88option (HIPRTEW "Use hiprtew" OFF )
@@ -31,6 +31,9 @@ add_definitions(-DGTEST_HAS_TR1_TUPLE=0)
3131
3232
3333
34+
35+
36+
3437# Functions
3538function (copy_dir src_dir dst_dir pattern)
3639 file (GLOB_RECURSE files "${src_dir} /${pattern} " )
@@ -252,8 +255,13 @@ endif()
252255add_definitions (-D__USE_HIP__)
253256
254257
258+ # this define is to identify that we are on the public repository of HIPRT.
259+ # it helps AMD to maintain both a public and a private repo for experimentation.
260+ add_definitions (-DHIPRT_PUBLIC_REPO)
261+
262+
255263# Enable CUDA if possible
256- include (${CMAKE_SOURCE_DIR } /contrib/Orochi/Orochi/enable_cuew.cmake)
264+ include (${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi/Orochi/enable_cuew.cmake)
257265
258266
259267
@@ -282,8 +290,8 @@ endif()
282290
283291# Write version info
284292set (version_str_ "UNDEF" )
285- write_version_info("${CMAKE_SOURCE_DIR } /hiprt/hiprt.h.in" "${CMAKE_SOURCE_DIR } /hiprt/hiprt.h" "${CMAKE_SOURCE_DIR } /version.txt" version_str_)
286- write_version_info("${CMAKE_SOURCE_DIR } /hiprt/hiprtew.h.in" "${CMAKE_SOURCE_DIR } /hiprt/hiprtew.h" "${CMAKE_SOURCE_DIR } /version.txt" version_str_)
293+ write_version_info("${CMAKE_CURRENT_SOURCE_DIR } /hiprt/hiprt.h.in" "${CMAKE_CURRENT_SOURCE_DIR } /hiprt/hiprt.h" "${CMAKE_CURRENT_SOURCE_DIR } /version.txt" version_str_)
294+ write_version_info("${CMAKE_CURRENT_SOURCE_DIR } /hiprt/hiprtew.h.in" "${CMAKE_CURRENT_SOURCE_DIR } /hiprt/hiprtew.h" "${CMAKE_CURRENT_SOURCE_DIR } /version.txt" version_str_)
287295
288296
289297set (HIPRT_NAME "hiprt${version_str_} " )
@@ -321,13 +329,13 @@ endif()
321329if (PRECOMPILE)
322330 execute_process (
323331 COMMAND python compile.py --nvidia --hipSdkPath ${HIP_PATH}
324- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR } /scripts/bitcodes
332+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } /scripts/bitcodes
325333 )
326334
327335 if (NOT NO_UNITTEST)
328336 execute_process (
329337 COMMAND python precompile_bitcode.py --nvidia --hipSdkPath ${HIP_PATH}
330- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR } /scripts/bitcodes
338+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } /scripts/bitcodes
331339 )
332340 endif ()
333341
@@ -337,32 +345,46 @@ endif()
337345if (BAKE_KERNEL OR GENERATE_BAKE_KERNEL)
338346 message (">> BakeKernel Executed" )
339347 if (WIN32 )
340- execute_process (COMMAND mkdir -p ${CMAKE_SOURCE_DIR} /hiprt/cache )
341- execute_process (COMMAND ${CMAKE_SOURCE_DIR} /tools/bakeKernel.bat)
348+ execute_process (
349+ COMMAND mkdir -p ${CMAKE_CURRENT_SOURCE_DIR} /hiprt/cache
350+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
351+ )
352+ execute_process (
353+ COMMAND ${CMAKE_CURRENT_SOURCE_DIR} /tools/bakeKernel.bat
354+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
355+ )
342356 else ()
343- execute_process (COMMAND mkdir -p ${CMAKE_SOURCE_DIR} /hiprt/cache )
344- execute_process (COMMAND ${CMAKE_SOURCE_DIR} /tools/bakeKernel.sh)
357+ execute_process (
358+ COMMAND mkdir -p ${CMAKE_CURRENT_SOURCE_DIR} /hiprt/cache
359+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
360+ )
361+ execute_process (
362+ COMMAND ${CMAKE_CURRENT_SOURCE_DIR} /tools/bakeKernel.sh
363+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
364+ )
345365 endif ()
346366
347- if (BAKE_KERNEL)
348- target_compile_definitions (${HIPRT_NAME} PRIVATE HIPRT_LOAD_FROM_STRING ORO_PP_LOAD_FROM_STRING)
349- endif ()
350-
351367 target_compile_definitions (${HIPRT_NAME} PRIVATE HIPRT_BAKE_KERNEL_GENERATED)
352-
368+
369+ endif ()
370+
371+ if (BAKE_KERNEL)
372+ target_compile_definitions (${HIPRT_NAME} PRIVATE HIPRT_LOAD_FROM_STRING ORO_PP_LOAD_FROM_STRING)
353373endif ()
354374
375+
376+
355377if (WIN32 )
356378 target_link_libraries (${HIPRT_NAME} version )
357379endif ()
358380
359381
360- target_include_directories (${HIPRT_NAME} PRIVATE ${CMAKE_SOURCE_DIR } )
361- target_include_directories (${HIPRT_NAME} PRIVATE ${CMAKE_SOURCE_DIR } /contrib/Orochi)
382+ target_include_directories (${HIPRT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR } )
383+ target_include_directories (${HIPRT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi)
362384
363- file (GLOB_RECURSE hiprt_sources "${CMAKE_SOURCE_DIR } /hiprt/*.h" "${CMAKE_SOURCE_DIR } /hiprt/*.cpp" "${CMAKE_SOURCE_DIR } /hiprt/*.inl" )
385+ file (GLOB_RECURSE hiprt_sources "${CMAKE_CURRENT_SOURCE_DIR } /hiprt/*.h" "${CMAKE_CURRENT_SOURCE_DIR } /hiprt/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR } /hiprt/*.inl" )
364386list (FILTER hiprt_sources EXCLUDE REGEX "hiprt/bitcodes/.*" )
365- file (GLOB_RECURSE orochi_sources "${CMAKE_SOURCE_DIR } /contrib/Orochi/Orochi/*.h" "${CMAKE_SOURCE_DIR } /contrib/Orochi/Orochi/*.cpp" "${CMAKE_SOURCE_DIR } /contrib/Orochi/contrib/cuew/*.h" "${CMAKE_SOURCE_DIR } /contrib/Orochi/contrib/cuew/*.cpp" "${CMAKE_SOURCE_DIR } /contrib/Orochi/contrib/hipew/*.h" "${CMAKE_SOURCE_DIR } /contrib/Orochi/contrib/hipew/*.cpp" "${CMAKE_SOURCE_DIR } /contrib/Orochi/ParallelPrimitives/*.h" "${CMAKE_SOURCE_DIR } /contrib/Orochi/ParallelPrimitives/*.cpp" )
387+ file (GLOB_RECURSE orochi_sources "${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi/Orochi/*.h" "${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi/Orochi/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi/contrib/cuew/*.h" "${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi/contrib/cuew/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi/contrib/hipew/*.h" "${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi/contrib/hipew/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi/ParallelPrimitives/*.h" "${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi/ParallelPrimitives/*.cpp" )
366388target_sources (${HIPRT_NAME} PRIVATE ${hiprt_sources} ${orochi_sources} )
367389
368390
@@ -375,10 +397,20 @@ target_sources(${HIPRT_NAME} PRIVATE ${hiprt_sources} ${orochi_sources})
375397install (TARGETS ${HIPRT_NAME} DESTINATION bin)
376398
377399# add header files
378- file (GLOB HIPRT_HEADERS "${CMAKE_SOURCE_DIR } /hiprt/*.h" )
400+ file (GLOB HIPRT_HEADERS "${CMAKE_CURRENT_SOURCE_DIR } /hiprt/*.h" )
379401install (FILES ${HIPRT_HEADERS}
380402 DESTINATION include /hiprt)
381403
404+ # add header files from implementation folder
405+ file (GLOB HIPRT_IMPL_HEADERS "${CMAKE_CURRENT_SOURCE_DIR} /hiprt/impl/*.h" )
406+ install (FILES ${HIPRT_IMPL_HEADERS}
407+ DESTINATION include /hiprt/impl)
408+
409+ # add some header files from Orochi
410+ file (GLOB HIPRT_ORO_HEADERS "${CMAKE_CURRENT_SOURCE_DIR} /contrib/Orochi/ParallelPrimitives/*.h" )
411+ install (FILES ${HIPRT_ORO_HEADERS}
412+ DESTINATION include /contrib/Orochi/ParallelPrimitives)
413+
382414# add hipfb files
383415file (GLOB HIPRT_HIPFB_FILES "${BASE_OUTPUT_DIR} /${CMAKE_BUILD_TYPE} /*.hipfb" )
384416install (FILES ${HIPRT_HIPFB_FILES}
@@ -407,40 +439,40 @@ if(NOT NO_UNITTEST)
407439 endif ()
408440
409441
410- target_include_directories (unittest PRIVATE ${CMAKE_SOURCE_DIR } ${CMAKE_SOURCE_DIR } /contrib/Orochi)
442+ target_include_directories (unittest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR } ${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi)
411443 target_link_libraries (unittest PRIVATE ${HIPRT_NAME} )
412444
413445 if (UNIX )
414446 target_link_libraries (unittest PRIVATE pthread dl)
415447 endif ()
416448
417- file (GLOB_RECURSE unittest_sources "${CMAKE_SOURCE_DIR } /test/hiprtT*.h" "${CMAKE_SOURCE_DIR } /test/hiprtT*.cpp" "${CMAKE_SOURCE_DIR } /test/shared.h" "${CMAKE_SOURCE_DIR } /test/main.cpp" "${CMAKE_SOURCE_DIR } /test/CornellBox.h" "${CMAKE_SOURCE_DIR } /test/kernels/*.h" "${CMAKE_SOURCE_DIR } /contrib/gtest-1.6.0/gtest-all.cc" )
449+ file (GLOB_RECURSE unittest_sources "${CMAKE_CURRENT_SOURCE_DIR } /test/hiprtT*.h" "${CMAKE_CURRENT_SOURCE_DIR } /test/hiprtT*.cpp" "${CMAKE_CURRENT_SOURCE_DIR } /test/shared.h" "${CMAKE_CURRENT_SOURCE_DIR } /test/main.cpp" "${CMAKE_CURRENT_SOURCE_DIR } /test/CornellBox.h" "${CMAKE_CURRENT_SOURCE_DIR } /test/kernels/*.h" "${CMAKE_CURRENT_SOURCE_DIR } /contrib/gtest-1.6.0/gtest-all.cc" )
418450
419451
420452 target_sources (unittest PRIVATE ${unittest_sources} ${orochi_sources} )
421453
422- target_include_directories (unittest PRIVATE ${CMAKE_SOURCE_DIR } /contrib/gtest-1.6.0 ${CMAKE_SOURCE_DIR } /contrib/embree/include )
454+ target_include_directories (unittest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR } /contrib/gtest-1.6.0 ${CMAKE_CURRENT_SOURCE_DIR } /contrib/embree/include )
423455
424456
425457 if (WIN32 )
426458
427459 # Use target_link_directories to specify additional library directories
428- target_link_directories (unittest PRIVATE ${CMAKE_SOURCE_DIR } /contrib/embree/win)
429- target_link_directories (unittest PRIVATE ${CMAKE_SOURCE_DIR } /contrib/bin/win64)
460+ target_link_directories (unittest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR } /contrib/embree/win)
461+ target_link_directories (unittest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR } /contrib/bin/win64)
430462
431- copy_dir(${CMAKE_SOURCE_DIR } /contrib/embree/win ${CMAKE_SOURCE_DIR } /dist/bin/Release "*.dll" )
432- copy_dir(${CMAKE_SOURCE_DIR } /contrib/embree/win ${CMAKE_SOURCE_DIR } /dist/bin/Debug "*.dll" )
433- copy_dir(${CMAKE_SOURCE_DIR } /contrib/Orochi/contrib/bin/win64 ${CMAKE_SOURCE_DIR } /dist/bin/Release "*.dll" )
434- copy_dir(${CMAKE_SOURCE_DIR } /contrib/Orochi/contrib/bin/win64 ${CMAKE_SOURCE_DIR } /dist/bin/Debug "*.dll" )
463+ copy_dir(${CMAKE_CURRENT_SOURCE_DIR } /contrib/embree/win ${CMAKE_CURRENT_SOURCE_DIR } /dist/bin/Release "*.dll" )
464+ copy_dir(${CMAKE_CURRENT_SOURCE_DIR } /contrib/embree/win ${CMAKE_CURRENT_SOURCE_DIR } /dist/bin/Debug "*.dll" )
465+ copy_dir(${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi/contrib/bin/win64 ${CMAKE_CURRENT_SOURCE_DIR } /dist/bin/Release "*.dll" )
466+ copy_dir(${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi/contrib/bin/win64 ${CMAKE_CURRENT_SOURCE_DIR } /dist/bin/Debug "*.dll" )
435467
436468 # Explicitly link libraries from contrib/embree/win and contrib/bin/win64
437- target_link_libraries (unittest PRIVATE ${CMAKE_SOURCE_DIR } /contrib/embree/win/embree4.lib)
469+ target_link_libraries (unittest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR } /contrib/embree/win/embree4.lib)
438470
439471 endif ()
440472
441473
442474 if (UNIX )
443- target_link_directories (unittest PRIVATE ${CMAKE_SOURCE_DIR } /contrib/embree/linux)
475+ target_link_directories (unittest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR } /contrib/embree/linux)
444476 endif ()
445477
446478 target_link_libraries (unittest PRIVATE embree4 tbb)
@@ -458,15 +490,15 @@ if(HIPRTEW)
458490 target_link_libraries (hiprtewtest PRIVATE version )
459491 endif ()
460492
461- target_include_directories (hiprtewtest PRIVATE ${CMAKE_SOURCE_DIR } ${CMAKE_SOURCE_DIR } /contrib/Orochi)
493+ target_include_directories (hiprtewtest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR } ${CMAKE_CURRENT_SOURCE_DIR } /contrib/Orochi)
462494 if (UNIX )
463495 target_link_libraries (hiprtewtest PRIVATE pthread dl)
464496 endif ()
465497
466- file (GLOB_RECURSE hiprtewtest_sources "${CMAKE_SOURCE_DIR } /test/hiprtewTest.h" "${CMAKE_SOURCE_DIR } /test/hiprtewTest.cpp" "${CMAKE_SOURCE_DIR } /contrib/gtest-1.6.0/gtest-all.cc" )
498+ file (GLOB_RECURSE hiprtewtest_sources "${CMAKE_CURRENT_SOURCE_DIR } /test/hiprtewTest.h" "${CMAKE_CURRENT_SOURCE_DIR } /test/hiprtewTest.cpp" "${CMAKE_CURRENT_SOURCE_DIR } /contrib/gtest-1.6.0/gtest-all.cc" )
467499 target_sources (hiprtewtest PRIVATE ${hiprtewtest_sources} ${orochi_sources} )
468500
469- target_include_directories (hiprtewtest PRIVATE ${CMAKE_SOURCE_DIR } /contrib/gtest-1.6.0)
501+ target_include_directories (hiprtewtest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR } /contrib/gtest-1.6.0)
470502
471503 target_compile_definitions (hiprtewtest PRIVATE GTEST_HAS_TR1_TUPLE=0)
472504endif ()
0 commit comments