cmake refactor

Signed-off-by: Artur Harasimiuk <artur.harasimiuk@intel.com>
This commit is contained in:
Artur Harasimiuk
2021-09-17 12:50:27 +02:00
committed by Compute-Runtime-Automation
parent 0a380f479a
commit 394f9053a5
5 changed files with 309 additions and 281 deletions

View File

@@ -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)

View File

@@ -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
View 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
View 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
View 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()