2017-12-21 00:45:38 +01:00
|
|
|
#
|
2021-01-20 16:25:05 +00:00
|
|
|
# Copyright (C) 2018-2021 Intel Corporation
|
2017-12-21 00:45:38 +01:00
|
|
|
#
|
2018-09-18 09:11:08 +02:00
|
|
|
# SPDX-License-Identifier: MIT
|
2017-12-21 00:45:38 +01:00
|
|
|
#
|
|
|
|
|
|
2018-02-27 14:47:36 +01:00
|
|
|
if(POLICY CMP0042)
|
|
|
|
|
cmake_policy(SET CMP0042 NEW)
|
2018-02-05 11:22:11 +01:00
|
|
|
endif()
|
2017-12-21 00:45:38 +01:00
|
|
|
|
2018-02-27 14:47:36 +01:00
|
|
|
if(POLICY CMP0063)
|
|
|
|
|
cmake_policy(SET CMP0063 NEW)
|
2018-02-05 11:22:11 +01:00
|
|
|
endif()
|
2017-12-21 00:45:38 +01:00
|
|
|
|
2018-02-27 14:47:36 +01:00
|
|
|
project(neo)
|
2018-03-22 13:53:11 +01:00
|
|
|
set(MSVC_DEF_ADDITIONAL_EXPORTS "")
|
2020-03-27 09:21:41 +01:00
|
|
|
set(OPENCL_RUNTIME_PROJECTS_FOLDER "opencl runtime")
|
2020-11-19 10:12:40 +01:00
|
|
|
set(OPENCL_BUIILINS_PROJECTS_FOLDER "built_ins")
|
2018-03-22 13:53:11 +01:00
|
|
|
|
2018-02-27 14:47:36 +01:00
|
|
|
if(NOT TARGET ${BIKSIM_LIB_NAME})
|
|
|
|
|
add_subdirectory(builtin_kernels_simulation)
|
2018-02-08 10:53:47 +01:00
|
|
|
endif()
|
2017-12-21 00:45:38 +01:00
|
|
|
|
2018-02-27 14:47:36 +01:00
|
|
|
hide_subdir(builtin_kernels_simulation)
|
|
|
|
|
hide_subdir(dll)
|
2018-01-09 14:08:34 +01:00
|
|
|
|
2019-06-24 13:48:14 +02:00
|
|
|
add_library(${NEO_STATIC_LIB_NAME} STATIC EXCLUDE_FROM_ALL
|
2020-08-19 12:18:18 +02:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/enable_gens.cmake
|
|
|
|
|
$<TARGET_OBJECTS:${BIKSIM_LIB_NAME}>
|
2018-02-27 14:47:36 +01:00
|
|
|
)
|
2017-12-21 00:45:38 +01:00
|
|
|
|
2018-02-27 14:47:36 +01:00
|
|
|
add_subdirectories()
|
2018-02-05 15:07:21 +01:00
|
|
|
include(enable_gens.cmake)
|
2017-12-21 00:45:38 +01:00
|
|
|
|
2018-03-06 14:50:30 +01:00
|
|
|
if(WIN32)
|
2020-08-19 12:18:18 +02:00
|
|
|
if("${IGDRCL_OPTION__BITS}" STREQUAL "32")
|
2018-03-06 14:50:30 +01:00
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
2020-07-15 21:58:51 +02:00
|
|
|
if(DEFINED AUB_STREAM_PROJECT_NAME)
|
2019-01-18 21:44:23 +01:00
|
|
|
target_link_libraries(${NEO_STATIC_LIB_NAME} ${AUB_STREAM_PROJECT_NAME})
|
2018-10-30 18:29:32 +01:00
|
|
|
endif()
|
2017-12-21 00:45:38 +01:00
|
|
|
|
|
|
|
|
target_include_directories(${NEO_STATIC_LIB_NAME} PRIVATE
|
2020-08-19 12:18:18 +02:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
|
|
|
${KMDAF_HEADERS_DIR}
|
2017-12-21 00:45:38 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
target_include_directories(${NEO_STATIC_LIB_NAME} PUBLIC
|
2020-08-19 12:18:18 +02:00
|
|
|
${ENGINE_NODE_DIR}
|
|
|
|
|
${KHRONOS_HEADERS_DIR}
|
|
|
|
|
${KHRONOS_GL_HEADERS_DIR}
|
|
|
|
|
${CIF_BASE_DIR}
|
|
|
|
|
${IGC_OCL_ADAPTOR_DIR}
|
|
|
|
|
${VISA_INCLUDE_DIR}
|
|
|
|
|
${NEO__IGC_INCLUDE_DIR}
|
|
|
|
|
${THIRD_PARTY_DIR}
|
|
|
|
|
${NEO__GMM_INCLUDE_DIR}
|
2021-05-27 19:44:47 +02:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/os_interface/create_command_stream_receiver_${DRIVER_MODEL}
|
2017-12-21 00:45:38 +01:00
|
|
|
)
|
|
|
|
|
|
2019-10-23 10:42:19 +02:00
|
|
|
target_compile_definitions(${NEO_STATIC_LIB_NAME} PUBLIC
|
2020-08-19 12:18:18 +02:00
|
|
|
""
|
|
|
|
|
${NEO__IGC_COMPILE_DEFINITIONS}
|
2019-10-23 10:42:19 +02:00
|
|
|
)
|
|
|
|
|
|
2021-05-30 16:42:47 +02:00
|
|
|
if(WIN32 OR NOT DISABLE_WDDM_LINUX)
|
2020-11-11 15:40:47 +01:00
|
|
|
target_include_directories(${NEO_STATIC_LIB_NAME} PUBLIC ${WDK_INCLUDE_PATHS})
|
|
|
|
|
endif()
|
|
|
|
|
|
2018-02-27 14:47:36 +01:00
|
|
|
if(WIN32)
|
2018-03-08 09:14:07 +01:00
|
|
|
set(IGDRCL_EXTRA_LIBS Ws2_32)
|
2017-12-21 00:45:38 +01:00
|
|
|
target_include_directories(${NEO_STATIC_LIB_NAME} PUBLIC
|
2020-08-19 12:18:18 +02:00
|
|
|
${NEO_SHARED_DIRECTORY}/os_interface/windows
|
|
|
|
|
${NEO_SOURCE_DIR}/opencl/source/os_interface/windows
|
2017-12-21 00:45:38 +01:00
|
|
|
)
|
2021-06-08 11:03:52 +00:00
|
|
|
target_compile_definitions(${NEO_STATIC_LIB_NAME} PUBLIC OGL=1)
|
2018-02-27 14:47:36 +01:00
|
|
|
else()
|
2018-03-08 09:14:07 +01:00
|
|
|
set(IGDRCL_EXTRA_LIBS dl pthread)
|
2017-12-21 00:45:38 +01:00
|
|
|
target_include_directories(${NEO_STATIC_LIB_NAME} PUBLIC
|
2020-08-19 12:18:18 +02:00
|
|
|
${NEO_SHARED_DIRECTORY}/os_interface/linux
|
|
|
|
|
${NEO_SOURCE_DIR}/opencl/source/os_interface/linux
|
|
|
|
|
${I915_INCLUDES_DIR}
|
2017-12-21 00:45:38 +01:00
|
|
|
)
|
2018-02-27 14:47:36 +01:00
|
|
|
endif()
|
2017-12-21 00:45:38 +01:00
|
|
|
|
2018-09-26 06:31:01 +00:00
|
|
|
target_compile_definitions(${NEO_STATIC_LIB_NAME} PUBLIC GMM_LIB_DLL DEFAULT_PLATFORM=${DEFAULT_SUPPORTED_PLATFORM})
|
2017-12-21 00:45:38 +01:00
|
|
|
|
|
|
|
|
list(APPEND LIB_FLAGS_DEFINITIONS -DCIF_HEADERS_ONLY_BUILD ${SUPPORTED_GEN_FLAGS_DEFINITONS})
|
|
|
|
|
|
|
|
|
|
target_compile_definitions(${NEO_STATIC_LIB_NAME} PUBLIC ${LIB_FLAGS_DEFINITIONS})
|
|
|
|
|
|
|
|
|
|
set_target_properties(${NEO_STATIC_LIB_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
|
|
|
|
|
|
|
|
set_property(TARGET ${NEO_STATIC_LIB_NAME} APPEND_STRING PROPERTY COMPILE_FLAGS ${ASAN_FLAGS} ${TSAN_FLAGS})
|
|
|
|
|
|
2020-03-27 09:21:41 +01:00
|
|
|
set_target_properties(${NEO_STATIC_LIB_NAME} PROPERTIES FOLDER ${OPENCL_RUNTIME_PROJECTS_FOLDER})
|
2017-12-21 00:45:38 +01:00
|
|
|
|
2018-03-22 13:53:11 +01:00
|
|
|
set(EXPORTS_FILENAME "")
|
|
|
|
|
if(WIN32)
|
2020-08-19 12:18:18 +02:00
|
|
|
set(EXPORTS_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/OpenCLExports${IGDRCL_OPTION__BITS}.def")
|
|
|
|
|
set(MSVC_DEF_LIB_NAME "igdrcl${IGDRCL_OPTION__BITS}")
|
|
|
|
|
set(MSVC_DEF_HEADER "This file was generated during CMake project configuration - please don't edit")
|
|
|
|
|
if("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
|
|
|
|
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/dll/windows/OpenCLReleaseExports.def.in" "${EXPORTS_FILENAME}")
|
|
|
|
|
else()
|
|
|
|
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/dll/windows/OpenCLInternalExports.def.in" "${EXPORTS_FILENAME}")
|
|
|
|
|
endif()
|
2020-05-04 14:36:10 +02:00
|
|
|
elseif(UNIX)
|
2020-08-19 12:18:18 +02:00
|
|
|
set(EXPORTS_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/ocl.exports")
|
|
|
|
|
if("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
|
|
|
|
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/dll/linux/ocl_release.exports" "${EXPORTS_FILENAME}" COPYONLY)
|
|
|
|
|
else()
|
|
|
|
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/dll/linux/ocl_internal.exports" "${EXPORTS_FILENAME}" COPYONLY)
|
|
|
|
|
endif()
|
2020-05-04 14:36:10 +02:00
|
|
|
endif()
|
2018-03-22 13:53:11 +01:00
|
|
|
|
2017-12-21 00:45:38 +01:00
|
|
|
if(${GENERATE_EXECUTABLE})
|
2018-02-27 14:47:36 +01:00
|
|
|
list(APPEND NEO_DYNAMIC_LIB__TARGET_OBJECTS
|
2020-08-19 12:18:18 +02:00
|
|
|
$<TARGET_OBJECTS:${SHARINGS_ENABLE_LIB_NAME}>
|
|
|
|
|
$<TARGET_OBJECTS:${BUILTINS_SOURCES_LIB_NAME}>
|
|
|
|
|
$<TARGET_OBJECTS:${BUILTINS_VME_LIB_NAME}>
|
2020-10-01 13:31:19 +02:00
|
|
|
$<TARGET_OBJECTS:${BUILTINS_BINARIES_BINDFUL_LIB_NAME}>
|
2020-08-19 12:18:18 +02:00
|
|
|
$<TARGET_OBJECTS:${SCHEDULER_BINARY_LIB_NAME}>
|
2018-02-27 14:47:36 +01:00
|
|
|
)
|
2018-11-26 18:17:57 -08:00
|
|
|
|
2020-07-15 21:58:51 +02:00
|
|
|
if(DEFINED AUB_STREAM_PROJECT_NAME)
|
2019-01-18 21:44:23 +01:00
|
|
|
list(APPEND NEO_DYNAMIC_LIB__TARGET_OBJECTS $<TARGET_OBJECTS:${AUB_STREAM_PROJECT_NAME}_all_hw>)
|
2018-11-26 18:17:57 -08:00
|
|
|
endif()
|
|
|
|
|
|
2018-02-27 14:47:36 +01:00
|
|
|
add_library(${NEO_DYNAMIC_LIB_NAME} SHARED
|
2020-08-19 12:18:18 +02:00
|
|
|
${NEO_DYNAMIC_LIB__TARGET_OBJECTS}
|
2020-10-16 12:10:52 +02:00
|
|
|
${NEO_SOURCE_DIR}/shared/source/aub/aub_stream_interface.cpp
|
2018-02-27 14:47:36 +01:00
|
|
|
)
|
2019-01-18 21:44:23 +01:00
|
|
|
|
2019-05-15 18:06:16 +02:00
|
|
|
if(UNIX)
|
2021-02-02 15:23:14 +01:00
|
|
|
if(NEO_BUILD_DEBUG_SYMBOLS_PACKAGE)
|
|
|
|
|
get_filename_component(lib_file_name $<TARGET_FILE:${NEO_DYNAMIC_LIB_NAME}> NAME_WE)
|
|
|
|
|
set(symbols_file_name ${lib_file_name}.debug)
|
|
|
|
|
set(debug_symbols_target_name "${STRIP_SYMBOLS_TARGET}_${NEO_DYNAMIC_LIB_NAME}")
|
|
|
|
|
add_custom_target(${debug_symbols_target_name}
|
|
|
|
|
COMMAND sh -c "objcopy --only-keep-debug ${lib_file_name} ${symbols_file_name}"
|
|
|
|
|
COMMAND sh -c "strip -g ${lib_file_name}"
|
|
|
|
|
COMMAND sh -c "objcopy --add-gnu-debuglink=${symbols_file_name} ${lib_file_name}"
|
|
|
|
|
)
|
|
|
|
|
add_dependencies(${debug_symbols_target_name} ${NEO_DYNAMIC_LIB_NAME})
|
|
|
|
|
add_dependencies(${STRIP_SYMBOLS_TARGET} ${debug_symbols_target_name})
|
|
|
|
|
set_property(GLOBAL PROPERTY IGDRCL_SYMBOL_FILE "${symbols_file_name}")
|
|
|
|
|
endif()
|
2021-01-20 16:25:05 +00:00
|
|
|
|
2019-05-15 18:06:16 +02:00
|
|
|
install(FILES
|
2020-08-19 12:18:18 +02:00
|
|
|
$<TARGET_FILE:${NEO_DYNAMIC_LIB_NAME}>
|
|
|
|
|
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/intel-opencl
|
|
|
|
|
COMPONENT opencl
|
2019-05-15 18:06:16 +02:00
|
|
|
)
|
2020-03-18 18:43:17 +01:00
|
|
|
set_property(GLOBAL APPEND PROPERTY NEO_OCL_COMPONENTS_LIST "opencl")
|
2019-05-15 18:06:16 +02:00
|
|
|
endif()
|
|
|
|
|
|
2018-08-30 14:20:31 +02:00
|
|
|
if(NOT DISABLED_GTPIN_SUPPORT)
|
2018-05-27 22:50:08 -07:00
|
|
|
macro(macro_for_each_gen)
|
2020-12-18 17:25:12 +01:00
|
|
|
foreach(BRANCH_DIR ${BRANCH_DIR_LIST})
|
|
|
|
|
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR}${GEN_TYPE_LOWER}/gtpin_setup_${GEN_TYPE_LOWER}.cpp)
|
|
|
|
|
target_sources(${NEO_DYNAMIC_LIB_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR}${GEN_TYPE_LOWER}/gtpin_setup_${GEN_TYPE_LOWER}.cpp)
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
2018-05-27 22:50:08 -07:00
|
|
|
endmacro()
|
|
|
|
|
apply_macro_for_each_gen("SUPPORTED")
|
|
|
|
|
endif()
|
|
|
|
|
|
2018-02-08 10:53:47 +01:00
|
|
|
add_subdirectory(dll)
|
2017-12-21 00:45:38 +01:00
|
|
|
|
2020-03-11 14:03:26 +01:00
|
|
|
target_link_libraries(${NEO_DYNAMIC_LIB_NAME} ${NEO_STATIC_LIB_NAME} ${NEO_SHARED_LIB} ${NEO_STATIC_LIB_NAME} ${NEO_SHARED_LIB} ${IGDRCL_EXTRA_LIBS})
|
2018-02-27 14:47:36 +01:00
|
|
|
|
|
|
|
|
target_include_directories(${NEO_DYNAMIC_LIB_NAME} BEFORE PRIVATE
|
2020-08-19 12:18:18 +02:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
2018-02-27 14:47:36 +01:00
|
|
|
)
|
2018-03-06 14:50:30 +01:00
|
|
|
|
2018-02-08 10:53:47 +01:00
|
|
|
if(WIN32)
|
2018-03-08 09:14:07 +01:00
|
|
|
target_link_libraries(${NEO_DYNAMIC_LIB_NAME} dxgi)
|
2020-01-14 16:25:30 +01:00
|
|
|
add_dependencies(${NEO_DYNAMIC_LIB_NAME} ${GMM_TARGET_NAME})
|
2020-01-20 00:17:52 +01:00
|
|
|
target_sources(${NEO_DYNAMIC_LIB_NAME} PRIVATE
|
2020-08-19 12:18:18 +02:00
|
|
|
${NEO_SHARED_DIRECTORY}/os_interface/windows/gmm_interface_win.cpp
|
2020-01-14 16:25:30 +01:00
|
|
|
)
|
2018-02-08 10:53:47 +01:00
|
|
|
else()
|
2020-01-14 16:25:30 +01:00
|
|
|
target_link_libraries(${NEO_DYNAMIC_LIB_NAME} ${GMM_LINK_NAME})
|
2018-03-06 14:50:30 +01:00
|
|
|
target_include_directories(${NEO_DYNAMIC_LIB_NAME} PRIVATE
|
2021-03-03 12:47:04 +01:00
|
|
|
${NEO_SHARED_DIRECTORY}/dll/devices${BRANCH_DIR_SUFFIX}
|
2018-02-27 14:47:36 +01:00
|
|
|
)
|
|
|
|
|
set_property(TARGET ${NEO_DYNAMIC_LIB_NAME}
|
2020-08-19 12:18:18 +02:00
|
|
|
APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--version-script=${EXPORTS_FILENAME}"
|
2018-02-27 14:47:36 +01:00
|
|
|
)
|
|
|
|
|
set_property(TARGET ${NEO_DYNAMIC_LIB_NAME}
|
2020-08-19 12:18:18 +02:00
|
|
|
APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-Bsymbolic"
|
2018-02-27 14:47:36 +01:00
|
|
|
)
|
|
|
|
|
set_property(TARGET ${NEO_DYNAMIC_LIB_NAME} APPEND_STRING PROPERTY COMPILE_FLAGS ${ASAN_FLAGS})
|
2020-01-20 00:17:52 +01:00
|
|
|
target_sources(${NEO_DYNAMIC_LIB_NAME} PRIVATE
|
2020-08-19 12:18:18 +02:00
|
|
|
${NEO_SHARED_DIRECTORY}/os_interface/linux/gmm_interface_linux.cpp
|
2020-01-20 00:17:52 +01:00
|
|
|
)
|
2018-02-08 10:53:47 +01:00
|
|
|
endif()
|
2017-12-21 00:45:38 +01:00
|
|
|
|
2018-02-27 14:47:36 +01:00
|
|
|
set_target_properties(${NEO_DYNAMIC_LIB_NAME} PROPERTIES
|
2020-08-19 12:18:18 +02:00
|
|
|
DEBUG_OUTPUT_NAME "${NEO_DLL_NAME_BASE}${IGDRCL_NAME_POSTFIX}${IGDRCL_OPTION__BITS}"
|
|
|
|
|
RELEASE_OUTPUT_NAME "${NEO_DLL_NAME_BASE}${IGDRCL_NAME_POSTFIX}${IGDRCL_OPTION__BITS}"
|
|
|
|
|
RELEASEINTERNAL_OUTPUT_NAME "${NEO_DLL_NAME_BASE}${IGDRCL_NAME_POSTFIX}${IGDRCL_OPTION__BITS}"
|
|
|
|
|
OUTPUT_NAME "${NEO_DLL_NAME_BASE}${IGDRCL_NAME_POSTFIX}${IGDRCL_OPTION__BITS}"
|
2018-02-27 14:47:36 +01:00
|
|
|
)
|
2020-03-27 09:21:41 +01:00
|
|
|
set_target_properties(${NEO_DYNAMIC_LIB_NAME} PROPERTIES FOLDER ${OPENCL_RUNTIME_PROJECTS_FOLDER})
|
2019-10-09 14:24:46 +02:00
|
|
|
create_project_source_tree_with_exports(${NEO_DYNAMIC_LIB_NAME} "${EXPORTS_FILENAME}")
|
2020-08-19 12:18:18 +02:00
|
|
|
endif()
|
2017-12-21 00:45:38 +01:00
|
|
|
|
2019-10-09 14:24:46 +02:00
|
|
|
create_project_source_tree(${NEO_STATIC_LIB_NAME})
|
2017-12-21 00:45:38 +01:00
|
|
|
|
2018-02-27 14:47:36 +01:00
|
|
|
if(UNIX AND NOT (TARGET clang-tidy))
|
|
|
|
|
add_custom_target(clang-tidy
|
2020-08-19 12:18:18 +02:00
|
|
|
DEPENDS scheduler
|
2018-02-27 14:47:36 +01:00
|
|
|
)
|
|
|
|
|
add_custom_command(
|
2020-08-19 12:18:18 +02:00
|
|
|
TARGET clang-tidy
|
|
|
|
|
POST_BUILD
|
|
|
|
|
COMMAND echo clang-tidy...
|
|
|
|
|
COMMAND find ${CMAKE_CURRENT_SOURCE_DIR} -name *.cpp | xargs --verbose -I{} -P`nproc` clang-tidy-8 -p ${NEO_BINARY_DIR} {} | tee ${NEO_BINARY_DIR}/clang-tidy.log
|
|
|
|
|
WORKING_DIRECTORY ${NEO_SOURCE_DIR}
|
2018-02-27 14:47:36 +01:00
|
|
|
)
|
|
|
|
|
endif()
|
2018-03-08 09:14:07 +01:00
|
|
|
|
|
|
|
|
set(IGDRCL_EXTRA_LIBS ${IGDRCL_EXTRA_LIBS} PARENT_SCOPE)
|