]> git.stg.codes - stg.git/blobdiff - libs/CMakeLists.txt
Fix build on Darwin.
[stg.git] / libs / CMakeLists.txt
index af3d944fe88fa0b110ab3bc52e056b381357929e..b2b8ee0ff215f8f261e019eca2ee49b3c772828b 100644 (file)
 set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
 
 if ( BUILD_LIB_COMMON )
-    add_subdirectory (common)
+    find_package ( Iconv REQUIRED )
+    add_library ( common STATIC common/blockio.cpp common/common.cpp common/strptime.cpp )
+    target_include_directories ( common PUBLIC common/include )
+    target_link_libraries ( common Iconv::Iconv )
+
+    if ( CLANG_TIDY_EXE )
+        set_target_properties ( common PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" )
+    endif ()
+    if ( INCLUDE_WHAT_YOU_USE_EXE )
+        set_target_properties ( common PROPERTIES CXX_INCLUDE_WHAT_YOU_USE "${DO_INCLUDE_WHAT_YOU_USE}" )
+    endif ()
 endif ( BUILD_LIB_COMMON )
 
 if ( BUILD_LIB_CONFFILES )
-    add_subdirectory (conffiles)
+    add_library ( conffiles STATIC conffiles/conffiles.cpp )
+    target_include_directories ( conffiles PUBLIC conffiles/include )
+
+    if ( CLANG_TIDY_EXE )
+        set_target_properties ( conffiles PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" )
+    endif ()
+    if ( INCLUDE_WHAT_YOU_USE_EXE )
+        set_target_properties ( conffiles PROPERTIES CXX_INCLUDE_WHAT_YOU_USE "${DO_INCLUDE_WHAT_YOU_USE}" )
+    endif ()
 endif ( BUILD_LIB_CONFFILES )
 
 if ( BUILD_LIB_CRYPTO )
-    add_subdirectory (crypto)
+    add_library ( crypto STATIC crypto/ag_md5.c crypto/bfstream.cpp crypto/blowfish.c )
+    target_include_directories ( crypto PUBLIC crypto/include )
+
+    if ( CLANG_TIDY_EXE )
+        set_target_properties ( crypto PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" )
+    endif ()
+    if ( INCLUDE_WHAT_YOU_USE_EXE )
+        set_target_properties ( crypto PROPERTIES CXX_INCLUDE_WHAT_YOU_USE "${DO_INCLUDE_WHAT_YOU_USE}" )
+    endif ()
 endif ( BUILD_LIB_CRYPTO )
 
 if ( BUILD_LIB_DOTCONFPP )
-    add_subdirectory (dotconfpp)
+    add_library ( dotconfpp STATIC dotconfpp/dotconfpp.cpp dotconfpp/mempool.cpp )
+    target_include_directories ( dotconfpp PUBLIC dotconfpp/include )
+
+    if ( CLANG_TIDY_EXE )
+        set_target_properties ( dotconfpp PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" )
+    endif ()
+    if ( INCLUDE_WHAT_YOU_USE_EXE )
+        set_target_properties ( dotconfpp PROPERTIES CXX_INCLUDE_WHAT_YOU_USE "${DO_INCLUDE_WHAT_YOU_USE}" )
+    endif ()
 endif ( BUILD_LIB_DOTCONFPP )
 
 if ( BUILD_LIB_IA )
-    add_subdirectory (ia)
+    add_library ( ia STATIC ia/ia.cpp )
+    target_include_directories ( ia PUBLIC ia/include )
+    target_link_libraries ( ia crypto common )
+
+    if ( CLANG_TIDY_EXE )
+        set_target_properties ( ia PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" )
+    endif ()
+    if ( INCLUDE_WHAT_YOU_USE_EXE )
+        set_target_properties ( ia PROPERTIES CXX_INCLUDE_WHAT_YOU_USE "${DO_INCLUDE_WHAT_YOU_USE}" )
+    endif ()
 endif ( BUILD_LIB_IA )
 
 if ( BUILD_LIB_IBPP )
-    add_subdirectory (ibpp)
-endif ( BUILD_LIB_IBPP )
+    add_library ( ibpp STATIC ibpp/all_in_one.cpp )
+    target_include_directories ( ibpp PUBLIC ibpp/include )
+    target_compile_options ( ibpp PRIVATE -Wno-old-style-cast $<$<CXX_COMPILER_ID:GNU>:-Wno-useless-cast> )
 
-if ( BUILD_LIB_JSON )
-    add_subdirectory (json)
-endif ( BUILD_LIB_JSON )
+    if ( CLANG_TIDY_EXE )
+        set_target_properties ( ibpp PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" )
+    endif ()
+    if ( INCLUDE_WHAT_YOU_USE_EXE )
+        set_target_properties ( ibpp PROPERTIES CXX_INCLUDE_WHAT_YOU_USE "${DO_INCLUDE_WHAT_YOU_USE}" )
+    endif ()
+endif ( BUILD_LIB_IBPP )
 
 if ( BUILD_LIB_LOGGER )
-    add_subdirectory (logger)
+    add_library ( logger STATIC logger/logger.cpp )
+    target_include_directories ( logger PUBLIC logger/include )
+
+    if ( CLANG_TIDY_EXE )
+        set_target_properties ( logger PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" )
+    endif ()
+    if ( INCLUDE_WHAT_YOU_USE_EXE )
+        set_target_properties ( logger PROPERTIES CXX_INCLUDE_WHAT_YOU_USE "${DO_INCLUDE_WHAT_YOU_USE}" )
+    endif ()
 endif ( BUILD_LIB_LOGGER )
 
 if ( BUILD_LIB_PINGER )
-    add_subdirectory (pinger)
+    add_library ( pinger STATIC pinger/pinger.cpp )
+    target_include_directories ( pinger PUBLIC pinger/include )
+    target_link_libraries ( pinger common )
+
+    if ( CLANG_TIDY_EXE )
+        set_target_properties ( pinger PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" )
+    endif ()
+    if ( INCLUDE_WHAT_YOU_USE_EXE )
+        set_target_properties ( pinger PROPERTIES CXX_INCLUDE_WHAT_YOU_USE "${DO_INCLUDE_WHAT_YOU_USE}" )
+    endif ()
 endif ( BUILD_LIB_PINGER )
 
 if ( BUILD_LIB_SCRIPTEXECUTER )
-    add_subdirectory (scriptexecuter)
+    add_library ( scriptexecuter STATIC scriptexecuter/scriptexecuter.c )
+    target_include_directories ( scriptexecuter PUBLIC scriptexecuter/include )
+
+    if ( CLANG_TIDY_EXE )
+        set_target_properties ( scriptexecuter PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" )
+    endif ()
+    if ( INCLUDE_WHAT_YOU_USE_EXE )
+        set_target_properties ( scriptexecuter PROPERTIES CXX_INCLUDE_WHAT_YOU_USE "${DO_INCLUDE_WHAT_YOU_USE}" )
+    endif ()
 endif ( BUILD_LIB_SCRIPTEXECUTER )
 
 if ( BUILD_LIB_SMUX )
-    add_subdirectory (smux)
+    file ( GLOB SMUX_C_FILES smux/*.c )
+    add_library ( smux STATIC ${SMUX_C_FILES} )
+    target_include_directories ( smux PUBLIC smux/include smux/include/stg )
+    target_compile_options ( smux PRIVATE -Wno-cpp )
+
+    if ( CLANG_TIDY_EXE )
+        set_target_properties ( smux PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" )
+    endif ()
+    if ( INCLUDE_WHAT_YOU_USE_EXE )
+        set_target_properties ( smux PROPERTIES CXX_INCLUDE_WHAT_YOU_USE "${DO_INCLUDE_WHAT_YOU_USE}" )
+    endif ()
 endif ( BUILD_LIB_SMUX )
 
 if ( BUILD_LIB_SRVCONF )
-    add_subdirectory (srvconf)
+    find_package ( EXPAT REQUIRED )
+    file ( GLOB PARSERS srvconf/parsers/*.cpp )
+    add_library ( srvconf STATIC srvconf/servconf.cpp srvconf/netunit.cpp ${PARSERS} )
+    target_include_directories ( srvconf PUBLIC srvconf/include )
+    target_link_libraries ( srvconf crypto common EXPAT::EXPAT )
+
+    if ( CLANG_TIDY_EXE )
+        set_target_properties ( srvconf PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" )
+    endif ()
+    if ( INCLUDE_WHAT_YOU_USE_EXE )
+        set_target_properties ( srvconf PROPERTIES CXX_INCLUDE_WHAT_YOU_USE "${DO_INCLUDE_WHAT_YOU_USE}" )
+    endif ()
 endif ( BUILD_LIB_SRVCONF )