diff --git a/cmake/modules/PopplerMacros.cmake b/cmake/modules/PopplerMacros.cmake index 037f0fd..3651562 100644 --- a/cmake/modules/PopplerMacros.cmake +++ b/cmake/modules/PopplerMacros.cmake @@ -70,6 +70,14 @@ macro(SHOW_END_MESSAGE_YESNO what enabled) show_end_message("${what}" "${enabled_string}") endmacro(SHOW_END_MESSAGE_YESNO) +macro(POPPLER_CHECK_LINK_FLAG flag var) + set(_save_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}") + include(CheckCXXSourceCompiles) + set(CMAKE_REQUIRED_LIBRARIES "${flag}") + check_cxx_source_compiles("int main() { return 0; }" ${var}) + set(CMAKE_REQUIRED_LIBRARIES "${_save_CMAKE_REQUIRED_LIBRARIES}") +endmacro(POPPLER_CHECK_LINK_FLAG) + set(CMAKE_SYSTEM_INCLUDE_PATH ${CMAKE_SYSTEM_INCLUDE_PATH} "${CMAKE_INSTALL_PREFIX}/include" ) @@ -108,9 +116,18 @@ if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_C_FLAGS_DEBUGFULL "-g3 -fno-inline") set(CMAKE_C_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed -Wl,--no-add-needed") - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--as-needed -Wl,--no-add-needed") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed -Wl,--no-add-needed") + poppler_check_link_flag("-Wl,--as-needed" GCC_HAS_AS_NEEDED) + if(GCC_HAS_AS_NEEDED) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--as-needed") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed") + endif(GCC_HAS_AS_NEEDED) + poppler_check_link_flag("-Wl,--no-add-needed" GCC_HAS_NO_ADD_NEEDED) + if(GCC_HAS_NO_ADD_NEEDED) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-add-needed") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-add-needed") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-add-needed") + endif(GCC_HAS_NO_ADD_NEEDED) endif (CMAKE_COMPILER_IS_GNUCXX) if(CMAKE_C_COMPILER MATCHES "icc")