@@ -59,6 +59,35 @@ if(MSVC)
5959 string (REGEX REPLACE "/W[0-9]" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} )
6060endif ()
6161
62+ # remove compilation flags that are incompatible with optimizations
63+ if (MSVC )
64+ foreach (flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG )
65+ string (REPLACE "/RTC1" "" ${flag_var} "${${flag_var} }" )
66+ endforeach ()
67+ endif ()
68+
69+ # macro to enable full optimizations for the library
70+ macro (cage_heavily_optimized)
71+ if (MSVC )
72+ foreach (flag_var CMAKE_C_FLAGS CMAKE_CXX_FLAGS )
73+ string (REGEX REPLACE "/Ob[0-9]" "" ${flag_var} "${${flag_var} }" )
74+ endforeach ()
75+ foreach (conf IN ITEMS ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE} )
76+ string (TOUPPER ${conf} conf_upper)
77+ string (REGEX REPLACE "/Ob[0-9]" "" CMAKE_C_FLAGS_${conf_upper} "${CMAKE_C_FLAGS_${conf_upper} }" )
78+ string (REGEX REPLACE "/Ob[0-9]" "" CMAKE_CXX_FLAGS_${conf_upper} "${CMAKE_CXX_FLAGS_${conf_upper} }" )
79+ set (CMAKE_C_FLAGS_${conf_upper} "${CMAKE_C_FLAGS_${conf_upper} } /Ob3 /O2" )
80+ set (CMAKE_CXX_FLAGS_${conf_upper} "${CMAKE_CXX_FLAGS_${conf_upper} } /Ob3 /O2" )
81+ endforeach (conf)
82+ else ()
83+ foreach (conf IN ITEMS ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE} )
84+ string (TOUPPER ${conf} conf_upper)
85+ set (CMAKE_C_FLAGS_${conf_upper} "${CMAKE_C_FLAGS_${conf_upper} } -O3" )
86+ set (CMAKE_CXX_FLAGS_${conf_upper} "${CMAKE_CXX_FLAGS_${conf_upper} } -O3" )
87+ endforeach (conf)
88+ endif ()
89+ endmacro (cage_heavily_optimized)
90+
6291option (cage_use_steam_sockets "include Game Networking Sockets library by Valve/Steam" OFF )
6392
6493message (STATUS "----------------------------------------------------------------" )
@@ -103,6 +132,7 @@ add_subdirectory(glm)
103132add_subdirectory (plf)
104133add_subdirectory (simplefilewatcher)
105134add_subdirectory (stb)
135+ add_subdirectory (svector)
106136add_subdirectory (unordered_dense)
107137add_subdirectory (wamr)
108138
@@ -127,9 +157,6 @@ add_dependencies(tiff jpeg-static)
127157add_dependencies (vorbis ogg)
128158
129159function (external_target_properties target )
130- if (NOT TARGET ${target} )
131- return ()
132- endif ()
133160 set_target_properties (${target} PROPERTIES FOLDER cage/externals)
134161 get_target_property (imported ${target} IMPORTED )
135162 get_target_property (target_type ${target} TYPE )
@@ -152,8 +179,12 @@ function(external_target_properties target)
152179 target_compile_options (${target} PRIVATE "-w" )
153180 endif ()
154181endfunction ()
155-
156182cage_list_all_targets(all_targets ${CMAKE_CURRENT_LIST_DIR} )
157183foreach (target IN ITEMS ${all_targets} )
158184 external_target_properties(${target} )
159185endforeach (target )
186+
187+ cage_list_all_targets(all_targets "${CMAKE_CURRENT_LIST_DIR} /dawn" )
188+ foreach (target IN ITEMS ${all_targets} )
189+ set_target_properties (${target} PROPERTIES FOLDER cage/externals/dawn)
190+ endforeach (target )
0 commit comments