Skip to content

Commit 4244eac

Browse files
committed
tweak optimizations
1 parent e342d0b commit 4244eac

File tree

17 files changed

+73
-9
lines changed

17 files changed

+73
-9
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,6 @@
121121
[submodule "externals/glslang/glslang"]
122122
path = externals/glslang/glslang
123123
url = https://github.com/KhronosGroup/glslang.git
124+
[submodule "externals/svector/svector"]
125+
path = externals/svector/svector
126+
url = https://github.com/martinus/svector.git

cmake/cage_build_configuration.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ macro(cage_build_configuration)
3030
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
3131
set(CMAKE_INSTALL_RPATH "\$ORIGIN")
3232

33-
if(WIN32)
33+
if(MSVC)
3434
# enable UTF-8
3535
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8")
3636
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")

externals/CMakeLists.txt

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,35 @@ if(MSVC)
5959
string(REGEX REPLACE "/W[0-9]" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
6060
endif()
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+
6291
option(cage_use_steam_sockets "include Game Networking Sockets library by Valve/Steam" OFF)
6392

6493
message(STATUS "----------------------------------------------------------------")
@@ -103,6 +132,7 @@ add_subdirectory(glm)
103132
add_subdirectory(plf)
104133
add_subdirectory(simplefilewatcher)
105134
add_subdirectory(stb)
135+
add_subdirectory(svector)
106136
add_subdirectory(unordered_dense)
107137
add_subdirectory(wamr)
108138

@@ -127,9 +157,6 @@ add_dependencies(tiff jpeg-static)
127157
add_dependencies(vorbis ogg)
128158

129159
function(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()
154181
endfunction()
155-
156182
cage_list_all_targets(all_targets ${CMAKE_CURRENT_LIST_DIR})
157183
foreach(target IN ITEMS ${all_targets})
158184
external_target_properties(${target})
159185
endforeach(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)

externals/assimp/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ message(STATUS "----------------------------------------------------------------
22
message(STATUS "assimp")
33
message(STATUS "----------------------------------------------------------------")
44

5+
cage_heavily_optimized()
6+
57
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "BUILD_SHARED_LIBS")
68
set(ASSIMP_INSTALL OFF CACHE INTERNAL "Disable this if you want to use assimp as a submodule.")
79
set(ASSIMP_BUILD_ZLIB OFF CACHE INTERNAL "Build your own zlib")

externals/avir/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ message(STATUS "----------------------------------------------------------------
22
message(STATUS "avir")
33
message(STATUS "----------------------------------------------------------------")
44

5+
cage_heavily_optimized()
6+
57
add_library(avir STATIC avir/avir.h avir/avir_dil.h avir/avir_float4_sse.h avir/avir_float8_avx.h avir/lancir.h dummy.cpp)
68

79
target_include_directories(avir PUBLIC .)

externals/bc7enc_rdo/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ message(STATUS "----------------------------------------------------------------
22
message(STATUS "bc7enc_rdo")
33
message(STATUS "----------------------------------------------------------------")
44

5+
cage_heavily_optimized()
6+
57
add_library(bc7enc_rdo STATIC
68
bc7enc_rdo/bc7decomp.cpp bc7enc_rdo/bc7decomp.h
79
bc7enc_rdo/bc7enc.cpp bc7enc_rdo/bc7enc.h

externals/dawn/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ message(STATUS "----------------------------------------------------------------
22
message(STATUS "dawn")
33
message(STATUS "----------------------------------------------------------------")
44

5+
cage_heavily_optimized()
6+
57
set(CMAKE_DISABLE_FIND_PACKAGE_Python3 OFF)
68

79
if(APPLE)
@@ -67,6 +69,7 @@ target_include_directories(cage_dawn INTERFACE $<TARGET_PROPERTY:webgpu_dawn,INT
6769
add_dependencies(cage_dawn webgpu_dawn webgpu_glfw)
6870
add_library(cage::dawn ALIAS cage_dawn)
6971

72+
7073
# protobuf
7174
if(cage_use_steam_sockets)
7275
set(filename "${CAGE_EXTERNALS_MODULE_PATH}/FindProtobuf.cmake")

externals/jpeg/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ message(STATUS "----------------------------------------------------------------
22
message(STATUS "jpeg")
33
message(STATUS "----------------------------------------------------------------")
44

5+
cage_heavily_optimized()
6+
57
include_directories("${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/jpeg")
68

79
if(CMAKE_C_COMPILER_TARGET MATCHES "x86_64" AND CMAKE_SIZEOF_VOID_P EQUAL 8)

externals/msdfgen/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ message(STATUS "----------------------------------------------------------------
22
message(STATUS "msdfgen")
33
message(STATUS "----------------------------------------------------------------")
44

5+
cage_heavily_optimized()
6+
57
file(GLOB_RECURSE msdfgen-sources "msdfgen/msdfgen.h" "msdfgen/core/*" "msdfgen/ext/import-font.*")
68
add_library(lib_msdfgen ${msdfgen-sources})
79
target_compile_definitions(lib_msdfgen PUBLIC MSDFGEN_USE_CPP11 MSDFGEN_PUBLIC=)

externals/png/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ message(STATUS "----------------------------------------------------------------
22
message(STATUS "png")
33
message(STATUS "----------------------------------------------------------------")
44

5+
cage_heavily_optimized()
6+
57
unset(CMAKE_C_STANDARD)
68
unset(CMAKE_CXX_STANDARD)
79

0 commit comments

Comments
 (0)