diff --git a/CMakeLists.txt b/CMakeLists.txt index e153d47aee..2ad37b919a 100644 --- a/CMakeLists.txt +++ b/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 $) - list(APPEND NEO__IGC_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 $) - list(APPEND NEO__IGC_LIBRARY_PATH $) - 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 $) - set(NEO__GMM_LIBRARY_PATH $) - set(NEO__GMM_INCLUDE_DIR $) -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 $) - set(NEO__GMM_LIBRARY_PATH $) - set(GMM_LINK_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 $ $ - ) - 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) diff --git a/common_macros.cmake b/cmake/common_macros.cmake similarity index 98% rename from common_macros.cmake rename to cmake/common_macros.cmake index 71fc12c65a..0b8e4d2e86 100644 --- a/common_macros.cmake +++ b/cmake/common_macros.cmake @@ -1,5 +1,5 @@ # -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # # SPDX-License-Identifier: MIT # diff --git a/cmake/find_gmmlib.cmake b/cmake/find_gmmlib.cmake new file mode 100644 index 0000000000..ea1d35f9ad --- /dev/null +++ b/cmake/find_gmmlib.cmake @@ -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 $) + set(NEO__GMM_LIBRARY_PATH $) + set(NEO__GMM_INCLUDE_DIR $) +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 $) + set(NEO__GMM_LIBRARY_PATH $) + set(GMM_LINK_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 $ $ + ) + endif() +endmacro() + +link_directories(${NEO__GMM_LIBRARY_PATH}) + +add_definitions(-DGMM_OCL) diff --git a/cmake/find_igc.cmake b/cmake/find_igc.cmake new file mode 100644 index 0000000000..34ee83b022 --- /dev/null +++ b/cmake/find_igc.cmake @@ -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 $) + list(APPEND NEO__IGC_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 $) + list(APPEND NEO__IGC_LIBRARY_PATH $) + 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() diff --git a/cmake/find_wdk.cmake b/cmake/find_wdk.cmake new file mode 100644 index 0000000000..70692516b5 --- /dev/null +++ b/cmake/find_wdk.cmake @@ -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()