From 20cb29c2f8c5c87bc590896854a20b1473ceb358 Mon Sep 17 00:00:00 2001 From: "info@mode42.com" Date: Sat, 8 Aug 2026 03:54:55 +0000 Subject: #2 --- cmake/Hardening.cmake | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 cmake/Hardening.cmake (limited to 'cmake/Hardening.cmake') diff --git a/cmake/Hardening.cmake b/cmake/Hardening.cmake new file mode 100644 index 0000000..6bbc43f --- /dev/null +++ b/cmake/Hardening.cmake @@ -0,0 +1,44 @@ +# HyBBX compiler and linker hardening (HYBBX_HARDENING=ON) + +function(hybbx_apply_hardening target) + if(NOT HYBBX_HARDENING) + return() + endif() + + if(HYBBX_SUPPORTED_C_FLAGS) + target_compile_options(${target} PRIVATE ${HYBBX_SUPPORTED_C_FLAGS}) + endif() + + if(HYBBX_WARNINGS_AS_ERRORS) + target_compile_options(${target} PRIVATE -Werror) + endif() + + if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + if(NOT HYBBX_PLATFORM_AMIGAOS) + target_compile_definitions(${target} PRIVATE _FORTIFY_SOURCE=2) + endif() + endif() + + if(NOT HYBBX_PLATFORM_AMIGAOS AND CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_compile_options(${target} PRIVATE -fPIC) + if(HYBBX_COMPILER_GCC OR HYBBX_COMPILER_CLANG) + target_link_options(${target} PRIVATE + -Wl,-z,relro + -Wl,-z,now + ) + endif() + endif() +endfunction() + +function(hybbx_apply_hardening_executable target) + hybbx_apply_hardening(${target}) + + if(NOT HYBBX_HARDENING OR HYBBX_PLATFORM_AMIGAOS) + return() + endif() + + if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND (HYBBX_COMPILER_GCC OR HYBBX_COMPILER_CLANG)) + target_compile_options(${target} PRIVATE -fPIE) + target_link_options(${target} PRIVATE -pie) + endif() +endfunction() -- cgit v1.3.1