diff --git a/modules/RockRuby.cmake b/modules/RockRuby.cmake index 1bfdf60..5fdfbfa 100644 --- a/modules/RockRuby.cmake +++ b/modules/RockRuby.cmake @@ -271,6 +271,14 @@ ELSEIF(NOT RUBY_EXTENSIONS_AVAILABLE) OUTPUT_VARIABLE RUBY_CFLAGS) STRING(REPLACE "\n" "" RUBY_CFLAGS ${RUBY_CFLAGS}) + if("${RUBY_CFLAGS}" MATCHES "-fstack-protector-strong") + include(CheckCXXCompilerFlag) + CHECK_CXX_COMPILER_FLAG("-fstack-protector-strong" COMPILER_SUPPORTS_SMASH_PROTECTION) + if(NOT COMPILER_SUPPORTS_SMASH_PROTECTION) + STRING(REPLACE "-fstack-protector-strong" "" RUBY_CFLAGS ${RUBY_CFLAGS}) + endif() + endif() + function(ROCK_RUBY_EXTENSION target) INCLUDE_DIRECTORIES(${RUBY_INCLUDE_PATH}) list(GET ${RUBY_INCLUDE_PATH} 0 rubylib_path) @@ -280,14 +288,13 @@ ELSEIF(NOT RUBY_EXTENSIONS_AVAILABLE) SET_SOURCE_FILES_PROPERTIES(${ARGN} PROPERTIES COMPILE_FLAGS "${RUBY_CFLAGS}") rock_library_common(${target} MODULE ${ARGN}) target_link_libraries(${target} ${RUBY_LIBRARY}) + + include(CheckCXXCompilerFlag) + CHECK_CXX_COMPILER_FLAG("-Wl,-z,noexecstack" COMPILER_SUPPORTS_NOEXEXSTACK) + if(COMPILER_SUPPORTS_NOEXEXSTACK) + set_target_properties(${target} PROPERTIES LINK_FLAGS "-Wl,-z,noexecstack") + endif() - STRING(REGEX MATCH "arm.*" ARCH ${CMAKE_SYSTEM_PROCESSOR}) - IF(NOT APPLE) - IF("${ARCH}" STREQUAL "") - set_target_properties(${target} PROPERTIES - LINK_FLAGS "-z noexecstack") - ENDIF("${ARCH}" STREQUAL "") - ENDIF(NOT APPLE) SET_TARGET_PROPERTIES(${target} PROPERTIES PREFIX "") endfunction()