diff --git a/configure.ac b/configure.ac --- a/configure.ac +++ b/configure.ac @@ -688,7 +688,11 @@ AX_CHECK_LINK_FLAG([[-Wl,--high-entropy-va]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--high-entropy-va"]) AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"]) AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"]) - AX_CHECK_LINK_FLAG([[-fPIE -pie]], [PIE_FLAGS="-fPIE"; HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"],, [[$CXXFLAG_WERROR]]) + + if test x$TARGET_OS != xwindows; then + AX_CHECK_COMPILE_FLAG([-fPIE],[PIE_FLAGS="-fPIE"]) + AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"]) + fi case $host in *mingw*) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -114,10 +114,10 @@ # Unfortunately setting the -pie linker flag this way require CMake >= 3.14, # which is not widely distributed at the time of writing. # FIXME: use the POSITION_INDEPENDENT_CODE property instead - add_compiler_flags(-fPIE) - add_linker_flags(-pie) - - if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows") + add_compiler_flag(-fPIE) + add_linker_flag(-pie) + else() # MinGw provides its own libssp for stack smashing protection link_libraries(ssp) endif()