aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorFuwn <[email protected]>2022-01-21 16:42:38 -0800
committerFuwn <[email protected]>2022-01-21 16:42:38 -0800
commitf303c65b2935cc54ef88a87f3e0511b8ff0c07e3 (patch)
treea349ebb5de4a98116dd4066e7ebc053370301a32 /CMakeLists.txt
parentfix(.gitignore): ignore all build directories (diff)
downloadsoyuz-f303c65b2935cc54ef88a87f3e0511b8ff0c07e3.tar.xz
soyuz-f303c65b2935cc54ef88a87f3e0511b8ff0c07e3.zip
build: move to cmkr
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt153
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)
+