aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorFuwn <[email protected]>2022-02-03 10:54:07 +0000
committerFuwn <[email protected]>2022-02-03 10:54:07 +0000
commitf56035efbb6b5033639f118890d21f7e5f8aa03e (patch)
tree6d24bf3f433d8adf8d49437d773c62e7dbfc1be1 /CMakeLists.txt
parentchore(cmake): cleanup compile options (diff)
downloadviv-f56035efbb6b5033639f118890d21f7e5f8aa03e.tar.xz
viv-f56035efbb6b5033639f118890d21f7e5f8aa03e.zip
chore: migrate to cmkr
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt127
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)
+