diff options
| author | Fuwn <[email protected]> | 2022-01-21 16:42:38 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2022-01-21 16:42:38 -0800 |
| commit | f303c65b2935cc54ef88a87f3e0511b8ff0c07e3 (patch) | |
| tree | a349ebb5de4a98116dd4066e7ebc053370301a32 /CMakeLists.txt | |
| parent | fix(.gitignore): ignore all build directories (diff) | |
| download | soyuz-f303c65b2935cc54ef88a87f3e0511b8ff0c07e3.tar.xz soyuz-f303c65b2935cc54ef88a87f3e0511b8ff0c07e3.zip | |
build: move to cmkr
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 153 |
1 files changed, 117 insertions, 36 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 606563a..8b48fcc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,36 +1,117 @@ -cmake_minimum_required(VERSION 3.20) -project(soyuz) - -option(DOWNLOAD_EXTERNAL_DEPENDENCIES "Download external dependencies" ON) - -if (DOWNLOAD_EXTERNAL_DEPENDENCIES) - find_package(Git) - if (Git_FOUND) - include(build_tools/cmake/DownloadProject.cmake) - - download_project( - PROJ fmt - GIT_REPOSITORY https://github.com/fmtlib/fmt.git - GIT_TAG master - SOURCE_DIR ${PROJECT_SOURCE_DIR}/deps/fmt - UPDATE_DISCONNECTED 1 - ) - else () - string(CONCAT GIT_NOT_FOUND_WARNING - "Git was not found on your system: skipping downloading external dependencies" - "This will likely lead to Soyuz being unable to compile" - "Consider installing or fixing Git" - ) - message(WARING GIT_NOT_FOUND_WARNING) - endif () -else () - string(CONCAT DOWNLOAD_EXTERNAL_DEPENDENCIES_WARNING - "Skipping downloading external dependencies" - "This will likely lead to Soyuz being unable to compile" - "Consider turning DOWNLOAD_EXTERNAL_DEPENDENCIES ON" - ) - message(WARING DOWNLOAD_EXTERNAL_DEPENDENCIES_WARNING) -endif () - -add_subdirectory(${PROJECT_NAME}) -add_subdirectory(${fmt_SOURCE_DIR}) +# This file is automatically generated from cmake.toml - DO NOT EDIT +# See https://github.com/build-cpp/cmkr for more information + +cmake_minimum_required(VERSION 3.15) + +if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) + message(FATAL_ERROR "In-tree builds are not supported. Run CMake from a separate directory: cmake -B build") +endif() + +# Regenerate CMakeLists.txt automatically in the root project +set(CMKR_ROOT_PROJECT OFF) +if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) + set(CMKR_ROOT_PROJECT ON) + + # Bootstrap cmkr + include("build_tools/cmake/cmkr/cmkr.cmake" OPTIONAL RESULT_VARIABLE CMKR_INCLUDE_RESULT) + if(CMKR_INCLUDE_RESULT) + cmkr() + endif() + + # Enable folder support + set_property(GLOBAL PROPERTY USE_FOLDERS ON) +endif() + +# Create a configure-time dependency on cmake.toml to improve IDE support +if(CMKR_ROOT_PROJECT) + configure_file(cmake.toml cmake.toml COPYONLY) +endif() + +project(soyuz + LANGUAGES + CXX + C + VERSION + 1.1.1 + DESCRIPTION + "🚀 Discord RPC Blocker for Lunar Client" +) + +include(FetchContent) + +message(STATUS "Fetching fmt (8.1.1)...") +FetchContent_Declare( + fmt + GIT_REPOSITORY + https://github.com/fmtlib/fmt + GIT_TAG + 8.1.1 +) +FetchContent_MakeAvailable(fmt) + +# Target soyuz +set(CMKR_TARGET soyuz) +set(soyuz_SOURCES "") + +if(WIN32) # windows + list(APPEND soyuz_SOURCES + "soyuz/library.cc" + "soyuz/soyuz.cc" + "soyuz/tray.cc" + "soyuz/windows.cc" + "resource/resource.rc" + ) +endif() + +list(APPEND soyuz_SOURCES + cmake.toml +) + +set(CMKR_SOURCES ${soyuz_SOURCES}) +add_executable(soyuz) + +if(soyuz_SOURCES) + target_sources(soyuz PRIVATE ${soyuz_SOURCES}) +endif() + +get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT) +if(NOT CMKR_VS_STARTUP_PROJECT) + set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT soyuz) +endif() + +source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${soyuz_SOURCES}) + +target_compile_features(soyuz PRIVATE + cxx_std_20 + cxx_return_type_deduction +) + +if(MSVC) # msvc + target_compile_options(soyuz PRIVATE + "/W4" + "/WX" + ) +endif() + +target_include_directories(soyuz PRIVATE + "include/" +) + +target_link_libraries(soyuz PRIVATE + fmt::fmt +) + +set_target_properties(soyuz PROPERTIES + CXX_STANDARD + 20 + CXX_STANDARD_REQUIRED + ON + CMAKE_CXX_EXTENSIONS + OFF + WIN32_EXECUTABLE + ON +) + +unset(CMKR_TARGET) +unset(CMKR_SOURCES) + |