diff --git a/.gitmodules b/.gitmodules index c3b07a0..0e5bba7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -46,3 +46,9 @@ [submodule "dependencies/libFGL"] path = dependencies/libFGL url = git@github.com:KJNeko/libFGL.git +[submodule "dependencies/trantor"] + path = dependencies/trantor + url = https://github.com/an-tao/trantor.git +[submodule "dependencies/dependencies/spdlog"] + path = dependencies/dependencies/spdlog + url = https://github.com/gabime/spdlog.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 9591746..2ee4896 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,8 @@ # /CMakeLists.txt +set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + cmake_minimum_required(VERSION 3.28) project(IDHAN LANGUAGES CXX) @@ -8,10 +11,7 @@ enable_testing() # Includes fgl_cmake_modules add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/dependencies/libFGL) -set(CMAKE_CXX_STANDARD 23) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -set(SPDLOG_USE_STD_FORMAT ON) +list(APPEND CMAKE_PREFIX_PATH "${CMAKE_CURRENT_LIST_DIR}/dependencies") PreSetup() @@ -27,11 +27,9 @@ endif () set(CMAKE_POSITION_INDEPENDENT_CODE ON) #IDHANServer/IDHANClient -include(spdlog) include(postgres) -include(drogon) -include(qt6) include(toml) + add_subdirectory(IDHAN) add_subdirectory(IDHANServer) add_subdirectory(IDHANClient) @@ -40,7 +38,6 @@ add_subdirectory(docs) if (BUILD_IDHAN_TESTS) #IDHANTests - include(Catch) add_subdirectory(tests) endif () diff --git a/HydrusImporter/CMakeLists.txt b/HydrusImporter/CMakeLists.txt index b10c0ba..663005b 100644 --- a/HydrusImporter/CMakeLists.txt +++ b/HydrusImporter/CMakeLists.txt @@ -1,3 +1,3 @@ - +find_package(Qt6 REQUIRED COMPONENTS Core Network Concurrent) AddFGLExecutable(HydrusImporter ${CMAKE_CURRENT_SOURCE_DIR}/src) target_link_libraries(HydrusImporter PUBLIC Qt6::Core Qt6::Concurrent IDHANClient sqlite3 spdlog) \ No newline at end of file diff --git a/IDHAN/CMakeLists.txt b/IDHAN/CMakeLists.txt index e53851e..15820b9 100644 --- a/IDHAN/CMakeLists.txt +++ b/IDHAN/CMakeLists.txt @@ -1,5 +1,2 @@ - - - AddFGLLibrary(IDHAN OBJECT ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/include) target_link_libraries(IDHAN libFGL) \ No newline at end of file diff --git a/IDHANClient/CMakeLists.txt b/IDHANClient/CMakeLists.txt index 792cd87..a2d5c6d 100644 --- a/IDHANClient/CMakeLists.txt +++ b/IDHANClient/CMakeLists.txt @@ -1,6 +1,8 @@ set(CMAKE_AUTOMOC ON) +find_package(Qt6 REQUIRED COMPONENTS Core Network Concurrent) + AddFGLLibrary(IDHANClient SHARED ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/include) target_include_directories(IDHANClient PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include/idhan) target_link_libraries(IDHANClient PUBLIC IDHAN) diff --git a/IDHANServer/CMakeLists.txt b/IDHANServer/CMakeLists.txt index fddb66b..4c0cf70 100644 --- a/IDHANServer/CMakeLists.txt +++ b/IDHANServer/CMakeLists.txt @@ -20,8 +20,18 @@ add_custom_command( COMMENT "${CMAKE_CURRENT_SOURCE_DIR}/modules/GenerateMigrations.cmake: Generating doMigration.cpp") -target_link_libraries(IDHANServer PUBLIC spdlog fmt drogon) -target_link_libraries(IDHANServer PRIVATE pqxx sqlite3 Qt6::Core tomlplusplus::tomlplusplus) +find_package(Qt6 REQUIRED COMPONENTS Core) +find_package(spdlog REQUIRED) +add_definitions(-DSPDLOG_USE_STD_FORMAT) +find_package(drogon REQUIRED) + +if (spdlog_FOUND) +else () + message(SEND_ERROR "Spdlog not found") +endif () + +target_link_libraries(IDHANServer PUBLIC spdlog drogon) +target_link_libraries(IDHANServer PRIVATE pqxx Qt6::Core tomlplusplus::tomlplusplus) target_link_libraries(IDHANServer PRIVATE IDHAN) target_link_libraries(IDHANServer PRIVATE IDHAN) diff --git a/dependencies/Catch.cmake b/dependencies/Catch.cmake deleted file mode 100644 index 8a8a8cf..0000000 --- a/dependencies/Catch.cmake +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/dependencies/Catch2) \ No newline at end of file diff --git a/dependencies/FindCatch2.cmake b/dependencies/FindCatch2.cmake new file mode 100644 index 0000000..1d88b77 --- /dev/null +++ b/dependencies/FindCatch2.cmake @@ -0,0 +1 @@ +add_subdirectory(${CMAKE_SOURCE_DIR}/dependencies/Catch2 ${CMAKE_CURRENT_BINARY_DIR}/Catch2) \ No newline at end of file diff --git a/dependencies/Finddrogon.cmake b/dependencies/Finddrogon.cmake new file mode 100644 index 0000000..b44cd67 --- /dev/null +++ b/dependencies/Finddrogon.cmake @@ -0,0 +1,21 @@ + +set(BUILD_MYSQL OFF) +set(BUILD_SQLITE OFF) +set(BUILD_REDIS OFF) +set(BUILD_ORM ON) +set(BUILD_EXAMPLES OFF) +set(BUILD_CTL OFF) + +set(USE_MYSQL OFF) +set(USE_SQLITE3 OFF) + +set(USE_SPDLOG ON) + +set(BUILD_TESTING ON) + +set(CMAKE_CXX_STANDARD 20) + +set(USE_SUBMODULE OFF) + +add_subdirectory(${CMAKE_SOURCE_DIR}/dependencies/drogon ${CMAKE_CURRENT_BINARY_DIR}/drogon) +set(drogon_FOUND TRUE) \ No newline at end of file diff --git a/dependencies/TrantorConfig.cmake b/dependencies/TrantorConfig.cmake new file mode 100644 index 0000000..180d98a --- /dev/null +++ b/dependencies/TrantorConfig.cmake @@ -0,0 +1,21 @@ + + +if (NOT TARGET Trantor::Trantor) + + set(USE_SPDLOG ON) + + # Trantor apparently uses a really shitty install thing from cmake. + # There is no way to disable it, So we do this instead. What. The. Fuck? + macro(install) + endmacro() + + set(CMAKE_CXX_STANDARD 23) + + add_subdirectory(${CMAKE_SOURCE_DIR}/dependencies/trantor ${CMAKE_CURRENT_BINARY_DIR}/trantor) + set(Trantor_FOUND TRUE) + + set_target_properties(trantor PROPERTIES CXX_STANDARD 23) + + add_library(Trantor::Trantor ALIAS trantor) + +endif () \ No newline at end of file diff --git a/dependencies/drogon.cmake b/dependencies/drogon.cmake deleted file mode 100644 index 7428fbd..0000000 --- a/dependencies/drogon.cmake +++ /dev/null @@ -1,12 +0,0 @@ - -set(BUILD_MYSQL OFF) -set(BUILD_SQLITE OFF) -set(BUILD_REDIS OFF) -set(BUILD_ORM ON) -set(BUILD_EXAMPLES OFF) -set(BUILD_CTL OFF) - -set(USE_MYSQL OFF) -set(USE_SQLITE3 OFF) - -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/dependencies/drogon) \ No newline at end of file diff --git a/dependencies/qt6.cmake b/dependencies/qt6.cmake deleted file mode 100644 index 462cf56..0000000 --- a/dependencies/qt6.cmake +++ /dev/null @@ -1,8 +0,0 @@ - -set(CMAKE_AUTOMOC ON) - -#if (BUILD_HYDRUS_IMPORTER ON) -find_package(Qt6 REQUIRED COMPONENTS Core Network Concurrent) -#else () -# find_package(Qt6 REQUIRED COMPONENTS Core) -#endif () diff --git a/dependencies/spdlog.cmake b/dependencies/spdlog.cmake deleted file mode 100644 index d638a78..0000000 --- a/dependencies/spdlog.cmake +++ /dev/null @@ -1,3 +0,0 @@ - -set(SPDLOG_USE_STD_FORMAT ON) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/dependencies/spdlog) \ No newline at end of file diff --git a/dependencies/spdlogConfig.cmake b/dependencies/spdlogConfig.cmake new file mode 100644 index 0000000..f773b09 --- /dev/null +++ b/dependencies/spdlogConfig.cmake @@ -0,0 +1,9 @@ + + +if (NOT TARGET spdlog) + set(CMAKE_CXX_STANDARD 23) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(SPDLOG_USE_STD_FORMAT ON) + + add_subdirectory(${CMAKE_SOURCE_DIR}/dependencies/spdlog ${CMAKE_CURRENT_BINARY_DIR}/spdlog) +endif () \ No newline at end of file diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index e024631..85f5c42 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -3,20 +3,26 @@ if (BUILD_IDHAN_DOCS) find_package(Doxygen) + if (doxygen_FOUND) + + set(DOXYGEN_OUT ${CMAKE_CURRENT_SOURCE_DIR}/out) + + add_custom_target(GenerateDoxygenDocs DEPENDS ${DOXYGEN_OUT}) + + add_custom_command( + OUTPUT ${DOXYGEN_OUT} + COMMAND ${DOXYGEN_EXECUTABLE} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/.. + COMMENT "Building doxygen docs" + ) + + add_dependencies(IDHANServer GenerateDoxygenDocs) + + endif (doxygen_FOUND) + set(API_YAML ${CMAKE_CURRENT_SOURCE_DIR}/api) set(API_YAML_OUT ${CMAKE_BINARY_DIR}/bin/pages/api) - set(DOXYGEN_OUT ${CMAKE_CURRENT_SOURCE_DIR}/out) - - add_custom_target(IDHANDocs DEPENDS ${API_YAML_OUT} ${DOXYGEN_OUT}) - - add_custom_command( - OUTPUT ${DOXYGEN_OUT} - COMMAND ${DOXYGEN_EXECUTABLE} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/.. - COMMENT "Building doxygen docs" - ) - - file(GLOB_RECURSE YAML_FILES + file(GLOB_RECURSE YAML_FILES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/api/*.yaml" ) @@ -27,5 +33,8 @@ if (BUILD_IDHAN_DOCS) COMMENT "Copying API docs" ) - add_dependencies(IDHANServer IDHANDocs) + + add_custom_target(GenerateAPIYaml DEPENDS ${API_YAML_OUT}) + + add_dependencies(IDHANServer GenerateAPIYaml) endif ()