You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

secure_option.cmake 1.5 kB

4 years ago
4 years ago
4 years ago
4 years ago
12345678910111213141516171819202122232425262728293031323334
  1. if("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
  2. set(CMAKE_SKIP_RPATH TRUE)
  3. set(CMAKE_SKIP_BUILD_RPATH TRUE)
  4. set(CMAKE_SKIP_INSTALL_RPATH TRUE)
  5. endif()
  6. if(MSVC)
  7. set(SECURE_C_FLAGS "/GS")
  8. set(SECURE_CXX_FLAGS "/GS")
  9. set(SECURE_SHARED_LINKER_FLAGS "/NXCOMPAT /DYNAMICBASE")
  10. set(SECURE_EXE_LINKER_FLAGS "/NXCOMPAT /DYNAMICBASE")
  11. if(CMAKE_SIZEOF_VOID_P EQUAL 4)
  12. set(SECURE_SHARED_LINKER_FLAGS "/SAFESEH ${CMAKE_SHARED_LINKER_FLAGS}")
  13. set(SECURE_EXE_LINKER_FLAGS "/SAFESEH ${CMAKE_EXE_LINKER_FLAGS}")
  14. endif()
  15. else()
  16. set(SECURE_C_FLAGS "-fPIC -fPIE -fstack-protector-strong")
  17. set(SECURE_CXX_FLAGS "-fPIC -fPIE -fstack-protector-strong")
  18. if(WIN32)
  19. set(SECURE_SHARED_LINKER_FLAGS "-Wl,--nxcompat -Wl,--dynamicbase -s")
  20. set(SECURE_EXE_LINKER_FLAGS "-Wl,--nxcompat -Wl,--dynamicbase -s")
  21. if(CMAKE_SIZEOF_VOID_P EQUAL 4)
  22. set(SECURE_SHARED_LINKER_FLAGS "-Wl,--no-seh ${SECURE_SHARED_LINKER_FLAGS}")
  23. set(SECURE_EXE_LINKER_FLAGS "-Wl,--no-seh ${SECURE_EXE_LINKER_FLAGS}")
  24. endif()
  25. else()
  26. set(SECURE_SHARED_LINKER_FLAGS "-Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -s ")
  27. set(SECURE_EXE_LINKER_FLAGS "-Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -s -pie")
  28. if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
  29. string(REPLACE "-s " "" SECURE_SHARED_LINKER_FLAGS "${SECURE_SHARED_LINKER_FLAGS}")
  30. string(REPLACE "-s " "" SECURE_EXE_LINKER_FLAGS "${SECURE_EXE_LINKER_FLAGS}")
  31. endif()
  32. endif()
  33. endif()