24437ae9d9
SWDEV-165756 - [ROCm] Backport cmake back into perforce to resolve cmake build broken issue (Resubmitted CL1613181 with a bug fix) - porting CMAKE changes in http://git.amd.com:8080/#/c/173995/ - add new source file names in runtime/CMakeLists.txt -- required additional changes of CMAKE files from Konstantin to build the current OCL driver using CMAKE Affected files ... ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/CMakeLists.txt#17 edit ... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/v0_8/libUtils.cpp#34 edit ... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/v0_8/libUtils.h#34 edit ... //depot/stg/opencl/drivers/opencl/runtime/CMakeLists.txt#13 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/CMakeLists.txt#15 edit
98 行
5.1 KiB
CMake
98 行
5.1 KiB
CMake
include(bc2h)
|
|
|
|
set(INC_SUFFIX "amdgcn.inc")
|
|
|
|
include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/utils/common)
|
|
include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/utils/libelf)
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
|
include_directories(${ROCM_OCL_INCLUDES})
|
|
|
|
add_library(oclrocm OBJECT
|
|
roccounters.cpp
|
|
rocprintf.cpp
|
|
rocprogram.cpp
|
|
rocmemory.cpp
|
|
rocdevice.cpp
|
|
rocblit.cpp
|
|
rockernel.cpp
|
|
rocvirtual.cpp
|
|
rocglinterop.cpp
|
|
rocappprofile.cpp
|
|
rocsettings.cpp
|
|
rocschedcl.cpp
|
|
)
|
|
set_target_properties(oclrocm PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
|
|
# generating libraries.amdgcn.inc
|
|
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/libraries.amdgcn.inc "// Automatically generated file; DO NOT EDIT.\n")
|
|
|
|
foreach(AMDGCN_LIB_TARGET ${AMDGCN_LIB_TARGETS})
|
|
get_target_property(lib_file_name ${AMDGCN_LIB_TARGET} ARCHIVE_OUTPUT_NAME)
|
|
get_target_property(lib_file_path ${AMDGCN_LIB_TARGET} ARCHIVE_OUTPUT_DIRECTORY)
|
|
set(bclib "${lib_file_path}/${lib_file_name}.amdgcn.bc")
|
|
set(header "${lib_file_name}.${INC_SUFFIX}")
|
|
set(symbol "${lib_file_name}_amdgcn")
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${header}
|
|
COMMAND bc2h ${bclib} ${CMAKE_CURRENT_BINARY_DIR}/${header} ${symbol}
|
|
DEPENDS bc2h ${AMDGCN_LIB_TARGET}
|
|
COMMENT "Generating ${header}"
|
|
)
|
|
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_CURRENT_BINARY_DIR}/${target}.inc)
|
|
|
|
add_custom_target(${header}_target ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${header})
|
|
add_dependencies(oclrocm ${header}_target)
|
|
|
|
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/libraries.amdgcn.inc "#include \"${header}\"\n")
|
|
endforeach()
|
|
|
|
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/libraries.amdgcn.inc
|
|
"static inline std::pair<const void*, size_t>\nget_oclc_isa_version(uint gfxip)\n{\nswitch (gfxip) {\n")
|
|
foreach(AMDGCN_LIB_TARGET ${AMDGCN_LIB_TARGETS})
|
|
if (${AMDGCN_LIB_TARGET} MATCHES "^oclc_isa_version_[0-9]+_lib$")
|
|
string(REGEX REPLACE "^oclc_isa_version_([0-9]+)_lib$" "\\1" gfxip ${AMDGCN_LIB_TARGET})
|
|
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/libraries.amdgcn.inc
|
|
"case ${gfxip}: return {oclc_isa_version_${gfxip}_amdgcn, oclc_isa_version_${gfxip}_amdgcn_size}; break;\n")
|
|
endif()
|
|
endforeach()
|
|
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/libraries.amdgcn.inc
|
|
"default: return {(const void*)0,(size_t)0};\n}\n}\n")
|
|
|
|
foreach(AMDGCN_LIB_TARGET ${AMDGCN_LIB_TARGETS})
|
|
if (${AMDGCN_LIB_TARGET} MATCHES "oclc_(.*)_on_lib")
|
|
string(REGEX REPLACE "oclc_(.*)_on_lib" "\\1" function ${AMDGCN_LIB_TARGET})
|
|
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/libraries.amdgcn.inc
|
|
"static inline std::pair<const char*, size_t> get_oclc_${function}(bool on)\n{ return {"
|
|
"(const char*)(on ? oclc_${function}_on_amdgcn : oclc_${function}_off_amdgcn),"
|
|
"on ? oclc_${function}_on_amdgcn_size : oclc_${function}_off_amdgcn_size};}\n")
|
|
endif()
|
|
endforeach()
|
|
|
|
# generating opencl*.inc files
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/opencl1.2-c.amdgcn.pch
|
|
COMMAND clang -cc1 -x cl-header -triple amdgcn-amd-amdhsa -Werror -O3 -DNDEBUG -cl-std=CL1.2 -emit-pch -o ${CMAKE_CURRENT_BINARY_DIR}/opencl1.2-c.amdgcn.pch < ${CMAKE_SOURCE_DIR}/compiler/llvm/tools/clang/lib/Headers/opencl-c.h
|
|
DEPENDS clang ${CMAKE_SOURCE_DIR}/compiler/llvm/tools/clang/lib/Headers/opencl-c.h
|
|
COMMENT "Generating opencl1.2-c.amdgcn.pch"
|
|
)
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/opencl1.2-c.amdgcn.inc
|
|
COMMAND bc2h ${CMAKE_CURRENT_BINARY_DIR}/opencl1.2-c.amdgcn.pch ${CMAKE_CURRENT_BINARY_DIR}/opencl1.2-c.amdgcn.inc opencl1_2_c_amdgcn
|
|
DEPENDS bc2h ${CMAKE_CURRENT_BINARY_DIR}/opencl1.2-c.amdgcn.pch
|
|
COMMENT "Generating opencl1.2-c.amdgcn.inc"
|
|
)
|
|
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_CURRENT_BINARY_DIR}/opencl1.2-c.amdgcn.inc ${CMAKE_CURRENT_BINARY_DIR}/opencl1.2-c.amdgcn.pch)
|
|
add_custom_target(opencl1.2-c.amdgcn.inc_target ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/opencl1.2-c.amdgcn.inc)
|
|
add_dependencies(oclrocm opencl1.2-c.amdgcn.inc_target)
|
|
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/opencl2.0-c.amdgcn.pch
|
|
COMMAND clang -cc1 -x cl-header -triple amdgcn-amd-amdhsa -Werror -O3 -DNDEBUG -cl-std=CL2.0 -emit-pch -o ${CMAKE_CURRENT_BINARY_DIR}/opencl2.0-c.amdgcn.pch < ${CMAKE_SOURCE_DIR}/compiler/llvm/tools/clang/lib/Headers/opencl-c.h
|
|
DEPENDS clang ${CMAKE_SOURCE_DIR}/compiler/llvm/tools/clang/lib/Headers/opencl-c.h
|
|
COMMENT "Generating opencl2.0-c.amdgcn.pch"
|
|
)
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/opencl2.0-c.amdgcn.inc
|
|
COMMAND bc2h ${CMAKE_CURRENT_BINARY_DIR}/opencl2.0-c.amdgcn.pch ${CMAKE_CURRENT_BINARY_DIR}/opencl2.0-c.amdgcn.inc opencl2_0_c_amdgcn
|
|
DEPENDS bc2h ${CMAKE_CURRENT_BINARY_DIR}/opencl2.0-c.amdgcn.pch
|
|
COMMENT "Generating opencl2.0-c.amdgcn.inc"
|
|
)
|
|
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_CURRENT_BINARY_DIR}/opencl2.0-c.amdgcn.inc ${CMAKE_CURRENT_BINARY_DIR}/opencl2.0-c.amdgcn.pch)
|
|
add_custom_target(opencl2.0-c.amdgcn.inc_target ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/opencl2.0-c.amdgcn.inc)
|
|
add_dependencies(oclrocm opencl2.0-c.amdgcn.inc_target)
|