2020-03-06 18:09:57 +08:00
#
2022-01-04 05:28:04 +08:00
# Copyright (C) 2020-2022 Intel Corporation
2020-03-06 18:09:57 +08:00
#
# SPDX-License-Identifier: MIT
#
2020-06-25 19:40:21 +08:00
include ( cmake/verify_l0_support.cmake )
2020-06-03 22:43:19 +08:00
if ( BUILD_WITH_L0 )
2021-10-26 18:55:05 +08:00
set ( TARGET_NAME_L0 ze_intel_gpu )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
# Level Zero third party detection
if ( DEFINED LEVEL_ZERO_ROOT )
get_filename_component ( LEVEL_ZERO_ROOT "${LEVEL_ZERO_ROOT}" ABSOLUTE )
else ( )
get_filename_component ( LEVEL_ZERO_ROOT_tmp "${NEO_SOURCE_DIR}/../level_zero" ABSOLUTE )
# Level Zero Headers if read from the git repo are in include/core & include/tools.
# To support the installation path of level_zero headers which is include/level_zero/*
# the header files are combined into the path include/level_zero/* in the commands below.
if ( IS_DIRECTORY "${LEVEL_ZERO_ROOT_tmp}" )
set ( CUSTOM_L0_INCLUDE_PATH "${LEVEL_ZERO_ROOT_tmp}/include/level_zero/" )
file ( GLOB LEVEL_ZERO_SOURCE_HEADERS
" $ { L E V E L _ Z E R O _ R O O T _ t m p } / i n c l u d e / * . h "
)
file ( MAKE_DIRECTORY ${ CUSTOM_L0_INCLUDE_PATH } )
file ( COPY ${ LEVEL_ZERO_SOURCE_HEADERS } DESTINATION ${ CUSTOM_L0_INCLUDE_PATH } )
set ( LEVEL_ZERO_ROOT "${LEVEL_ZERO_ROOT_tmp}" )
2020-03-06 18:09:57 +08:00
endif ( )
2020-08-19 18:18:18 +08:00
endif ( )
2020-12-08 22:36:48 +08:00
if ( NOT DEFINED DONT_USE_PREBUILT_KERNELS_L0 )
set ( DONT_USE_PREBUILT_KERNELS_L0 FALSE )
endif ( )
2020-08-19 18:18:18 +08:00
project ( level-zero-gpu VERSION ${ NEO_L0_VERSION_MAJOR } . ${ NEO_L0_VERSION_MINOR } . ${ NEO_VERSION_BUILD } )
message ( STATUS "Level Zero driver version: ${PROJECT_VERSION}" )
include ( cmake/source_tree.cmake )
list ( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" )
find_package ( LevelZero )
if ( NOT LevelZero_FOUND )
message ( STATUS "Level zero headers not found" )
message ( STATUS "Skipping level zero" )
set ( BUILD_WITH_L0 FALSE PARENT_SCOPE )
return ( )
endif ( )
add_definitions ( -DL0_PROJECT_VERSION_MAJOR= "${PROJECT_VERSION_MAJOR}" )
add_definitions ( -DL0_PROJECT_VERSION_MINOR= "${PROJECT_VERSION_MINOR}" )
add_definitions ( -DL0_PROJECT_VERSION_PATCH= "${PROJECT_VERSION_PATCH}" )
add_definitions ( -DNEO_VERSION_BUILD= "${NEO_VERSION_BUILD}" )
add_definitions ( -DZE_ENABLE_OCL_INTEROP=1 )
file ( WRITE "${CMAKE_BINARY_DIR}/VERSION" "${PROJECT_VERSION}" )
#Define a path for custom commands to work around MSVC
set ( CUSTOM_COMMAND_BINARY_DIR ${ CMAKE_RUNTIME_OUTPUT_DIRECTORY } )
if ( MSVC )
#MSVC implicitly adds $<CONFIG> to the output path
if ( NOT "${CMAKE_GENERATOR}" STREQUAL "Ninja" )
set ( CUSTOM_COMMAND_BINARY_DIR ${ CUSTOM_COMMAND_BINARY_DIR } / $< CONFIG > )
2020-03-06 18:09:57 +08:00
endif ( )
2020-08-19 18:18:18 +08:00
endif ( )
if ( UNIX )
2020-12-02 06:00:23 +08:00
# Netlink and Generic Netlink
find_path ( LIBGENL_INCLUDE_DIR netlink/genl/genl.h PATH_SUFFIXES libnl3 )
if ( LIBGENL_INCLUDE_DIR )
message ( STATUS "LibGenl headers directory: ${LIBGENL_INCLUDE_DIR}" )
include_directories ( SYSTEM ${ LIBGENL_INCLUDE_DIR } )
set ( LIBGENL_FOUND TRUE )
else ( )
message ( STATUS "LibGenl headers not available. Building without" )
endif ( )
2020-08-19 18:18:18 +08:00
endif ( )
2020-03-06 18:09:57 +08:00
2022-11-05 01:29:19 +08:00
if ( UNIX )
# Udev library interface
find_path ( LIBUDEV_INCLUDE_DIR libudev.h )
if ( LIBUDEV_INCLUDE_DIR )
message ( STATUS "libudev headers directory: ${LIBUDEV_INCLUDE_DIR}" )
include_directories ( SYSTEM ${ LIBUDEV_INCLUDE_DIR } )
set ( LIBUDEV_FOUND TRUE )
else ( )
message ( STATUS "libudev headers not available. Building without" )
endif ( )
endif ( )
2022-06-17 17:30:19 +08:00
# Firmware Update Library
get_filename_component ( IGSC_DIR_tmp "${NEO_SOURCE_DIR}/../igsc" ABSOLUTE )
if ( EXISTS "${IGSC_DIR_tmp}/lib/cmake" )
find_package ( igsc HINTS "${IGSC_DIR_tmp}/lib/cmake" )
else ( )
find_package ( igsc )
endif ( )
if ( igsc_FOUND )
add_definitions ( -DIGSC_PRESENT=1 )
2021-11-24 17:25:05 +08:00
if ( EXISTS "${IGSC_DIR_tmp}/lib/cmake" )
2022-06-17 17:30:19 +08:00
get_filename_component ( igsc_INCLUDE_DIR "${NEO_SOURCE_DIR}/../igsc/include" ABSOLUTE )
2020-11-12 16:56:22 +08:00
endif ( )
2022-06-17 17:30:19 +08:00
message ( STATUS "igsc Library headers directory: ${igsc_INCLUDE_DIR}" )
message ( STATUS "igsc version: ${igsc_VERSION}" )
include_directories ( SYSTEM ${ igsc_INCLUDE_DIR } )
else ( )
message ( STATUS "igsc Library headers not available. Building without" )
2020-11-12 16:56:22 +08:00
endif ( )
2020-08-19 18:18:18 +08:00
if ( UNIX )
# Load GNUInstallDirs to determine install targets for Linux packages
include ( GNUInstallDirs )
endif ( )
2020-05-18 23:51:09 +08:00
2020-08-19 18:18:18 +08:00
if ( NOT MSVC )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -fPIC" )
endif ( )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
set ( L0_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}" )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
if ( NOT DEFINED COMPUTE_RUNTIME_DIR )
get_filename_component ( COMPUTE_RUNTIME_DIR ${ CMAKE_CURRENT_SOURCE_DIR } /.. ABSOLUTE )
endif ( )
# Option to disable tests
option ( ${ PROJECT_NAME } _BUILD_TESTS "Build unit tests." ON )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
# Copy third_party_binaries to output BIN folder
add_custom_target ( copy_third_party_files )
set_target_properties ( copy_third_party_files PROPERTIES FOLDER ${ TARGET_NAME_L0 } )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
if ( DEFINED NEO__IGC_TARGETS )
if ( WIN32 )
add_dependencies ( copy_third_party_files copy_compiler_files )
2020-03-06 18:09:57 +08:00
else ( )
2020-08-19 18:18:18 +08:00
add_dependencies ( copy_third_party_files ${ NEO__IGC_TARGETS } )
foreach ( TARGET_tmp ${ NEO__IGC_TARGETS } )
2020-03-06 18:09:57 +08:00
if ( UNIX )
2020-08-19 18:18:18 +08:00
add_custom_command (
T A R G E T c o p y _ t h i r d _ p a r t y _ f i l e s
P R E _ B U I L D
C O M M A N D $ { C M A K E _ C O M M A N D } - E m a k e _ d i r e c t o r y $ { C U S T O M _ C O M M A N D _ B I N A R Y _ D I R }
C O M M A N D $ { C M A K E _ C O M M A N D } - E c o p y _ i f _ d i f f e r e n t $ < T A R G E T _ S O N A M E _ F I L E : $ { T A R G E T _ t m p } > " $ { C U S T O M _ C O M M A N D _ B I N A R Y _ D I R } / "
)
2020-03-06 18:09:57 +08:00
endif ( )
add_custom_command (
2020-08-19 18:18:18 +08:00
T A R G E T c o p y _ t h i r d _ p a r t y _ f i l e s
P R E _ B U I L D
C O M M A N D $ { C M A K E _ C O M M A N D } - E m a k e _ d i r e c t o r y $ { C U S T O M _ C O M M A N D _ B I N A R Y _ D I R }
C O M M A N D $ { C M A K E _ C O M M A N D } - E c o p y _ i f _ d i f f e r e n t $ < T A R G E T _ F I L E : $ { T A R G E T _ t m p } > " $ { C U S T O M _ C O M M A N D _ B I N A R Y _ D I R } / "
2020-03-06 18:09:57 +08:00
)
2020-08-19 18:18:18 +08:00
endforeach ( )
2020-03-06 18:09:57 +08:00
endif ( )
2020-08-19 18:18:18 +08:00
else ( )
if ( DEFINED IGC_DIR ) # Only copy igc libs if available
message ( STATUS "L0::Igc Dir: ${IGC_DIR}" )
add_custom_command (
T A R G E T c o p y _ t h i r d _ p a r t y _ f i l e s
P R E _ B U I L D
C O M M A N D $ { C M A K E _ C O M M A N D } - E m a k e _ d i r e c t o r y $ { C U S T O M _ C O M M A N D _ B I N A R Y _ D I R }
2020-12-17 16:41:46 +08:00
C O M M A N D $ { C M A K E _ C O M M A N D } - E c o p y _ d i r e c t o r y " $ { N E O _ _ I G C _ L I B R A R Y _ P A T H } " " $ { C U S T O M _ C O M M A N D _ B I N A R Y _ D I R } / "
D E P E N D S " $ { N E O _ _ I G C _ L I B R A R Y _ P A T H } "
2020-08-19 18:18:18 +08:00
)
2020-03-06 18:09:57 +08:00
endif ( )
2020-08-19 18:18:18 +08:00
endif ( )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
if ( TARGET ${ GMM_TARGET_NAME } )
message ( STATUS "L0::Gmm Target: ${GMM_TARGET_NAME}" )
add_dependencies ( copy_third_party_files ${ GMM_TARGET_NAME } )
if ( UNIX )
add_custom_command (
T A R G E T c o p y _ t h i r d _ p a r t y _ f i l e s
P R E _ B U I L D
C O M M A N D $ { C M A K E _ C O M M A N D } - E m a k e _ d i r e c t o r y $ { C U S T O M _ C O M M A N D _ B I N A R Y _ D I R }
C O M M A N D $ { C M A K E _ C O M M A N D } - E c o p y _ i f _ d i f f e r e n t " $ < T A R G E T _ S O N A M E _ F I L E : $ { G M M _ T A R G E T _ N A M E } > " " $ { C U S T O M _ C O M M A N D _ B I N A R Y _ D I R } / "
)
2020-04-10 19:24:47 +08:00
endif ( )
2020-08-19 18:18:18 +08:00
add_custom_command (
T A R G E T c o p y _ t h i r d _ p a r t y _ f i l e s
P R E _ B U I L D
C O M M A N D $ { C M A K E _ C O M M A N D } - E m a k e _ d i r e c t o r y $ { C U S T O M _ C O M M A N D _ B I N A R Y _ D I R }
C O M M A N D $ { C M A K E _ C O M M A N D } - E c o p y _ i f _ d i f f e r e n t " $ < T A R G E T _ F I L E : $ { G M M _ T A R G E T _ N A M E } > " " $ { C U S T O M _ C O M M A N D _ B I N A R Y _ D I R } / "
2020-03-06 18:09:57 +08:00
)
2020-08-19 18:18:18 +08:00
else ( )
if ( DEFINED GMM_DIR ) # Only copy gmm libs if available
message ( STATUS "L0::Gmm Dir: ${GMM_DIR}" )
add_custom_command (
T A R G E T c o p y _ t h i r d _ p a r t y _ f i l e s
P R E _ B U I L D
C O M M A N D $ { C M A K E _ C O M M A N D } - E m a k e _ d i r e c t o r y $ { C U S T O M _ C O M M A N D _ B I N A R Y _ D I R }
2020-12-17 16:41:46 +08:00
C O M M A N D $ { C M A K E _ C O M M A N D } - E c o p y _ d i r e c t o r y " $ { N E O _ _ G M M _ L I B R A R Y _ P A T H } " " $ { C U S T O M _ C O M M A N D _ B I N A R Y _ D I R } / "
D E P E N D S " $ { N E O _ _ G M M _ L I B R A R Y _ P A T H } "
2020-08-19 18:18:18 +08:00
)
2020-03-06 18:09:57 +08:00
endif ( )
2020-08-19 18:18:18 +08:00
endif ( )
# Get build type
string ( TOLOWER "${CMAKE_BUILD_TYPE}" BUILD_TYPE )
if ( "${BUILD_TYPE}" STREQUAL "debug" )
add_definitions ( -DZE_DEBUG )
endif ( )
include_directories ( ${ COMPUTE_RUNTIME_DIR } /third_party/opencl_headers )
if ( CUSTOM_L0_INCLUDE_PATH )
include_directories ( ${ CUSTOM_L0_INCLUDE_PATH } /../ )
else ( )
include_directories ( ${ LevelZero_INCLUDE_DIRS } )
endif ( )
include_directories ( ${ NEO_SOURCE_DIR } /level_zero/api/experimental ${ BRANCH_DIR_SUFFIX } )
include_directories ( ${ CMAKE_CURRENT_SOURCE_DIR } /core/source/hw_helpers ${ BRANCH_DIR_SUFFIX } )
include_directories ( ${ CMAKE_CURRENT_SOURCE_DIR } /core/source/cmdlist/cmdlist_extended ${ BRANCH_DIR_SUFFIX } )
include_directories ( ${ CMAKE_CURRENT_SOURCE_DIR } /core/source/cmdqueue/cmdqueue_extended ${ BRANCH_DIR_SUFFIX } )
include_directories ( "${CMAKE_CURRENT_SOURCE_DIR}" )
include_directories ( ddi ${ BRANCH_DIR_SUFFIX } )
include_directories ( tools/source )
2021-09-13 21:28:11 +08:00
include_directories ( experimental ${ BRANCH_DIR_SUFFIX } source )
2020-08-19 18:18:18 +08:00
include_directories ( experimental/source/tracing )
# Create our shared library/DLL
2021-03-25 04:56:22 +08:00
configure_file ( ze_intel_gpu_version.h.in ${ NEO_BUILD_DIR } /ze_intel_gpu_version.h )
2020-08-19 18:18:18 +08:00
add_library ( ${ TARGET_NAME_L0 }
S H A R E D
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / C M a k e L i s t s . t x t
2021-09-23 17:03:22 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / c r e a t e _ c o m m a n d _ s t r e a m . c p p
2022-09-08 01:32:16 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / d e v i c e _ d l l . c p p
2021-10-25 23:33:38 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / d i r e c t _ s u b m i s s i o n _ c o n t r o l l e r _ e n a b l e d . c p p
2020-08-19 18:18:18 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / o p t i o n s _ d l l . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / g m m _ h e l p e r / p a g e _ t a b l e _ m n g r . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / g m m _ h e l p e r / r e s o u r c e _ i n f o . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / h e l p e r s / a b o r t . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / h e l p e r s / d e b u g _ h e l p e r s . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / u t i l i t i e s / c p u i n t r i n s i c s . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / u t i l i t i e s / d e b u g _ s e t t i n g s _ r e a d e r _ c r e a t o r . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / u t i l i t i e s / i o _ f u n c t i o n s . c p p
)
target_sources ( ${ TARGET_NAME_L0 }
P R I V A T E
2021-10-23 02:54:54 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / b u i l t _ i n s / s i p _ i n i t . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / c r e a t e _ d e f e r r e d _ d e l e t e r . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / c r e a t e _ m e m o r y _ m a n a g e r _ $ { D R I V E R _ M O D E L } . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / c r e a t e _ t b x _ s o c k e t s . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / g e t _ d e v i c e s . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / s o u r c e _ l e v e l _ d e b u g g e r _ d l l . c p p
2020-08-19 18:18:18 +08:00
)
2022-11-16 19:03:40 +08:00
if ( DEFINED AUB_STREAM_PROJECT_NAME )
target_sources ( ${ TARGET_NAME_L0 }
P R I V A T E
$ { N E O _ S H A R E D _ D I R E C T O R Y } / a u b / a u b _ s t r e a m _ i n t e r f a c e . c p p
)
else ( )
target_sources ( ${ TARGET_NAME_L0 }
P R I V A T E
$ { N E O _ S H A R E D _ D I R E C T O R Y } / a u b / a u b _ s t r e a m _ i n t e r f a c e _ s t u b . c p p
)
endif ( )
2020-08-19 18:18:18 +08:00
if ( WIN32 )
2020-03-06 18:09:57 +08:00
target_sources ( ${ TARGET_NAME_L0 }
2020-08-19 18:18:18 +08:00
P R I V A T E
2022-12-08 04:57:39 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / w d d m / c r e a t e _ g d i . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / w d d m / w d d m _ c r e a t e . c p p
2022-06-15 05:24:58 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / w i n d o w s / d e b u g g e r _ l 0 _ w i n d o w s . c p p
2021-10-23 02:54:54 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / w i n d o w s / e n v i r o n m e n t _ v a r i a b l e s . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / w i n d o w s / o p t i o n s _ w i n d o w s . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / w i n d o w s / o s _ i n t e r f a c e . c p p
2020-08-19 18:18:18 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / g m m _ h e l p e r / w i n d o w s / g m m _ m e m o r y _ b a s e . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / g m m _ h e l p e r / w i n d o w s / g m m _ m e m o r y . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / o s _ i n t e r f a c e / w i n d o w s / s y s _ c a l l s . c p p
2021-05-21 07:17:57 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / o s _ i n t e r f a c e / w i n d o w s / o s _ i n t e r f a c e _ w i n . c p p
2021-09-27 21:17:26 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / o s _ i n t e r f a c e / w i n d o w s / o s _ m e m o r y _ v i r t u a l _ a l l o c . c p p
2020-08-19 18:18:18 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / o s _ i n t e r f a c e / w i n d o w s / w d d m / w d d m _ c a l l s . c p p
2020-03-06 18:09:57 +08:00
)
2022-04-19 20:11:59 +08:00
target_link_libraries ( ${ TARGET_NAME_L0 } PRIVATE
2020-08-19 18:18:18 +08:00
d x g i
)
2021-03-25 04:56:22 +08:00
if ( DEFINED L0_DLL_RC_FILE )
message ( STATUS "Setting L0 Resource Info" )
2021-05-25 03:21:25 +08:00
target_sources ( ${ TARGET_NAME_L0 } PRIVATE ${ L0_DLL_RC_FILE } )
2021-03-25 04:56:22 +08:00
endif ( )
2020-08-19 18:18:18 +08:00
else ( )
2020-03-06 18:09:57 +08:00
target_sources ( ${ TARGET_NAME_L0 }
2020-08-19 18:18:18 +08:00
P R I V A T E
$ { N E O _ S H A R E D _ D I R E C T O R Y } / o s _ i n t e r f a c e / l i n u x / s y s _ c a l l s _ l i n u x . c p p
2021-09-13 21:28:11 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / d e v i c e s $ { B R A N C H _ D I R _ S U F F I X } d e v i c e s . i n l
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / d e v i c e s $ { B R A N C H _ D I R _ S U F F I X } d e v i c e s _ a d d i t i o n a l . i n l
2021-03-03 19:47:04 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / d e v i c e s / d e v i c e s _ b a s e . i n l
2022-06-15 05:24:58 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / l i n u x / d e b u g g e r _ l 0 _ d l l _ l i n u x . c p p
2021-10-23 02:54:54 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / l i n u x / d r m _ n e o _ c r e a t e . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / l i n u x / o p t i o n s _ l i n u x . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / l i n u x / o s _ i n t e r f a c e . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / o s _ i n t e r f a c e / l i n u x / g m m _ i n t e r f a c e _ l i n u x . c p p
2020-03-06 18:09:57 +08:00
)
2021-06-05 18:09:29 +08:00
if ( NOT DISABLE_WDDM_LINUX )
target_sources ( ${ TARGET_NAME_L0 }
P R I V A T E
$ { N E O _ S H A R E D _ D I R E C T O R Y } / g m m _ h e l p e r / w i n d o w s / g m m _ m e m o r y . c p p
2022-12-08 04:57:39 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / w d d m / w d d m _ c r e a t e . c p p
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / w d d m / c r e a t e _ g d i . c p p
2021-06-05 18:09:29 +08:00
)
endif ( )
2020-08-19 18:18:18 +08:00
endif ( )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
if ( DEFINED AUB_STREAM_PROJECT_NAME )
target_sources ( ${ TARGET_NAME_L0 }
P R I V A T E
$ < T A R G E T _ O B J E C T S : a u b _ s t r e a m _ a l l _ h w >
)
endif ( )
2021-09-03 08:47:40 +08:00
if ( TARGET ${ BUILTINS_SPIRV_LIB_NAME } )
target_sources ( ${ TARGET_NAME_L0 }
P R I V A T E
$ < T A R G E T _ O B J E C T S : $ { B U I L T I N S _ S P I R V _ L I B _ N A M E } >
)
endif ( )
2020-12-08 22:36:48 +08:00
if ( NOT ${ DONT_USE_PREBUILT_KERNELS_L0 } )
2022-01-04 05:28:04 +08:00
message ( STATUS "Prebuilt kernels are linked to Level Zero." )
2020-12-08 22:36:48 +08:00
target_sources ( ${ TARGET_NAME_L0 }
P R I V A T E
2022-08-22 22:53:48 +08:00
$ < T A R G E T _ O B J E C T S : $ { B U I L T I N S _ B I N A R I E S _ S T A T E L E S S _ L I B _ N A M E } >
2020-12-08 22:36:48 +08:00
$ < T A R G E T _ O B J E C T S : $ { B U I L T I N S _ B I N A R I E S _ B I N D F U L _ L I B _ N A M E } >
$ < T A R G E T _ O B J E C T S : $ { B U I L T I N S _ B I N A R I E S _ B I N D L E S S _ L I B _ N A M E } >
)
endif ( )
2020-08-19 18:18:18 +08:00
include_directories ( ${ CMAKE_CURRENT_SOURCE_DIR } /source/inc )
target_compile_definitions ( ${ TARGET_NAME_L0 }
P U B L I C
Z E _ M A K E D L L
)
get_property ( COMPUTE_RUNTIME_DEFINITIONS
2021-11-11 03:19:29 +08:00
T A R G E T $ { N E O _ S H A R E D _ R E L E A S E _ L I B _ N A M E }
2020-08-19 18:18:18 +08:00
P R O P E R T Y C O M P I L E _ D E F I N I T I O N S
)
target_compile_definitions ( ${ TARGET_NAME_L0 }
P R I V A T E
$ { C O M P U T E _ R U N T I M E _ D E F I N I T I O N S }
)
if ( UNIX )
2020-03-06 18:09:57 +08:00
target_include_directories ( ${ TARGET_NAME_L0 } PUBLIC
2020-08-19 18:18:18 +08:00
$ { L 0 _ R O O T _ D I R } / c o r e / s o u r c e / o s _ i n t e r f a c e / l i n u x
2020-03-06 18:09:57 +08:00
)
target_include_directories ( ${ TARGET_NAME_L0 } PRIVATE
2021-03-03 19:47:04 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / d l l / d e v i c e s $ { B R A N C H _ D I R _ S U F F I X }
2020-03-06 18:09:57 +08:00
)
2020-08-19 18:18:18 +08:00
else ( )
2020-03-06 18:09:57 +08:00
target_include_directories ( ${ TARGET_NAME_L0 } PUBLIC
2020-08-19 18:18:18 +08:00
$ { L 0 _ R O O T _ D I R } / c o r e / s o u r c e / o s _ i n t e r f a c e / w i n d o w s
2020-03-06 18:09:57 +08:00
)
if ( CMAKE_SIZEOF_VOID_P EQUAL 4 )
2020-08-19 18:18:18 +08:00
set ( L0_BITNESS_SUFIX 32 )
2020-03-06 18:09:57 +08:00
elseif ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
2020-08-19 18:18:18 +08:00
set ( L0_BITNESS_SUFIX 64 )
2020-03-06 18:09:57 +08:00
endif ( )
set_target_properties ( ${ TARGET_NAME_L0 } PROPERTIES
2020-08-19 18:18:18 +08:00
D E B U G _ O U T P U T _ N A M E " $ { T A R G E T _ N A M E _ L 0 } $ { L 0 _ B I T N E S S _ S U F I X } "
R E L E A S E _ O U T P U T _ N A M E " $ { T A R G E T _ N A M E _ L 0 } $ { L 0 _ B I T N E S S _ S U F I X } "
R E L E A S E I N T E R N A L _ O U T P U T _ N A M E " $ { T A R G E T _ N A M E _ L 0 } $ { L 0 _ B I T N E S S _ S U F I X } "
O U T P U T _ N A M E " $ { T A R G E T _ N A M E _ L 0 } $ { L 0 _ B I T N E S S _ S U F I X } "
2020-03-06 18:09:57 +08:00
)
add_dependencies ( ${ TARGET_NAME_L0 } ${ GMM_TARGET_NAME } )
target_sources ( ${ TARGET_NAME_L0 } PRIVATE
2020-08-19 18:18:18 +08:00
$ { N E O _ S H A R E D _ D I R E C T O R Y } / o s _ i n t e r f a c e / w i n d o w s / g m m _ i n t e r f a c e _ w i n . c p p
2020-03-06 18:09:57 +08:00
)
2020-08-19 18:18:18 +08:00
endif ( )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
add_subdirectory_unique ( api )
add_subdirectory_unique ( source )
2020-03-19 00:56:29 +08:00
2021-11-10 18:34:06 +08:00
set ( L0_RELEASE_LIB_NAME "${TARGET_NAME_L0}_lib" )
if ( NOT NEO_SKIP_L0_UNIT_TESTS )
if ( DONT_CARE_OF_VIRTUALS )
set ( L0_MOCKABLE_LIB_NAME "${TARGET_NAME_L0}_lib" )
else ( )
2020-08-19 18:18:18 +08:00
set ( L0_MOCKABLE_LIB_NAME "${TARGET_NAME_L0}_mockable" )
2020-03-19 00:56:29 +08:00
endif ( )
2020-08-19 18:18:18 +08:00
endif ( )
2020-03-19 00:56:29 +08:00
2020-08-19 18:18:18 +08:00
function ( generate_l0_lib LIB_NAME MOCKABLE )
2020-03-19 00:56:29 +08:00
set ( L0_STATIC_LIB_NAME ${ LIB_NAME } )
add_library ( ${ LIB_NAME } OBJECT
2020-08-19 18:18:18 +08:00
$ { L 0 _ R U N T I M E _ S O U R C E S }
2020-03-19 00:56:29 +08:00
)
2020-03-22 15:52:57 +08:00
add_subdirectory ( ${ CMAKE_CURRENT_SOURCE_DIR } /core/source "${NEO_BUILD_DIR}/${LIB_NAME}/core/source" )
2021-09-13 21:28:11 +08:00
add_subdirectory ( ${ CMAKE_CURRENT_SOURCE_DIR } /experimental ${ BRANCH_DIR_SUFFIX } source "${NEO_BUILD_DIR}/${LIB_NAME}/experimental${BRANCH_DIR_SUFFIX}source" )
2020-07-09 04:10:11 +08:00
add_subdirectory ( ${ CMAKE_CURRENT_SOURCE_DIR } /experimental/source/tracing "${NEO_BUILD_DIR}/${LIB_NAME}/experimental/tracing" )
add_subdirectory ( ${ CMAKE_CURRENT_SOURCE_DIR } /tools/source "${NEO_BUILD_DIR}/${LIB_NAME}tools/source" )
2020-03-19 00:56:29 +08:00
append_sources_from_properties ( L0_RUNTIME_SOURCES
2020-08-19 18:18:18 +08:00
L 0 _ A P I
L 0 _ S O U R C E S _ L I N U X
L 0 _ S O U R C E S _ W I N D O W S
2021-06-23 22:53:34 +08:00
L 0 _ S R C S _ C A C H E _ R E S E R V A T I O N
2020-08-19 18:18:18 +08:00
L 0 _ S R C S _ C O M P I L E R _ I N T E R F A C E
2020-12-17 01:59:34 +08:00
L 0 _ S R C S _ D R I V E R
2020-08-19 18:18:18 +08:00
L 0 _ S R C S _ O C L O C _ S H A R E D
2020-03-19 00:56:29 +08:00
)
2020-06-18 23:08:55 +08:00
if ( WIN32 )
append_sources_from_properties ( L0_RUNTIME_SOURCES
2021-06-23 22:53:34 +08:00
L 0 _ S R C S _ C A C H E _ R E S E R V A T I O N _ W I N D O W S
2020-08-19 18:18:18 +08:00
L 0 _ S R C S _ D E B U G G E R _ W I N D O W S
2020-06-18 23:08:55 +08:00
)
else ( )
append_sources_from_properties ( L0_RUNTIME_SOURCES
2021-06-23 22:53:34 +08:00
L 0 _ S R C S _ C A C H E _ R E S E R V A T I O N _ L I N U X
2020-08-19 18:18:18 +08:00
L 0 _ S R C S _ D E B U G G E R _ L I N U X
2020-06-18 23:08:55 +08:00
)
endif ( )
2020-03-19 00:56:29 +08:00
target_sources ( ${ LIB_NAME } PRIVATE ${ L0_RUNTIME_SOURCES } )
if ( ${ MOCKABLE } )
2020-08-19 18:18:18 +08:00
get_property ( COMPUTE_RUNTIME_DEFINITIONS
2021-10-25 16:00:23 +08:00
T A R G E T $ { N E O _ S H A R E D _ M O C K A B L E _ L I B _ N A M E }
2020-08-19 18:18:18 +08:00
P R O P E R T Y C O M P I L E _ D E F I N I T I O N S
)
target_compile_definitions ( ${ LIB_NAME }
P U B L I C M O C K A B L E _ V I R T U A L = v i r t u a l
P U B L I C
$ { C O M P U T E _ R U N T I M E _ D E F I N I T I O N S }
)
2020-03-19 00:56:29 +08:00
else ( )
2020-08-19 18:18:18 +08:00
get_property ( COMPUTE_RUNTIME_DEFINITIONS
2021-11-11 03:19:29 +08:00
T A R G E T $ { N E O _ S H A R E D _ R E L E A S E _ L I B _ N A M E }
2020-08-19 18:18:18 +08:00
P R O P E R T Y C O M P I L E _ D E F I N I T I O N S
)
target_compile_definitions ( ${ LIB_NAME }
P U B L I C M O C K A B L E _ V I R T U A L =
P U B L I C
$ { C O M P U T E _ R U N T I M E _ D E F I N I T I O N S }
)
2020-03-19 00:56:29 +08:00
endif ( )
set_property ( TARGET ${ LIB_NAME } APPEND_STRING PROPERTY COMPILE_FLAGS ${ ASAN_FLAGS } ${ TSAN_FLAGS } )
set_target_properties ( ${ LIB_NAME } PROPERTIES FOLDER ${ TARGET_NAME_L0 } )
target_include_directories ( ${ LIB_NAME } PUBLIC
2020-08-19 18:18:18 +08:00
$ { E N G I N E _ N O D E _ D I R }
$ { N E O _ _ G M M _ I N C L U D E _ D I R }
$ { C I F _ B A S E _ D I R }
$ { I G C _ O C L _ A D A P T O R _ D I R }
$ { N E O _ _ I G C _ I N C L U D E _ D I R }
$ { K H R O N O S _ H E A D E R S _ D I R }
2020-03-19 00:56:29 +08:00
)
2021-05-30 22:42:47 +08:00
if ( WIN32 OR NOT DISABLE_WDDM_LINUX )
2020-11-11 22:40:47 +08:00
target_include_directories ( ${ LIB_NAME } PUBLIC ${ WDK_INCLUDE_PATHS } )
endif ( )
2020-03-19 00:56:29 +08:00
if ( WIN32 )
2020-08-19 18:18:18 +08:00
target_include_directories ( ${ LIB_NAME } PUBLIC
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / o s _ i n t e r f a c e / w i n d o w s
)
2020-03-19 00:56:29 +08:00
else ( )
2020-08-19 18:18:18 +08:00
target_include_directories ( ${ LIB_NAME } PUBLIC
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / o s _ i n t e r f a c e / l i n u x
)
2020-03-19 00:56:29 +08:00
endif ( )
create_project_source_tree ( ${ LIB_NAME } )
2020-08-19 18:18:18 +08:00
endfunction ( )
2020-03-19 00:56:29 +08:00
2020-08-19 18:18:18 +08:00
if ( UNIX )
2020-06-29 17:56:55 +08:00
option ( L0_INSTALL_UDEV_RULES "Install udev rules. An attempt to automatically determine the proper location will be made if UDEV_RULES_DIR is not set." OFF )
if ( L0_INSTALL_UDEV_RULES )
2020-08-19 18:18:18 +08:00
if ( DEFINED UDEV_RULES_DIR )
set ( UDEV_RULES_DIR_FOUND TRUE )
else ( )
include ( ${ CMAKE_CURRENT_SOURCE_DIR } /cmake/ ${ BRANCH_TYPE } /UdevRulesDir.cmake )
endif ( )
if ( NOT UDEV_RULES_DIR_FOUND )
message ( SEND_ERROR "udev rule install requested but no rules directory found" )
endif ( )
2020-06-29 17:56:55 +08:00
endif ( )
2020-08-19 18:18:18 +08:00
endif ( )
2020-06-29 17:56:55 +08:00
2020-08-19 18:18:18 +08:00
if ( DONT_CARE_OF_VIRTUALS )
2020-03-19 00:56:29 +08:00
generate_l0_lib ( ${ L0_RELEASE_LIB_NAME } TRUE )
2020-08-19 18:18:18 +08:00
else ( )
2020-03-19 00:56:29 +08:00
generate_l0_lib ( ${ L0_RELEASE_LIB_NAME } FALSE )
2021-11-10 18:34:06 +08:00
if ( NOT NEO_SKIP_L0_UNIT_TESTS )
2020-08-19 18:18:18 +08:00
generate_l0_lib ( ${ L0_MOCKABLE_LIB_NAME } TRUE )
2020-03-19 00:56:29 +08:00
endif ( )
2020-08-19 18:18:18 +08:00
endif ( )
2020-03-19 00:56:29 +08:00
2022-02-18 01:29:25 +08:00
append_sources_from_properties ( L0_SHARED_LIB_SRCS L0_SRCS_DLL NEO_CORE_SRCS_LINK NEO_SRCS_ENABLE_CORE )
2020-08-19 18:18:18 +08:00
target_sources ( ${ TARGET_NAME_L0 } PRIVATE $< TARGET_OBJECTS:${L0_RELEASE_LIB_NAME} > ${ L0_SHARED_LIB_SRCS } )
2020-03-19 00:56:29 +08:00
2022-04-19 20:11:59 +08:00
target_link_libraries ( ${ TARGET_NAME_L0 } PRIVATE
2021-10-23 01:11:15 +08:00
$ { N E O _ S H A R E D _ R E L E A S E _ L I B _ N A M E }
2021-10-25 16:00:23 +08:00
$ { N E O _ E X T R A _ L I B S } $ { A S A N _ L I B S } $ { T S A N _ L I B S }
2021-02-04 14:25:43 +08:00
)
2020-08-19 18:18:18 +08:00
if ( UNIX )
2022-04-19 20:11:59 +08:00
target_link_libraries ( ${ TARGET_NAME_L0 } PRIVATE ${ GMM_LINK_NAME } )
2022-04-04 19:38:00 +08:00
if ( NOT ENABLE_DYNAMIC_MEMORY_TRACKING )
set_property ( TARGET ${ TARGET_NAME_L0 }
A P P E N D _ S T R I N G P R O P E R T Y L I N K _ F L A G S " - W l , - - v e r s i o n - s c r i p t = $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c o r e / s o u r c e / d l l / l i n u x / z e . e x p o r t s "
)
endif ( )
2020-08-19 18:18:18 +08:00
endif ( )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
create_source_tree ( ${ TARGET_NAME_L0 } ${ L0_ROOT_DIR } /.. )
2020-03-19 00:56:29 +08:00
2020-08-19 18:18:18 +08:00
set_property ( TARGET ${ TARGET_NAME_L0 } APPEND_STRING PROPERTY COMPILE_FLAGS ${ ASAN_FLAGS } )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
set_target_properties ( ${ TARGET_NAME_L0 } PROPERTIES
F O L D E R $ { T A R G E T _ N A M E _ L 0 }
V E R S I O N " $ { P R O J E C T _ V E R S I O N } "
S O V E R S I O N " $ { P R O J E C T _ V E R S I O N _ M A J O R } "
)
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
if ( UNIX )
2021-02-02 22:23:14 +08:00
if ( NEO_BUILD_DEBUG_SYMBOLS_PACKAGE )
get_filename_component ( lib_file_name $< TARGET_FILE:${TARGET_NAME_L0} > NAME_WE )
set ( symbols_file_name ${ lib_file_name } .debug )
set ( debug_symbols_target_name "${STRIP_SYMBOLS_TARGET}_${TARGET_NAME_L0}" )
add_custom_target ( ${ debug_symbols_target_name }
C O M M A N D s h - c " o b j c o p y - - o n l y - k e e p - d e b u g $ { l i b _ f i l e _ n a m e } $ { s y m b o l s _ f i l e _ n a m e } "
C O M M A N D s h - c " s t r i p - g $ { l i b _ f i l e _ n a m e } "
C O M M A N D s h - c " o b j c o p y - - a d d - g n u - d e b u g l i n k = $ { s y m b o l s _ f i l e _ n a m e } $ { l i b _ f i l e _ n a m e } "
)
add_dependencies ( ${ debug_symbols_target_name } ${ TARGET_NAME_L0 } )
add_dependencies ( ${ STRIP_SYMBOLS_TARGET } ${ debug_symbols_target_name } )
set_property ( GLOBAL APPEND PROPERTY DEBUG_SYMBOL_FILES "${symbols_file_name}" )
endif ( )
2021-01-21 00:25:05 +08:00
2020-03-06 18:09:57 +08:00
install ( TARGETS ${ TARGET_NAME_L0 }
2020-08-19 18:18:18 +08:00
L I B R A R Y
2020-08-12 20:39:34 +08:00
P E R M I S S I O N S O W N E R _ R E A D O W N E R _ W R I T E O W N E R _ E X E C U T E G R O U P _ R E A D G R O U P _ E X E C U T E W O R L D _ R E A D W O R L D _ E X E C U T E
2020-03-06 18:09:57 +08:00
D E S T I N A T I O N $ { C M A K E _ I N S T A L L _ L I B D I R }
C O M P O N E N T $ { P R O J E C T _ N A M E }
N A M E L I N K _ S K I P
)
2020-08-19 18:18:18 +08:00
else ( )
2020-03-06 18:09:57 +08:00
install ( TARGETS ${ TARGET_NAME_L0 } RUNTIME
2020-08-19 18:18:18 +08:00
D E S T I N A T I O N R e l e a s e / l h 6 4
C O N F I G U R A T I O N S R e l e a s e
2020-03-06 18:09:57 +08:00
)
install ( TARGETS ${ TARGET_NAME_L0 } RUNTIME
2020-08-19 18:18:18 +08:00
D E S T I N A T I O N R e l e a s e - I n t e r n a l / l h 6 4
C O N F I G U R A T I O N S R e l e a s e I n t e r n a l
2020-03-06 18:09:57 +08:00
)
install ( TARGETS ${ TARGET_NAME_L0 } RUNTIME
2020-08-19 18:18:18 +08:00
D E S T I N A T I O N D e b u g / l h 6 4
C O N F I G U R A T I O N S D e b u g
2020-03-06 18:09:57 +08:00
)
2020-08-19 18:18:18 +08:00
endif ( )
2021-11-10 18:34:06 +08:00
if ( NOT NEO_SKIP_L0_UNIT_TESTS )
2021-10-08 16:01:28 +08:00
add_subdirectory_unique ( core/test/common )
2021-01-19 04:36:52 +08:00
add_subdirectory_unique ( core/test/unit_tests )
2021-06-30 20:21:46 +08:00
add_subdirectory_unique ( core/test/aub_tests )
2021-01-19 04:36:52 +08:00
add_subdirectory_unique ( tools/test/unit_tests )
2022-08-29 04:08:25 +08:00
2020-08-19 18:18:18 +08:00
else ( )
2021-10-08 16:01:28 +08:00
hide_subdir ( core/test/common )
2021-01-19 04:36:52 +08:00
hide_subdir ( core/test/unit_tests )
2021-06-30 20:21:46 +08:00
hide_subdir ( core/test/aub_tests )
2021-01-19 04:36:52 +08:00
hide_subdir ( tools/test/unit_tests )
hide_subdir ( experimental/test/unit_tests )
endif ( )
2021-11-10 18:34:06 +08:00
if ( NOT NEO_SKIP_L0_BLACK_BOX_TESTS )
2021-01-19 04:36:52 +08:00
add_subdirectory_unique ( core/test/black_box_tests )
add_subdirectory_unique ( tools/test/black_box_tests )
else ( )
hide_subdir ( core/test/black_box_tests )
hide_subdir ( tools/test/black_box_tests )
2020-08-19 18:18:18 +08:00
endif ( )
2021-07-07 17:05:06 +08:00
add_subdirectories ( )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
if ( UNIX AND NEO_BUILD_L0_PACKAGE )
message ( STATUS "Building LevelZero package" )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
set_property ( GLOBAL APPEND PROPERTY NEO_L0_COMPONENTS_LIST ${ PROJECT_NAME } )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
set ( L0_PACKAGE_VERSION_DEB "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}" )
set ( L0_PACKAGE_VERSION_RPM "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}" )
2020-03-06 18:09:57 +08:00
2020-08-19 18:18:18 +08:00
if ( EXISTS ${ CMAKE_CURRENT_SOURCE_DIR } /cmake/ ${ BRANCH_TYPE } /cpack.cmake )
include ( ${ CMAKE_CURRENT_SOURCE_DIR } /cmake/ ${ BRANCH_TYPE } /cpack.cmake )
2020-03-06 18:09:57 +08:00
endif ( )
2020-08-19 18:18:18 +08:00
endif ( )
2020-06-25 19:40:21 +08:00
else ( )
2020-07-14 14:18:55 +08:00
message ( STATUS "Skipping level zero" )
2020-06-25 19:40:21 +08:00
set ( BUILD_WITH_L0 FALSE PARENT_SCOPE )
2020-03-06 18:09:57 +08:00
endif ( )