blob: e4c5c13e25da5d95b2ddd588c34ca7cebc77fd8b (
plain)
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
if(PLATFORM_WIN32 OR PLATFORM_UNIVERSAL_WINDOWS)
function(copy_required_dlls TARGET_NAME)
set(ENGINE_DLLS
GraphicsEngineD3D11-shared
)
if(D3D12_SUPPORTED)
list(APPEND ENGINE_DLLS GraphicsEngineD3D12-shared )
endif()
if(GL_SUPPORTED)
list(APPEND ENGINE_DLLS GraphicsEngineOpenGL-shared)
endif()
if(VULKAN_SUPPORTED)
list(APPEND ENGINE_DLLS GraphicsEngineVk-shared)
endif()
foreach(DLL ${ENGINE_DLLS})
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"\"$<TARGET_FILE:${DLL}>\""
"\"$<TARGET_FILE_DIR:${TARGET_NAME}>\"")
endforeach(DLL)
# Copy D3Dcompiler_47.dll
if(MSVC)
if(WIN64)
set(D3D_COMPILER_PATH "\"$(VC_ExecutablePath_x64_x64)\\D3Dcompiler_47.dll\"")
else()
set(D3D_COMPILER_PATH "\"$(VC_ExecutablePath_x86_x86)\\D3Dcompiler_47.dll\"")
endif()
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${D3D_COMPILER_PATH}
"\"$<TARGET_FILE_DIR:${TARGET_NAME}>\"")
endif()
endfunction()
# Set dll output name by adding _{32|64}{r|d} suffix
function(set_dll_output_name TARGET_NAME OUTPUT_NAME_WITHOUT_SUFFIX)
foreach(DBG_CONFIG ${DEBUG_CONFIGURATIONS})
set_target_properties(${TARGET_NAME} PROPERTIES
OUTPUT_NAME_${DBG_CONFIG} ${OUTPUT_NAME_WITHOUT_SUFFIX}${DLL_DBG_SUFFIX}
)
endforeach()
foreach(REL_CONFIG ${RELEASE_CONFIGURATIONS})
set_target_properties(${TARGET_NAME} PROPERTIES
OUTPUT_NAME_${REL_CONFIG} ${OUTPUT_NAME_WITHOUT_SUFFIX}${DLL_REL_SUFFIX}
)
endforeach()
endfunction()
endif(PLATFORM_WIN32 OR PLATFORM_UNIVERSAL_WINDOWS)
function(set_common_target_properties TARGET)
if(COMMAND custom_configure_target)
custom_configure_target(${TARGET})
if(TARGET_CONFIGURATION_COMPLETE)
return()
endif()
endif()
get_target_property(TARGET_TYPE ${TARGET} TYPE)
if(MSVC)
# For msvc, enable link-time code generation for release builds (I was not able to
# find any way to set these settings through interface library BuildSettings)
if(TARGET_TYPE STREQUAL STATIC_LIBRARY)
foreach(REL_CONFIG ${RELEASE_CONFIGURATIONS})
set_target_properties(${TARGET} PROPERTIES
STATIC_LIBRARY_FLAGS_${REL_CONFIG} /LTCG
)
endforeach()
else()
foreach(REL_CONFIG ${RELEASE_CONFIGURATIONS})
set_target_properties(${TARGET} PROPERTIES
LINK_FLAGS_${REL_CONFIG} "/LTCG /OPT:REF /INCREMENTAL:NO"
)
endforeach()
if(PLATFORM_UNIVERSAL_WINDOWS)
# On UWP, disable incremental link to avoid linker warnings
foreach(DBG_CONFIG ${DEBUG_CONFIGURATIONS})
set_target_properties(${TARGET} PROPERTIES
LINK_FLAGS_${DBG_CONFIG} "/INCREMENTAL:NO"
)
endforeach()
endif()
endif()
endif()
if(PLATFORM_ANDROID)
# target_compile_features(BuildSettings INTERFACE cxx_std_11) generates an error in gradle build on Android
# It is crucial to set CXX_STANDARD flag to only affect c++ files and avoid failures compiling c-files:
# error: invalid argument '-std=c++11' not allowed with 'C/ObjC'
set_target_properties(${TARGET} PROPERTIES CXX_STANDARD 11)
endif()
if(PLATFORM_IOS)
# Feature detection fails for iOS build, so we have to set CXX_STANDARD
# as a workaround
set_target_properties(${TARGET} PROPERTIES CXX_STANDARD 11)
set_target_properties(${TARGET} PROPERTIES
XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET 10.0
)
endif()
endfunction()
|