summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouiz’ <louiz@louiz.org>2017-03-10 10:20:03 +0100
committerlouiz’ <louiz@louiz.org>2017-03-10 10:33:41 +0100
commit2013ed6f98c0bffdb00fe06df5dca1d1ad422305 (patch)
tree6e81db7c4226bcb1d94289dc22474257573869cf
parentd44125371fb9f170ea708e96682ad376a45fc293 (diff)
downloadbiboumi-2013ed6f98c0bffdb00fe06df5dca1d1ad422305.tar.gz
biboumi-2013ed6f98c0bffdb00fe06df5dca1d1ad422305.tar.bz2
biboumi-2013ed6f98c0bffdb00fe06df5dca1d1ad422305.tar.xz
biboumi-2013ed6f98c0bffdb00fe06df5dca1d1ad422305.zip
cmake: Remove the intermediate static libs
Should compile faster (and also take less space on disk)
-rw-r--r--CMakeLists.txt111
-rw-r--r--louloulibs/CMakeLists.txt33
2 files changed, 67 insertions, 77 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d6759c3..24c6bec 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -106,22 +106,14 @@ if(LITESQL_FOUND)
"biboudb"
LITESQL_GENERATED_SOURCES)
- add_library(database STATIC src/database/database.cpp
+ add_library(database OBJECT src/database/database.cpp
${LITESQL_GENERATED_SOURCES})
- target_link_libraries(database ${LITESQL_LIBRARIES} utils)
- if(BOTAN_FOUND)
- target_link_libraries(database ${BOTAN_LIBRARIES})
- endif()
set(USE_DATABASE TRUE)
endif()
add_subdirectory("louloulibs")
include_directories("louloulibs")
-include_directories(${EXPAT_INCLUDE_DIRS})
-include_directories(${ICONV_INCLUDE_DIRS})
-include_directories(${LIBUUID_INCLUDE_DIRS})
-
# If they are found in louloulibs CMakeLists.txt, we inherite these values
if(SYSTEMD_FOUND)
include_directories(${SYSTEMD_INCLUDE_DIRS})
@@ -138,85 +130,100 @@ endif()
#
file(GLOB source_src_utils
src/utils/*.[hc]pp)
-# Todo, switch to target_sources(utils) when we go cmake >=3.1 only
-add_library(src_utils STATIC ${source_src_utils})
-target_link_libraries(src_utils logger config)
-if(USE_DATABASE)
- target_link_libraries(src_utils database)
-endif()
+add_library(src_utils OBJECT ${source_src_utils})
#
## irclib
#
file(GLOB source_irc
src/irc/*.[hc]pp)
-add_library(irc STATIC ${source_irc})
-target_link_libraries(irc network utils logger)
+add_library(irc OBJECT ${source_irc})
#
## xmpp
#
file(GLOB source_xmpp
src/xmpp/*.[hc]pp)
-add_library(xmpp STATIC ${source_xmpp})
-target_link_libraries(xmpp xmpplib bridge network utils src_utils logger)
-
-if(USE_DATABASE)
- target_link_libraries(xmpp database)
- target_link_libraries(irc database)
-endif()
+add_library(xmpp OBJECT ${source_xmpp})
#
## identd
#
file(GLOB source_identd
src/identd/*.[hc]pp)
-add_library(identd STATIC ${source_identd})
-target_link_libraries(identd bridge network utils src_utils logger)
+add_library(identd OBJECT ${source_identd})
#
## bridge
#
file(GLOB source_bridge
src/bridge/*.[hc]pp)
-add_library(bridge STATIC ${source_bridge})
-target_link_libraries(bridge xmpp irc utils logger)
+add_library(bridge OBJECT ${source_bridge})
#
## Main executable
#
-add_executable(${PROJECT_NAME} src/main.cpp)
-target_link_libraries(${PROJECT_NAME}
- xmpp
- irc
- bridge
- utils
- src_utils
- identd
- config)
-if(SYSTEMD_FOUND)
- target_link_libraries(xmpp ${SYSTEMD_LIBRARIES})
-endif()
+add_executable(${PROJECT_NAME} src/main.cpp
+ $<TARGET_OBJECTS:utils>
+ $<TARGET_OBJECTS:config>
+ $<TARGET_OBJECTS:logger>
+ $<TARGET_OBJECTS:network>
+ $<TARGET_OBJECTS:xmpplib>
+ $<TARGET_OBJECTS:xmpp>
+ $<TARGET_OBJECTS:src_utils>
+ $<TARGET_OBJECTS:bridge>
+ $<TARGET_OBJECTS:irc>
+ $<TARGET_OBJECTS:identd>
+ $<$<BOOL:${USE_DATABASE}>:$<TARGET_OBJECTS:database>>)
#
## Tests
#
file(GLOB source_tests
tests/*.cpp)
-add_executable(test_suite EXCLUDE_FROM_ALL
- ${source_tests})
+add_executable(test_suite EXCLUDE_FROM_ALL ${source_tests}
+ $<TARGET_OBJECTS:utils>
+ $<TARGET_OBJECTS:config>
+ $<TARGET_OBJECTS:logger>
+ $<TARGET_OBJECTS:network>
+ $<TARGET_OBJECTS:xmpplib>
+ $<TARGET_OBJECTS:xmpp>
+ $<TARGET_OBJECTS:src_utils>
+ $<TARGET_OBJECTS:bridge>
+ $<TARGET_OBJECTS:irc>
+ $<TARGET_OBJECTS:identd>
+ $<$<BOOL:${USE_DATABASE}>:$<TARGET_OBJECTS:database>>)
+
+target_link_libraries(${PROJECT_NAME}
+ ${EXPAT_LIBRARIES}
+ ${LIBUUID_LIBRARIES}
+ ${EXPAT_LIBRARIES})
target_link_libraries(test_suite
- xmpplib
- xmpp
- irc
- bridge
- utils
- config
- logger
- network)
+ ${EXPAT_LIBRARIES}
+ ${LIBUUID_LIBRARIES}
+ ${EXPAT_LIBRARIES})
+if(SYSTEMD_FOUND)
+ target_link_libraries(${PROJECT_NAME} ${SYSTEMD_LIBRARIES})
+ target_link_libraries(test_suite ${SYSTEMD_LIBRARIES})
+endif()
+if(BOTAN_FOUND)
+ target_link_libraries(${PROJECT_NAME} ${BOTAN_LIBRARIES})
+ target_link_libraries(test_suite ${BOTAN_LIBRARIES})
+elseif(GCRYPT_FOUND)
+ target_link_libraries(${PROJECT_NAME} ${GCRYPT_LIBRARIES})
+ target_link_libraries(test_suite ${GCRYPT_LIBRARIES})
+endif()
+if(UDNS_FOUND)
+ target_link_libraries(${PROJECT_NAME} ${UDNS_LIBRARIES})
+ target_link_libraries(test_suite ${UDNS_LIBRARIES})
+endif()
+if(LIBIDN_FOUND)
+ target_link_libraries(${PROJECT_NAME} ${LIBIDN_LIBRARIES})
+ target_link_libraries(test_suite ${LIBIDN_LIBRARIES})
+endif()
if(USE_DATABASE)
- target_link_libraries(test_suite
- database)
+ target_link_libraries(${PROJECT_NAME} ${LITESQL_LIBRARIES})
+ target_link_libraries(test_suite ${LITESQL_LIBRARIES})
endif()
# Define a __FILENAME__ macro with the relative path (from the base project directory)
diff --git a/louloulibs/CMakeLists.txt b/louloulibs/CMakeLists.txt
index 2268571..4c37c20 100644
--- a/louloulibs/CMakeLists.txt
+++ b/louloulibs/CMakeLists.txt
@@ -51,8 +51,11 @@ include_directories(${ICONV_INCLUDE_DIRS})
include_directories(${LIBUUID_INCLUDE_DIRS})
set(EXPAT_INCLUDE_DIRS ${EXPAT_INCLUDE_DIRS} PARENT_SCOPE)
+set(EXPAT_LIBRARIES ${EXPAT_LIBRARIES} PARENT_SCOPE)
set(ICONV_INCLUDE_DIRS ${ICONV_INCLUDE_DIRS} PARENT_SCOPE)
+set(ICONV_LIBRARIES ${ICONV_LIBRARIES} PARENT_SCOPE)
set(LIBUUID_INCLUDE_DIRS ${LIBUUID_INCLUDE_DIRS} PARENT_SCOPE)
+set(LIBUUID_LIBRARIES ${LIBUUID_LIBRARIES} PARENT_SCOPE)
if(LIBIDN_FOUND)
include_directories(${LIBIDN_INCLUDE_DIRS})
@@ -99,55 +102,35 @@ endif()
#
file(GLOB source_utils
utils/*.[hc]pp)
-add_library(utils STATIC ${source_utils})
-target_link_libraries(utils ${ICONV_LIBRARIES})
+add_library(utils OBJECT ${source_utils})
#
## config
#
file(GLOB source_config
config/*.[hc]pp)
-add_library(config STATIC ${source_config})
+add_library(config OBJECT ${source_config})
#
## logger
#
file(GLOB source_logger
logger/*.[hc]pp)
-add_library(logger STATIC ${source_logger})
-target_link_libraries(logger config)
+add_library(logger OBJECT ${source_logger})
#
## network
#
file(GLOB source_network
network/*.[hc]pp)
-add_library(network STATIC ${source_network})
-target_link_libraries(network logger)
-if(BOTAN_FOUND)
- target_link_libraries(network ${BOTAN_LIBRARIES})
-elseif(GCRYPT_FOUND)
- target_link_libraries(network ${GCRYPT_LIBRARIES})
-endif()
-if(UDNS_FOUND)
- target_link_libraries(network ${UDNS_LIBRARIES})
-endif()
+add_library(network OBJECT ${source_network})
#
## xmpplib
#
file(GLOB source_xmpplib
xmpp/*.[hc]pp)
-add_library(xmpplib STATIC ${source_xmpplib})
-target_link_libraries(xmpplib network utils logger
- ${EXPAT_LIBRARIES}
- ${LIBUUID_LIBRARIES})
-if(LIBIDN_FOUND)
- target_link_libraries(xmpplib ${LIBIDN_LIBRARIES})
-endif()
-if(SYSTEMD_FOUND)
- target_link_libraries(xmpplib ${SYSTEMD_LIBRARIES})
-endif()
+add_library(xmpplib OBJECT ${source_xmpplib})
# Define a __FILENAME__ macro with the relative path (from the base project directory)
# of each source file