2020-03-06 18:09:57 +08:00
#
# Copyright (C) 2019-2020 Intel Corporation
#
# 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 )
2020-03-06 18:09:57 +08:00
set ( TARGET_NAME_L0 ze_intel_gpu )
# 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
2020-07-29 17:45:54 +08:00
" $ { L E V E L _ Z E R O _ R O O T _ t m p } / i n c l u d e / * . h "
2020-03-06 18:09:57 +08:00
)
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}" )
endif ( )
endif ( )
2020-03-19 01:43:17 +08:00
project ( level-zero-gpu VERSION ${ NEO_L0_VERSION_MAJOR } . ${ NEO_L0_VERSION_MINOR } . ${ NEO_VERSION_BUILD } )
2020-08-11 02:55:29 +08:00
message ( STATUS "Level Zero driver version: ${PROJECT_VERSION}" )
2020-03-19 01:43:17 +08:00
2020-03-06 18:09:57 +08:00
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" )
2020-07-14 14:18:55 +08:00
message ( STATUS "Skipping level zero" )
set ( BUILD_WITH_L0 FALSE PARENT_SCOPE )
2020-03-06 18:09:57 +08:00
return ( )
endif ( )
add_definitions ( -DL0_PROJECT_VERSION_MAJOR= "${PROJECT_VERSION_MAJOR}" )
add_definitions ( -DL0_PROJECT_VERSION_MINOR= "${PROJECT_VERSION_MINOR}" )
2020-07-29 17:45:54 +08:00
add_definitions ( -DL0_PROJECT_VERSION_PATCH= "${PROJECT_VERSION_PATCH}" )
2020-04-30 14:30:53 +08:00
add_definitions ( -DNEO_VERSION_BUILD= "${NEO_VERSION_BUILD}" )
2020-03-06 18:09:57 +08:00
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 > )
endif ( )
endif ( )
2020-05-18 23:51:09 +08:00
if ( UNIX )
# Xml Library
find_package ( LibXml2 )
if ( PC_LIBXML_FOUND )
include_directories ( SYSTEM ${ LIBXML2_INCLUDE_DIR } )
message ( STATUS "LibXml2 Library headers directory: ${LIBXML2_INCLUDE_DIR}" )
else ( )
message ( STATUS "LibXml2 Library headers not available. Building without." )
endif ( )
endif ( )
2020-03-06 18:09:57 +08:00
if ( UNIX )
# Load GNUInstallDirs to determine install targets for Linux packages
include ( GNUInstallDirs )
endif ( )
if ( NOT MSVC )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -fPIC" )
endif ( )
set ( L0_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}" )
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 )
if ( SKIP_UNIT_TESTS )
set ( SKIP_L0_UNIT_TESTS TRUE )
endif ( )
# 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 } )
if ( DEFINED NEO__IGC_TARGETS )
if ( WIN32 )
add_dependencies ( copy_third_party_files copy_compiler_files )
else ( )
add_dependencies ( copy_third_party_files ${ NEO__IGC_TARGETS } )
foreach ( TARGET_tmp ${ NEO__IGC_TARGETS } )
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 : $ { 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 } / "
)
endif ( )
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 : $ { 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 } / "
)
endforeach ( )
endif ( )
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 }
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 " $ { I G C _ D I R } / l i b " " $ { 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 " $ { I G C _ D I R } / l i b "
)
endif ( )
endif ( )
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 } / "
)
endif ( )
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 } / "
)
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 }
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 " $ { G M M _ D I R } / l i b " " $ { 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 " $ { G M M _ D I R } / l i b "
)
endif ( )
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 )
2020-04-10 19:24:47 +08:00
if ( CUSTOM_L0_INCLUDE_PATH )
include_directories ( ${ CUSTOM_L0_INCLUDE_PATH } /../ )
else ( )
include_directories ( ${ LevelZero_INCLUDE_DIRS } )
endif ( )
2020-03-06 18:09:57 +08:00
include_directories ( ${ NEO_SOURCE_DIR } /level_zero/api/experimental ${ BRANCH_DIR_SUFFIX } )
include_directories ( ${ NEO_SOURCE_DIR } /shared/source/compiler_interface/compiler_options ${ BRANCH_DIR_SUFFIX } )
include_directories ( ${ CMAKE_CURRENT_SOURCE_DIR } /core/source/hw_helpers ${ BRANCH_DIR_SUFFIX } )
2020-03-19 13:21:57 +08:00
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 } )
2020-03-06 18:09:57 +08:00
include_directories ( "${CMAKE_CURRENT_SOURCE_DIR}" )
include_directories ( ddi ${ BRANCH_DIR_SUFFIX } )
include_directories ( tools/source )
include_directories ( experimental ${ BRANCH_DIR_SUFFIX } /source )
2020-07-09 04:10:11 +08:00
include_directories ( experimental/source/tracing )
2020-03-06 18:09:57 +08:00
# Create our shared library/DLL
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
2020-03-11 21:03:26 +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
2020-03-27 23:32:07 +08:00
$ { 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
2020-03-06 18:09:57 +08:00
)
target_sources ( ${ 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 I R } / o p e n c l / s o u r c e / a u b / a u b _ s t r e a m _ i n t e r f a c e . c p p
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / 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
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / 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
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / d l l / c r e a t e _ t b x _ s o c k e t s . c p p
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / d l l / g e t _ d e v i c e s . c p p
2020-04-02 21:03:38 +08:00
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / 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-03-06 18:09:57 +08:00
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / h e l p e r s / b u i l t _ i n s _ h e l p e r . c p p
)
if ( WIN32 )
target_sources ( ${ TARGET_NAME_L0 }
P R I V A T E
2020-03-11 21:03:26 +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
$ { 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 . 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 / w d d m / w d d m _ c a l l s . 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 / 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 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
2020-03-06 18:09:57 +08:00
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / 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
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / d l l / w i n d o w s / o s _ i n t e r f a c e . c p p
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / d l l / w i n d o w s / c r e a t e _ w d d m _ m e m o r y _ m a n a g e r . c p p
)
target_link_libraries ( ${ TARGET_NAME_L0 }
d x g i
w s 2 _ 3 2
)
else ( )
target_sources ( ${ TARGET_NAME_L0 }
P R I V A T E
2020-03-11 21:03: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 / l i n u x / s y s _ c a l l s _ l i n u x . c p p
2020-03-06 18:09:57 +08:00
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / d l l / l i n u x / a l l o c a t o r _ h e l p e r . c p p
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / d l l / l i n u x / c r e a t e _ d r m _ m e m o r y _ m a n a g e r . c p p
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / d l l / l i n u x / 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
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / d l l / l i n u x / d e v i c e s / d e v i c e s _ b a s e . i n l
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / d l l / l i n u x / o p t i o n s _ l i n u x . c p p
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / d l l / l i n u x / o s _ i n t e r f a c e . c p p
)
endif ( )
2020-07-16 03:58:51 +08:00
if ( DEFINED AUB_STREAM_PROJECT_NAME )
2020-03-06 18:09:57 +08:00
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 ( )
target_sources ( ${ TARGET_NAME_L0 }
P R I V A T E
2020-06-05 15:21:28 +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 _ L I B _ N A M E } >
2020-03-06 18:09:57 +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
T A R G E T $ { N E O _ R E L E A S E _ L I B _ N A M E }
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 )
target_sources ( ${ TARGET_NAME_L0 }
P R I V A T E
2020-03-11 21:03: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 / 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
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / d l l / l i n u x / d r m _ n e o _ c r e a t e . c p p
)
set ( OS_SPECIFIC_LIBS dl pthread rt )
target_include_directories ( ${ TARGET_NAME_L0 } PUBLIC
$ { 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
$ { I 9 1 5 _ I N C L U D E S _ D I R }
)
target_include_directories ( ${ TARGET_NAME_L0 } PRIVATE
$ { C O M P U T E _ R U N T I M E _ D I R } / o p e n c l / s o u r c e / d l l / l i n u x / d e v i c e s $ { B R A N C H _ D I R _ S U F F I X }
)
else ( )
set ( OS_SPECIFIC_LIBS "" )
target_include_directories ( ${ TARGET_NAME_L0 } PUBLIC
$ { 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
)
if ( CMAKE_SIZEOF_VOID_P EQUAL 4 )
set ( L0_BITNESS_SUFIX 32 )
elseif ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
set ( L0_BITNESS_SUFIX 64 )
endif ( )
set_target_properties ( ${ TARGET_NAME_L0 } PROPERTIES
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 } "
)
add_dependencies ( ${ TARGET_NAME_L0 } ${ GMM_TARGET_NAME } )
target_sources ( ${ TARGET_NAME_L0 } PRIVATE
2020-03-11 21:03: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 / 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
)
endif ( )
2020-03-19 00:56:29 +08:00
add_subdirectory_unique ( api )
add_subdirectory_unique ( source )
if ( DONT_CARE_OF_VIRTUALS )
set ( L0_RELEASE_LIB_NAME "${TARGET_NAME_L0}_lib" )
set ( L0_MOCKABLE_LIB_NAME "${TARGET_NAME_L0}_lib" )
else ( )
set ( L0_RELEASE_LIB_NAME "${TARGET_NAME_L0}_lib" )
if ( NOT SKIP_UNIT_TESTS )
set ( L0_MOCKABLE_LIB_NAME "${TARGET_NAME_L0}_mockable" )
endif ( )
endif ( )
function ( generate_l0_lib LIB_NAME MOCKABLE )
set ( L0_STATIC_LIB_NAME ${ LIB_NAME } )
add_library ( ${ LIB_NAME } OBJECT
$ { L 0 _ R U N T I M E _ S O U R C E S }
)
2020-03-22 15:52:57 +08:00
add_subdirectory ( ${ CMAKE_CURRENT_SOURCE_DIR } /core/source "${NEO_BUILD_DIR}/${LIB_NAME}/core/source" )
2020-07-09 04:10:11 +08:00
add_subdirectory ( ${ CMAKE_CURRENT_SOURCE_DIR } /experimental ${ BRANCH_DIR_SUFFIX } /source "${NEO_BUILD_DIR}/${LIB_NAME}/experimental${BRANCH_DIR_SUFFIX}/source" )
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
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
L 0 _ S R C S _ C O M P I L E R _ I N T E R F A C E
L 0 _ S R C S _ D E B U G G E R
L 0 _ S R C S _ O C L O C _ S H A R E D
)
2020-06-18 23:08:55 +08:00
if ( WIN32 )
append_sources_from_properties ( L0_RUNTIME_SOURCES
L 0 _ S R C S _ D E B U G G E R _ W I N D O W S
)
else ( )
append_sources_from_properties ( L0_RUNTIME_SOURCES
L 0 _ S R C S _ D E B U G G E R _ L I N U X
)
endif ( )
2020-03-19 00:56:29 +08:00
target_sources ( ${ LIB_NAME } PRIVATE ${ L0_RUNTIME_SOURCES } )
if ( ${ MOCKABLE } )
get_property ( COMPUTE_RUNTIME_DEFINITIONS
T A R G E T $ { N E O _ M O C K A B L E _ L I B _ N A M E }
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
2020-04-14 15:57:59 +08:00
P U B L I C
2020-03-19 00:56:29 +08:00
$ { 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 }
)
else ( )
get_property ( COMPUTE_RUNTIME_DEFINITIONS
T A R G E T $ { N E O _ R E L E A S E _ L I B _ N A M E }
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 =
2020-04-14 15:57:59 +08:00
P U B L I C
2020-03-19 00:56:29 +08:00
$ { 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 }
)
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
$ { 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 }
)
if ( WIN32 )
target_include_directories ( ${ LIB_NAME } PUBLIC
$ { W D K _ I N C L U D E _ P A T H S }
$ { 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
)
else ( )
target_include_directories ( ${ LIB_NAME } PUBLIC
$ { I 9 1 5 _ I N C L U D E S _ D I R }
$ { 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
)
endif ( )
create_project_source_tree ( ${ LIB_NAME } )
endfunction ( )
2020-06-29 17:56:55 +08:00
if ( UNIX )
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 )
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 ( )
endif ( )
endif ( )
2020-03-19 00:56:29 +08:00
if ( DONT_CARE_OF_VIRTUALS )
generate_l0_lib ( ${ L0_RELEASE_LIB_NAME } TRUE )
else ( )
generate_l0_lib ( ${ L0_RELEASE_LIB_NAME } FALSE )
if ( NOT SKIP_UNIT_TESTS )
generate_l0_lib ( ${ L0_MOCKABLE_LIB_NAME } TRUE )
endif ( )
endif ( )
2020-03-20 20:38:24 +08:00
append_sources_from_properties ( L0_SHARED_LIB_SRCS L0_SRCS_DLL NEO_CORE_SRCS_LINK )
target_sources ( ${ TARGET_NAME_L0 } PRIVATE $< TARGET_OBJECTS:${L0_RELEASE_LIB_NAME} > ${ L0_SHARED_LIB_SRCS } )
2020-03-19 00:56:29 +08:00
2020-03-06 18:09:57 +08:00
target_link_libraries ( ${ TARGET_NAME_L0 }
2020-03-11 21:03:26 +08:00
$ { N E O _ S T A T I C A L L Y _ L I N K E D _ L I B R A R I E S }
2020-05-21 05:01:05 +08:00
$ { O S _ S P E C I F I C _ L I B S } $ { A S A N _ L I B S } $ { T S A N _ L I B S }
2020-03-06 18:09:57 +08:00
)
2020-03-19 00:56:29 +08:00
2020-03-06 18:09:57 +08:00
if ( UNIX )
target_link_libraries ( ${ TARGET_NAME_L0 } ${ GMM_LINK_NAME } )
2020-03-21 09:44:59 +08:00
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 "
)
2020-03-06 18:09:57 +08:00
endif ( )
2020-03-19 00:56:29 +08:00
create_source_tree ( ${ TARGET_NAME_L0 } ${ L0_ROOT_DIR } /.. )
2020-03-06 18:09:57 +08:00
set_property ( TARGET ${ TARGET_NAME_L0 } APPEND_STRING PROPERTY COMPILE_FLAGS ${ ASAN_FLAGS } )
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 }
2020-08-11 02:55:29 +08:00
V E R S I O N " $ { P R O J E C T _ V E R S I O N } "
2020-07-29 17:45:54 +08:00
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
)
if ( UNIX )
install ( TARGETS ${ TARGET_NAME_L0 }
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
)
else ( )
install ( TARGETS ${ TARGET_NAME_L0 } RUNTIME
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
)
install ( TARGETS ${ TARGET_NAME_L0 } RUNTIME
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
)
install ( TARGETS ${ TARGET_NAME_L0 } RUNTIME
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
)
endif ( )
2020-03-16 15:03:19 +08:00
if ( NOT SKIP_L0_UNIT_TESTS )
add_subdirectory_unique ( core/test )
2020-04-20 20:57:57 +08:00
add_subdirectory_unique ( tools/test )
2020-03-16 15:03:19 +08:00
else ( )
hide_subdir ( core/test )
2020-04-20 20:57:57 +08:00
hide_subdir ( tools/test )
2020-03-16 15:03:19 +08:00
endif ( )
2020-03-06 18:09:57 +08:00
add_subdirectories ( )
2020-03-19 01:43:17 +08:00
if ( UNIX AND NEO_BUILD_L0_PACKAGE )
2020-03-06 18:09:57 +08:00
message ( STATUS "Building LevelZero package" )
2020-03-19 01:43:17 +08:00
set_property ( GLOBAL APPEND PROPERTY NEO_L0_COMPONENTS_LIST ${ PROJECT_NAME } )
2020-03-06 18:09:57 +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}" )
if ( EXISTS ${ CMAKE_CURRENT_SOURCE_DIR } /cmake/ ${ BRANCH_TYPE } /cpack.cmake )
include ( ${ CMAKE_CURRENT_SOURCE_DIR } /cmake/ ${ BRANCH_TYPE } /cpack.cmake )
endif ( )
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 ( )