From: Michael Schroeder Date: Thu, 20 Mar 2025 10:06:01 +0000 (+0100) Subject: Allow to link the tools/bindings against the static version of the libraries X-Git-Tag: 0.7.32~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b4bec60aed2aff559e12dcf133f26e3d414014e0;p=thirdparty%2Flibsolv.git Allow to link the tools/bindings against the static version of the libraries This is only relevant if both the static and dynamic versions are built. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index bd189eac..5ba5ed51 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,9 @@ OPTION (WITH_SYSTEM_ZCHUNK "Use system zchunk library?" OFF) OPTION (WITH_LIBXML2 "Build with libxml2 instead of libexpat?" OFF) OPTION (WITHOUT_COOKIEOPEN "Disable the use of stdio cookie opens?" OFF) +OPTION (ENABLE_STATIC_TOOLS "Link the tools against the static version of the libraries?" OFF) +OPTION (ENABLE_STATIC_BINDINGS "Link the bindings against the static version of the libraries?" OFF) + include (GNUInstallDirs) message (STATUS "Libraries will be installed in ${CMAKE_INSTALL_FULL_LIBDIR}") message (STATUS "Header files will be installed in ${CMAKE_INSTALL_FULL_INCLUDEDIR}") diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt index 4889a4c6..420dbd45 100644 --- a/bindings/CMakeLists.txt +++ b/bindings/CMakeLists.txt @@ -1,3 +1,10 @@ + +IF (ENABLE_STATIC AND NOT DISABLE_SHARED AND ENABLE_STATIC_BINDINGS) + SET (LIBSOLV_BINDINGS_LIBRARIES libsolvext_static libsolv_static) +ELSE (ENABLE_STATIC AND NOT DISABLE_SHARED AND ENABLE_STATIC_BINDINGS) + SET (LIBSOLV_BINDINGS_LIBRARIES libsolvext libsolv) +ENDIF (ENABLE_STATIC AND NOT DISABLE_SHARED AND ENABLE_STATIC_BINDINGS) + SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") FIND_PACKAGE (SWIG) diff --git a/bindings/lua/CMakeLists.txt b/bindings/lua/CMakeLists.txt index b42df214..8d5bbe3e 100644 --- a/bindings/lua/CMakeLists.txt +++ b/bindings/lua/CMakeLists.txt @@ -16,6 +16,6 @@ MESSAGE (STATUS "Lua installation dir: ${LUA_INSTALL_DIR}") ADD_LIBRARY (bindings_lua SHARED solv_lua.c) SET_TARGET_PROPERTIES (bindings_lua PROPERTIES PREFIX "" OUTPUT_NAME "solv" INSTALL_NAME_DIR "${LUA_INSTALL_DIR}") -TARGET_LINK_LIBRARIES (bindings_lua libsolvext libsolv ${LUA_LIBRARY} ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (bindings_lua ${LIBSOLV_BINDINGS_LIBRARIES} ${LUA_LIBRARY} ${SYSTEM_LIBRARIES}) INSTALL (TARGETS bindings_lua LIBRARY DESTINATION ${LUA_INSTALL_DIR}) diff --git a/bindings/perl/CMakeLists.txt b/bindings/perl/CMakeLists.txt index 49a3902b..b57fd9cc 100644 --- a/bindings/perl/CMakeLists.txt +++ b/bindings/perl/CMakeLists.txt @@ -31,7 +31,7 @@ INCLUDE_DIRECTORIES (${PERL_INCLUDE_PATH} ${PERL_CORE_DIR}) ADD_LIBRARY (bindings_perl MODULE solv_perl.c) SET_TARGET_PROPERTIES (bindings_perl PROPERTIES PREFIX "" OUTPUT_NAME "solv") SET_TARGET_PROPERTIES (bindings_perl PROPERTIES LINK_FLAGS "${PERL_CCLDFLAGS}") -TARGET_LINK_LIBRARIES (bindings_perl libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (bindings_perl ${LIBSOLV_BINDINGS_LIBRARIES} ${SYSTEM_LIBRARIES}) INSTALL (TARGETS bindings_perl LIBRARY DESTINATION ${PERL_INSTALL_DIR}) INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/solv.pm DESTINATION ${PERL_INSTALL_DIR}) diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt index 186be419..4bd0fae8 100644 --- a/bindings/python/CMakeLists.txt +++ b/bindings/python/CMakeLists.txt @@ -39,7 +39,7 @@ INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH}) ADD_LIBRARY (bindings_python MODULE solv_python.c) SET_TARGET_PROPERTIES (bindings_python PROPERTIES PREFIX "" OUTPUT_NAME "_solv") -TARGET_LINK_LIBRARIES (bindings_python libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (bindings_python ${LIBSOLV_BINDINGS_LIBRARIES} ${SYSTEM_LIBRARIES}) INSTALL (TARGETS bindings_python LIBRARY DESTINATION ${PYTHON_INSTALL_DIR}) INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/solv.py DESTINATION ${PYTHON_INSTALL_DIR}) diff --git a/bindings/python3/CMakeLists.txt b/bindings/python3/CMakeLists.txt index 021a47f7..e2da6845 100644 --- a/bindings/python3/CMakeLists.txt +++ b/bindings/python3/CMakeLists.txt @@ -32,7 +32,7 @@ INCLUDE_DIRECTORIES (${PYTHON3_INCLUDE_DIR}) ADD_LIBRARY (bindings_python3 SHARED solv_python.c) SET_TARGET_PROPERTIES (bindings_python3 PROPERTIES PREFIX "" OUTPUT_NAME "_solv") -TARGET_LINK_LIBRARIES (bindings_python3 libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (bindings_python3 ${LIBSOLV_BINDINGS_LIBRARIES} ${SYSTEM_LIBRARIES}) INSTALL (TARGETS bindings_python3 LIBRARY DESTINATION ${PYTHON3_INSTALL_DIR}) INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/solv.py DESTINATION ${PYTHON3_INSTALL_DIR}) diff --git a/bindings/ruby/CMakeLists.txt b/bindings/ruby/CMakeLists.txt index 6c3bd50d..b065fd4a 100644 --- a/bindings/ruby/CMakeLists.txt +++ b/bindings/ruby/CMakeLists.txt @@ -21,6 +21,6 @@ INCLUDE_DIRECTORIES (${RUBY_INCLUDE_PATH}) ADD_LIBRARY (bindings_ruby MODULE solv_ruby.c) SET_TARGET_PROPERTIES (bindings_ruby PROPERTIES PREFIX "" OUTPUT_NAME "solv") -TARGET_LINK_LIBRARIES (bindings_ruby libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (bindings_ruby ${LIBSOLV_BINDINGS_LIBRARIES} ${SYSTEM_LIBRARIES}) INSTALL (TARGETS bindings_ruby LIBRARY DESTINATION ${RUBY_INSTALL_DIR}) diff --git a/bindings/tcl/CMakeLists.txt b/bindings/tcl/CMakeLists.txt index 932cf75d..de4cb5a0 100644 --- a/bindings/tcl/CMakeLists.txt +++ b/bindings/tcl/CMakeLists.txt @@ -23,7 +23,7 @@ INCLUDE_DIRECTORIES (${TCL_INCLUDE_PATH}) ADD_LIBRARY (bindings_tcl SHARED solv_tcl.c) SET_TARGET_PROPERTIES (bindings_tcl PROPERTIES PREFIX "" OUTPUT_NAME "solv-${VERSION}" INSTALL_NAME_DIR "${TCL_INSTALL_DIR}") -TARGET_LINK_LIBRARIES (bindings_tcl libsolvext libsolv ${TCL_LIBRARY} ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (bindings_tcl ${LIBSOLV_BINDINGS_LIBRARIES} ${TCL_LIBRARY} ${SYSTEM_LIBRARIES}) INSTALL (TARGETS bindings_tcl LIBRARY DESTINATION ${TCL_INSTALL_DIR}) ADD_CUSTOM_COMMAND ( diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index dd0477a5..4b3548ab 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -4,131 +4,139 @@ ADD_LIBRARY (toolstuff STATIC common_write.c) +IF (ENABLE_STATIC AND NOT DISABLE_SHARED AND ENABLE_STATIC_TOOLS) + SET (LIBSOLV_TOOLS_LIBRARY libsolv_static) + SET (LIBSOLV_TOOLS_LIBRARIES libsolvext_static libsolv_static) +ELSE (ENABLE_STATIC AND NOT DISABLE_SHARED AND ENABLE_STATIC_TOOLS) + SET (LIBSOLV_TOOLS_LIBRARY libsolv) + SET (LIBSOLV_TOOLS_LIBRARIES libsolvext libsolv) +ENDIF (ENABLE_STATIC AND NOT DISABLE_SHARED AND ENABLE_STATIC_TOOLS) + IF (WIN32) INCLUDE_DIRECTORIES (${PROJECT_SOURCE_DIR}/win32/) -ENDIF () +ENDIF (WIN32) SET (tools_list testsolv mergesolv dumpsolv installcheck testsolv) +ADD_EXECUTABLE (dumpsolv dumpsolv.c ) +TARGET_LINK_LIBRARIES (dumpsolv ${LIBSOLV_TOOLS_LIBRARY}) + IF (ENABLE_RPMDB) ADD_EXECUTABLE (rpmdb2solv rpmdb2solv.c) -TARGET_LINK_LIBRARIES (rpmdb2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (rpmdb2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) ADD_EXECUTABLE (findfileconflicts findfileconflicts.c) -TARGET_LINK_LIBRARIES (findfileconflicts libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (findfileconflicts ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) SET (tools_list ${tools_list} rpmdb2solv) ENDIF (ENABLE_RPMDB) IF (ENABLE_RPMPKG) ADD_EXECUTABLE (rpms2solv rpms2solv.c) -TARGET_LINK_LIBRARIES (rpms2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (rpms2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) SET (tools_list ${tools_list} rpms2solv) ENDIF (ENABLE_RPMPKG) IF (ENABLE_RPMMD) ADD_EXECUTABLE (repomdxml2solv repomdxml2solv.c) -TARGET_LINK_LIBRARIES (repomdxml2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (repomdxml2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) ADD_EXECUTABLE (rpmmd2solv rpmmd2solv.c) -TARGET_LINK_LIBRARIES (rpmmd2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (rpmmd2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) ADD_EXECUTABLE (updateinfoxml2solv updateinfoxml2solv.c) -TARGET_LINK_LIBRARIES (updateinfoxml2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (updateinfoxml2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) ADD_EXECUTABLE (deltainfoxml2solv deltainfoxml2solv.c) -TARGET_LINK_LIBRARIES (deltainfoxml2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (deltainfoxml2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) SET (tools_list ${tools_list} repomdxml2solv rpmmd2solv updateinfoxml2solv deltainfoxml2solv) ENDIF (ENABLE_RPMMD) IF (ENABLE_HELIXREPO) ADD_EXECUTABLE (helix2solv helix2solv.c) -TARGET_LINK_LIBRARIES (helix2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (helix2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) SET (tools_list ${tools_list} helix2solv) ENDIF (ENABLE_HELIXREPO) IF (ENABLE_SUSEREPO) ADD_EXECUTABLE (susetags2solv susetags2solv.c) -TARGET_LINK_LIBRARIES (susetags2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (susetags2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) SET (tools_list ${tools_list} susetags2solv) ENDIF (ENABLE_SUSEREPO) IF (ENABLE_COMPS) ADD_EXECUTABLE (comps2solv comps2solv.c) -TARGET_LINK_LIBRARIES (comps2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (comps2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) SET (tools_list ${tools_list} comps2solv) ENDIF (ENABLE_COMPS) IF (ENABLE_DEBIAN) ADD_EXECUTABLE (deb2solv deb2solv.c) -TARGET_LINK_LIBRARIES (deb2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (deb2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) SET (tools_list ${tools_list} deb2solv) ENDIF (ENABLE_DEBIAN) IF (ENABLE_MDKREPO) ADD_EXECUTABLE (mdk2solv mdk2solv.c) -TARGET_LINK_LIBRARIES (mdk2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (mdk2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) SET (tools_list ${tools_list} mdk2solv) ENDIF (ENABLE_MDKREPO) IF (ENABLE_ARCHREPO) ADD_EXECUTABLE (archpkgs2solv archpkgs2solv.c) -TARGET_LINK_LIBRARIES (archpkgs2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (archpkgs2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) ADD_EXECUTABLE (archrepo2solv archrepo2solv.c) -TARGET_LINK_LIBRARIES (archrepo2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (archrepo2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) SET (tools_list ${tools_list} archpkgs2solv archrepo2solv) ENDIF (ENABLE_ARCHREPO) IF (ENABLE_APK) ADD_EXECUTABLE (apk2solv apk2solv.c) -TARGET_LINK_LIBRARIES (apk2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (apk2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) SET (tools_list ${tools_list} apk2solv) ENDIF (ENABLE_APK) IF (ENABLE_CUDFREPO) ADD_EXECUTABLE (cudftest cudftest.c) -TARGET_LINK_LIBRARIES (cudftest libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (cudftest ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) ENDIF (ENABLE_CUDFREPO) ADD_EXECUTABLE (installcheck installcheck.c) -TARGET_LINK_LIBRARIES (installcheck libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (installcheck ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) IF (ENABLE_APPDATA) ADD_EXECUTABLE (appdata2solv appdata2solv.c) -TARGET_LINK_LIBRARIES (appdata2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (appdata2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) SET (tools_list ${tools_list} appdata2solv) ENDIF (ENABLE_APPDATA) IF (ENABLE_CONDA) ADD_EXECUTABLE (conda2solv conda2solv.c) -TARGET_LINK_LIBRARIES (conda2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (conda2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) SET (tools_list ${tools_list} conda2solv) ENDIF (ENABLE_CONDA) IF (NOT WIN32) ADD_EXECUTABLE (repo2solv repo2solv.c ) -TARGET_LINK_LIBRARIES (repo2solv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (repo2solv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) SET(tools_list ${tools_list} repo2solv) ENDIF (NOT WIN32) -ADD_EXECUTABLE (dumpsolv dumpsolv.c ) -TARGET_LINK_LIBRARIES (dumpsolv libsolv) - ADD_EXECUTABLE (mergesolv mergesolv.c ) -TARGET_LINK_LIBRARIES (mergesolv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (mergesolv toolstuff ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) ADD_EXECUTABLE (testsolv testsolv.c) -TARGET_LINK_LIBRARIES (testsolv libsolvext libsolv ${SYSTEM_LIBRARIES}) +TARGET_LINK_LIBRARIES (testsolv ${LIBSOLV_TOOLS_LIBRARIES} ${SYSTEM_LIBRARIES}) INSTALL (TARGETS ${tools_list} DESTINATION ${CMAKE_INSTALL_BINDIR})