forked from intel/compute-runtime
-
Notifications
You must be signed in to change notification settings - Fork 0
/
common_macros.cmake
93 lines (83 loc) · 3.08 KB
/
common_macros.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#
# Copyright (C) 2018-2020 Intel Corporation
#
# SPDX-License-Identifier: MIT
#
macro(hide_subdir subdir)
file(RELATIVE_PATH subdir_relative ${NEO_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${subdir})
set(${subdir_relative}_hidden} TRUE)
endmacro()
macro(add_subdirectory_unique subdir)
file(RELATIVE_PATH subdir_relative ${NEO_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${subdir})
if(NOT ${subdir_relative}_hidden})
add_subdirectory(${subdir} ${ARGN})
endif()
hide_subdir(${subdir})
endmacro()
macro(add_subdirectories)
file(GLOB subdirectories RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*)
foreach(subdir ${subdirectories})
file(RELATIVE_PATH subdir_relative ${NEO_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${subdir})
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${subdir}/CMakeLists.txt AND NOT ${subdir_relative}_hidden})
add_subdirectory(${subdir})
endif()
endforeach()
endmacro()
macro(create_project_source_tree target)
if(MSVC)
set(prefixes ${CMAKE_CURRENT_SOURCE_DIR} ${ARGN} ${NEO_SOURCE_DIR})
get_target_property(source_list ${target} SOURCES)
foreach(source_file ${source_list})
if(NOT ${source_file} MATCHES "\<*\>")
string(TOLOWER ${source_file} source_file_relative)
foreach(prefix ${prefixes})
if(source_file_relative)
string(TOLOWER ${prefix} prefix)
string(REPLACE "${prefix}" "" source_file_relative ${source_file_relative})
endif()
endforeach()
get_filename_component(source_path_relative ${source_file_relative} PATH)
if(source_path_relative)
string(REPLACE "/" "\\" source_path_relative ${source_path_relative})
endif()
source_group("Source Files\\${source_path_relative}" FILES ${source_file})
endif()
endforeach()
endif()
endmacro()
macro(create_project_source_tree_with_exports target exports_filename)
create_project_source_tree(${target} ${ARGN})
if(MSVC)
if(NOT "${exports_filename}" STREQUAL "")
source_group("exports" FILES "${exports_filename}")
endif()
endif()
endmacro()
macro(apply_macro_for_each_gen type)
set(given_type ${type})
foreach(GEN_TYPE ${ALL_GEN_TYPES})
string(TOLOWER ${GEN_TYPE} GEN_TYPE_LOWER)
GEN_CONTAINS_PLATFORMS(${given_type} ${GEN_TYPE} GENX_HAS_PLATFORMS)
if(${GENX_HAS_PLATFORMS})
macro_for_each_gen()
endif()
endforeach()
endmacro()
macro(apply_macro_for_each_platform)
GET_PLATFORMS_FOR_GEN(${given_type} ${GEN_TYPE} TESTED_GENX_PLATFORMS)
foreach(PLATFORM_IT ${TESTED_GENX_PLATFORMS})
string(TOLOWER ${PLATFORM_IT} PLATFORM_IT_LOWER)
macro_for_each_platform()
endforeach()
endmacro()
macro(get_family_name_with_type gen_type platform_type)
string(REPLACE "GEN" "Gen" gen_type_capitalized ${gen_type})
string(TOLOWER ${platform_type} platform_type_lower)
set(family_name_with_type ${gen_type_capitalized}${platform_type_lower})
endmacro()
macro(append_sources_from_properties list_name)
foreach(name ${ARGN})
get_property(${name} GLOBAL PROPERTY ${name})
list(APPEND ${list_name} ${${name}})
endforeach()
endmacro()