cmake_minimum_required(VERSION 3.10) set(ARCHEUS_STD_VERSION 0.0.0) project(archeus_std LANGUAGES C VERSION ${ARCHEUS_STD_VERSION} DESCRIPTION "libarcheus_std standard archeus c library") include(GNUInstallDirs) function(print var) message("${var} = ${${var}}") endfunction() option(ARCHEUS_STD_DEBUG "Build in debug mode" ON) option(ARCHEUS_STD_DEFAULT_CONFIG "Build with default config keys" ON) option(ARCHEUS_STD_SDL "Build with SDL" OFF) option(ARCHEUS_STD_GLFW "Build with GLFW window" OFF) option(ARCHEUS_STD_GLEW "Build with GLEW" OFF) option(ARCHEUS_STD_OPENGL "Build with OpenGL" OFF) set(ARCHEUS_STD_FLAGS "") if(ARCHEUS_STD_DEBUG) string(APPEND ARCHEUS_STD_FLAGS "-Wall -Werror -g -ggdb ") endif() if(ARCHEUS_STD_DEFAULT_CONFIG) string(APPEND ARCHEUS_STD_FLAGS "-DARC_DEFAULT_CONFIG ") endif() if(ARCHEUS_STD_SDL) find_package(SDL2 REQUIRED) find_package(SDL2_image REQUIRED) string(APPEND ARCHEUS_STD_FLAGS "-DARC_SDL ") endif() if(ARCHEUS_STD_GLFW) string(APPEND ARCHEUS_STD_FLAGS "-DARC_GLFW ") endif() if(ARCHEUS_STD_GLEW) string(APPEND ARCHEUS_STD_FLAGS "-DARC_GLEW ") endif() if(ARCHEUS_STD_OPENGL) string(APPEND ARCHEUS_STD_FLAGS "-DARC_OPENGL") endif() set(CMAKE_C_FLAGS ${ARCHEUS_STD_FLAGS}) set(ARCHEUS_STD_SOURCES src/std/config.c src/std/handler.c src/std/hashtable.c src/std/io.c src/std/string.c src/std/vector.c src/std/defaults/config.c src/math/rectangle.c src/math/vector2.c src/files/config.c src/engine/engine.c src/engine/state.c ) set(ARCHEUS_STD_SDL_SOURCES src/input/sdl/keyboard.c src/input/sdl/mouse.c src/graphics/sdl/config.c src/graphics/sdl/line.c src/graphics/sdl/rectangle.c src/graphics/sdl/renderer.c src/graphics/sdl/sprite.c src/graphics/sdl/spritesheet.c src/graphics/sdl/window.c ) set(ARCHEUS_STD_OPENGL_SOURCES src/graphics/opengl/config.c src/graphics/opengl/line.c src/graphics/opengl/rectangle.c src/graphics/opengl/renderer.c src/graphics/opengl/sprite.c src/graphics/opengl/spritesheet.c src/graphics/opengl/window.c ) set(ARCHEUS_STD_GLFW_SOURCES src/input/glfw/keyboard.c src/input/glfw/mouse.c ) if(ARCHEUS_STD_SDL) list(APPEND ARCHEUS_STD_SOURCES ${ARCHEUS_STD_SDL_SOURCES}) endif() if(ARCHEUS_STD_OPENGL) list(APPEND ARCHEUS_STD_SOURCES ${ARCHEUS_STD_OPENGL_SOURCES}) endif() if(ARCHEUS_STD_GLFW) list(APPEND ARCHEUS_STD_SOURCES ${ARCHEUS_STD_GLFW_SOURCES}) endif() add_library(archeus_std SHARED ${ARCHEUS_STD_SOURCES} ) if(ARCHEUS_STD_SDL) target_include_directories(archeus_std PRIVATE include PUBLIC ${SDL2_INCLUDE_DIRS} PUBLIC ${SDL2IMAGE_INCLUDE_DIRS} ) endif() if(ARCHEUS_STD_OPENGL) target_include_directories(archeus_std PRIVATE include GL glfw GLEW ) endif() install(TARGETS archeus_std EXPORT archeus_std_Exports LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install(EXPORT archeus_std_Exports DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/archeus_std-${PROJECT_VERSION} ) 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( "${PROJECT_SOURCE_DIR}/cmake/archeus_std-config.cmake.in" "${PROJECT_BINARY_DIR}/archeus_std-config.cmake" INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/archeus_std-${PROJECT_VERSION} PATH_VARS INCLUDE_INSTALL_DIR LIBRARY_INSTALL_BIN ) write_basic_package_version_file( "archeus_std-ConfigVersion.cmake" VERSION {PROJECT_VERSION} COMPATIBILITY SameMajorVersion ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/archeus_std-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/archeus_std-ConfigVersion.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/archeus_std-${PROJECT_VERSION} )