cmake: Modernize build system
[quassel.git] / src / common / CMakeLists.txt
index 1b77daf..ebc626f 100644 (file)
@@ -1,6 +1,6 @@
-# Builds the common module
+quassel_add_module(Common)
 
-set(SOURCES
+target_sources(${TARGET} PRIVATE
     abstractsignalwatcher.h
     aliasmanager.cpp
     authhandler.cpp
@@ -56,39 +56,41 @@ set(SOURCES
     # needed for automoc
     irccap.h
     protocol.h
-)
 
-if (HAVE_SYSLOG)
-    add_definitions(-DHAVE_SYSLOG)
-endif()
+    ${COMMON_RCS}
+)
 
-if (APPLE)
-    set(SOURCES ${SOURCES} mac_utils.cpp)
-endif()
+# Needed for finding the generated version.h
+target_include_directories(${TARGET} PRIVATE ${CMAKE_BINARY_DIR})
 
-qt5_add_resources(SOURCES ${COMMON_RCS})
+target_link_libraries(${TARGET} PUBLIC
+    ${CMAKE_DL_LIBS}
+    Qt5::Core
+    Qt5::Network
+    ZLIB::ZLIB
+)
 
-add_library(mod_common STATIC ${SOURCES})
-qt5_use_modules(mod_common Core Network)
+if (HAVE_SYSLOG)
+    target_compile_definitions(${TARGET} PRIVATE -DHAVE_SYSLOG)
+endif()
 
 if (WIN32)
-    target_sources(mod_common PRIVATE logbacktrace_win.cpp windowssignalwatcher.cpp)
+    target_sources(${TARGET} PRIVATE logbacktrace_win.cpp windowssignalwatcher.cpp)
 else()
     if (Backtrace_FOUND)
         configure_file(backtrace_config.h.in backtrace_config.h)
-        target_compile_definitions(mod_common PRIVATE -DHAVE_BACKTRACE)
-        target_include_directories(mod_common PRIVATE ${Backtrace_INCLUDE_DIRS})
-        target_link_libraries(mod_common PRIVATE ${Backtrace_LIBRARIES})
+        target_include_directories(${TARGET} PRIVATE ${Backtrace_INCLUDE_DIRS})
+        target_link_libraries(${TARGET} PRIVATE ${Backtrace_LIBRARIES})
+        set_property(SOURCE logbacktrace_unix.cpp posixsignalwatcher.cpp APPEND PROPERTY COMPILE_DEFINITIONS HAVE_BACKTRACE)
     endif()
-    target_sources(mod_common PRIVATE logbacktrace_unix.cpp posixsignalwatcher.cpp)
+    target_sources(${TARGET} PRIVATE logbacktrace_unix.cpp posixsignalwatcher.cpp)
 endif()
 
 if (APPLE)
-    target_link_libraries(mod_common "-framework CoreServices" "-framework CoreFoundation")
+    target_sources(${TARGET} PRIVATE mac_utils.cpp)
+    target_link_libraries(${TARGET} PUBLIC "-framework CoreServices" "-framework CoreFoundation")
 endif()
 
-target_link_libraries(mod_common ${CMAKE_DL_LIBS} ZLIB::ZLIB)
-
 # This is needed so translations are generated before trying to build the qrc.
 # Should probably find a nicer solution with proper dependencies between the involved files, though...
-add_dependencies(mod_common po)
+add_dependencies(${TARGET} po)