diff --git a/CMakeLists.txt b/CMakeLists.txt index fb6af08..5e352f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,11 @@ if (WIN32 AND NOT MSVC) set(CMAKE_CXX_COMPILER "C:/TDM-GCC-64/bin/g++.exe" CACHE FILEPATH "C++ Compiler" FORCE) message(STATUS "[UMSKT] Forcing use of TDM-GCC in C:/TDM-GCC-64") + # Add size optimization flags for GCC + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Os -fno-exceptions -fno-rtti -ffunction-sections -fdata-sections") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os -fno-exceptions -fno-rtti -ffunction-sections -fdata-sections") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Wl,--gc-sections") + # Configure windres for resource compilation set(CMAKE_RC_COMPILER "C:/TDM-GCC-64/bin/windres.exe") set(CMAKE_RC_COMPILER_INIT windres) @@ -123,13 +128,13 @@ ENDIF() IF(MSVC) SET(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") IF(NOT BUILD_SHARED_LIBS) - SET(CMAKE_CXX_FLAGS_RELEASE "/MT") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /Os /GL /GS- /Gy") SET(CMAKE_CXX_FLAGS_DEBUG "/MTd") ELSE() - SET(CMAKE_CXX_FLAGS_RELEASE "/MD") + SET(CMAKE_CXX_FLAGS_RELEASE "/MD /Os /GL /GS- /Gy") SET(CMAKE_CXX_FLAGS_DEBUG "/MDd") ENDIF() - SET(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO /NODEFAULTLIB:MSVCRT") + SET(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO /NODEFAULTLIB:MSVCRT /OPT:REF /OPT:ICF") SET(CMAKE_ENABLE_EXPORTS ON) SET(UMSKT_EXE_WINDOWS_EXTRA src/windows/umskt.rc) SET(UMSKT_EXE_WINDOWS_DLL src/windows/dllmain.cpp)