mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-12 14:18:31 +09:00
[Chore|Perf] (CMakeLists): Optimize compile/link options.
This commit is contained in:
+42
-2
@@ -2,6 +2,19 @@ cmake_minimum_required(VERSION 3.22.1)
|
|||||||
|
|
||||||
project("MobileGL")
|
project("MobileGL")
|
||||||
|
|
||||||
|
option(MOBILEGL_FORCE_RELEASE_OPT "Enable Release optimization flags in Debug build" OFF)
|
||||||
|
|
||||||
|
if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug" OR MOBILEGL_FORCE_RELEASE_OPT)
|
||||||
|
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
|
||||||
|
add_compile_options(-O3 -ffunction-sections -fdata-sections -flto=thin)
|
||||||
|
add_link_options(-flto=thin -Wl,--gc-sections)
|
||||||
|
elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||||
|
add_compile_options(/O2 /GL)
|
||||||
|
add_link_options(/LTCG)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
enable_language(CXX)
|
enable_language(CXX)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 23)
|
set(CMAKE_CXX_STANDARD 23)
|
||||||
@@ -16,8 +29,19 @@ if (MSVC)
|
|||||||
set(CMAKE_CXX_FLAGS "/EHsc ${CMAKE_CXX_FLAGS}")
|
set(CMAKE_CXX_FLAGS "/EHsc ${CMAKE_CXX_FLAGS}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(SPIRV_CROSS_STATIC ON CACHE BOOL "Build SPIRV-Cross as static library")
|
set(ENABLE_GLSLANG_BINARIES OFF CACHE BOOL "Disable glslangValidator/spirv-remap" FORCE)
|
||||||
set(SPIRV_CROSS_CLI OFF CACHE BOOL "Build SPIRV-Cross command line tool")
|
set(ENABLE_SPVREMAPPER OFF CACHE BOOL "Disable SPVRemapper" FORCE)
|
||||||
|
set(ENABLE_OPT OFF CACHE BOOL "Disable SPIRV-Tools opt usage in glslang" FORCE)
|
||||||
|
set(BUILD_EXTERNAL OFF CACHE BOOL "Don't build external deps in External/" FORCE)
|
||||||
|
set(ENABLE_GLSLANG_INSTALL OFF CACHE BOOL "Don't install glslang targets" FORCE)
|
||||||
|
|
||||||
|
set(SPIRV_CROSS_C_API ON CACHE BOOL "Enable C API" FORCE)
|
||||||
|
set(SPIRV_CROSS_ENABLE_GLSL ON CACHE BOOL "Enable GLSL backend" FORCE)
|
||||||
|
set(SPIRV_CROSS_ENABLE_HLSL OFF CACHE BOOL "Disable HLSL backend" FORCE)
|
||||||
|
set(SPIRV_CROSS_ENABLE_MSL OFF CACHE BOOL "Disable MSL backend" FORCE)
|
||||||
|
set(SPIRV_CROSS_ENABLE_CPP OFF CACHE BOOL "Disable C++ API target" FORCE)
|
||||||
|
set(SPIRV_CROSS_CLI OFF CACHE BOOL "Disable CLI binary" FORCE)
|
||||||
|
set(SPIRV_CROSS_STATIC ON CACHE BOOL "Prefer static libs" FORCE)
|
||||||
|
|
||||||
# add_subdirectory(3rdparty/DiligentCore)
|
# add_subdirectory(3rdparty/DiligentCore)
|
||||||
add_subdirectory(3rdparty/glslang)
|
add_subdirectory(3rdparty/glslang)
|
||||||
@@ -115,11 +139,19 @@ add_library(${CMAKE_PROJECT_NAME} SHARED
|
|||||||
${SOURCE_FILES}
|
${SOURCE_FILES}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES
|
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES
|
||||||
C_VISIBILITY_PRESET default
|
C_VISIBILITY_PRESET default
|
||||||
CXX_VISIBILITY_PRESET default
|
CXX_VISIBILITY_PRESET default
|
||||||
VISIBILITY_INLINES_HIDDEN OFF
|
VISIBILITY_INLINES_HIDDEN OFF
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
|
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES
|
||||||
|
C_VISIBILITY_PRESET hidden
|
||||||
|
CXX_VISIBILITY_PRESET hidden
|
||||||
|
VISIBILITY_INLINES_HIDDEN ON
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC
|
target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC
|
||||||
${CMAKE_SOURCE_DIR}/include
|
${CMAKE_SOURCE_DIR}/include
|
||||||
@@ -143,11 +175,19 @@ add_library(${CMAKE_PROJECT_NAME}_s STATIC
|
|||||||
${SOURCE_FILES}
|
${SOURCE_FILES}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
set_target_properties(${CMAKE_PROJECT_NAME}_s PROPERTIES
|
||||||
|
C_VISIBILITY_PRESET default
|
||||||
|
CXX_VISIBILITY_PRESET default
|
||||||
|
VISIBILITY_INLINES_HIDDEN OFF
|
||||||
|
)
|
||||||
|
else()
|
||||||
set_target_properties(${CMAKE_PROJECT_NAME}_s PROPERTIES
|
set_target_properties(${CMAKE_PROJECT_NAME}_s PROPERTIES
|
||||||
C_VISIBILITY_PRESET hidden
|
C_VISIBILITY_PRESET hidden
|
||||||
CXX_VISIBILITY_PRESET hidden
|
CXX_VISIBILITY_PRESET hidden
|
||||||
VISIBILITY_INLINES_HIDDEN ON
|
VISIBILITY_INLINES_HIDDEN ON
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_include_directories(${CMAKE_PROJECT_NAME}_s PUBLIC
|
target_include_directories(${CMAKE_PROJECT_NAME}_s PUBLIC
|
||||||
${CMAKE_SOURCE_DIR}/include
|
${CMAKE_SOURCE_DIR}/include
|
||||||
|
|||||||
Reference in New Issue
Block a user