cmake_minimum_required(VERSION 3.16) project(lubuntu_ci_all CXX) set(CMAKE_AUTOMOC ON) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_BUILD_TYPE Debug CACHE STRING "Build type" FORCE) include(CheckCXXCompilerFlag) check_cxx_compiler_flag("-flto=3" COMPILER_SUPPORTS_LTO) if(COMPILER_SUPPORTS_LTO) message(STATUS "Enabling LTO Level 3") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto=3 -O3") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto=3 -O3") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto=3") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto=3") endif() # # Allow the user to override LAUNCHPAD_CPP_INCLUDE_DIR/LAUNCHPAD_CPP_LIBRARY # if (NOT DEFINED LAUNCHPAD_CPP_INCLUDE_DIR) set(LAUNCHPAD_CPP_INCLUDE_DIR "/srv/lubuntu-ci/repos/ci-tools/include/launchpadlib-cpp") endif() if (NOT DEFINED LAUNCHPAD_CPP_LIBRARY) set(LAUNCHPAD_CPP_LIBRARY "/srv/lubuntu-ci/repos/ci-tools/lib/liblaunchpad.so") endif() find_package(Qt6 REQUIRED COMPONENTS Core HttpServer Sql) find_package(PkgConfig REQUIRED) find_package(yaml-cpp REQUIRED) pkg_check_modules(LIBARCHIVE REQUIRED libarchive) pkg_check_modules(LIBGIT2 REQUIRED libgit2) find_package(ZLIB REQUIRED) find_package(CURL REQUIRED) set(UUID_LIB "uuid") # # 1. The main library: lubuntuci_lib # add_library(lubuntuci_lib SHARED common.cpp utilities.cpp db_common.cpp git_common.cpp sources_parser.cpp ci_logic.cpp ci_database_objs.cpp lubuntuci_lib.cpp task_queue.cpp template_renderer.cpp web_server.cpp naive_bayes_classifier.cpp ) target_include_directories(lubuntuci_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${LAUNCHPAD_CPP_INCLUDE_DIR}" ) target_link_libraries(lubuntuci_lib Qt6::Core Qt6::HttpServer Qt6::Sql yaml-cpp ${LIBARCHIVE_LIBRARIES} ${LIBGIT2_LIBRARIES} "${LAUNCHPAD_CPP_LIBRARY}" ZLIB::ZLIB CURL::libcurl ${UUID_LIB} ) # # 2. The update-maintainer-lib library # add_library(update_maintainer_lib STATIC update-maintainer-lib.cpp ) target_include_directories(update_maintainer_lib PRIVATE "${LAUNCHPAD_CPP_INCLUDE_DIR}" ) target_link_libraries(update_maintainer_lib lubuntuci_lib yaml-cpp CURL::libcurl ${LIBARCHIVE_LIBRARIES} ${LIBGIT2_LIBRARIES} ZLIB::ZLIB "${LAUNCHPAD_CPP_LIBRARY}" ${UUID_LIB} ) # # 3. Build each executable # add_executable(update-maintainer update-maintainer.cpp) target_link_libraries(update-maintainer lubuntuci_lib update_maintainer_lib yaml-cpp ${LIBARCHIVE_LIBRARIES} ${LIBGIT2_LIBRARIES} ZLIB::ZLIB CURL::libcurl "${LAUNCHPAD_CPP_LIBRARY}" ${UUID_LIB} ) add_executable(lintian-ppa lintian-ppa.cpp) target_link_libraries(lintian-ppa lubuntuci_lib yaml-cpp ${LIBARCHIVE_LIBRARIES} ${LIBGIT2_LIBRARIES} "${LAUNCHPAD_CPP_LIBRARY}" ZLIB::ZLIB CURL::libcurl ${UUID_LIB} ) add_executable(fetch-indexes fetch-indexes.cpp) target_link_libraries(fetch-indexes lubuntuci_lib yaml-cpp ${LIBARCHIVE_LIBRARIES} ${LIBGIT2_LIBRARIES} "${LAUNCHPAD_CPP_LIBRARY}" ZLIB::ZLIB CURL::libcurl ${UUID_LIB} ) add_executable(web_ui main.cpp) target_link_libraries(web_ui lubuntuci_lib yaml-cpp ${LIBARCHIVE_LIBRARIES} ${LIBGIT2_LIBRARIES} ZLIB::ZLIB CURL::libcurl "${LAUNCHPAD_CPP_LIBRARY}" ${UUID_LIB} ) install(TARGETS lubuntuci_lib LIBRARY DESTINATION lib ) install(TARGETS web_ui fetch-indexes update-maintainer lintian-ppa RUNTIME DESTINATION . )