aboutsummaryrefslogtreecommitdiff
path: root/ricochet/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'ricochet/CMakeLists.txt')
-rw-r--r--ricochet/CMakeLists.txt47
1 files changed, 47 insertions, 0 deletions
diff --git a/ricochet/CMakeLists.txt b/ricochet/CMakeLists.txt
new file mode 100644
index 0000000..c2150b8
--- /dev/null
+++ b/ricochet/CMakeLists.txt
@@ -0,0 +1,47 @@
+cmake_minimum_required(VERSION 3.24.2)
+
+project(
+ Ricochet
+ VERSION 0.1.0
+ DESCRIPTION "A minimalist CLI web browser for fast, distraction-free navigation."
+ LANGUAGES CXX
+)
+
+if(${PROJECT_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
+ message(FATAL_ERROR "Ricochet must be built outside its source directory, e.g. `cmake -B build`.")
+endif()
+
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
+
+foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
+ string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/bin)
+ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/lib)
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/lib)
+endforeach()
+
+include(etc/build_type.cmake)
+include(etc/cflags.cmake)
+include(etc/scanners.cmake)
+include(etc/tests.cmake)
+
+add_subdirectory(src)
+add_subdirectory(tests)
+
+install(TARGETS ricochet
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+)
+
+if(NOT TARGET uninstall)
+ configure_file(
+ "${PROJECT_SOURCE_DIR}/etc/cmake_uninstall.cmake.in"
+ "${PROJECT_BINARY_DIR}/cmake_uninstall.cmake"
+ IMMEDIATE @ONLY)
+
+ add_custom_target(uninstall
+ COMMAND ${CMAKE_COMMAND} -P "${PROJECT_BINARY_DIR}/cmake_uninstall.cmake")
+endif() \ No newline at end of file