CMake cleanup: move opencl logic to opencl folder

Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2021-11-10 19:19:29 +00:00
committed by Compute-Runtime-Automation
parent aaa5e6d358
commit d2a4af9d9d
8 changed files with 101 additions and 85 deletions

View File

@@ -127,6 +127,12 @@ if(NOT DEFINED NEO_TARGET_PROCESSOR)
message(FATAL_ERROR "Unsupported target processor: ${CMAKE_SYSTEM_PROCESSOR}")
endif()
if(NOT DEFINED NEO_BUILD_WITH_OCL)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/opencl/CMakeLists.txt)
set(NEO_BUILD_WITH_OCL TRUE)
endif()
endif()
if(NOT DEFINED BUILD_WITH_L0)
if("${NEO_BITS}" STREQUAL "64")
set(BUILD_WITH_L0 TRUE)
@@ -199,14 +205,6 @@ endif("${BUILD_TYPE_lower}" STREQUAL "releaseinternal")
message(STATUS "${CMAKE_BUILD_TYPE} build configuration")
set(NEO_RUNTIME_SUB_DIR "opencl/source")
set(NEO_RUNTIME_SOURCE_DIR "${NEO_SOURCE_DIR}/${NEO_RUNTIME_SUB_DIR}")
set(NEO_RUNTIME_TESTS_SUB_DIR "opencl/test/unit_test")
set(NEO_RUNTIME_TESTS_DIR "${NEO_SOURCE_DIR}/${NEO_RUNTIME_TESTS_SUB_DIR}")
set(NEO_OPENCL_BLACK_BOX_TESTS_SUB_DIR "opencl/test/black_box_test")
set(NEO_OPENCL_BLACK_BOX_TESTS_DIR "${NEO_SOURCE_DIR}/${NEO_OPENCL_BLACK_BOX_TESTS_SUB_DIR}")
# Set the ocloc directory
if(NOT DEFINED OCLOC_DIRECTORY)
set(OCLOC_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/shared/offline_compiler)
@@ -779,69 +777,11 @@ endif()
add_subdirectory_unique(shared)
macro(generate_runtime_lib LIB_NAME MOCKABLE GENERATE_EXEC)
set(NEO_STATIC_LIB_NAME ${LIB_NAME})
set(SHARINGS_ENABLE_LIB_NAME "${LIB_NAME}_sharings_enable")
set(GENERATE_EXECUTABLE ${GENERATE_EXEC})
if(${MOCKABLE})
set(NEO_SHARED_LIB ${NEO_SHARED_MOCKABLE_LIB_NAME})
else()
set(NEO_SHARED_LIB ${NEO_SHARED_RELEASE_LIB_NAME})
endif()
if(NOT BUILD_WITHOUT_RUNTIME)
add_subdirectory(${NEO_RUNTIME_SUB_DIR} "${NEO_BUILD_DIR}/${LIB_NAME}")
else()
add_subdirectory(${NEO_RUNTIME_SUB_DIR} "${NEO_BUILD_DIR}/${LIB_NAME}" EXCLUDE_FROM_ALL)
endif()
target_compile_definitions(${BUILTINS_SOURCES_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
target_compile_definitions(${BUILTINS_VME_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
target_compile_definitions(${BUILTINS_BINARIES_BINDFUL_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
target_compile_definitions(${BUILTINS_BINARIES_BINDLESS_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
if(TARGET ${BUILTINS_SPIRV_LIB_NAME})
target_compile_definitions(${BUILTINS_SPIRV_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
endif()
if(TARGET ${SCHEDULER_BINARY_LIB_NAME})
target_compile_definitions(${SCHEDULER_BINARY_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
endif()
if(${MOCKABLE})
target_compile_definitions(${LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=virtual)
target_compile_definitions(${SHARINGS_ENABLE_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=virtual)
else()
target_compile_definitions(${LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
target_compile_definitions(${SHARINGS_ENABLE_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
endif()
endmacro()
set(NEO_DYNAMIC_LIB_NAME "igdrcl_dll") # single NEO dll
set(NEO_DLL_NAME_BASE "igdrcl")
if(DONT_CARE_OF_VIRTUALS)
message(STATUS "All targets will use virtuals")
set(NEO_RELEASE_LIB_NAME "igdrcl_lib")
set(NEO_MOCKABLE_LIB_NAME ${NEO_RELEASE_LIB_NAME})
generate_runtime_lib(${NEO_RELEASE_LIB_NAME} TRUE TRUE)
if(NEO_BUILD_WITH_OCL)
add_subdirectory_unique(opencl)
else()
set(NEO_RELEASE_LIB_NAME "igdrcl_lib_release") # Used by dll/so
generate_runtime_lib(${NEO_RELEASE_LIB_NAME} FALSE TRUE)
if(NOT NEO_SKIP_UNIT_TESTS)
set(NEO_MOCKABLE_LIB_NAME "igdrcl_lib_mockable") # Used by ULTS
generate_runtime_lib(${NEO_MOCKABLE_LIB_NAME} TRUE FALSE)
endif()
endif()
if(DEFAULT_TESTED_PLATFORM AND NOT NEO_SKIP_OCL_UNIT_TESTS)
add_subdirectory_unique(${NEO_RUNTIME_TESTS_SUB_DIR} ${NEO_BUILD_DIR}/${NEO_RUNTIME_TESTS_SUB_DIR})
else()
hide_subdir(${NEO_RUNTIME_TESTS_SUB_DIR})
endif()
if(NOT BUILD_WITHOUT_RUNTIME)
add_subdirectory_unique(${NEO_OPENCL_BLACK_BOX_TESTS_SUB_DIR})
else()
hide_subdir(${NEO_OPENCL_BLACK_BOX_TESTS_SUB_DIR})
hide_subdir(opencl)
set(NEO_SKIP_OCL_UNIT_TESTS TRUE)
endif()
set(DONT_LINK_ELF_STATICALLY TRUE)
@@ -859,8 +799,6 @@ configure_file(config.h.in ${NEO_BUILD_DIR}/config.h)
configure_file(driver_version.h.in ${NEO_BUILD_DIR}/driver_version.h) # Put Driver version into define
configure_file(lib_names.h.in ${NEO_BUILD_DIR}/lib_names.h)
hide_subdir(${NEO_RUNTIME_SUB_DIR})
if(BUILD_WITH_L0)
add_subdirectory_unique(level_zero)
endif()

View File

@@ -297,7 +297,7 @@ if(BUILD_WITH_L0)
)
get_property(COMPUTE_RUNTIME_DEFINITIONS
TARGET ${NEO_RELEASE_LIB_NAME}
TARGET ${NEO_SHARED_RELEASE_LIB_NAME}
PROPERTY COMPILE_DEFINITIONS
)
@@ -396,7 +396,7 @@ if(BUILD_WITH_L0)
)
else()
get_property(COMPUTE_RUNTIME_DEFINITIONS
TARGET ${NEO_RELEASE_LIB_NAME}
TARGET ${NEO_SHARED_RELEASE_LIB_NAME}
PROPERTY COMPILE_DEFINITIONS
)
target_compile_definitions(${LIB_NAME}

55
opencl/CMakeLists.txt Normal file
View File

@@ -0,0 +1,55 @@
#
# Copyright (C) 2021 Intel Corporation
#
# SPDX-License-Identifier: MIT
#
macro(generate_runtime_lib LIB_NAME MOCKABLE GENERATE_EXEC)
set(NEO_STATIC_LIB_NAME ${LIB_NAME})
set(SHARINGS_ENABLE_LIB_NAME "${LIB_NAME}_sharings_enable")
set(GENERATE_EXECUTABLE ${GENERATE_EXEC})
if(${MOCKABLE})
set(NEO_SHARED_LIB ${NEO_SHARED_MOCKABLE_LIB_NAME})
else()
set(NEO_SHARED_LIB ${NEO_SHARED_RELEASE_LIB_NAME})
endif()
if(NOT BUILD_WITHOUT_RUNTIME)
add_subdirectory(source "${NEO_BUILD_DIR}/${LIB_NAME}")
else()
add_subdirectory(source "${NEO_BUILD_DIR}/${LIB_NAME}" EXCLUDE_FROM_ALL)
endif()
target_compile_definitions(${BUILTINS_SOURCES_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
target_compile_definitions(${BUILTINS_VME_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
if(TARGET ${SCHEDULER_BINARY_LIB_NAME})
target_compile_definitions(${SCHEDULER_BINARY_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
endif()
if(${MOCKABLE})
target_compile_definitions(${LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=virtual)
target_compile_definitions(${SHARINGS_ENABLE_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=virtual)
else()
target_compile_definitions(${LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
target_compile_definitions(${SHARINGS_ENABLE_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
endif()
endmacro()
set(NEO_DYNAMIC_LIB_NAME "igdrcl_dll") # single NEO dll
set(NEO_DLL_NAME_BASE "igdrcl")
if(DONT_CARE_OF_VIRTUALS)
message(STATUS "All targets will use virtuals")
set(NEO_RELEASE_LIB_NAME "igdrcl_lib")
set(NEO_MOCKABLE_LIB_NAME ${NEO_RELEASE_LIB_NAME})
generate_runtime_lib(${NEO_RELEASE_LIB_NAME} TRUE TRUE)
else()
set(NEO_RELEASE_LIB_NAME "igdrcl_lib_release") # Used by dll/so
generate_runtime_lib(${NEO_RELEASE_LIB_NAME} FALSE TRUE)
if(NOT NEO_SKIP_OCL_UNIT_TESTS)
set(NEO_MOCKABLE_LIB_NAME "igdrcl_lib_mockable") # Used by ULTS
generate_runtime_lib(${NEO_MOCKABLE_LIB_NAME} TRUE FALSE)
endif()
endif()
add_subdirectory(test)

View File

@@ -0,0 +1,14 @@
#
# Copyright (C) 2021 Intel Corporation
#
# SPDX-License-Identifier: MIT
#
if(DEFAULT_TESTED_PLATFORM AND NOT NEO_SKIP_OCL_UNIT_TESTS)
add_subdirectory_unique(unit_test ${NEO_BUILD_DIR}/opencl/test/unit_test)
endif()
if(NOT BUILD_WITHOUT_RUNTIME)
add_subdirectory_unique(black_box_test)
endif()

View File

@@ -52,16 +52,18 @@ if(UNIX)
endif()
endif()
set(OCL_ICD_RUNTIME_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}${NEO_DLL_NAME_BASE}${CMAKE_SHARED_LIBRARY_SUFFIX})
install(
CODE "file( WRITE ${NEO_BINARY_DIR}/intel.icd \"${CMAKE_INSTALL_FULL_LIBDIR}/intel-opencl/${OCL_ICD_RUNTIME_NAME}\n\" )"
CODE "file( WRITE ${NEO_BINARY_DIR}/tmp/postinst \"/sbin/ldconfig\n\" )"
CODE "file( WRITE ${NEO_BINARY_DIR}/tmp/postrm \"/sbin/ldconfig\n\" )"
CODE "file( COPY ${NEO_BINARY_DIR}/tmp/postinst DESTINATION ${NEO_BINARY_DIR} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE )"
CODE "file( COPY ${NEO_BINARY_DIR}/tmp/postrm DESTINATION ${NEO_BINARY_DIR} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE )"
COMPONENT opencl
)
install(FILES ${NEO_BINARY_DIR}/intel.icd DESTINATION ${OCL_ICD_VENDORDIR} COMPONENT opencl)
if(NEO_BUILD_WITH_OCL)
get_target_property(OCL_RUNTIME_LIB_NAME igdrcl_dll OUTPUT_NAME)
install(
CODE "file( WRITE ${NEO_BINARY_DIR}/intel.icd \"${CMAKE_INSTALL_FULL_LIBDIR}/intel-opencl/${CMAKE_SHARED_LIBRARY_PREFIX}${OCL_RUNTIME_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}\n\" )"
CODE "file( WRITE ${NEO_BINARY_DIR}/tmp/postinst \"/sbin/ldconfig\n\" )"
CODE "file( WRITE ${NEO_BINARY_DIR}/tmp/postrm \"/sbin/ldconfig\n\" )"
CODE "file( COPY ${NEO_BINARY_DIR}/tmp/postinst DESTINATION ${NEO_BINARY_DIR} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE )"
CODE "file( COPY ${NEO_BINARY_DIR}/tmp/postrm DESTINATION ${NEO_BINARY_DIR} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE )"
COMPONENT opencl
)
install(FILES ${NEO_BINARY_DIR}/intel.icd DESTINATION ${OCL_ICD_VENDORDIR} COMPONENT opencl)
endif()
if(NEO_BUILD_DEBUG_SYMBOLS_PACKAGE)
get_property(DEBUG_SYMBOL_FILES GLOBAL PROPERTY DEBUG_SYMBOL_FILES)

View File

@@ -6,6 +6,8 @@
add_library(${BUILTINS_BINARIES_BINDFUL_LIB_NAME} OBJECT EXCLUDE_FROM_ALL builtins_binary.cmake)
add_library(${BUILTINS_BINARIES_BINDLESS_LIB_NAME} OBJECT EXCLUDE_FROM_ALL builtins_binary.cmake)
target_compile_definitions(${BUILTINS_BINARIES_BINDFUL_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
target_compile_definitions(${BUILTINS_BINARIES_BINDLESS_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
# Add builtins sources
add_subdirectory(registry)

View File

@@ -233,6 +233,7 @@ foreach(builtin_images_stateless ${GENERATED_BUILTINS_IMAGES_STATELESS})
endforeach()
if(NOT "${OUTPUT_LIST_CPP_FILES}" STREQUAL "")
add_library(${BUILTINS_SPIRV_LIB_NAME} OBJECT ${OUTPUT_LIST_CPP_FILES})
target_compile_definitions(${BUILTINS_SPIRV_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
set_target_properties(${BUILTINS_SPIRV_LIB_NAME} PROPERTIES
POSITION_INDEPENDENT_CODE ON
FOLDER "${SHARED_SOURCE_PROJECTS_FOLDER}/${SHARED_BUILTINS_PROJECTS_FOLDER}"

View File

@@ -1,5 +1,5 @@
#
# Copyright (C) 2020 Intel Corporation
# Copyright (C) 2020-2021 Intel Corporation
#
# SPDX-License-Identifier: MIT
#
@@ -7,6 +7,10 @@
set(BUILT_IN_KERNEL_DIR "${NEO_SOURCE_DIR}/shared/source/built_ins")
set(PLATFORM_SPECIFIC_TEST_TARGETS_FOLDER ult_product_targets)
if(NOT TARGET run_mt_unit_tests)
add_custom_target(run_mt_unit_tests)
endif()
if(NOT TARGET run_unit_tests)
add_custom_target(run_unit_tests ALL)
set_target_properties(run_unit_tests PROPERTIES FOLDER ${PLATFORM_SPECIFIC_TEST_TARGETS_FOLDER})