Files
triangles_v5/cmake/AddCompilerFlags.cmake
T
sami7777 b339ede17a Migrate build system from qmake/makefiles to CMake
Remove legacy build files (Makefile, makefile.unix/mingw/osx,
triangles-qt.pro) and replace with CMake build system. Includes
find modules for all dependencies, LevelDB bundled build, and
updated CI workflow for CMake + Ninja on all platforms.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 02:00:58 -07:00

71 lines
2.3 KiB
CMake

# cmake/AddCompilerFlags.cmake
# Shared compiler and linker flag configuration for all Triangles targets.
# ── Common warning flags ──
add_compile_options(
-Wall -Wextra -Wno-ignored-qualifiers
-Wformat -Wformat-security -Wno-unused-parameter
)
# ── Common defines ──
add_compile_definitions(
BOOST_SPIRIT_THREADSAFE
BOOST_THREAD_USE_LIB
BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
BOOST_BIND_GLOBAL_PLACEHOLDERS
__NO_SYSTEM_INCLUDES
)
# ── Hardening (non-Windows) ──
if(NOT WIN32)
# Ubuntu bug #691722 workaround: reset before re-enabling
add_compile_options(-fno-stack-protector)
add_compile_options(-fstack-protector-all -Wstack-protector)
add_compile_definitions(_FORTIFY_SOURCE=2)
add_link_options(-Wl,-z,relro -Wl,-z,now)
endif()
# ── PIE (position-independent executables) ──
if(ENABLE_PIE AND NOT WIN32)
add_compile_options(-fPIE)
add_link_options(-pie)
endif()
# ── Optimization override ──
if(USE_O3)
string(REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
string(REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
string(REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
string(REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
endif()
# ── 32-bit SSE2 ──
if(CMAKE_SYSTEM_PROCESSOR MATCHES "i[3-6]86")
add_compile_options(-msse2)
endif()
# ── Platform: Windows (MSYS2 MinGW64) ──
if(WIN32)
add_compile_options(-Wa,-mbig-obj)
add_compile_options(-Wno-deprecated-declarations -Wno-reserved-user-defined-literal)
add_link_options(-static -static-libgcc -static-libstdc++)
add_compile_definitions(WIN32 _MT)
endif()
# ── Platform: macOS ──
if(APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0" CACHE STRING "Minimum macOS version")
add_compile_options(-Wno-reserved-user-defined-literal -Wno-deprecated-declarations)
add_compile_definitions(MAC_OSX MSG_NOSIGNAL=0)
endif()
# ── Platform: Linux ──
if(UNIX AND NOT APPLE)
add_compile_definitions(LINUX)
endif()
# ── Static linking (Linux release builds) ──
if(ENABLE_STATIC AND UNIX AND NOT APPLE)
add_link_options(-static)
endif()