diff options
| author | Fuwn <[email protected]> | 2022-02-03 10:54:07 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2022-02-03 10:54:07 +0000 |
| commit | f56035efbb6b5033639f118890d21f7e5f8aa03e (patch) | |
| tree | 6d24bf3f433d8adf8d49437d773c62e7dbfc1be1 /CMakeLists.txt | |
| parent | chore(cmake): cleanup compile options (diff) | |
| download | viv-f56035efbb6b5033639f118890d21f7e5f8aa03e.tar.xz viv-f56035efbb6b5033639f118890d21f7e5f8aa03e.zip | |
chore: migrate to cmkr
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 127 |
1 files changed, 125 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index ada4a13..0d42959 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,127 @@ +# 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.13.4) -project(viv C) -add_subdirectory(${PROJECT_NAME})
\ No newline at end of file +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("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(viv + LANGUAGES + C + VERSION + 0.1.0 +) + +# Packages +find_package(OpenSSL REQUIRED) + +find_package(Curses REQUIRED) + +# Target viv +set(CMKR_TARGET viv) +set(viv_SOURCES "") + +list(APPEND viv_SOURCES + "viv/cli.c" + "viv/dynamic_array.c" + "viv/flag.c" + "viv/gemini.c" + "viv/log.c" + "viv/ssl.c" + "viv/ui.c" + "viv/viv.c" +) + +list(APPEND viv_SOURCES + cmake.toml +) + +set(CMKR_SOURCES ${viv_SOURCES}) +add_executable(viv) + +if(viv_SOURCES) + target_sources(viv PRIVATE ${viv_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 viv) +endif() + +source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${viv_SOURCES}) + +target_compile_options(viv PRIVATE + -std=c99 + -Wall + -Wextra + -Werror=pedantic + -Wno-unused-function + -Wpedantic + -pedantic-errors + -march=native + -D_XOPEN_SOURCE=500 +) + +target_include_directories(viv PRIVATE + "include/" +) + +if(CURSES_FOUND AND CURSES_HAVE_NCURSES_H) # curses + target_include_directories(viv PRIVATE + ncurses + menu + ) +endif() + +target_link_libraries(viv PRIVATE + OpenSSL::SSL + OpenSSL::Crypto +) + +if(CURSES_FOUND AND CURSES_HAVE_NCURSES_H) # curses + target_link_libraries(viv PRIVATE + ncurses + menu + ) +endif() + +target_link_options(viv PRIVATE + -fsanitize=address +) + +set_target_properties(viv PROPERTIES + CMAKE_C_STANDARD_REQUIRED + ON + CMAKE_C_STANDARD + 99 + CMAKE_C_EXTENSIONS + OFF + CURSES_NEED_NCURSES + ON +) + +unset(CMKR_TARGET) +unset(CMKR_SOURCES) + |