# 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) 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 DESCRIPTION "🎀 toy gemini client in ansi c (c99)" ) # 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/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/" "deps/" ) 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)