2024-01-12 19:48:06 -07:00
|
|
|
cmake_minimum_required(VERSION 3.25)
|
2022-10-27 15:16:54 -06:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
set(ARCHEUS_VERSION 0.0.0)
|
|
|
|
|
project(archeus LANGUAGES C VERSION ${ARCHEUS_VERSION} DESCRIPTION "libarcheus c library")
|
2022-10-27 15:16:54 -06:00
|
|
|
|
2024-08-31 06:09:33 -06:00
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
|
|
2022-10-27 15:16:54 -06:00
|
|
|
include(GNUInstallDirs)
|
|
|
|
|
|
|
|
|
|
function(print var)
|
|
|
|
|
message("${var} = ${${var}}")
|
|
|
|
|
endfunction()
|
|
|
|
|
|
2024-01-12 19:48:06 -07:00
|
|
|
#TODO: Might want to remove this
|
|
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
2025-02-08 02:15:23 -07:00
|
|
|
message("[Archeus] Build Type not set, defaulting to Debug")
|
2024-01-12 19:48:06 -07:00
|
|
|
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Default to Debug" FORCE)
|
2022-10-27 15:16:54 -06:00
|
|
|
endif()
|
|
|
|
|
|
2024-08-28 01:36:58 -06:00
|
|
|
add_compile_options(
|
2024-08-28 02:57:29 -06:00
|
|
|
"-Wall" "-Werror" "-fexceptions"
|
2024-08-28 01:36:58 -06:00
|
|
|
"$<$<CONFIG:DEBUG>:-O0;-g3;-ggdb;-DARC_DEBUG;>"
|
|
|
|
|
"$<$<CONFIG:RELEASE>:-02;-g;>"
|
|
|
|
|
)
|
|
|
|
|
|
2024-01-12 19:48:06 -07:00
|
|
|
# ~ OPTIONS ~ #
|
2025-02-08 02:15:23 -07:00
|
|
|
option(ARCHEUS_DEFAULT_CONFIG "Build with default config keys" ON)
|
|
|
|
|
option(ARCHEUS_TESTS "Build with tests" OFF)
|
2022-10-27 15:16:54 -06:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
set(ARCHEUS_WINDOW_BACKEND "NONE" CACHE STRING "Window Backend to build with")
|
|
|
|
|
set_property(CACHE ARCHEUS_WINDOW_BACKEND PROPERTY STRINGS NONE SDL2 GLFW)
|
2024-05-20 03:46:04 -06:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
set(ARCHEUS_INPUT_BACKEND "NONE" CACHE STRING "Input Backend to build with, most likely should match Window Backend")
|
|
|
|
|
set_property(CACHE ARCHEUS_INPUT_BACKEND PROPERTY STRINGS NONE SDL2 GLFW)
|
2023-03-10 17:34:22 -07:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
set(ARCHEUS_GRAPHICS_BACKEND "NONE" CACHE STRING "Graphics Backend to build with")
|
|
|
|
|
set_property(CACHE ARCHEUS_GRAPHICS_BACKEND PROPERTY STRINGS NONE SDL2 OPENGL)
|
2023-03-10 17:34:22 -07:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
if(UNIX)
|
|
|
|
|
set(ARCHEUS_CONSOLE_BACKEND "NONE" CACHE STRING "Console Backend to build with")
|
|
|
|
|
set_property(CACHE ARCHEUS_CONSOLE_BACKEND PROPERTY STRINGS NONE NCURSES)
|
2023-03-10 17:34:22 -07:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
set(ARCHEUS_SSH_BACKEND "NONE" CACHE STRING "SSH Backend to build with")
|
|
|
|
|
set_property(CACHE ARCHEUS_SSH_BACKEND PROPERTY STRINGS NONE LIBSSH)
|
|
|
|
|
|
|
|
|
|
set(ARCHEUS_DBUS_BACKEND "NONE" CACHE STRING "DBus Backend to build with")
|
|
|
|
|
set_property(CACHE ARCHEUS_DBUS_BACKEND PROPERTY STRINGS NONE LIBDBUS)
|
|
|
|
|
endif()
|
2024-05-25 01:34:09 -06:00
|
|
|
|
|
|
|
|
|
2024-01-12 19:48:06 -07:00
|
|
|
# ~ INIT VARIABLES ~ #
|
2025-02-08 02:15:23 -07:00
|
|
|
set(ARCHEUS_FLAGS "")
|
|
|
|
|
set(ARCHEUS_LIBRARIES "")
|
2022-10-27 15:16:54 -06:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
set(ARCHEUS_INCLUDE_DIRECTORIES
|
2024-02-08 17:47:32 -07:00
|
|
|
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
|
|
|
)
|
|
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
set(ARCHEUS_LINK_LIBRARIES
|
2024-02-08 17:47:32 -07:00
|
|
|
PUBLIC m
|
|
|
|
|
)
|
|
|
|
|
|
2024-01-12 19:48:06 -07:00
|
|
|
# ~ ARCHEUS_SOURCES ~ #
|
2025-02-08 02:15:23 -07:00
|
|
|
set(ARCHEUS_SOURCES
|
2025-03-11 00:41:17 -06:00
|
|
|
src/std/config.c
|
|
|
|
|
src/std/entity.c
|
2024-01-12 19:48:06 -07:00
|
|
|
src/std/errno.c
|
2023-02-26 23:24:38 -07:00
|
|
|
src/std/handler.c
|
2022-10-27 15:16:54 -06:00
|
|
|
src/std/hashtable.c
|
|
|
|
|
src/std/io.c
|
2024-08-31 06:09:33 -06:00
|
|
|
src/std/lexer.c
|
2024-10-16 05:14:53 -06:00
|
|
|
src/std/parser.c
|
2024-12-04 02:43:58 -07:00
|
|
|
src/std/parser/csv.c
|
|
|
|
|
src/std/parser/helpers.c
|
2024-11-06 06:45:04 -07:00
|
|
|
src/std/parser/parserlang.c
|
2024-02-20 00:01:02 -07:00
|
|
|
src/std/queue.c
|
2024-02-08 02:48:08 -07:00
|
|
|
src/std/stack.c
|
2022-10-27 15:16:54 -06:00
|
|
|
src/std/string.c
|
2024-05-20 03:46:04 -06:00
|
|
|
src/std/time.c
|
2022-10-27 15:16:54 -06:00
|
|
|
src/std/vector.c
|
2025-03-13 19:22:27 -06:00
|
|
|
src/std/vector/inline.c
|
2023-02-26 23:24:38 -07:00
|
|
|
|
2023-06-25 02:22:44 -06:00
|
|
|
src/math/circle.c
|
2025-03-22 03:38:28 -06:00
|
|
|
src/math/config.c
|
2023-06-25 16:17:04 -06:00
|
|
|
src/math/obround.c
|
2023-09-14 01:34:08 -06:00
|
|
|
src/math/point.c
|
2023-02-26 23:24:38 -07:00
|
|
|
src/math/rectangle.c
|
|
|
|
|
src/math/vector2.c
|
|
|
|
|
|
|
|
|
|
src/engine/engine.c
|
|
|
|
|
src/engine/state.c
|
|
|
|
|
)
|
|
|
|
|
|
2024-01-12 19:48:06 -07:00
|
|
|
# ~ NONE ~ #
|
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/archeus_none.cmake)
|
2025-02-08 02:15:23 -07:00
|
|
|
none_check_and_init_needed(ARCHEUS_FLAGS ARCHEUS_SOURCES ${ARCHEUS_WINDOW_BACKEND} ${ARCHEUS_INPUT_BACKEND} ${ARCHEUS_GRAPHICS_BACKEND})
|
2024-05-20 03:46:04 -06:00
|
|
|
|
2024-01-12 19:48:06 -07:00
|
|
|
# ~ SDL2 ~ #
|
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/archeus_sdl2.cmake)
|
2025-02-08 02:15:23 -07:00
|
|
|
sdl2_check_and_init_needed(ARCHEUS_SOURCES ARCHEUS_INCLUDE_DIRECTORIES ARCHEUS_LINK_LIBRARIES ${ARCHEUS_WINDOW_BACKEND} ${ARCHEUS_INPUT_BACKEND} ${ARCHEUS_GRAPHICS_BACKEND})
|
2024-01-12 19:48:06 -07:00
|
|
|
|
|
|
|
|
# ~ OPENGL ~ #
|
2024-01-19 01:17:19 -07:00
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/archeus_opengl.cmake)
|
2025-02-08 02:15:23 -07:00
|
|
|
opengl_check_and_init_needed(ARCHEUS_FLAGS ARCHEUS_SOURCES ${ARCHEUS_GRAPHICS_BACKEND})
|
2024-01-12 19:48:06 -07:00
|
|
|
|
2024-01-19 01:17:19 -07:00
|
|
|
# ~ GLFW ~ #
|
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/archeus_glfw.cmake)
|
2025-02-08 02:15:23 -07:00
|
|
|
glfw_check_and_init_needed(ARCHEUS_FLAGS ARCHEUS_SOURCES ${ARCHEUS_WINDOW_BACKEND} ${ARCHEUS_INPUT_BACKEND})
|
|
|
|
|
|
|
|
|
|
if(UNIX)
|
|
|
|
|
# ~ NCURSES ~ #
|
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/archeus_ncurses.cmake)
|
|
|
|
|
ncurses_check_and_init_needed(ARCHEUS_FLAGS ARCHEUS_SOURCES ${ARCHEUS_CONSOLE_BACKEND})
|
2024-01-12 19:48:06 -07:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
# ~ LIBSSH ~ #
|
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/archeus_libssh.cmake)
|
|
|
|
|
libssh_check_and_init_needed(ARCHEUS_FLAGS ARCHEUS_SOURCES ${ARCHEUS_SSH_BACKEND})
|
|
|
|
|
|
|
|
|
|
# ~ LIBDBUS ~ #
|
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/archeus_libdbus.cmake)
|
|
|
|
|
libdbus_check_and_init_needed(ARCHEUS_SOURCES ARCHEUS_INCLUDE_DIRECTORIES ARCHEUS_LINK_LIBRARIES ${ARCHEUS_DBUS_BACKEND})
|
|
|
|
|
endif()
|
2024-05-25 01:34:09 -06:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
#if(ARCHEUS_GLEW)
|
|
|
|
|
# string(APPEND ARCHEUS_FLAGS "-DARC_GLEW ")
|
2024-01-19 01:17:19 -07:00
|
|
|
#endif()
|
2024-01-12 19:48:06 -07:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
set(CMAKE_C_FLAGS ${ARCHEUS_FLAGS})
|
2023-02-26 23:24:38 -07:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
if(ARCHEUS_TESTS)
|
2024-08-31 06:09:33 -06:00
|
|
|
add_executable(tests
|
|
|
|
|
tests/test.c
|
|
|
|
|
|
2025-03-13 19:22:27 -06:00
|
|
|
#tests/std/config.c
|
2025-03-11 00:41:17 -06:00
|
|
|
#tests/std/entity.c
|
2025-03-07 14:44:04 -07:00
|
|
|
#tests/std/hashtable.c
|
2025-02-14 03:23:42 -07:00
|
|
|
#tests/std/lexer.c
|
|
|
|
|
#tests/std/parser.c
|
|
|
|
|
#tests/std/parser/csv.c
|
|
|
|
|
#tests/std/parser/parserlang.c
|
|
|
|
|
#tests/std/vector.c
|
2025-03-13 19:22:27 -06:00
|
|
|
tests/std/vector/inline.c
|
2024-08-31 06:09:33 -06:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
${ARCHEUS_SOURCES}
|
2024-08-31 06:09:33 -06:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
target_compile_options(tests PUBLIC "-DARC_DEBUG_LOG_STREAM_OVERRIDE")
|
2025-02-08 02:15:23 -07:00
|
|
|
target_include_directories(tests ${ARCHEUS_INCLUDE_DIRECTORIES})
|
|
|
|
|
target_link_libraries(tests ${ARCHEUS_LINK_LIBRARIES})
|
2024-08-31 06:09:33 -06:00
|
|
|
endif()
|
|
|
|
|
|
2023-03-11 01:21:36 -07:00
|
|
|
if(WIN32 AND NOT MSVC)
|
2025-02-08 02:15:23 -07:00
|
|
|
add_library(archeus STATIC ${ARCHEU_SOURCES})
|
2023-03-11 01:21:36 -07:00
|
|
|
else()
|
2025-02-08 02:15:23 -07:00
|
|
|
add_library(archeus SHARED ${ARCHEUS_SOURCES})
|
2023-03-11 01:21:36 -07:00
|
|
|
endif()
|
2022-10-27 15:16:54 -06:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
target_include_directories(archeus ${ARCHEUS_INCLUDE_DIRECTORIES})
|
2023-02-26 23:24:38 -07:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
target_link_libraries(archeus ${ARCHEUS_LINK_LIBRARIES})
|
2022-10-27 15:16:54 -06:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
install(TARGETS archeus EXPORT archeus_Exports
|
2022-10-27 15:16:54 -06:00
|
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
|
|
|
)
|
|
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
install(EXPORT archeus_Exports
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/archeus-${PROJECT_VERSION}
|
2022-10-27 15:16:54 -06:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/include/
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
|
|
|
FILES_MATCHING
|
|
|
|
|
PATTERN *.h
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
include(CMakePackageConfigHelpers)
|
|
|
|
|
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})
|
|
|
|
|
set(LIBRARY_INSTALL_BIN ${CMAKE_INSTALL_LIBDIR})
|
|
|
|
|
|
|
|
|
|
configure_package_config_file(
|
2025-02-08 02:15:23 -07:00
|
|
|
"${PROJECT_SOURCE_DIR}/cmake/archeus-config.cmake.in"
|
|
|
|
|
"${PROJECT_BINARY_DIR}/archeus-config.cmake"
|
2022-10-27 15:16:54 -06:00
|
|
|
|
2025-02-08 02:15:23 -07:00
|
|
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/archeus-${PROJECT_VERSION}
|
2022-10-27 15:16:54 -06:00
|
|
|
PATH_VARS INCLUDE_INSTALL_DIR LIBRARY_INSTALL_BIN
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
write_basic_package_version_file(
|
2025-02-08 02:15:23 -07:00
|
|
|
"archeus-ConfigVersion.cmake"
|
2022-10-27 15:16:54 -06:00
|
|
|
VERSION {PROJECT_VERSION}
|
|
|
|
|
COMPATIBILITY SameMajorVersion
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
install(FILES
|
2025-02-08 02:15:23 -07:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/archeus-config.cmake
|
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/archeus-ConfigVersion.cmake
|
2022-10-27 15:16:54 -06:00
|
|
|
DESTINATION
|
2025-02-08 02:15:23 -07:00
|
|
|
${CMAKE_INSTALL_LIBDIR}/cmake/archeus-${PROJECT_VERSION}
|
2022-10-27 15:16:54 -06:00
|
|
|
)
|