Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=6059d5255e752758ecc3b2093442310846d7d634

commit 6059d5255e752758ecc3b2093442310846d7d634
Author: Michel Hermier <[email protected]>
Date:   Sat Dec 7 13:46:13 2013 +0100

cmake: Improve static building (not yeat fully static).

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 53f8092..e251fa1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,15 +25,40 @@ option(FAKEROOT_PROOF "enable fakeroot proof protection" 
OFF)
if(ENABLE_STATIC)
set(CMAKE_PROJECT_NAME_LOWER ${CMAKE_PROJECT_NAME_LOWER}.static)

+  set(BUILD_TYPE STATIC)
set(BUILD_SHARED_LIBS OFF)
-  set(CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -pthread")
+#  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static")
+#  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static")
#  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
+#  set(CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -pthread")
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX})
+#  set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX} 
${CMAKE_FIND_LIBRARY_SUFFIXES})
#  set(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS)       # remove -Wl,-Bdynamic)
#  set(CMAKE_SHARED_LIBRARY_C_FLAGS)         # remove -fPIC
#  set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS)    # remove -rdynamic
+else()
+  set(BUILD_TYPE SHARED)
endif(ENABLE_STATIC)

+INCLUDE(FindPkgConfig)
+PKG_SEARCH_MODULE(LIBARCHIVE REQUIRED libarchive)
+PKG_SEARCH_MODULE(LIBCURL libpaccurl)
+if(NOT LIBCURL_FOUND)
+  PKG_SEARCH_MODULE(LIBCURL REQUIRED libcurl)
+  include_directories("${LIBCURL_INCLUDEDIR}/curl")
+  message(WARNING "libpaccurl not found")
+else()
+  set(LIBCURL_STATIC_LIBRARIES ${LIBCURL_STATIC_LIBRARIES} cares idn ssh2 z) # 
Temporary fixes till paccurl is fixed
+  include_directories("${LIBCURL_INCLUDEDIR}/paccurl")
+endif(NOT PACCURL_FOUND)
+
+if(ENABLE_STATIC)
+  set(LIBPACMAN_LIBRARIES ${LIBARCHIVE_STATIC_LIBRARIES} 
${LIBCURL_STATIC_LIBRARIES})
+else(ENABLE_STATIC)
+  set(LIBPACMAN_LIBRARIES ${LIBARCHIVE_LIBRARIES} ${LIBCURL_LIBRARIES})
+endif(ENABLE_STATIC)
+message(STATUS "LIBPACMAN_LIBRARIES: ${LIBPACMAN_LIBRARIES}")
+
FIND_PACKAGE(Doxygen)
IF(DOXYGEN_FOUND)
SET(HAS_DOXYGEN TRUE CACHE BOOL "Use Doxygen")
@@ -53,7 +78,7 @@ if(NOT DISABLE_BINDINGS)
FIND_PACKAGE(SWIG)
endif(NOT DISABLE_BINDINGS)

-IF(SWIG_FOUND)
+IF(NOT ENABLE_STATIC AND SWIG_FOUND)
INCLUDE(${SWIG_USE_FILE})
SET(CMAKE_SWIG_FLAGS "-I${CMAKE_SOURCE_DIR}/lib/libpacman/")

@@ -92,7 +117,7 @@ IF(SWIG_FOUND)

ELSE()
message(WARNING "SWIG not found or bindings disabled, no bindings will be 
built")
-ENDIF(SWIG_FOUND)
+ENDIF(NOT ENABLE_STATIC AND SWIG_FOUND)

CHECK_INCLUDE_FILE(dlfcn.h HAVE_DLFCN_H)
CHECK_INCLUDE_FILE(inttypes.h HAVE_INTTYPES_H)
diff --git a/lib/libpacman/CMakeLists.txt b/lib/libpacman/CMakeLists.txt
index dee28b2..6b32250 100644
--- a/lib/libpacman/CMakeLists.txt
+++ b/lib/libpacman/CMakeLists.txt
@@ -51,25 +51,15 @@ set(LIBPACMAN_SOURCES
include_directories (${PACMAN-G2_SOURCE_DIR})
include_directories (${CMAKE_CURRENT_SOURCE_DIR})

-find_package(LibArchive REQUIRED)
-find_package(PacCURL)
-if(NOT PACCURL_FOUND)
-  find_package(CURL REQUIRED)
-  include_directories("${CURL_INCLUDE_DIRS}/curl")
-  message(WARNING "libpaccurl not found")
-else()
-  include_directories("${CURL_INCLUDE_DIRS}/paccurl")
-endif(NOT PACCURL_FOUND)
-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_LARGEFILE64_SOURCE")

-add_library(pacman SHARED ${LIBPACMAN_SOURCES})
-set_target_properties(pacman PROPERTIES SOVERSION 0.${PACMAN_G2_LIB_VERSION})
-target_link_libraries(pacman ${LibArchive_LIBRARIES} ${CURL_LIBRARIES})
-
+add_library(pacman ${BUILD_TYPE} ${LIBPACMAN_SOURCES})
+target_link_libraries(pacman ${LIBPACMAN_LIBRARIES})
if(ENABLE_STATIC)
set_target_properties(pacman PROPERTIES LINK_SEARCH_START_STATIC ON)
set_target_properties(pacman PROPERTIES LINK_SEARCH_END_STATIC ON)
+else(ENABLE_STATIC)
+  set_target_properties(pacman PROPERTIES SOVERSION 0.${PACMAN_G2_LIB_VERSION})
endif(ENABLE_STATIC)

#static build
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to