mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-19 06:24:51 +08:00
cmake refactor
Signed-off-by: Artur Harasimiuk <artur.harasimiuk@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
0a380f479a
commit
394f9053a5
286
CMakeLists.txt
286
CMakeLists.txt
@@ -41,7 +41,7 @@ message(STATUS "branch dir list: ${BRANCH_DIR_LIST}")
|
||||
include("${BRANCH_TYPE}/custom_config.cmake" OPTIONAL)
|
||||
|
||||
# Include needed macros
|
||||
include(common_macros.cmake)
|
||||
include(cmake/common_macros.cmake)
|
||||
|
||||
if(CMAKE_CONFIGURATION_TYPES)
|
||||
# Set custom build types for multi-configuration generators
|
||||
@@ -64,48 +64,7 @@ if(WIN32)
|
||||
set(DISABLE_WDDM_LINUX TRUE)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
# get WDK location and version to use
|
||||
if(NOT WDK_DIR)
|
||||
if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../wdk")
|
||||
get_filename_component(WDK_DIR "../wdk" ABSOLUTE)
|
||||
endif()
|
||||
endif()
|
||||
if(WDK_DIR)
|
||||
if(IS_DIRECTORY "${WDK_DIR}/Win15")
|
||||
get_filename_component(WDK_DIR "${WDK_DIR}/Win15" ABSOLUTE)
|
||||
endif()
|
||||
endif()
|
||||
message(STATUS "WDK Directory: ${WDK_DIR}")
|
||||
|
||||
if(NOT WDK_VERSION)
|
||||
if(WDK_DIR)
|
||||
# Get WDK version from ${WDK_DIR}/WDKVersion.txt
|
||||
file(READ "${WDK_DIR}/WDKVersion.txt" WindowsTargetPlatformVersion)
|
||||
string(REPLACE " " ";" WindowsTargetPlatformVersion ${WindowsTargetPlatformVersion})
|
||||
list(LENGTH WindowsTargetPlatformVersion versionListLength)
|
||||
if(NOT versionListLength EQUAL 3)
|
||||
if(WIN32)
|
||||
message(ERROR "Error reading content of WDKVersion.txt file")
|
||||
endif()
|
||||
else()
|
||||
list(GET WindowsTargetPlatformVersion 2 WindowsTargetPlatformVersion)
|
||||
endif()
|
||||
else()
|
||||
if(WIN32)
|
||||
message(ERROR "WDK not available")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
set(WindowsTargetPlatformVersion ${WDK_VERSION})
|
||||
endif()
|
||||
message(STATUS "WDK Version is ${WindowsTargetPlatformVersion}")
|
||||
endif()
|
||||
|
||||
if(NOT DISABLE_WDDM_LINUX)
|
||||
get_filename_component(LIBDXG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/third_party/libdxg" ABSOLUTE)
|
||||
set(D3DKMTHK_INCLUDE_PATHS "${LIBDXG_PATH}/include/")
|
||||
endif()
|
||||
include(cmake/find_wdk.cmake)
|
||||
|
||||
if(WIN32)
|
||||
set(DRIVER_MODEL wddm)
|
||||
@@ -200,6 +159,7 @@ if(MSVC AND ENABLE_VS_FASTLINK)
|
||||
string(APPEND CMAKE_STATIC_LINKER_FLAGS_DEBUG " /debug:FASTLINK")
|
||||
string(APPEND CMAKE_MODULE_LINKER_FLAGS_DEBUG " /debug:FASTLINK")
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
find_program(__LD_GOLD_FOUND ld.gold)
|
||||
find_program(__LD_LLD_FOUND ld.lld)
|
||||
@@ -408,242 +368,14 @@ if(NOT THIRD_PARTY_DIR)
|
||||
endif()
|
||||
message(STATUS "Third party dir: ${THIRD_PARTY_DIR}")
|
||||
|
||||
if(WIN32)
|
||||
if(${WindowsTargetPlatformVersion} VERSION_LESS "10.0.18328.0")
|
||||
set(CONST_FROM_WDK_10_0_18328_0)
|
||||
else()
|
||||
set(CONST_FROM_WDK_10_0_18328_0 "CONST")
|
||||
endif()
|
||||
add_compile_options(-DCONST_FROM_WDK_10_0_18328_0=${CONST_FROM_WDK_10_0_18328_0})
|
||||
set(WDK_INCLUDE_PATHS "")
|
||||
list(APPEND WDK_INCLUDE_PATHS
|
||||
"${WDK_DIR}/Include/${WindowsTargetPlatformVersion}/um"
|
||||
"${WDK_DIR}/Include/${WindowsTargetPlatformVersion}/shared"
|
||||
"${WDK_DIR}/Include/${WindowsTargetPlatformVersion}/km"
|
||||
)
|
||||
message(STATUS "WDK include paths: ${WDK_INCLUDE_PATHS}")
|
||||
elseif(NOT DISABLE_WDDM_LINUX)
|
||||
add_compile_options(-DCONST_FROM_WDK_10_0_18328_0=CONST)
|
||||
add_compile_options(-DWDDM_LINUX=1)
|
||||
set(WDK_INCLUDE_PATHS "")
|
||||
get_filename_component(DX_HEADERS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/third_party/DirectX-Headers" ABSOLUTE)
|
||||
list(APPEND WDK_INCLUDE_PATHS ${DX_HEADERS_PATH}/include/wsl)
|
||||
list(APPEND WDK_INCLUDE_PATHS ${DX_HEADERS_PATH}/include/wsl/stubs)
|
||||
list(APPEND WDK_INCLUDE_PATHS ${DX_HEADERS_PATH}/include/directx)
|
||||
list(APPEND WDK_INCLUDE_PATHS ${DX_HEADERS_PATH}/include/dxguids)
|
||||
list(APPEND WDK_INCLUDE_PATHS ${D3DKMTHK_INCLUDE_PATHS})
|
||||
message(STATUS "WDK include paths: ${WDK_INCLUDE_PATHS}")
|
||||
endif()
|
||||
|
||||
# Intel Graphics Compiler detection
|
||||
if(NOT IGC__IGC_TARGETS)
|
||||
# check whether igc is part of workspace
|
||||
if(DEFINED IGC_DIR)
|
||||
get_filename_component(IGC_DIR "${IGC_DIR}" ABSOLUTE)
|
||||
else()
|
||||
get_filename_component(IGC_DIR_tmp "${NEO_SOURCE_DIR}/../igc" ABSOLUTE)
|
||||
if(IS_DIRECTORY "${IGC_DIR_tmp}")
|
||||
set(IGC_DIR "${IGC_DIR_tmp}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
# on Unix-like use pkg-config
|
||||
find_package(PkgConfig)
|
||||
if(DEFINED IGC_DIR)
|
||||
if(IS_DIRECTORY "${IGC_DIR}/lib/pkgconfig/")
|
||||
set(__tmp_LIBDIR "lib")
|
||||
elseif(IS_DIRECTORY "${IGC_DIR}/${CMAKE_INSTALL_LIBDIR}/pkgconfig/")
|
||||
set(__tmp_LIBDIR ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
endif()
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
set(OLD_PKG_CONFIG_PATH $ENV{PKG_CONFIG_PATH})
|
||||
set(ENV{PKG_CONFIG_PATH} "${IGC_DIR}/${__tmp_LIBDIR}/pkgconfig")
|
||||
endif()
|
||||
pkg_check_modules(NEO__IGC igc-opencl)
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
set(ENV{PKG_CONFIG_PATH} ${OLD_PKG_CONFIG_PATH})
|
||||
set(NEO__IGC_LIBRARY_PATH "${IGC_DIR}/${__tmp_LIBDIR}/")
|
||||
endif()
|
||||
|
||||
if(NEO__IGC_FOUND)
|
||||
if(DEFINED IGC_DIR AND IS_DIRECTORY "${IGC_DIR}/${__tmp_LIBDIR}/pkgconfig/")
|
||||
string(REPLACE "${NEO__IGC_INCLUDEDIR}" "${IGC_DIR}/include/igc" NEO__IGC_INCLUDE_DIRS "${NEO__IGC_INCLUDE_DIRS}")
|
||||
endif()
|
||||
|
||||
set(NEO__IGC_INCLUDE_DIR ${NEO__IGC_INCLUDE_DIRS})
|
||||
message(STATUS "IGC include dirs: ${NEO__IGC_INCLUDE_DIR}")
|
||||
endif()
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
unset(__tmp_LIBDIR)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NEO__IGC_FOUND)
|
||||
# do nothing
|
||||
elseif(EXISTS "${IGC_DIR}/CMakeLists.txt")
|
||||
message(STATUS "IGC source dir is: ${IGC_DIR}")
|
||||
|
||||
set(IGC_OPTION__OUTPUT_DIR "${NEO_BUILD_DIR}/igc")
|
||||
set(IGC_OPTION__INCLUDE_IGC_COMPILER_TOOLS OFF)
|
||||
add_subdirectory_unique("${IGC_DIR}" "${NEO_BUILD_DIR}/igc" EXCLUDE_FROM_ALL)
|
||||
|
||||
set(NEO__IGC_TARGETS "${IGC__IGC_TARGETS}")
|
||||
foreach(TARGET_tmp ${NEO__IGC_TARGETS})
|
||||
list(APPEND NEO__IGC_INCLUDE_DIR $<TARGET_PROPERTY:${TARGET_tmp},INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
list(APPEND NEO__IGC_COMPILE_DEFINITIONS $<TARGET_PROPERTY:${TARGET_tmp},INTERFACE_COMPILE_DEFINITIONS>)
|
||||
endforeach()
|
||||
message(STATUS "IGC targets: ${NEO__IGC_TARGETS}")
|
||||
else()
|
||||
message(FATAL_ERROR "Intel Graphics Compiler not found!")
|
||||
endif()
|
||||
else()
|
||||
set(NEO__IGC_TARGETS "${IGC__IGC_TARGETS}")
|
||||
foreach(TARGET_tmp ${NEO__IGC_TARGETS})
|
||||
list(APPEND NEO__IGC_INCLUDE_DIR $<TARGET_PROPERTY:${TARGET_tmp},INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
list(APPEND NEO__IGC_LIBRARY_PATH $<TARGET_FILE_DIR:${TARGET_tmp}>)
|
||||
endforeach()
|
||||
string(REPLACE ";" ":" NEO__IGC_LIBRARY_PATH "${NEO__IGC_LIBRARY_PATH}")
|
||||
message(STATUS "IGC targets: ${NEO__IGC_TARGETS}")
|
||||
endif()
|
||||
|
||||
# VISA headers - always relative to IGC
|
||||
if(IS_DIRECTORY "${IGC_DIR}/../visa")
|
||||
get_filename_component(VISA_DIR "${IGC_DIR}/../visa" ABSOLUTE)
|
||||
elseif(IS_DIRECTORY "${IGC_DIR}/visa")
|
||||
set(VISA_DIR "${IGC_DIR}/visa")
|
||||
elseif(IS_DIRECTORY "${IGC_DIR}/include/visa")
|
||||
set(VISA_DIR "${IGC_DIR}/include/visa")
|
||||
elseif(IS_DIRECTORY "${NEO__IGC_INCLUDEDIR}/../visa")
|
||||
get_filename_component(VISA_DIR "${NEO__IGC_INCLUDEDIR}/../visa" ABSOLUTE)
|
||||
elseif(IS_DIRECTORY "${IGC_OCL_ADAPTOR_DIR}/../../visa")
|
||||
get_filename_component(VISA_DIR "${IGC_OCL_ADAPTOR_DIR}/../../visa" ABSOLUTE)
|
||||
endif()
|
||||
message(STATUS "VISA Dir: ${VISA_DIR}")
|
||||
|
||||
if(IS_DIRECTORY "${IGC_OCL_ADAPTOR_DIR}/../common")
|
||||
get_filename_component(IGC_COMMON_PARENT_DIR "${IGC_OCL_ADAPTOR_DIR}/../" ABSOLUTE)
|
||||
endif()
|
||||
|
||||
if(IS_DIRECTORY "${VISA_DIR}/include")
|
||||
set(VISA_INCLUDE_DIR "${VISA_DIR}/include")
|
||||
else()
|
||||
set(VISA_INCLUDE_DIR "${VISA_DIR}")
|
||||
endif()
|
||||
|
||||
# IGA headers - always relative to VISA
|
||||
if(IS_DIRECTORY "${VISA_DIR}/../iga")
|
||||
get_filename_component(IGA_DIR "${VISA_DIR}/../iga" ABSOLUTE)
|
||||
elseif(IS_DIRECTORY "${VISA_DIR}/iga")
|
||||
set(IGA_DIR "${VISA_DIR}/iga")
|
||||
endif()
|
||||
|
||||
if(IS_DIRECTORY "${IGA_DIR}/IGALibrary/api")
|
||||
set(IGA_INCLUDE_DIR "${IGA_DIR}/IGALibrary/api")
|
||||
else()
|
||||
set(IGA_INCLUDE_DIR "${IGA_DIR}")
|
||||
endif()
|
||||
|
||||
if(IS_DIRECTORY ${IGA_INCLUDE_DIR})
|
||||
set(IGA_HEADERS_AVAILABLE TRUE)
|
||||
set(IGA_LIBRARY_NAME "iga${NEO_BITS}")
|
||||
else()
|
||||
set(IGA_HEADERS_AVAILABLE FALSE)
|
||||
endif()
|
||||
|
||||
message(STATUS "IGA Includes dir: ${IGA_INCLUDE_DIR}")
|
||||
|
||||
if(WIN32)
|
||||
set(IGC_LIBRARY_NAME "igc${NEO_BITS}")
|
||||
set(FCL_LIBRARY_NAME "igdfcl${NEO_BITS}")
|
||||
endif()
|
||||
include(cmake/find_igc.cmake)
|
||||
|
||||
# GmmLib detection
|
||||
if(TARGET igfx_gmmumd_dll)
|
||||
set(GMM_TARGET_NAME "igfx_gmmumd_dll")
|
||||
set(GMM_LINK_NAME $<TARGET_PROPERTY:${GMM_TARGET_NAME},OUTPUT_NAME>)
|
||||
set(NEO__GMM_LIBRARY_PATH $<TARGET_FILE_DIR:${GMM_TARGET_NAME}>)
|
||||
set(NEO__GMM_INCLUDE_DIR $<TARGET_PROPERTY:${GMM_TARGET_NAME},INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
else()
|
||||
if(DEFINED GMM_DIR)
|
||||
get_filename_component(GMM_DIR "${GMM_DIR}" ABSOLUTE)
|
||||
else()
|
||||
get_filename_component(GMM_DIR_tmp "${NEO_SOURCE_DIR}/../gmmlib" ABSOLUTE)
|
||||
if(IS_DIRECTORY "${GMM_DIR_tmp}")
|
||||
set(GMM_DIR "${GMM_DIR_tmp}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
if(DEFINED GMM_DIR)
|
||||
if(IS_DIRECTORY "${GMM_DIR}/lib/pkgconfig/")
|
||||
set(__tmp_LIBDIR "lib")
|
||||
elseif(IS_DIRECTORY "${GMM_DIR}/${CMAKE_INSTALL_LIBDIR}/pkgconfig/")
|
||||
set(__tmp_LIBDIR ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(PkgConfig)
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
set(OLD_PKG_CONFIG_PATH $ENV{PKG_CONFIG_PATH})
|
||||
set(ENV{PKG_CONFIG_PATH} "${GMM_DIR}/${__tmp_LIBDIR}/pkgconfig/")
|
||||
endif()
|
||||
pkg_check_modules(NEO__GMM igdgmm)
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
set(ENV{PKG_CONFIG_PATH} ${OLD_PKG_CONFIG_PATH})
|
||||
endif()
|
||||
|
||||
if(NEO__GMM_FOUND)
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
string(REPLACE "${NEO__GMM_INCLUDEDIR}" "${GMM_DIR}/include/igdgmm" NEO__GMM_INCLUDE_DIRS "${NEO__GMM_INCLUDE_DIRS}")
|
||||
string(REPLACE "${NEO__GMM_LIBDIR}" "${GMM_DIR}/${__tmp_LIBDIR}" NEO__GMM_LIBDIR "${NEO__GMM_LIBDIR}")
|
||||
set(NEO__GMM_LIBRARY_PATH "${NEO__GMM_LIBDIR}")
|
||||
endif()
|
||||
|
||||
set(GMM_TARGET_NAME "igfx_gmmumd_dll")
|
||||
set(GMM_LINK_NAME ${NEO__GMM_LIBRARIES})
|
||||
|
||||
set(NEO__GMM_INCLUDE_DIR ${NEO__GMM_INCLUDE_DIRS})
|
||||
message(STATUS "GmmLib include dirs: ${NEO__GMM_INCLUDE_DIR}")
|
||||
else()
|
||||
message(FATAL_ERROR "GmmLib not found!")
|
||||
endif()
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
unset(__tmp_LIBDIR)
|
||||
endif()
|
||||
else()
|
||||
if(EXISTS "${GMM_DIR}/CMakeLists.txt")
|
||||
message(STATUS "GmmLib source dir is: ${GMM_DIR}")
|
||||
add_subdirectory_unique("${GMM_DIR}" "${NEO_BUILD_DIR}/gmmlib")
|
||||
|
||||
if(NOT DEFINED GMM_TARGET_NAME)
|
||||
set(GMM_TARGET_NAME "igfx_gmmumd_dll")
|
||||
endif()
|
||||
|
||||
set(NEO__GMM_INCLUDE_DIR $<TARGET_PROPERTY:${GMM_TARGET_NAME},INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
set(NEO__GMM_LIBRARY_PATH $<TARGET_FILE_DIR:${GMM_TARGET_NAME}>)
|
||||
set(GMM_LINK_NAME $<TARGET_PROPERTY:${GMM_TARGET_NAME},OUTPUT_NAME>)
|
||||
else()
|
||||
message(FATAL_ERROR "GmmLib not found!")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
macro(copy_gmm_dll_for target)
|
||||
if(NOT UNIX)
|
||||
add_custom_command(
|
||||
TARGET ${target}
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:${GMM_TARGET_NAME}> $<TARGET_FILE_DIR:${target}>
|
||||
)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
link_directories(${NEO__GMM_LIBRARY_PATH})
|
||||
include(cmake/find_gmmlib.cmake)
|
||||
|
||||
# LibVA detection
|
||||
if(NOT DISABLE_LIBVA)
|
||||
# LibVA detection
|
||||
if(UNIX)
|
||||
set(NEO__LIBVA_IS_REQUIRED "")
|
||||
if(IGDRCL_FORCE_USE_LIBVA)
|
||||
@@ -709,8 +441,6 @@ else()
|
||||
endif()
|
||||
message(STATUS "Engine node dir: ${ENGINE_NODE_DIR}")
|
||||
|
||||
add_definitions(-DGMM_OCL)
|
||||
|
||||
# We want to organize our IDE targets into folders
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
@@ -783,7 +513,6 @@ if(MSVC)
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINKER_FLAGS}")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINKER_FLAGS}")
|
||||
add_definitions(-DUNICODE -D_UNICODE)
|
||||
link_directories("${WDK_DIR}/Lib/${WindowsTargetPlatformVersion}/um/${NEO_ARCH}/")
|
||||
else()
|
||||
if(IGDRCL_GCOV)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage --coverage")
|
||||
@@ -1117,9 +846,6 @@ if(EXISTS ${NEO_SOURCE_DIR}/scripts/format)
|
||||
endif()
|
||||
|
||||
configure_file(config.h.in ${NEO_BUILD_DIR}/config.h)
|
||||
if(WIN32 AND NOT NEO__IGC_FOUND)
|
||||
configure_file(igc.opencl.h.in ${NEO_BUILD_DIR}/igc.opencl.h)
|
||||
endif()
|
||||
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)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (C) 2018-2020 Intel Corporation
|
||||
# Copyright (C) 2018-2021 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
90
cmake/find_gmmlib.cmake
Normal file
90
cmake/find_gmmlib.cmake
Normal file
@@ -0,0 +1,90 @@
|
||||
#
|
||||
# Copyright (C) 2021 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
# GmmLib detection
|
||||
if(TARGET igfx_gmmumd_dll)
|
||||
set(GMM_TARGET_NAME "igfx_gmmumd_dll")
|
||||
set(GMM_LINK_NAME $<TARGET_PROPERTY:${GMM_TARGET_NAME},OUTPUT_NAME>)
|
||||
set(NEO__GMM_LIBRARY_PATH $<TARGET_FILE_DIR:${GMM_TARGET_NAME}>)
|
||||
set(NEO__GMM_INCLUDE_DIR $<TARGET_PROPERTY:${GMM_TARGET_NAME},INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
else()
|
||||
if(DEFINED GMM_DIR)
|
||||
get_filename_component(GMM_DIR "${GMM_DIR}" ABSOLUTE)
|
||||
else()
|
||||
get_filename_component(GMM_DIR_tmp "${NEO_SOURCE_DIR}/../gmmlib" ABSOLUTE)
|
||||
if(IS_DIRECTORY "${GMM_DIR_tmp}")
|
||||
set(GMM_DIR "${GMM_DIR_tmp}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
if(DEFINED GMM_DIR)
|
||||
if(IS_DIRECTORY "${GMM_DIR}/lib/pkgconfig/")
|
||||
set(__tmp_LIBDIR "lib")
|
||||
elseif(IS_DIRECTORY "${GMM_DIR}/${CMAKE_INSTALL_LIBDIR}/pkgconfig/")
|
||||
set(__tmp_LIBDIR ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(PkgConfig)
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
set(OLD_PKG_CONFIG_PATH $ENV{PKG_CONFIG_PATH})
|
||||
set(ENV{PKG_CONFIG_PATH} "${GMM_DIR}/${__tmp_LIBDIR}/pkgconfig/")
|
||||
endif()
|
||||
pkg_check_modules(NEO__GMM igdgmm)
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
set(ENV{PKG_CONFIG_PATH} ${OLD_PKG_CONFIG_PATH})
|
||||
endif()
|
||||
|
||||
if(NEO__GMM_FOUND)
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
string(REPLACE "${NEO__GMM_INCLUDEDIR}" "${GMM_DIR}/include/igdgmm" NEO__GMM_INCLUDE_DIRS "${NEO__GMM_INCLUDE_DIRS}")
|
||||
string(REPLACE "${NEO__GMM_LIBDIR}" "${GMM_DIR}/${__tmp_LIBDIR}" NEO__GMM_LIBDIR "${NEO__GMM_LIBDIR}")
|
||||
set(NEO__GMM_LIBRARY_PATH "${NEO__GMM_LIBDIR}")
|
||||
endif()
|
||||
|
||||
set(GMM_TARGET_NAME "igfx_gmmumd_dll")
|
||||
set(GMM_LINK_NAME ${NEO__GMM_LIBRARIES})
|
||||
|
||||
set(NEO__GMM_INCLUDE_DIR ${NEO__GMM_INCLUDE_DIRS})
|
||||
message(STATUS "GmmLib include dirs: ${NEO__GMM_INCLUDE_DIR}")
|
||||
else()
|
||||
message(FATAL_ERROR "GmmLib not found!")
|
||||
endif()
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
unset(__tmp_LIBDIR)
|
||||
endif()
|
||||
else()
|
||||
if(EXISTS "${GMM_DIR}/CMakeLists.txt")
|
||||
message(STATUS "GmmLib source dir is: ${GMM_DIR}")
|
||||
add_subdirectory_unique("${GMM_DIR}" "${NEO_BUILD_DIR}/gmmlib")
|
||||
|
||||
if(NOT DEFINED GMM_TARGET_NAME)
|
||||
set(GMM_TARGET_NAME "igfx_gmmumd_dll")
|
||||
endif()
|
||||
|
||||
set(NEO__GMM_INCLUDE_DIR $<TARGET_PROPERTY:${GMM_TARGET_NAME},INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
set(NEO__GMM_LIBRARY_PATH $<TARGET_FILE_DIR:${GMM_TARGET_NAME}>)
|
||||
set(GMM_LINK_NAME $<TARGET_PROPERTY:${GMM_TARGET_NAME},OUTPUT_NAME>)
|
||||
else()
|
||||
message(FATAL_ERROR "GmmLib not found!")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
macro(copy_gmm_dll_for target)
|
||||
if(NOT UNIX)
|
||||
add_custom_command(
|
||||
TARGET ${target}
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:${GMM_TARGET_NAME}> $<TARGET_FILE_DIR:${target}>
|
||||
)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
link_directories(${NEO__GMM_LIBRARY_PATH})
|
||||
|
||||
add_definitions(-DGMM_OCL)
|
||||
133
cmake/find_igc.cmake
Normal file
133
cmake/find_igc.cmake
Normal file
@@ -0,0 +1,133 @@
|
||||
#
|
||||
# Copyright (C) 2021 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
# Intel Graphics Compiler detection
|
||||
if(NOT IGC__IGC_TARGETS)
|
||||
# check whether igc is part of workspace
|
||||
if(DEFINED IGC_DIR)
|
||||
get_filename_component(IGC_DIR "${IGC_DIR}" ABSOLUTE)
|
||||
else()
|
||||
get_filename_component(IGC_DIR_tmp "${NEO_SOURCE_DIR}/../igc" ABSOLUTE)
|
||||
if(IS_DIRECTORY "${IGC_DIR_tmp}")
|
||||
set(IGC_DIR "${IGC_DIR_tmp}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
# on Unix-like use pkg-config
|
||||
find_package(PkgConfig)
|
||||
if(DEFINED IGC_DIR)
|
||||
if(IS_DIRECTORY "${IGC_DIR}/lib/pkgconfig/")
|
||||
set(__tmp_LIBDIR "lib")
|
||||
elseif(IS_DIRECTORY "${IGC_DIR}/${CMAKE_INSTALL_LIBDIR}/pkgconfig/")
|
||||
set(__tmp_LIBDIR ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
endif()
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
set(OLD_PKG_CONFIG_PATH $ENV{PKG_CONFIG_PATH})
|
||||
set(ENV{PKG_CONFIG_PATH} "${IGC_DIR}/${__tmp_LIBDIR}/pkgconfig")
|
||||
endif()
|
||||
pkg_check_modules(NEO__IGC igc-opencl)
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
set(ENV{PKG_CONFIG_PATH} ${OLD_PKG_CONFIG_PATH})
|
||||
set(NEO__IGC_LIBRARY_PATH "${IGC_DIR}/${__tmp_LIBDIR}/")
|
||||
endif()
|
||||
|
||||
if(NEO__IGC_FOUND)
|
||||
if(DEFINED IGC_DIR AND IS_DIRECTORY "${IGC_DIR}/${__tmp_LIBDIR}/pkgconfig/")
|
||||
string(REPLACE "${NEO__IGC_INCLUDEDIR}" "${IGC_DIR}/include/igc" NEO__IGC_INCLUDE_DIRS "${NEO__IGC_INCLUDE_DIRS}")
|
||||
endif()
|
||||
|
||||
set(NEO__IGC_INCLUDE_DIR ${NEO__IGC_INCLUDE_DIRS})
|
||||
message(STATUS "IGC include dirs: ${NEO__IGC_INCLUDE_DIR}")
|
||||
endif()
|
||||
if(DEFINED __tmp_LIBDIR)
|
||||
unset(__tmp_LIBDIR)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NEO__IGC_FOUND)
|
||||
# do nothing
|
||||
elseif(EXISTS "${IGC_DIR}/CMakeLists.txt")
|
||||
message(STATUS "IGC source dir is: ${IGC_DIR}")
|
||||
|
||||
set(IGC_OPTION__OUTPUT_DIR "${NEO_BUILD_DIR}/igc")
|
||||
set(IGC_OPTION__INCLUDE_IGC_COMPILER_TOOLS OFF)
|
||||
add_subdirectory_unique("${IGC_DIR}" "${NEO_BUILD_DIR}/igc" EXCLUDE_FROM_ALL)
|
||||
|
||||
set(NEO__IGC_TARGETS "${IGC__IGC_TARGETS}")
|
||||
foreach(TARGET_tmp ${NEO__IGC_TARGETS})
|
||||
list(APPEND NEO__IGC_INCLUDE_DIR $<TARGET_PROPERTY:${TARGET_tmp},INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
list(APPEND NEO__IGC_COMPILE_DEFINITIONS $<TARGET_PROPERTY:${TARGET_tmp},INTERFACE_COMPILE_DEFINITIONS>)
|
||||
endforeach()
|
||||
message(STATUS "IGC targets: ${NEO__IGC_TARGETS}")
|
||||
else()
|
||||
message(FATAL_ERROR "Intel Graphics Compiler not found!")
|
||||
endif()
|
||||
else()
|
||||
set(NEO__IGC_TARGETS "${IGC__IGC_TARGETS}")
|
||||
foreach(TARGET_tmp ${NEO__IGC_TARGETS})
|
||||
list(APPEND NEO__IGC_INCLUDE_DIR $<TARGET_PROPERTY:${TARGET_tmp},INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
list(APPEND NEO__IGC_LIBRARY_PATH $<TARGET_FILE_DIR:${TARGET_tmp}>)
|
||||
endforeach()
|
||||
string(REPLACE ";" ":" NEO__IGC_LIBRARY_PATH "${NEO__IGC_LIBRARY_PATH}")
|
||||
message(STATUS "IGC targets: ${NEO__IGC_TARGETS}")
|
||||
endif()
|
||||
|
||||
# VISA headers - always relative to IGC
|
||||
if(IS_DIRECTORY "${IGC_DIR}/../visa")
|
||||
get_filename_component(VISA_DIR "${IGC_DIR}/../visa" ABSOLUTE)
|
||||
elseif(IS_DIRECTORY "${IGC_DIR}/visa")
|
||||
set(VISA_DIR "${IGC_DIR}/visa")
|
||||
elseif(IS_DIRECTORY "${IGC_DIR}/include/visa")
|
||||
set(VISA_DIR "${IGC_DIR}/include/visa")
|
||||
elseif(IS_DIRECTORY "${NEO__IGC_INCLUDEDIR}/../visa")
|
||||
get_filename_component(VISA_DIR "${NEO__IGC_INCLUDEDIR}/../visa" ABSOLUTE)
|
||||
elseif(IS_DIRECTORY "${IGC_OCL_ADAPTOR_DIR}/../../visa")
|
||||
get_filename_component(VISA_DIR "${IGC_OCL_ADAPTOR_DIR}/../../visa" ABSOLUTE)
|
||||
endif()
|
||||
message(STATUS "VISA Dir: ${VISA_DIR}")
|
||||
|
||||
if(IS_DIRECTORY "${IGC_OCL_ADAPTOR_DIR}/../common")
|
||||
get_filename_component(IGC_COMMON_PARENT_DIR "${IGC_OCL_ADAPTOR_DIR}/../" ABSOLUTE)
|
||||
endif()
|
||||
|
||||
if(IS_DIRECTORY "${VISA_DIR}/include")
|
||||
set(VISA_INCLUDE_DIR "${VISA_DIR}/include")
|
||||
else()
|
||||
set(VISA_INCLUDE_DIR "${VISA_DIR}")
|
||||
endif()
|
||||
|
||||
# IGA headers - always relative to VISA
|
||||
if(IS_DIRECTORY "${VISA_DIR}/../iga")
|
||||
get_filename_component(IGA_DIR "${VISA_DIR}/../iga" ABSOLUTE)
|
||||
elseif(IS_DIRECTORY "${VISA_DIR}/iga")
|
||||
set(IGA_DIR "${VISA_DIR}/iga")
|
||||
endif()
|
||||
|
||||
if(IS_DIRECTORY "${IGA_DIR}/IGALibrary/api")
|
||||
set(IGA_INCLUDE_DIR "${IGA_DIR}/IGALibrary/api")
|
||||
else()
|
||||
set(IGA_INCLUDE_DIR "${IGA_DIR}")
|
||||
endif()
|
||||
|
||||
if(IS_DIRECTORY ${IGA_INCLUDE_DIR})
|
||||
set(IGA_HEADERS_AVAILABLE TRUE)
|
||||
set(IGA_LIBRARY_NAME "iga${NEO_BITS}")
|
||||
else()
|
||||
set(IGA_HEADERS_AVAILABLE FALSE)
|
||||
endif()
|
||||
|
||||
message(STATUS "IGA Includes dir: ${IGA_INCLUDE_DIR}")
|
||||
|
||||
if(WIN32)
|
||||
set(IGC_LIBRARY_NAME "igc${NEO_BITS}")
|
||||
set(FCL_LIBRARY_NAME "igdfcl${NEO_BITS}")
|
||||
endif()
|
||||
|
||||
if(WIN32 AND NOT NEO__IGC_FOUND)
|
||||
configure_file(igc.opencl.h.in ${NEO_BUILD_DIR}/igc.opencl.h)
|
||||
endif()
|
||||
79
cmake/find_wdk.cmake
Normal file
79
cmake/find_wdk.cmake
Normal file
@@ -0,0 +1,79 @@
|
||||
#
|
||||
# Copyright (C) 2021 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
if(WIN32)
|
||||
# get WDK location and version to use
|
||||
if(NOT WDK_DIR)
|
||||
if(IS_DIRECTORY "${NEO_SOURCE_DIR}/../wdk")
|
||||
get_filename_component(WDK_DIR "../wdk" ABSOLUTE)
|
||||
endif()
|
||||
endif()
|
||||
if(WDK_DIR)
|
||||
if(IS_DIRECTORY "${WDK_DIR}/Win15")
|
||||
get_filename_component(WDK_DIR "${WDK_DIR}/Win15" ABSOLUTE)
|
||||
endif()
|
||||
endif()
|
||||
message(STATUS "WDK Directory: ${WDK_DIR}")
|
||||
|
||||
if(NOT WDK_VERSION)
|
||||
if(WDK_DIR)
|
||||
# Get WDK version from ${WDK_DIR}/WDKVersion.txt
|
||||
file(READ "${WDK_DIR}/WDKVersion.txt" WindowsTargetPlatformVersion)
|
||||
string(REPLACE " " ";" WindowsTargetPlatformVersion ${WindowsTargetPlatformVersion})
|
||||
list(LENGTH WindowsTargetPlatformVersion versionListLength)
|
||||
if(NOT versionListLength EQUAL 3)
|
||||
if(WIN32)
|
||||
message(ERROR "Error reading content of WDKVersion.txt file")
|
||||
endif()
|
||||
else()
|
||||
list(GET WindowsTargetPlatformVersion 2 WindowsTargetPlatformVersion)
|
||||
endif()
|
||||
else()
|
||||
if(WIN32)
|
||||
message(ERROR "WDK not available")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
set(WindowsTargetPlatformVersion ${WDK_VERSION})
|
||||
endif()
|
||||
message(STATUS "WDK Version is ${WindowsTargetPlatformVersion}")
|
||||
endif()
|
||||
|
||||
if(NOT DISABLE_WDDM_LINUX)
|
||||
get_filename_component(LIBDXG_PATH "${NEO_SOURCE_DIR}/third_party/libdxg" ABSOLUTE)
|
||||
set(D3DKMTHK_INCLUDE_PATHS "${LIBDXG_PATH}/include/")
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
if(${WindowsTargetPlatformVersion} VERSION_LESS "10.0.18328.0")
|
||||
set(CONST_FROM_WDK_10_0_18328_0)
|
||||
else()
|
||||
set(CONST_FROM_WDK_10_0_18328_0 "CONST")
|
||||
endif()
|
||||
add_compile_options(-DCONST_FROM_WDK_10_0_18328_0=${CONST_FROM_WDK_10_0_18328_0})
|
||||
set(WDK_INCLUDE_PATHS "")
|
||||
list(APPEND WDK_INCLUDE_PATHS
|
||||
"${WDK_DIR}/Include/${WindowsTargetPlatformVersion}/um"
|
||||
"${WDK_DIR}/Include/${WindowsTargetPlatformVersion}/shared"
|
||||
"${WDK_DIR}/Include/${WindowsTargetPlatformVersion}/km"
|
||||
)
|
||||
message(STATUS "WDK include paths: ${WDK_INCLUDE_PATHS}")
|
||||
elseif(NOT DISABLE_WDDM_LINUX)
|
||||
add_compile_options(-DCONST_FROM_WDK_10_0_18328_0=CONST)
|
||||
add_compile_options(-DWDDM_LINUX=1)
|
||||
set(WDK_INCLUDE_PATHS "")
|
||||
get_filename_component(DX_HEADERS_PATH "${NEO_SOURCE_DIR}/third_party/DirectX-Headers" ABSOLUTE)
|
||||
list(APPEND WDK_INCLUDE_PATHS ${DX_HEADERS_PATH}/include/wsl)
|
||||
list(APPEND WDK_INCLUDE_PATHS ${DX_HEADERS_PATH}/include/wsl/stubs)
|
||||
list(APPEND WDK_INCLUDE_PATHS ${DX_HEADERS_PATH}/include/directx)
|
||||
list(APPEND WDK_INCLUDE_PATHS ${DX_HEADERS_PATH}/include/dxguids)
|
||||
list(APPEND WDK_INCLUDE_PATHS ${D3DKMTHK_INCLUDE_PATHS})
|
||||
message(STATUS "WDK include paths: ${WDK_INCLUDE_PATHS}")
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
link_directories("${WDK_DIR}/Lib/${WindowsTargetPlatformVersion}/um/${NEO_ARCH}/")
|
||||
endif()
|
||||
Reference in New Issue
Block a user