]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Avoid linker flags when not available, fixes OS X 84/head
authorClemens Lang <neverpanic@gmail.com>
Mon, 11 May 2015 17:54:51 +0000 (19:54 +0200)
committerClemens Lang <neverpanic@gmail.com>
Mon, 11 May 2015 17:54:51 +0000 (19:54 +0200)
The build currently fails on OS X because the OS X linker ld64 does not
support --as-needed or --version-script. Fix this by checking whether
these flags are supported by the currently used linker and only passing
them if they are.

CMakeLists.txt
ext/CMakeLists.txt
src/CMakeLists.txt

index ab3fec96699929ccc19fc8cc855808522af518f7..7b43fd3d1efedc8241a1f90171b119848065a976 100644 (file)
@@ -206,6 +206,17 @@ CHECK_FUNCTION_EXISTS (fopencookie HAVE_FOPENCOOKIE)
 CHECK_FUNCTION_EXISTS (funopen HAVE_FUNOPEN)
 TEST_BIG_ENDIAN (WORDS_BIGENDIAN)
 
+INCLUDE (CMakePushCheckState)
+INCLUDE (CheckCCompilerFlag)
+MACRO (check_linker_flag FLAG VAR)
+       cmake_push_check_state(RESET)
+       set(CMAKE_REQUIRED_FLAGS "${FLAG}")
+       check_c_compiler_flag("" "${VAR}")
+       cmake_pop_check_state()
+ENDMACRO (check_linker_flag)
+check_linker_flag("-Wl,--as-needed" HAS_LINKER_AS_NEEDED)
+check_linker_flag("-Wl,--version-script=${CMAKE_SOURCE_DIR}/src/libsolv.ver" HAS_LINKER_VERSION_SCRIPT)
+
 # should create config.h with #cmakedefine instead...
 FOREACH (VAR HAVE_STRCHRNUL HAVE_FOPENCOOKIE HAVE_FUNOPEN WORDS_BIGENDIAN
   HAVE_RPM_DB_H HAVE_PGPDIGGETPARAMS
@@ -307,7 +318,9 @@ ENDIF (ENABLE_RPMDB)
 IF (ENABLE_HAIKU)
 SET (SYSTEM_LIBRARIES ${HAIKU_SYSTEM_LIBRARIES} ${SYSTEM_LIBRARIES})
 ENDIF (ENABLE_HAIKU)
+IF (HAS_LINKER_AS_NEEDED)
 SET (SYSTEM_LIBRARIES "-Wl,--as-needed" ${SYSTEM_LIBRARIES})
+ENDIF (HAS_LINKER_AS_NEEDED)
 
 ADD_SUBDIRECTORY (src)
 ADD_SUBDIRECTORY (ext)
index bdf949d51189de096755085d71647bbdd271bc06..7fcf14f4042fb4b568c82eddd51dd3b802d0200b 100644 (file)
@@ -112,7 +112,9 @@ IF (ENABLE_APPDATA)
 ENDIF (ENABLE_APPDATA)
 
 SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+IF (HAVE_LINKER_VERSION_SCRIPT)
 SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINK_FLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/ext/libsolvext.ver")
+ENDIF (HAVE_LINKER_VERSION_SCRIPT)
 
 IF (DISABLE_SHARED)
 ADD_LIBRARY (libsolvext STATIC ${libsolvext_SRCS})
index b78a82a72b9e5b1ac4c45dfdfcaf29b5fa726904..f60853e3fbbce3dbf150fbac42c82d902d2a1dac 100644 (file)
@@ -28,7 +28,9 @@ SET (libsolv_HEADERS
     chksum.h dataiterator.h ${CMAKE_BINARY_DIR}/src/solvversion.h)
 
 SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+IF (HAVE_LINKER_VERSION_SCRIPT)
 SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINK_FLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/src/libsolv.ver")
+ENDIF (HAVE_LINKER_VERSION_SCRIPT)
 
 IF (DISABLE_SHARED)
 ADD_LIBRARY (libsolv STATIC ${libsolv_SRCS})