From bad947ae8b593ec56d13269601426110ba93b087 Mon Sep 17 00:00:00 2001 From: Maneesh Gupta Date: Fri, 1 Apr 2016 16:08:49 +0530 Subject: [PATCH] Initial (non-default) support for shared library HIP --- CMakeLists.txt | 18 ++++++++++++++++-- bin/hipcc | 9 ++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 01c223a310..6b25a21394 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,11 +64,25 @@ src/hip_peer.cpp src/hip_stream.cpp src/staging_buffer.cpp) +if(NOT DEFINED ENV{HIP_USE_SHARED_LIBRARY}) + set(HIP_USE_SHARED_LIBRARY 0) +else() + set(HIP_USE_SHARED_LIBRARY $ENV{HIP_USE_SHARED_LIBRARY}) +endif() + #add_library(hip_hcc STATIC ${SOURCE_FILES}) -add_library(hip_hcc OBJECT ${SOURCE_FILES}) +if(${HIP_USE_SHARED_LIBRARY} EQUAL 1) + add_library(hip_hcc SHARED ${SOURCE_FILES}) +else() + add_library(hip_hcc OBJECT ${SOURCE_FILES}) +endif() #install(TARGETS hip_hcc DESTINATION lib) -install(DIRECTORY ${PROJECT_BINARY_DIR}/CMakeFiles/hip_hcc.dir/src/ DESTINATION lib) +if(${HIP_USE_SHARED_LIBRARY} EQUAL 1) + install(TARGETS hip_hcc DESTINATION lib) +else() + install(DIRECTORY ${PROJECT_BINARY_DIR}/CMakeFiles/hip_hcc.dir/src/ DESTINATION lib) +endif() set(EXECUTE_COMMAND test ${CMAKE_INSTALL_PREFIX} -ef ${CMAKE_CURRENT_SOURCE_DIR}) execute_process(COMMAND ${EXECUTE_COMMAND} RESULT_VARIABLE INSTALL_SOURCE) if(NOT ${INSTALL_SOURCE} EQUAL 0) diff --git a/bin/hipcc b/bin/hipcc index b2b8bfd566..9b10f551f4 100755 --- a/bin/hipcc +++ b/bin/hipcc @@ -182,8 +182,15 @@ if ($hasCU and $HIP_PLATFORM eq 'hcc') { } if ($needHipHcc) { + $HIP_USE_SHARED_LIBRARY = $ENV{'HIP_USE_SHARED_LIBRARY'}; + $HIP_USE_SHARED_LIBRARY = 0 unless defined $HIP_USE_SHARED_LIBRARY; + #$HIPLDFLAGS .= " -L/opt/hip/lib -lhip_hcc" ; - $HIPLDFLAGS .= " $HIP_PATH/lib/device_util.cpp.o $HIP_PATH/lib/hip_device.cpp.o $HIP_PATH/lib/hip_error.cpp.o $HIP_PATH/lib/hip_event.cpp.o $HIP_PATH/lib/hip_hcc.cpp.o $HIP_PATH/lib/hip_memory.cpp.o $HIP_PATH/lib/hip_peer.cpp.o $HIP_PATH/lib/hip_stream.cpp.o $HIP_PATH/lib/staging_buffer.cpp.o"; + if ($HIP_USE_SHARED_LIBRARY) { + $HIPLDFLAGS .= " -L$HIP_PATH/lib -Wl,--rpath=$HIP_PATH/lib -lhip_hcc" + } else { + $HIPLDFLAGS .= " $HIP_PATH/lib/device_util.cpp.o $HIP_PATH/lib/hip_device.cpp.o $HIP_PATH/lib/hip_error.cpp.o $HIP_PATH/lib/hip_event.cpp.o $HIP_PATH/lib/hip_hcc.cpp.o $HIP_PATH/lib/hip_memory.cpp.o $HIP_PATH/lib/hip_peer.cpp.o $HIP_PATH/lib/hip_stream.cpp.o $HIP_PATH/lib/staging_buffer.cpp.o"; + } } # hipcc currrently requires separate compilation of source files, ie it is not possible to pass