2017-12-21 07:45:38 +08:00
|
|
|
#
|
2019-12-31 21:32:52 +08:00
|
|
|
# Copyright (C) 2017-2020 Intel Corporation
|
2017-12-21 07:45:38 +08:00
|
|
|
#
|
2018-09-13 22:26:01 +08:00
|
|
|
# SPDX-License-Identifier: MIT
|
2017-12-21 07:45:38 +08:00
|
|
|
#
|
|
|
|
|
2020-01-09 23:14:59 +08:00
|
|
|
if(WIN32)
|
|
|
|
cmake_minimum_required(VERSION 3.13.0 FATAL_ERROR)
|
|
|
|
else()
|
|
|
|
cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR)
|
|
|
|
endif()
|
2020-02-22 16:28:27 +08:00
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
include(ExternalProject)
|
2019-06-09 02:43:00 +08:00
|
|
|
|
|
|
|
# Include custom configs
|
|
|
|
file(GLOB custom_configs *custom_config.cmake)
|
|
|
|
foreach(config ${custom_configs})
|
|
|
|
include(${config})
|
|
|
|
endforeach()
|
|
|
|
|
2018-02-27 21:47:36 +08:00
|
|
|
# Include needed macros
|
|
|
|
include(common_macros.cmake)
|
2017-12-15 18:15:32 +08:00
|
|
|
|
2019-07-29 20:02:43 +08:00
|
|
|
if(MSVC)
|
|
|
|
set(CMAKE_GENERATOR_TOOLSET "host=x64")
|
|
|
|
endif()
|
|
|
|
|
2019-06-10 05:32:22 +08:00
|
|
|
if(NOT PROJECT_NAME)
|
|
|
|
set(PROJECT_NAME igdrcl)
|
|
|
|
endif()
|
|
|
|
|
2019-10-22 20:41:31 +08:00
|
|
|
|
2019-06-10 05:32:22 +08:00
|
|
|
project(${PROJECT_NAME})
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2018-03-22 17:17:00 +08:00
|
|
|
if(CMAKE_CONFIGURATION_TYPES)
|
|
|
|
# Set custom build types for multi-configuration generators
|
2019-01-18 23:04:40 +08:00
|
|
|
set(CMAKE_CONFIGURATION_TYPES "Release;ReleaseInternal;Debug")
|
|
|
|
if(DEFINED CMAKE_BUILD_TYPE)
|
|
|
|
list(APPEND CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE})
|
|
|
|
endif()
|
|
|
|
list(REMOVE_DUPLICATES CMAKE_CONFIGURATION_TYPES)
|
2018-03-22 17:17:00 +08:00
|
|
|
endif()
|
|
|
|
|
2019-05-16 00:06:16 +08:00
|
|
|
include(GNUInstallDirs)
|
|
|
|
|
|
|
|
# define global property where we will collect component list to package
|
2020-03-19 01:43:17 +08:00
|
|
|
define_property(GLOBAL PROPERTY NEO_OCL_COMPONENTS_LIST BRIEF_DOCS "List of components" FULL_DOCS "List of components to create packages")
|
|
|
|
set(GLOBAL PROPERTY NEO_OCL_COMPONENTS_LIST "")
|
|
|
|
define_property(GLOBAL PROPERTY NEO_L0_COMPONENTS_LIST BRIEF_DOCS "List of components" FULL_DOCS "List of components to create packages")
|
|
|
|
set(GLOBAL PROPERTY NEO_L0_COMPONENTS_LIST "")
|
2019-05-16 00:06:16 +08:00
|
|
|
|
2020-06-18 16:58:36 +08:00
|
|
|
file(READ ".branch" BRANCH_TYPE)
|
|
|
|
string(STRIP "${BRANCH_TYPE}" BRANCH_TYPE)
|
2018-11-17 11:33:02 +08:00
|
|
|
set(BRANCH_DIR_SUFFIX "/${BRANCH_TYPE}")
|
2020-06-17 17:14:00 +08:00
|
|
|
list(APPEND BRANCH_DIR_LIST "/")
|
|
|
|
if(NOT "${BRANCH_TYPE}" STREQUAL "")
|
|
|
|
list(APPEND BRANCH_DIR_LIST "/${BRANCH_TYPE}/")
|
|
|
|
endif()
|
|
|
|
message(STATUS "branch dir list: ${BRANCH_DIR_LIST}")
|
2018-03-12 22:06:33 +08:00
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
if(TR_DEPRECATED)
|
|
|
|
add_definitions(-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING=1)
|
|
|
|
endif(TR_DEPRECATED)
|
|
|
|
|
2020-04-28 23:01:23 +08:00
|
|
|
add_definitions(-DIGC_CLEANUP)
|
|
|
|
|
2018-06-05 22:38:01 +08:00
|
|
|
if(RELEASE_WITH_REGKEYS)
|
2020-03-20 21:30:03 +08:00
|
|
|
message(STATUS "Enabling RegKey reading in release build")
|
2018-06-05 22:38:01 +08:00
|
|
|
add_definitions(-D_RELEASE_BUILD_WITH_REGKEYS)
|
|
|
|
endif(RELEASE_WITH_REGKEYS)
|
|
|
|
|
2019-10-22 20:41:31 +08:00
|
|
|
if(DEFINED NEO_EXTRA_DEFINES)
|
|
|
|
string(REPLACE "," ";" NEO_EXTRA_DEFINES "${NEO_EXTRA_DEFINES}")
|
|
|
|
foreach(_tmp ${NEO_EXTRA_DEFINES})
|
|
|
|
message(STATUS "adding extra define: ${_tmp}")
|
|
|
|
add_definitions(-D${_tmp})
|
|
|
|
endforeach()
|
|
|
|
endif()
|
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
2019-05-15 17:49:49 +08:00
|
|
|
message(STATUS "CMAKE_BUILD_TYPE not specified, using Release")
|
|
|
|
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type: [Release, ReleaseInternal, Debug]" FORCE)
|
2017-12-21 07:45:38 +08:00
|
|
|
endif()
|
|
|
|
|
2020-06-03 22:43:19 +08:00
|
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
|
|
set(NEO_BITS "64")
|
|
|
|
set(NEO_ARCH "x64")
|
|
|
|
else()
|
|
|
|
set(NEO_BITS "32")
|
|
|
|
set(NEO_ARCH "x86")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(NOT DEFINED BUILD_WITH_L0)
|
|
|
|
if("${NEO_BITS}" STREQUAL "64")
|
|
|
|
set(BUILD_WITH_L0 TRUE)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2020-06-04 02:39:59 +08:00
|
|
|
if(NOT "${NEO_BITS}" STREQUAL "64")
|
|
|
|
set(BUILD_WITH_L0 FALSE)
|
|
|
|
endif()
|
|
|
|
|
2020-05-07 00:33:15 +08:00
|
|
|
add_definitions(
|
|
|
|
-DCL_USE_DEPRECATED_OPENCL_1_1_APIS
|
|
|
|
-DCL_USE_DEPRECATED_OPENCL_1_2_APIS
|
|
|
|
-DCL_USE_DEPRECATED_OPENCL_2_0_APIS
|
|
|
|
-DCL_USE_DEPRECATED_OPENCL_2_1_APIS
|
|
|
|
-DCL_USE_DEPRECATED_OPENCL_2_2_APIS
|
|
|
|
)
|
2018-04-25 22:07:42 +08:00
|
|
|
|
|
|
|
if(WIN32)
|
2019-02-15 22:33:40 +08:00
|
|
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS -DWDDM_VERSION_NUMBER=23 -DNOMINMAX)
|
2018-04-25 22:07:42 +08:00
|
|
|
endif()
|
|
|
|
|
2018-11-15 21:50:18 +08:00
|
|
|
set(CMAKE_C_FLAGS_RELEASEINTERNAL "${CMAKE_C_FLAGS_RELEASE}")
|
|
|
|
set(CMAKE_CXX_FLAGS_RELEASEINTERNAL "${CMAKE_CXX_FLAGS_RELEASE}")
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASEINTERNAL "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASEINTERNAL "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
|
2019-01-25 17:20:43 +08:00
|
|
|
if(MSVC AND ENABLE_VS_FASTLINK)
|
|
|
|
string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " /debug:FASTLINK")
|
|
|
|
string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG " /debug:FASTLINK")
|
|
|
|
string(APPEND CMAKE_STATIC_LINKER_FLAGS_DEBUG " /debug:FASTLINK")
|
|
|
|
string(APPEND CMAKE_MODULE_LINKER_FLAGS_DEBUG " /debug:FASTLINK")
|
|
|
|
endif()
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
string(TOLOWER "${CMAKE_BUILD_TYPE}" BUILD_TYPE_lower)
|
2018-01-22 15:53:39 +08:00
|
|
|
if("${BUILD_TYPE_lower}" STREQUAL "releaseinternal")
|
2019-05-15 17:49:49 +08:00
|
|
|
add_definitions(-D_RELEASE_INTERNAL)
|
2018-01-22 15:53:39 +08:00
|
|
|
endif("${BUILD_TYPE_lower}" STREQUAL "releaseinternal")
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
message(STATUS "${CMAKE_BUILD_TYPE} build configuration")
|
|
|
|
|
|
|
|
# Set the runtime source directory
|
2019-10-10 23:41:59 +08:00
|
|
|
if(NOT DEFINED NEO_SOURCE_DIR)
|
|
|
|
set(NEO_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
2017-12-21 07:45:38 +08:00
|
|
|
endif()
|
|
|
|
|
2020-02-23 04:54:11 +08:00
|
|
|
set(NEO_RUNTIME_SUB_DIR "opencl/source")
|
2020-02-22 16:28:27 +08:00
|
|
|
set(NEO_RUNTIME_SOURCE_DIR "${NEO_SOURCE_DIR}/${NEO_RUNTIME_SUB_DIR}")
|
|
|
|
|
2020-02-23 16:03:33 +08:00
|
|
|
set(NEO_RUNTIME_TESTS_SUB_DIR "opencl/test/unit_test")
|
2020-02-23 05:50:57 +08:00
|
|
|
set(NEO_RUNTIME_TESTS_DIR "${NEO_SOURCE_DIR}/${NEO_RUNTIME_TESTS_SUB_DIR}")
|
2020-04-19 01:10:44 +08:00
|
|
|
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}")
|
2020-02-23 05:50:57 +08:00
|
|
|
|
2020-02-27 23:17:08 +08:00
|
|
|
# Set the ocloc directory
|
|
|
|
if(NOT DEFINED OCLOC_DIRECTORY)
|
|
|
|
set(OCLOC_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/shared/offline_compiler)
|
|
|
|
endif()
|
|
|
|
|
2020-03-11 21:03:26 +08:00
|
|
|
# Set the shared source directory
|
|
|
|
if(NOT DEFINED NEO_SHARED_DIRECTORY)
|
|
|
|
set(NEO_SHARED_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/shared/source)
|
2019-07-12 20:53:34 +08:00
|
|
|
endif()
|
|
|
|
|
2020-03-11 21:03:26 +08:00
|
|
|
# Set the shared test directory
|
|
|
|
if(NOT DEFINED NEO_SHARED_TEST_DIRECTORY)
|
|
|
|
set(NEO_SHARED_TEST_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/shared/test)
|
2020-02-24 07:22:25 +08:00
|
|
|
endif()
|
|
|
|
|
2019-12-31 21:32:52 +08:00
|
|
|
if(SKIP_UNIT_TESTS)
|
|
|
|
set(SKIP_NEO_UNIT_TESTS TRUE)
|
2019-06-06 18:31:39 +08:00
|
|
|
endif()
|
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
# Set our build directory
|
2019-10-14 18:55:52 +08:00
|
|
|
if(NOT DEFINED NEO_BUILD_DIR)
|
|
|
|
set(NEO_BUILD_DIR ${CMAKE_BINARY_DIR})
|
2017-12-21 07:45:38 +08:00
|
|
|
endif()
|
|
|
|
|
2019-10-14 18:55:52 +08:00
|
|
|
if(NOT NEO_BINARY_DIR)
|
|
|
|
set(NEO_BINARY_DIR ${CMAKE_BINARY_DIR})
|
2017-12-21 07:45:38 +08:00
|
|
|
endif()
|
|
|
|
|
2018-07-09 19:32:11 +08:00
|
|
|
# we use c++14
|
|
|
|
set(CMAKE_CXX_STANDARD 14)
|
2017-12-21 07:45:38 +08:00
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
|
2018-03-01 17:14:12 +08:00
|
|
|
# we force using response files
|
|
|
|
set(CMAKE_NINJA_FORCE_RESPONSE_FILE 1)
|
|
|
|
|
2018-03-15 06:03:58 +08:00
|
|
|
# set output paths
|
2019-10-14 18:55:52 +08:00
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${NEO_BINARY_DIR}/bin)
|
|
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${NEO_BINARY_DIR}/bin)
|
|
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${NEO_BINARY_DIR}/lib)
|
2018-03-15 06:03:58 +08:00
|
|
|
|
2020-03-07 06:09:52 +08:00
|
|
|
# determine Neo version
|
|
|
|
include(version.cmake)
|
|
|
|
|
2017-12-15 18:15:32 +08:00
|
|
|
# We want to build with the static, multithreaded runtime libraries (as opposed
|
|
|
|
# to the multithreaded runtime DLLs)
|
|
|
|
if(MSVC)
|
2019-05-15 17:49:49 +08:00
|
|
|
string(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
|
|
|
string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
|
|
|
string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASEINTERNAL "${CMAKE_CXX_FLAGS_RELEASEINTERNAL}")
|
2017-12-15 18:15:32 +08:00
|
|
|
endif(MSVC)
|
|
|
|
|
2020-03-25 19:31:47 +08:00
|
|
|
if(NOT SKIP_UNIT_TESTS)
|
|
|
|
if(NOT DEFINED GTEST_REPEAT)
|
|
|
|
set(GTEST_REPEAT 1)
|
|
|
|
endif()
|
|
|
|
message(STATUS "GTest repeat count set to ${GTEST_REPEAT}")
|
|
|
|
|
|
|
|
if(NOT DEFINED GTEST_SHUFFLE)
|
|
|
|
set(GTEST_SHUFFLE --gtest_shuffle --gtest_random_seed=0)
|
|
|
|
endif()
|
|
|
|
message(STATUS "GTest shuffle set to ${GTEST_SHUFFLE}")
|
|
|
|
endif()
|
|
|
|
|
2018-01-31 18:22:13 +08:00
|
|
|
if(NOT KMDAF_HEADERS_DIR)
|
2018-02-07 18:02:18 +08:00
|
|
|
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../kmdaf/inc/common/kmDaf.h")
|
|
|
|
get_filename_component(KMDAF_HEADERS_DIR "../kmdaf/inc/common/" ABSOLUTE)
|
2018-01-31 18:22:13 +08:00
|
|
|
message(STATUS "KM-DAF headers dir: ${KMDAF_HEADERS_DIR}")
|
|
|
|
endif()
|
|
|
|
endif(NOT KMDAF_HEADERS_DIR)
|
|
|
|
|
2018-11-15 01:21:54 +08:00
|
|
|
if(NOT DEFINED SOURCE_LEVEL_DEBUGGER_HEADERS_DIR)
|
|
|
|
get_filename_component(SOURCE_LEVEL_DEBUGGER_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/source_level_debugger/" ABSOLUTE)
|
|
|
|
message(STATUS "Source Level Debugger headers dir: ${SOURCE_LEVEL_DEBUGGER_HEADERS_DIR}")
|
|
|
|
endif()
|
2018-04-20 20:44:14 +08:00
|
|
|
|
2020-01-29 00:42:32 +08:00
|
|
|
get_filename_component(AUB_STREAM_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party${BRANCH_DIR_SUFFIX}/aub_stream/headers" ABSOLUTE)
|
2018-10-31 01:29:32 +08:00
|
|
|
if(IS_DIRECTORY ${AUB_STREAM_HEADERS_DIR})
|
|
|
|
message(STATUS "Aub Stream Headers dir: ${AUB_STREAM_HEADERS_DIR}")
|
|
|
|
else()
|
|
|
|
message(FATAL_ERROR "Aub Stream headers not available!")
|
|
|
|
endif()
|
|
|
|
|
2019-02-14 19:41:50 +08:00
|
|
|
if(NOT DEFINED AUB_STREAM_DIR)
|
2018-11-11 05:25:48 +08:00
|
|
|
get_filename_component(TEMP_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../aub_stream/aub_mem_dump" ABSOLUTE)
|
2018-10-31 01:29:32 +08:00
|
|
|
if(IS_DIRECTORY ${TEMP_DIR})
|
2019-01-19 04:44:23 +08:00
|
|
|
set(AUB_STREAM_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../aub_stream")
|
2018-10-31 01:29:32 +08:00
|
|
|
message(STATUS "Aub Stream dir: ${AUB_STREAM_DIR}")
|
|
|
|
endif()
|
2019-02-14 19:41:50 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if(DISABLE_AUB_STREAM)
|
2019-02-07 16:57:11 +08:00
|
|
|
unset(AUB_STREAM_DIR)
|
2019-02-07 22:09:27 +08:00
|
|
|
endif()
|
2018-10-31 01:29:32 +08:00
|
|
|
|
2020-03-13 22:38:23 +08:00
|
|
|
# Metrics Library
|
|
|
|
get_filename_component(METRICS_LIBRARY_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party${BRANCH_DIR_SUFFIX}/metrics_library" ABSOLUTE)
|
|
|
|
if(IS_DIRECTORY ${METRICS_LIBRARY_HEADERS_DIR})
|
|
|
|
message(STATUS "Metrics Library dir: ${METRICS_LIBRARY_HEADERS_DIR}")
|
|
|
|
include_directories(${NEO_SOURCE_DIR}/third_party${BRANCH_DIR_SUFFIX}/metrics_library)
|
|
|
|
else()
|
|
|
|
message(FATAL_ERROR "Metrics Library headers not available!")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Metrics Discovery
|
|
|
|
get_filename_component(METRICS_DISCOVERY_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party${BRANCH_DIR_SUFFIX}/metrics_discovery" ABSOLUTE)
|
|
|
|
if(IS_DIRECTORY ${METRICS_DISCOVERY_HEADERS_DIR})
|
|
|
|
message(STATUS "Metrics Discovery dir: ${METRICS_DISCOVERY_HEADERS_DIR}")
|
|
|
|
include_directories(${NEO_SOURCE_DIR}/third_party${BRANCH_DIR_SUFFIX}/metrics_discovery)
|
|
|
|
else()
|
|
|
|
message(FATAL_ERROR "Metrics Discovery headers not available!")
|
|
|
|
endif()
|
|
|
|
|
2020-06-22 20:34:44 +08:00
|
|
|
if(SUPPORT_DG1 AND "${BRANCH_TYPE}" STREQUAL "")
|
|
|
|
get_filename_component(I915_INCLUDES_DIR "${NEO_SOURCE_DIR}/third_party/uapi/dg1" ABSOLUTE)
|
|
|
|
else()
|
|
|
|
get_filename_component(I915_INCLUDES_DIR "${NEO_SOURCE_DIR}/third_party${BRANCH_DIR_SUFFIX}/uapi" ABSOLUTE)
|
|
|
|
endif()
|
2018-03-12 22:06:33 +08:00
|
|
|
message(STATUS "i915 includes dir: ${I915_INCLUDES_DIR}")
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2018-05-17 15:34:27 +08:00
|
|
|
if(NOT DEFINED KHRONOS_HEADERS_DIR)
|
2018-06-16 00:59:30 +08:00
|
|
|
get_filename_component(DIR_tmp "${CMAKE_CURRENT_SOURCE_DIR}/third_party/opencl_headers" ABSOLUTE)
|
2018-05-17 15:34:27 +08:00
|
|
|
if(IS_DIRECTORY ${DIR_tmp})
|
|
|
|
set(KHRONOS_HEADERS_DIR ${DIR_tmp})
|
2020-05-07 00:33:15 +08:00
|
|
|
add_definitions(-DCL_TARGET_OPENCL_VERSION=300)
|
2018-05-17 15:34:27 +08:00
|
|
|
else()
|
2018-06-16 00:59:30 +08:00
|
|
|
message(FATAL_ERROR "Khronos OpenCL headers not available!")
|
2018-05-17 15:34:27 +08:00
|
|
|
endif()
|
|
|
|
endif()
|
2017-12-21 07:45:38 +08:00
|
|
|
message(STATUS "Khronos OpenCL headers dir: ${KHRONOS_HEADERS_DIR}")
|
|
|
|
set(OCL_HEADERS_DIR ${KHRONOS_HEADERS_DIR})
|
|
|
|
|
2018-08-27 22:30:40 +08:00
|
|
|
if(NOT DEFINED KHRONOS_GL_HEADERS_DIR)
|
|
|
|
get_filename_component(GL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/opengl_headers" ABSOLUTE)
|
|
|
|
if(IS_DIRECTORY ${GL_DIR})
|
|
|
|
set(KHRONOS_GL_HEADERS_DIR ${GL_DIR})
|
|
|
|
add_definitions(-DGL_TARGET_OPENGL_VERSION=210)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
message(STATUS "Khronos OpenGL headers dir: ${KHRONOS_GL_HEADERS_DIR}")
|
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
if(NOT THIRD_PARTY_DIR)
|
2019-05-15 17:49:49 +08:00
|
|
|
get_filename_component(THIRD_PARTY_DIR "../third_party/" ABSOLUTE)
|
2017-12-21 07:45:38 +08:00
|
|
|
endif(NOT THIRD_PARTY_DIR)
|
|
|
|
message(STATUS "Third party dir: ${THIRD_PARTY_DIR}")
|
|
|
|
|
2018-02-28 15:48:36 +08:00
|
|
|
if(WIN32)
|
|
|
|
# get WDK location and version to use
|
2019-05-15 17:49:49 +08:00
|
|
|
if(NOT WDK_DIR)
|
|
|
|
if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../wdk")
|
|
|
|
get_filename_component(WDK_DIR "../wdk" ABSOLUTE)
|
|
|
|
endif()
|
|
|
|
endif(NOT WDK_DIR)
|
|
|
|
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)
|
|
|
|
# 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)
|
|
|
|
message(ERROR "Error reading content of WDKVersion.txt file")
|
|
|
|
endif(NOT versionListLength EQUAL 3)
|
|
|
|
list(GET WindowsTargetPlatformVersion 2 WindowsTargetPlatformVersion)
|
|
|
|
else()
|
|
|
|
set(WindowsTargetPlatformVersion ${WDK_VERSION})
|
|
|
|
endif()
|
|
|
|
message(STATUS "WDK Version is ${WindowsTargetPlatformVersion}")
|
2018-02-28 15:48:36 +08:00
|
|
|
|
2019-05-15 17:49:49 +08:00
|
|
|
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})
|
2019-02-08 01:08:35 +08:00
|
|
|
|
2019-05-15 17:49:49 +08:00
|
|
|
set(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}")
|
2018-02-28 15:48:36 +08:00
|
|
|
endif()
|
|
|
|
|
2018-02-24 05:41:16 +08:00
|
|
|
# Intel Graphics Compiler detection
|
2018-02-24 05:56:30 +08:00
|
|
|
if(NOT IGC__IGC_TARGETS)
|
2018-06-19 05:51:12 +08:00
|
|
|
# check whether igc is part of workspace
|
|
|
|
if(DEFINED IGC_DIR)
|
2018-02-24 05:56:30 +08:00
|
|
|
get_filename_component(IGC_DIR "${IGC_DIR}" ABSOLUTE)
|
2018-06-19 05:51:12 +08:00
|
|
|
else()
|
2019-10-10 23:41:59 +08:00
|
|
|
get_filename_component(IGC_DIR_tmp "${NEO_SOURCE_DIR}/../igc" ABSOLUTE)
|
2018-02-24 05:56:30 +08:00
|
|
|
if(IS_DIRECTORY "${IGC_DIR_tmp}")
|
|
|
|
set(IGC_DIR "${IGC_DIR_tmp}")
|
|
|
|
endif()
|
|
|
|
endif()
|
2018-06-19 05:51:12 +08:00
|
|
|
|
|
|
|
if(UNIX)
|
|
|
|
# on Unix-like use pkg-config
|
|
|
|
find_package(PkgConfig)
|
2019-11-14 18:18:25 +08:00
|
|
|
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)
|
2018-10-09 18:57:43 +08:00
|
|
|
set(OLD_PKG_CONFIG_PATH $ENV{PKG_CONFIG_PATH})
|
2019-11-14 18:18:25 +08:00
|
|
|
set(ENV{PKG_CONFIG_PATH} "${IGC_DIR}/${__tmp_LIBDIR}/pkgconfig")
|
2018-06-19 05:51:12 +08:00
|
|
|
endif()
|
2020-01-14 21:38:19 +08:00
|
|
|
pkg_check_modules(NEO__IGC igc-opencl)
|
2019-11-14 18:18:25 +08:00
|
|
|
if(DEFINED __tmp_LIBDIR)
|
2018-10-09 18:57:43 +08:00
|
|
|
set(ENV{PKG_CONFIG_PATH} ${OLD_PKG_CONFIG_PATH})
|
2020-01-14 21:38:19 +08:00
|
|
|
set(NEO__IGC_LIBRARY_PATH "${IGC_DIR}/${__tmp_LIBDIR}/")
|
2018-06-19 05:51:12 +08:00
|
|
|
endif()
|
|
|
|
|
2020-01-14 21:38:19 +08:00
|
|
|
if(NEO__IGC_FOUND)
|
2019-11-14 18:18:25 +08:00
|
|
|
if(DEFINED IGC_DIR AND IS_DIRECTORY "${IGC_DIR}/${__tmp_LIBDIR}/pkgconfig/")
|
2020-01-14 21:38:19 +08:00
|
|
|
string(REPLACE "${NEO__IGC_INCLUDEDIR}" "${IGC_DIR}/include/igc" NEO__IGC_INCLUDE_DIRS "${NEO__IGC_INCLUDE_DIRS}")
|
2018-06-19 05:51:12 +08:00
|
|
|
endif()
|
|
|
|
|
2020-01-14 21:38:19 +08:00
|
|
|
set(NEO__IGC_INCLUDE_DIR ${NEO__IGC_INCLUDE_DIRS})
|
|
|
|
message(STATUS "IGC include dirs: ${NEO__IGC_INCLUDE_DIR}")
|
2018-06-19 05:51:12 +08:00
|
|
|
endif()
|
2019-11-14 18:18:25 +08:00
|
|
|
if(DEFINED __tmp_LIBDIR)
|
|
|
|
unset(__tmp_LIBDIR)
|
|
|
|
endif()
|
2018-02-24 05:56:30 +08:00
|
|
|
endif()
|
2018-02-24 05:41:16 +08:00
|
|
|
|
2020-01-14 21:38:19 +08:00
|
|
|
if(NEO__IGC_FOUND)
|
2018-06-19 05:51:12 +08:00
|
|
|
# do nothing
|
|
|
|
elseif(EXISTS "${IGC_DIR}/CMakeLists.txt")
|
|
|
|
message(STATUS "IGC source dir is: ${IGC_DIR}")
|
2018-02-24 05:41:16 +08:00
|
|
|
|
2019-10-14 18:55:52 +08:00
|
|
|
set(IGC_OPTION__OUTPUT_DIR "${NEO_BUILD_DIR}/igc")
|
2018-06-19 05:51:12 +08:00
|
|
|
set(IGC_OPTION__INCLUDE_IGC_COMPILER_TOOLS OFF)
|
2019-10-14 18:55:52 +08:00
|
|
|
add_subdirectory_unique("${IGC_DIR}" "${NEO_BUILD_DIR}/igc" EXCLUDE_FROM_ALL)
|
2018-06-19 05:51:12 +08:00
|
|
|
|
2020-01-14 21:38:19 +08:00
|
|
|
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>)
|
2018-06-19 05:51:12 +08:00
|
|
|
endforeach(TARGET_tmp)
|
2020-01-14 21:38:19 +08:00
|
|
|
message(STATUS "IGC targets: ${NEO__IGC_TARGETS}")
|
2018-06-19 05:51:12 +08:00
|
|
|
else()
|
|
|
|
message(FATAL_ERROR "Intel Graphics Compiler not found!")
|
|
|
|
endif()
|
2018-06-22 15:19:08 +08:00
|
|
|
else()
|
2020-01-14 21:38:19 +08:00
|
|
|
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}>)
|
2018-06-22 15:19:08 +08:00
|
|
|
endforeach(TARGET_tmp)
|
2020-01-14 21:38:19 +08:00
|
|
|
string(REPLACE ";" ":" NEO__IGC_LIBRARY_PATH "${NEO__IGC_LIBRARY_PATH}")
|
|
|
|
message(STATUS "IGC targets: ${NEO__IGC_TARGETS}")
|
2018-02-24 05:56:30 +08:00
|
|
|
endif()
|
2018-01-05 20:35:03 +08:00
|
|
|
|
2019-06-27 03:19:34 +08:00
|
|
|
# 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")
|
2020-01-14 21:38:19 +08:00
|
|
|
elseif(IS_DIRECTORY "${NEO__IGC_INCLUDEDIR}/../visa")
|
|
|
|
get_filename_component(VISA_DIR "${NEO__IGC_INCLUDEDIR}/../visa" ABSOLUTE)
|
2019-07-04 06:25:54 +08:00
|
|
|
elseif(IS_DIRECTORY "${IGC_OCL_ADAPTOR_DIR}/../../visa")
|
|
|
|
get_filename_component(VISA_DIR "${IGC_OCL_ADAPTOR_DIR}/../../visa" ABSOLUTE)
|
2019-06-27 03:19:34 +08:00
|
|
|
endif()
|
2019-07-03 16:39:40 +08:00
|
|
|
message(STATUS "VISA Dir: ${VISA_DIR}")
|
2019-06-27 03:19:34 +08:00
|
|
|
|
|
|
|
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()
|
|
|
|
|
2019-07-03 16:39:40 +08:00
|
|
|
message(STATUS "IGA Includes dir: ${IGA_INCLUDE_DIR}")
|
2019-06-27 03:19:34 +08:00
|
|
|
|
2018-06-11 22:15:11 +08:00
|
|
|
if(WIN32)
|
|
|
|
set(IGC_LIBRARY_NAME "igc${NEO_BITS}")
|
|
|
|
set(FCL_LIBRARY_NAME "igdfcl${NEO_BITS}")
|
|
|
|
endif()
|
|
|
|
|
2018-03-22 17:17:00 +08:00
|
|
|
# GmmLib detection
|
2020-01-09 23:14:59 +08:00
|
|
|
if(TARGET igfx_gmmumd_dll)
|
|
|
|
set(GMM_TARGET_NAME "igfx_gmmumd_dll")
|
|
|
|
set(GMM_LINK_NAME $<TARGET_PROPERTY:${GMM_TARGET_NAME},OUTPUT_NAME>)
|
2020-01-14 21:38:19 +08:00
|
|
|
set(NEO__GMM_LIBRARY_PATH $<TARGET_FILE_DIR:${GMM_TARGET_NAME}>)
|
|
|
|
set(NEO__GMM_INCLUDE_DIR $<TARGET_PROPERTY:${GMM_TARGET_NAME},INTERFACE_INCLUDE_DIRECTORIES>)
|
2020-01-09 23:14:59 +08:00
|
|
|
else()
|
|
|
|
if(DEFINED GMM_DIR)
|
|
|
|
get_filename_component(GMM_DIR "${GMM_DIR}" ABSOLUTE)
|
2018-06-21 15:55:20 +08:00
|
|
|
else()
|
2020-01-09 23:14:59 +08:00
|
|
|
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)
|
2019-11-14 18:18:25 +08:00
|
|
|
if(DEFINED GMM_DIR)
|
2020-01-09 23:14:59 +08:00
|
|
|
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})
|
2018-06-21 15:55:20 +08:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2020-01-09 23:14:59 +08:00
|
|
|
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()
|
2020-01-14 21:38:19 +08:00
|
|
|
pkg_check_modules(NEO__GMM igdgmm)
|
2020-01-09 23:14:59 +08:00
|
|
|
if(DEFINED __tmp_LIBDIR)
|
|
|
|
set(ENV{PKG_CONFIG_PATH} ${OLD_PKG_CONFIG_PATH})
|
|
|
|
endif()
|
2019-11-14 18:18:25 +08:00
|
|
|
|
2020-01-14 21:38:19 +08:00
|
|
|
if(NEO__GMM_FOUND)
|
2019-11-14 18:18:25 +08:00
|
|
|
if(DEFINED __tmp_LIBDIR)
|
2020-01-14 21:38:19 +08:00
|
|
|
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}")
|
2018-06-21 15:55:20 +08:00
|
|
|
endif()
|
|
|
|
|
2020-01-09 23:14:59 +08:00
|
|
|
set(GMM_TARGET_NAME "igfx_gmmumd_dll")
|
2020-01-14 21:38:19 +08:00
|
|
|
set(GMM_LINK_NAME ${NEO__GMM_LIBRARIES})
|
2018-03-22 17:17:00 +08:00
|
|
|
|
2020-01-14 21:38:19 +08:00
|
|
|
set(NEO__GMM_INCLUDE_DIR ${NEO__GMM_INCLUDE_DIRS})
|
|
|
|
message(STATUS "GmmLib include dirs: ${NEO__GMM_INCLUDE_DIR}")
|
2018-11-05 23:10:05 +08:00
|
|
|
else()
|
2020-01-09 23:14:59 +08:00
|
|
|
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")
|
2018-06-21 15:55:20 +08:00
|
|
|
|
2020-01-09 23:14:59 +08:00
|
|
|
if(NOT DEFINED GMM_TARGET_NAME)
|
|
|
|
set(GMM_TARGET_NAME "igfx_gmmumd_dll")
|
2018-10-30 14:11:39 +08:00
|
|
|
endif()
|
2020-01-09 23:14:59 +08:00
|
|
|
|
2020-01-14 21:38:19 +08:00
|
|
|
set(NEO__GMM_INCLUDE_DIR $<TARGET_PROPERTY:${GMM_TARGET_NAME},INTERFACE_INCLUDE_DIRECTORIES>)
|
|
|
|
set(NEO__GMM_LIBRARY_PATH $<TARGET_FILE_DIR:${GMM_TARGET_NAME}>)
|
2020-01-09 23:14:59 +08:00
|
|
|
set(GMM_LINK_NAME $<TARGET_PROPERTY:${GMM_TARGET_NAME},OUTPUT_NAME>)
|
|
|
|
else()
|
|
|
|
message(FATAL_ERROR "GmmLib not found!")
|
2018-06-21 15:55:20 +08:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endif()
|
2018-03-22 17:17:00 +08:00
|
|
|
|
2018-05-17 17:47:35 +08:00
|
|
|
macro(copy_gmm_dll_for target)
|
2018-10-30 14:11:39 +08:00
|
|
|
if(NOT UNIX)
|
2018-05-17 17:47:35 +08:00
|
|
|
add_custom_command(
|
|
|
|
TARGET ${target}
|
|
|
|
POST_BUILD
|
2020-01-09 23:14:59 +08:00
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:${GMM_TARGET_NAME}> $<TARGET_FILE_DIR:${target}>
|
2018-05-17 17:47:35 +08:00
|
|
|
)
|
|
|
|
endif()
|
|
|
|
endmacro()
|
|
|
|
|
2020-01-14 21:38:19 +08:00
|
|
|
link_directories(${NEO__GMM_LIBRARY_PATH})
|
2020-01-09 23:14:59 +08:00
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2019-08-02 22:10:46 +08:00
|
|
|
if(NOT DISABLE_LIBVA)
|
|
|
|
# LibVA detection
|
|
|
|
if(UNIX)
|
2020-01-14 21:38:19 +08:00
|
|
|
set(NEO__LIBVA_IS_REQUIRED "")
|
2019-08-02 22:10:46 +08:00
|
|
|
if(IGDRCL_FORCE_USE_LIBVA)
|
2020-01-14 21:38:19 +08:00
|
|
|
set(NEO__LIBVA_IS_REQUIRED "REQUIRED")
|
2019-08-02 22:10:46 +08:00
|
|
|
endif()
|
2018-11-05 05:56:34 +08:00
|
|
|
|
2019-08-02 22:10:46 +08:00
|
|
|
if(DEFINED LIBVA_SOURCE_DIR)
|
|
|
|
get_filename_component(LIBVA_SOURCE_DIR "${LIBVA_SOURCE_DIR}" ABSOLUTE)
|
|
|
|
else()
|
2019-10-10 23:41:59 +08:00
|
|
|
get_filename_component(LIBVA_SOURCE_DIR_tmp "${NEO_SOURCE_DIR}/../libva" ABSOLUTE)
|
2019-08-02 22:10:46 +08:00
|
|
|
if(IS_DIRECTORY "${LIBVA_SOURCE_DIR_tmp}")
|
|
|
|
set(LIBVA_SOURCE_DIR "${LIBVA_SOURCE_DIR_tmp}")
|
|
|
|
endif()
|
|
|
|
endif()
|
2018-11-05 05:56:34 +08:00
|
|
|
|
2019-08-02 22:10:46 +08:00
|
|
|
find_package(PkgConfig)
|
|
|
|
if(DEFINED LIBVA_SOURCE_DIR AND IS_DIRECTORY "${LIBVA_SOURCE_DIR}/lib/pkgconfig/")
|
|
|
|
set(OLD_PKG_CONFIG_PATH $ENV{PKG_CONFIG_PATH})
|
|
|
|
set(ENV{PKG_CONFIG_PATH} "${LIBVA_SOURCE_DIR}/lib/pkgconfig/")
|
|
|
|
endif()
|
2020-01-14 21:38:19 +08:00
|
|
|
pkg_check_modules(NEO__LIBVA ${NEO__LIBVA_IS_REQUIRED} libva>=1.0.0)
|
2019-08-02 22:10:46 +08:00
|
|
|
include(CheckLibraryExists)
|
|
|
|
if(DEFINED LIBVA_SOURCE_DIR AND IS_DIRECTORY "${LIBVA_SOURCE_DIR}/lib/pkgconfig/")
|
|
|
|
set(ENV{PKG_CONFIG_PATH} ${OLD_PKG_CONFIG_PATH})
|
|
|
|
endif()
|
2018-11-05 05:56:34 +08:00
|
|
|
|
2020-01-14 21:38:19 +08:00
|
|
|
if(NEO__LIBVA_FOUND)
|
|
|
|
CHECK_LIBRARY_EXISTS(va vaGetLibFunc ${NEO__LIBVA_LIBDIR} HAVE_VAGETLIBFUNC)
|
2018-11-21 05:41:09 +08:00
|
|
|
|
2019-08-02 22:10:46 +08:00
|
|
|
add_definitions(-DLIBVA)
|
|
|
|
message(STATUS "Using libva ")
|
2018-11-05 05:56:34 +08:00
|
|
|
|
2019-08-02 22:10:46 +08:00
|
|
|
if(DEFINED LIBVA_SOURCE_DIR AND IS_DIRECTORY "${LIBVA_SOURCE_DIR}/lib/pkgconfig/")
|
2020-01-14 21:38:19 +08:00
|
|
|
string(REPLACE "${NEO__LIBVA_INCLUDEDIR}" "${LIBVA_SOURCE_DIR}/include" NEO__LIBVA_INCLUDE_DIRS "${NEO__LIBVA_INCLUDE_DIRS}")
|
|
|
|
string(REPLACE "${NEO__LIBVA_LIBDIR}" "${LIBVA_SOURCE_DIR}/lib" NEO__LIBVA_LIBDIR "${NEO__LIBVA_LIBDIR}")
|
|
|
|
set(NEO__LIBVA_LIBRARY_PATH "${NEO__LIBVA_LIBDIR}")
|
2019-08-02 22:10:46 +08:00
|
|
|
endif()
|
2018-11-05 05:56:34 +08:00
|
|
|
|
2020-01-14 21:38:19 +08:00
|
|
|
list(LENGTH NEO__LIBVA_INCLUDE_DIRS __len)
|
2019-08-02 22:10:46 +08:00
|
|
|
if(__len GREATER 0)
|
2020-01-14 21:38:19 +08:00
|
|
|
set(NEO__LIBVA_INCLUDE_DIR ${NEO__LIBVA_INCLUDE_DIRS})
|
|
|
|
include_directories("${NEO__LIBVA_INCLUDE_DIR}")
|
|
|
|
message(STATUS "LibVA include dirs: ${NEO__LIBVA_INCLUDE_DIR}")
|
2019-08-02 22:10:46 +08:00
|
|
|
endif()
|
|
|
|
endif()
|
2018-11-21 05:41:09 +08:00
|
|
|
endif()
|
2018-11-05 05:56:34 +08:00
|
|
|
endif()
|
|
|
|
|
2018-06-11 22:15:11 +08:00
|
|
|
set(SLD_LIBRARY_NAME "igfxdbgxchg")
|
|
|
|
if(NEO_BITS STREQUAL "64")
|
|
|
|
set(SLD_LIBRARY_NAME "${SLD_LIBRARY_NAME}${NEO_BITS}")
|
|
|
|
endif()
|
|
|
|
|
2018-10-31 01:29:32 +08:00
|
|
|
|
2019-05-15 17:49:49 +08:00
|
|
|
add_subdirectory_unique(third_party/gtest)
|
2019-03-27 17:06:29 +08:00
|
|
|
|
2019-01-19 04:44:23 +08:00
|
|
|
message(STATUS "AUB_STREAM_DIR = ${AUB_STREAM_DIR}" )
|
2018-10-31 01:29:32 +08:00
|
|
|
if(DEFINED AUB_STREAM_DIR)
|
2019-01-19 04:44:23 +08:00
|
|
|
set(AUB_STREAM_PROJECT_NAME "aub_stream")
|
2019-05-15 17:49:49 +08:00
|
|
|
add_subdirectory_unique(${AUB_STREAM_DIR} ${CMAKE_BINARY_DIR}/aub_stream EXCLUDE_FROM_ALL)
|
2020-01-29 00:42:32 +08:00
|
|
|
set(ENGINE_NODE_DIR ${AUB_STREAM_DIR}${BRANCH_DIR_SUFFIX}/headers)
|
2019-03-27 17:06:29 +08:00
|
|
|
else()
|
|
|
|
set(ENGINE_NODE_DIR ${AUB_STREAM_HEADERS_DIR})
|
2018-10-31 01:29:32 +08:00
|
|
|
endif()
|
2019-03-27 17:06:29 +08:00
|
|
|
message(STATUS "Engine node dir: ${ENGINE_NODE_DIR}")
|
2018-05-09 06:57:07 +08:00
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
add_definitions(-DGMM_OCL)
|
|
|
|
|
|
|
|
# We want to organize our IDE targets into folders
|
|
|
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
|
|
|
|
|
|
# Get available platfroms
|
|
|
|
include(platforms.cmake)
|
|
|
|
|
2019-03-21 00:17:49 +08:00
|
|
|
# Enable/Disable BuiltIns compilation during build
|
2017-12-21 07:45:38 +08:00
|
|
|
set(COMPILE_BUILT_INS TRUE CACHE BOOL "Enable built-in kernels compilation")
|
|
|
|
|
|
|
|
# Changing the default executable and library output directories
|
|
|
|
set(IGDRCL_OUTPUT_DIR "${IGDRCL_OPTION__OUTPUT_DIR}")
|
|
|
|
|
|
|
|
# do not add rpath
|
|
|
|
set(CMAKE_SKIP_RPATH YES CACHE BOOL "" FORCE )
|
|
|
|
|
|
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
|
|
|
|
|
2019-02-20 10:19:02 +08:00
|
|
|
option(APPVERIFIER_ALLOWED "allow use of AppVerifier" OFF)
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
option(CCACHE_ALLOWED "allow use of ccache" TRUE)
|
|
|
|
find_program(CCACHE_EXE_FOUND ccache)
|
|
|
|
if(CCACHE_EXE_FOUND AND CCACHE_ALLOWED)
|
2019-05-15 17:49:49 +08:00
|
|
|
message(STATUS "Found ccache: ${CCACHE_EXE_FOUND}")
|
|
|
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
|
|
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
2017-12-21 07:45:38 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# Miscs options
|
|
|
|
option(IGDRCL_GCOV "generate gcov report" OFF)
|
|
|
|
option(USE_CL_CACHE "Use OpenCL program binary cache" ON)
|
|
|
|
set(CL_CACHE_LOCATION "cl_cache" CACHE STRING "OpenCL program binary cache location")
|
|
|
|
|
|
|
|
# Put profiling enable flag into define
|
2019-12-09 22:29:30 +08:00
|
|
|
if(KMD_PROFILING)
|
|
|
|
add_definitions(-DKMD_PROFILING=${KMD_PROFILING})
|
2017-12-21 07:45:38 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if(MSVC)
|
2019-05-15 17:49:49 +08:00
|
|
|
# Force to treat warnings as errors
|
|
|
|
if(NOT CMAKE_CXX_FLAGS MATCHES "/WX")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
|
2019-02-07 22:09:27 +08:00
|
|
|
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /we4189")
|
|
|
|
endif()
|
2019-05-15 17:49:49 +08:00
|
|
|
endif()
|
2018-02-24 07:25:34 +08:00
|
|
|
|
2019-04-05 16:11:43 +08:00
|
|
|
# Disable generating manifest
|
2019-05-15 17:49:49 +08:00
|
|
|
set(LINKER_FLAGS "/MANIFEST:NO")
|
2019-04-05 16:11:43 +08:00
|
|
|
|
2020-04-08 23:15:36 +08:00
|
|
|
# Use legacy float rounding
|
|
|
|
set(LINKER_FLAGS "${LINKER_FLAGS} legacy_stdio_float_rounding.obj")
|
|
|
|
|
2018-02-24 07:25:34 +08:00
|
|
|
# Support for WUD
|
2019-05-15 17:49:49 +08:00
|
|
|
set(CMAKE_CXX_STANDARD_LIBRARIES "onecore.lib")
|
|
|
|
foreach(IT kernel32.lib;user32.lib;gdi32.lib;advapi32.lib;ole32.lib;)
|
|
|
|
set(LINKER_FLAGS "${LINKER_FLAGS} /NODEFAULTLIB:${IT}")
|
|
|
|
endforeach()
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINKER_FLAGS}")
|
|
|
|
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}/")
|
2017-12-21 07:45:38 +08:00
|
|
|
else()
|
2019-05-15 17:49:49 +08:00
|
|
|
if(IGDRCL_GCOV)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage --coverage")
|
|
|
|
endif()
|
|
|
|
option(USE_ASAN "Link with address sanitization support" OFF)
|
|
|
|
if(USE_ASAN)
|
|
|
|
if(CMAKE_COMPILER_IS_GNUCC)
|
|
|
|
set(ASAN_FLAGS " -fsanitize=address -fno-omit-frame-pointer -DSANITIZER_BUILD")
|
|
|
|
set(ASAN_LIBS "asan")
|
2020-05-21 05:01:05 +08:00
|
|
|
set(GTEST_ENV ${GTEST_ENV} LSAN_OPTIONS=suppressions=${CMAKE_CURRENT_SOURCE_DIR}/opencl/test/unit_test/lsan_suppressions.txt)
|
2019-05-15 17:49:49 +08:00
|
|
|
else()
|
|
|
|
message(STATUS "Address sanitization with clang not yet support")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
if(USE_TSAN)
|
|
|
|
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
|
|
|
set(TSAN_FLAGS " -fsanitize=thread -DSANITIZER_BUILD")
|
|
|
|
set(TSAN_LIBS "tsan")
|
|
|
|
else()
|
|
|
|
message(STATUS "Thread sanitization with gcc is not fully supported")
|
|
|
|
endif()
|
|
|
|
endif()
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2019-04-05 16:11:43 +08:00
|
|
|
endif()
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
# setup variables needed for custom configuration type
|
|
|
|
# generate PDB files even for release build on MSVC
|
|
|
|
if(MSVC)
|
2019-05-15 17:49:49 +08:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
|
|
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
|
2018-02-07 23:46:35 +08:00
|
|
|
|
2019-05-15 17:49:49 +08:00
|
|
|
set(CMAKE_CXX_FLAGS_RELEASEINTERNAL "${CMAKE_CXX_FLAGS_RELEASEINTERNAL} /Zi")
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASEINTERNAL "${CMAKE_SHARED_LINKER_FLAGS_RELEASEINTERNAL} /DEBUG /OPT:REF /OPT:ICF")
|
2019-07-05 01:39:03 +08:00
|
|
|
|
|
|
|
if(NO_PDB)
|
|
|
|
string(REGEX REPLACE "/Zi" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
|
|
|
string(REGEX REPLACE "/Zi" "" CMAKE_CXX_FLAGS_RELEASEINTERNAL "${CMAKE_CXX_FLAGS_RELEASEINTERNAL}")
|
|
|
|
string(REGEX REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
|
|
|
endif()
|
2017-12-21 07:45:38 +08:00
|
|
|
endif()
|
|
|
|
|
2019-03-27 19:07:46 +08:00
|
|
|
# spectre mitigation
|
2019-04-12 22:09:54 +08:00
|
|
|
include(CheckCXXCompilerFlag)
|
2019-03-27 19:07:46 +08:00
|
|
|
if(MSVC)
|
2019-05-15 17:49:49 +08:00
|
|
|
check_cxx_compiler_flag(/Qspectre COMPILER_SUPPORTS_QSPECTRE)
|
|
|
|
check_cxx_compiler_flag(/d2guardspecload COMPILER_SUPPORTS_D2GUARDSPECLOAD)
|
|
|
|
if(COMPILER_SUPPORTS_QSPECTRE)
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Qspectre")
|
|
|
|
elseif(COMPILER_SUPPORTS_D2GUARDSPECLOAD)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /d2guardspecload")
|
|
|
|
else()
|
|
|
|
message(WARNING "Spectre mitigation is not supported by the compiler")
|
|
|
|
endif()
|
2019-04-12 22:09:54 +08:00
|
|
|
else()
|
2020-04-16 01:27:42 +08:00
|
|
|
if(NOT NEO_DISABLE_MITIGATIONS)
|
|
|
|
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
|
|
|
check_cxx_compiler_flag(-mretpoline COMPILER_SUPPORTS_RETPOLINE)
|
|
|
|
if(COMPILER_SUPPORTS_RETPOLINE)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mretpoline")
|
|
|
|
else()
|
|
|
|
message(WARNING "Spectre mitigation -mretpoline flag is not supported by the compiler")
|
|
|
|
endif()
|
2019-05-15 17:49:49 +08:00
|
|
|
else()
|
2020-04-16 01:27:42 +08:00
|
|
|
check_cxx_compiler_flag(-mindirect-branch=thunk COMPILER_SUPPORTS_INDIRECT_BRANCH_THUNK)
|
|
|
|
if(COMPILER_SUPPORTS_INDIRECT_BRANCH_THUNK)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mindirect-branch=thunk")
|
|
|
|
else()
|
|
|
|
message(WARNING "Spectre mitigation -mindirect-branch=thunk flag is not supported by the compiler")
|
|
|
|
endif()
|
|
|
|
check_cxx_compiler_flag(-mfunction-return=thunk COMPILER_SUPPORTS_FUNCTION_RETURN_THUNK)
|
|
|
|
if(COMPILER_SUPPORTS_FUNCTION_RETURN_THUNK)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfunction-return=thunk")
|
|
|
|
else()
|
|
|
|
message(WARNING "Spectre mitigation -mfunction-return=thunk flag is not supported by the compiler")
|
|
|
|
endif()
|
|
|
|
check_cxx_compiler_flag(-mindirect-branch-register COMPILER_SUPPORTS_INDIRECT_BRANCH_REGISTER)
|
|
|
|
if(COMPILER_SUPPORTS_INDIRECT_BRANCH_REGISTER)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mindirect-branch-register")
|
|
|
|
else()
|
|
|
|
message(WARNING "Spectre mitigation -mindirect-branch-register flag is not supported by the compiler")
|
|
|
|
endif()
|
2019-05-15 17:49:49 +08:00
|
|
|
endif()
|
|
|
|
else()
|
2020-04-16 01:27:42 +08:00
|
|
|
message(WARNING "Spectre mitigation DISABLED")
|
2019-05-15 17:49:49 +08:00
|
|
|
endif()
|
2019-03-27 19:07:46 +08:00
|
|
|
endif(MSVC)
|
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
if(NOT MSVC)
|
2019-05-15 17:49:49 +08:00
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024")
|
2017-12-21 07:45:38 +08:00
|
|
|
endif(NOT MSVC)
|
|
|
|
|
|
|
|
# Compiler warning flags
|
|
|
|
if(NOT MSVC)
|
2019-05-15 17:49:49 +08:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wempty-body")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wignored-qualifiers")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wtype-limits")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wuninitialized")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra -Wno-unused-parameter -Wno-missing-field-initializers")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Winvalid-pch")
|
|
|
|
|
|
|
|
if("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" )
|
|
|
|
# clang only
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wshorten-64-to-32")
|
|
|
|
if(USE_SANITIZE_UB)
|
|
|
|
message(STATUS "Enabling undefined behavior sanitizer")
|
2019-09-08 23:38:25 +08:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined -fsanitize-recover=vptr -fno-rtti -DSANITIZER_BUILD")
|
|
|
|
if(NOT SANITIZE_UB_ALLOW_CONTINUE)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-sanitize-recover=undefined")
|
|
|
|
endif()
|
2019-05-15 17:49:49 +08:00
|
|
|
endif(USE_SANITIZE_UB)
|
|
|
|
if (NOT (CMAKE_C_COMPILER_VERSION VERSION_LESS 3.6))
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-local-typedefs -DSANITIZER_BUILD")
|
|
|
|
endif()
|
|
|
|
if (NOT (CMAKE_C_COMPILER_VERSION VERSION_LESS 4.0))
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-register") # Added for htons()
|
|
|
|
endif()
|
2020-04-01 18:21:48 +08:00
|
|
|
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-copy")
|
|
|
|
endif()
|
2019-05-15 17:49:49 +08:00
|
|
|
else()
|
|
|
|
# gcc only
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-local-typedefs -Wno-unused-but-set-variable")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wclobbered")
|
|
|
|
if (CMAKE_C_COMPILER_VERSION VERSION_LESS 7.0)
|
|
|
|
else()
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wimplicit-fallthrough=4")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-noexcept-type") # Added for gtest
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
|
2017-12-21 07:45:38 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# Compile code with defenses enabled (settings to be used for production release code)
|
|
|
|
if("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
|
2019-05-15 17:49:49 +08:00
|
|
|
if(MSVC)
|
|
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GS")
|
|
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /sdl")
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /NXCompat")
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DynamicBase")
|
|
|
|
if("${NEO_ARCH}" STREQUAL "x86")
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /SafeSEH")
|
|
|
|
endif()
|
|
|
|
else()
|
|
|
|
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-strong")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -D_FORTIFY_SOURCE=2")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wformat -Wformat-security")
|
|
|
|
else()
|
|
|
|
# gcc, g++ only
|
|
|
|
if (CMAKE_C_COMPILER_VERSION VERSION_LESS 4.9)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector")
|
|
|
|
else()
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-strong")
|
|
|
|
endif()
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -D_FORTIFY_SOURCE=2")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wformat -Wformat-security")
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -Wl,-z,noexecstack")
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -Wl,-z,relro")
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -Wl,-z,now")
|
|
|
|
endif()
|
|
|
|
endif()
|
2017-12-21 07:45:38 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# Project-wide include paths
|
2019-08-05 21:16:57 +08:00
|
|
|
# Please keep alphabetical order
|
2019-10-14 18:55:52 +08:00
|
|
|
include_directories(${NEO_BUILD_DIR})
|
2019-10-10 23:41:59 +08:00
|
|
|
include_directories(${NEO_SOURCE_DIR})
|
2020-03-11 21:03:26 +08:00
|
|
|
include_directories(${NEO_SHARED_DIRECTORY}/built_ins/builtinops${BRANCH_DIR_SUFFIX})
|
|
|
|
include_directories(${NEO_SHARED_DIRECTORY}/command_stream/definitions${BRANCH_DIR_SUFFIX})
|
|
|
|
include_directories(${NEO_SHARED_DIRECTORY}/compiler_interface/compiler_options${BRANCH_DIR_SUFFIX})
|
|
|
|
include_directories(${NEO_SHARED_DIRECTORY}/debug_settings/definitions${BRANCH_DIR_SUFFIX})
|
|
|
|
include_directories(${NEO_SHARED_DIRECTORY}/gen_common/reg_configs${BRANCH_DIR_SUFFIX})
|
|
|
|
include_directories(${NEO_SHARED_DIRECTORY}/gmm_helper/client_context${BRANCH_DIR_SUFFIX})
|
|
|
|
include_directories(${NEO_SHARED_DIRECTORY}/gmm_helper/windows/gmm_memory${BRANCH_DIR_SUFFIX})
|
2020-04-27 03:48:59 +08:00
|
|
|
include_directories(${NEO_SHARED_DIRECTORY}/helpers/definitions${BRANCH_DIR_SUFFIX})
|
2020-03-11 21:03:26 +08:00
|
|
|
include_directories(${NEO_SHARED_DIRECTORY}/memory_manager/definitions${BRANCH_DIR_SUFFIX})
|
|
|
|
include_directories(${NEO_SHARED_DIRECTORY}/memory_properties${BRANCH_DIR_SUFFIX})
|
|
|
|
include_directories(${NEO_SHARED_DIRECTORY}/sku_info/definitions${BRANCH_DIR_SUFFIX})
|
2020-02-23 05:50:57 +08:00
|
|
|
include_directories(${NEO_SOURCE_DIR}/opencl/source/command_queue/definitions${BRANCH_DIR_SUFFIX})
|
|
|
|
include_directories(${NEO_SOURCE_DIR}/opencl/source/command_stream/definitions${BRANCH_DIR_SUFFIX})
|
|
|
|
include_directories(${NEO_SOURCE_DIR}/opencl/source/mem_obj/definitions${BRANCH_DIR_SUFFIX})
|
|
|
|
include_directories(${NEO_SOURCE_DIR}/opencl/source/memory_manager/definitions${BRANCH_DIR_SUFFIX})
|
2020-03-30 23:54:49 +08:00
|
|
|
if (MSVC)
|
|
|
|
include_directories(${NEO_SOURCE_DIR}/opencl/source/sharings/gl/windows/include)
|
|
|
|
endif()
|
2019-10-10 23:41:59 +08:00
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
# Define where to put binaries
|
2019-12-19 21:22:00 +08:00
|
|
|
set(TargetDir ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
2017-12-21 07:45:38 +08:00
|
|
|
if(MSVC)
|
2019-12-19 21:22:00 +08:00
|
|
|
if (NOT "${CMAKE_GENERATOR}" STREQUAL "Ninja")
|
|
|
|
set(TargetDir ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE})
|
|
|
|
endif()
|
|
|
|
endif()
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2020-02-27 23:17:08 +08:00
|
|
|
add_subdirectory_unique(${OCLOC_DIRECTORY} ${NEO_BUILD_DIR}/offline_compiler)
|
2020-02-07 21:06:50 +08:00
|
|
|
target_compile_definitions(ocloc_lib PRIVATE MOCKABLE_VIRTUAL=)
|
2020-01-30 00:43:20 +08:00
|
|
|
|
|
|
|
if(DONT_CARE_OF_VIRTUALS)
|
2020-03-11 21:03:26 +08:00
|
|
|
set(NEO_SHARED_RELEASE_LIB_NAME "neo_shared")
|
|
|
|
set(NEO_SHARED_MOCKABLE_LIB_NAME ${NEO_SHARED_RELEASE_LIB_NAME})
|
2020-01-30 00:43:20 +08:00
|
|
|
else()
|
2020-03-11 21:03:26 +08:00
|
|
|
set(NEO_SHARED_RELEASE_LIB_NAME "neo_shared")
|
2020-01-30 00:43:20 +08:00
|
|
|
if(NOT SKIP_UNIT_TESTS)
|
2020-03-11 21:03:26 +08:00
|
|
|
set(NEO_SHARED_MOCKABLE_LIB_NAME "neo_shared_mockable")
|
2020-01-30 00:43:20 +08:00
|
|
|
endif()
|
|
|
|
endif()
|
2020-02-24 20:10:44 +08:00
|
|
|
|
|
|
|
set(BIKSIM_LIB_NAME "biksim")
|
|
|
|
set(BUILTINS_SOURCES_LIB_NAME "builtins_sources")
|
|
|
|
set(BUILTINS_BINARIES_LIB_NAME "builtins_binaries")
|
|
|
|
set(BUILTINS_VME_LIB_NAME "builtins_vme")
|
|
|
|
set(SCHEDULER_BINARY_LIB_NAME "scheduler_binary")
|
|
|
|
|
2020-02-24 04:00:51 +08:00
|
|
|
add_subdirectory_unique(shared/source)
|
2020-04-29 00:15:37 +08:00
|
|
|
add_subdirectory_unique(shared/generate_cpp_array)
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
macro(generate_runtime_lib LIB_NAME MOCKABLE GENERATE_EXEC)
|
2019-12-19 21:22:00 +08:00
|
|
|
set(NEO_STATIC_LIB_NAME ${LIB_NAME})
|
|
|
|
set(SHARINGS_ENABLE_LIB_NAME "${LIB_NAME}_sharings_enable")
|
|
|
|
set(GENERATE_EXECUTABLE ${GENERATE_EXEC})
|
2020-01-30 00:43:20 +08:00
|
|
|
|
|
|
|
if(${MOCKABLE})
|
2020-03-11 21:03:26 +08:00
|
|
|
set(NEO_SHARED_LIB ${NEO_SHARED_MOCKABLE_LIB_NAME})
|
2020-01-30 00:43:20 +08:00
|
|
|
else()
|
2020-03-11 21:03:26 +08:00
|
|
|
set(NEO_SHARED_LIB ${NEO_SHARED_RELEASE_LIB_NAME})
|
2020-01-30 00:43:20 +08:00
|
|
|
endif()
|
2019-12-19 21:22:00 +08:00
|
|
|
if(NOT BUILD_WITHOUT_RUNTIME)
|
2020-02-22 16:28:27 +08:00
|
|
|
add_subdirectory(${NEO_RUNTIME_SUB_DIR} "${NEO_BUILD_DIR}/${LIB_NAME}")
|
2019-12-19 21:22:00 +08:00
|
|
|
else()
|
2020-02-22 16:28:27 +08:00
|
|
|
add_subdirectory(${NEO_RUNTIME_SUB_DIR} "${NEO_BUILD_DIR}/${LIB_NAME}" EXCLUDE_FROM_ALL)
|
2019-12-19 21:22:00 +08:00
|
|
|
endif()
|
|
|
|
target_compile_definitions(${BUILTINS_SOURCES_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
|
2020-02-20 23:00:19 +08:00
|
|
|
target_compile_definitions(${BUILTINS_VME_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
|
2019-12-19 21:22:00 +08:00
|
|
|
target_compile_definitions(${BUILTINS_BINARIES_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
|
|
|
|
target_compile_definitions(${SCHEDULER_BINARY_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
|
|
|
|
|
|
|
|
|
|
|
|
if(${MOCKABLE})
|
|
|
|
target_compile_definitions(${LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=virtual)
|
|
|
|
target_compile_definitions(${SHARINGS_ENABLE_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=virtual)
|
|
|
|
target_compile_definitions(${LIB_NAME} PUBLIC DEFAULT_TEST_PLATFORM=${DEFAULT_TESTED_PLATFORM} DEFAULT_TEST_FAMILY_NAME=${DEFAULT_TESTED_FAMILY_NAME} ${TESTED_GEN_FLAGS_DEFINITONS})
|
|
|
|
else()
|
|
|
|
target_compile_definitions(${LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
|
|
|
|
target_compile_definitions(${SHARINGS_ENABLE_LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=)
|
|
|
|
endif()
|
2017-12-21 07:45:38 +08:00
|
|
|
endmacro(generate_runtime_lib)
|
|
|
|
|
2018-02-24 07:25:34 +08:00
|
|
|
set(NEO_DYNAMIC_LIB_NAME "igdrcl_dll") # single NEO dll
|
2017-12-21 07:45:38 +08:00
|
|
|
set(NEO_DLL_NAME_BASE "igdrcl")
|
|
|
|
|
2018-03-22 06:40:59 +08:00
|
|
|
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)
|
2019-12-31 21:32:52 +08:00
|
|
|
if(NOT SKIP_UNIT_TESTS)
|
2018-08-28 20:18:44 +08:00
|
|
|
set(NEO_MOCKABLE_LIB_NAME "igdrcl_lib_mockable") # Used by ULTS
|
|
|
|
generate_runtime_lib(${NEO_MOCKABLE_LIB_NAME} TRUE FALSE)
|
|
|
|
endif()
|
2018-03-22 06:40:59 +08:00
|
|
|
endif()
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2020-03-11 21:03:26 +08:00
|
|
|
set(NEO_STATICALLY_LINKED_LIBRARIES ${NEO_RELEASE_LIB_NAME} ${NEO_SHARED_RELEASE_LIB_NAME} ${NEO_RELEASE_LIB_NAME} ${NEO_SHARED_RELEASE_LIB_NAME})
|
|
|
|
set(NEO_STATICALLY_LINKED_LIBRARIES_MOCKABLE ${NEO_MOCKABLE_LIB_NAME} ${NEO_SHARED_MOCKABLE_LIB_NAME} ${NEO_MOCKABLE_LIB_NAME} ${NEO_SHARED_MOCKABLE_LIB_NAME})
|
|
|
|
|
2020-04-07 18:03:16 +08:00
|
|
|
if(NOT SKIP_UNIT_TESTS)
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/level_zero/cmake/${BRANCH_TYPE}/l0_tests.cmake)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
add_subdirectory_unique(shared/test/unit_test)
|
|
|
|
|
2019-12-23 22:43:39 +08:00
|
|
|
if(DEFAULT_TESTED_PLATFORM AND NOT SKIP_NEO_UNIT_TESTS)
|
2020-02-23 16:03:33 +08:00
|
|
|
add_subdirectory_unique(${NEO_RUNTIME_TESTS_SUB_DIR} ${NEO_BUILD_DIR}/${NEO_RUNTIME_TESTS_SUB_DIR})
|
2019-10-22 20:41:31 +08:00
|
|
|
else()
|
2020-02-23 16:03:33 +08:00
|
|
|
hide_subdir(${NEO_RUNTIME_TESTS_SUB_DIR})
|
2017-12-21 07:45:38 +08:00
|
|
|
endif()
|
|
|
|
|
2020-04-19 01:10:44 +08:00
|
|
|
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})
|
|
|
|
endif()
|
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
set(DONT_LINK_ELF_STATICALLY TRUE)
|
2019-10-10 23:41:59 +08:00
|
|
|
if(EXISTS ${NEO_SOURCE_DIR}/../internal)
|
2019-10-14 18:55:52 +08:00
|
|
|
add_subdirectory_unique(${NEO_SOURCE_DIR}/../internal ${NEO_BUILD_DIR}/internal)
|
2019-10-10 23:41:59 +08:00
|
|
|
endif(EXISTS ${NEO_SOURCE_DIR}/../internal)
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2019-05-15 17:49:49 +08:00
|
|
|
add_subdirectory_unique(scripts/lint)
|
2019-12-30 17:21:12 +08:00
|
|
|
if(EXISTS ${NEO_SOURCE_DIR}/scripts/format)
|
2019-12-18 23:07:14 +08:00
|
|
|
add_subdirectory_unique(scripts/format)
|
|
|
|
endif()
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2019-10-14 18:55:52 +08:00
|
|
|
configure_file(config.h.in ${NEO_BUILD_DIR}/config.h)
|
2020-01-14 21:38:19 +08:00
|
|
|
if(WIN32 AND NOT NEO__IGC_FOUND)
|
2019-10-14 18:55:52 +08:00
|
|
|
configure_file(igc.opencl.h.in ${NEO_BUILD_DIR}/igc.opencl.h)
|
2018-06-21 13:30:07 +08:00
|
|
|
endif()
|
2019-10-14 18:55:52 +08:00
|
|
|
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)
|
2019-05-15 17:49:49 +08:00
|
|
|
|
2020-02-22 16:28:27 +08:00
|
|
|
hide_subdir(${NEO_RUNTIME_SUB_DIR})
|
2020-03-16 15:03:19 +08:00
|
|
|
|
|
|
|
if(BUILD_WITH_L0)
|
|
|
|
add_subdirectory_unique(level_zero)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
add_subdirectory_unique(target_unit_tests)
|
|
|
|
|
2019-06-05 22:41:57 +08:00
|
|
|
add_subdirectories()
|
2019-05-16 00:06:16 +08:00
|
|
|
|
2020-03-07 06:09:52 +08:00
|
|
|
include(package.cmake)
|