set (C_UNUSED "" )
endif()
+set(WIRESHARK_LD_FLAGS
+ -Wl,--as-needed
+ # -flto
+ # -fwhopr
+ # -fwhole-program
+)
+# CMAKE_POSITION_INDEPENDENT_CODE is only supported starting with CMake
+# 2.8.9. Do not add -pie automatically for older versions.
#
-# XXX - at least with the Visual Studio 12 generator, this would test
-# whether the flag works with the compiler, but, at least when building
-# for Win64, the flag "works", in that the link succeeds, but with a
-# warning of an unused linker argument.
-#
-# So we leave it out for now; maybe there's a way to force the linker to
-# fail with unknown arguments, or maybe we have to look for error
-# messages in the linker output, the way CHECK_C_COMPILER_FLAG does.
+# XXX - are there other compilers that don't support -pie? It's
+# not as if the only platforms we support are Windows and Linux....
#
-if(NOT CMAKE_C_COMPILER_ID MATCHES "MSVC")
- set(WIRESHARK_LD_FLAGS
- -Wl,--as-needed
- # -flto
- # -fwhopr
- # -fwhole-program
- )
- # CMAKE_POSITION_INDEPENDENT_CODE is only supported starting with CMake
- # 2.8.9. Do not add -pie automatically for older versions.
- #
- # XXX - are there other compilers that don't support -pie? It's
- # not as if the only platforms we support are Windows and Linux....
- #
- if(NOT CMAKE_VERSION VERSION_LESS "2.8.9")
- set(WIRESHARK_LD_FLAGS ${WIRESHARK_LD_FLAGS}
- -pie
- )
- endif()
+if(NOT CMAKE_VERSION VERSION_LESS "2.8.9")
+ set(WIRESHARK_LD_FLAGS ${WIRESHARK_LD_FLAGS}
+ -pie
+ )
endif()
include(CheckCLinkerFlag)
# With 3.2 and later, we could also set policy CMP0056 to NEW and
# set CMAKE_EXE_LINKER_FLAGS.
#
- set(CMAKE_REQUIRED_LIBRARIES "${_FLAG}")
- message(status "check linker flag - test linker flags: ${CMAKE_REQUIRED_LIBRARIES}")
+ set(save_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
+ if(CMAKE_C_COMPILER_ID MATCHES "MSVC")
+ #
+ # This means the linker is presumably the Microsoft linker;
+ # we need to pass /WX in order to have the linker fail,
+ # rather than just complaining and driving on, if it's
+ # passed a flag it doesn't handle.
+ #
+ set(CMAKE_REQUIRED_LIBRARIES "/WX")
+ endif()
+ set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES} ${_FLAG}")
+ message(status "check linker flag - test linker flags: ${_FLAG}")
check_c_source_compiles("int main() { return 0;}" ${_RESULT})
- set(CMAKE_REQUIRED_LIBRARIES "")
+ set(CMAKE_REQUIRED_LIBRARIES "${save_CMAKE_REQUIRED_LIBRARIES}")
ENDMACRO (CHECK_C_LINKER_FLAG)