2022-10-07 15:48:50 +02:00
|
|
|
cmake_minimum_required(VERSION 3.10)
|
|
|
|
|
|
|
|
project(KekEngine VERSION 1.0)
|
|
|
|
|
|
|
|
option(BUILD_SHARED_LIBS "Build as a shared library" ON)
|
2022-10-08 14:15:43 +02:00
|
|
|
option(KEKENGINE_DEBUG "Build with debug information" OFF)
|
|
|
|
option(KEKENGINE_BUILD_KEKGAME "Build kekgame" OFF)
|
2022-10-07 15:48:50 +02:00
|
|
|
|
2022-10-08 14:15:43 +02:00
|
|
|
message("Build shared libs: ${BUILD_SHARED_LIBS}")
|
|
|
|
message("Debug: ${KEKENGINE_DEBUG}")
|
|
|
|
message("Build kekgame: ${KEKENGINE_BUILD_KEKGAME}")
|
2022-10-07 15:48:50 +02:00
|
|
|
|
|
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
|
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
|
|
|
2022-10-08 14:15:43 +02:00
|
|
|
set(KEKENGINE_RESOURCE_DIR "${CMAKE_SOURCE_DIR}/src/kekengine/res")
|
|
|
|
set(KEKGAME_RESOURCE_DIR "${CMAKE_SOURCE_DIR}/src/kekgame/res")
|
|
|
|
|
|
|
|
file(GLOB KEKENGINE_SOURCE_FILES "src/kekengine/cpp/*.cpp")
|
|
|
|
file(GLOB_RECURSE KEKENGINE_RESOURCE_FILES "${KEKENGINE_RESOURCE_DIR}/*")
|
|
|
|
file(GLOB_RECURSE KEKENGINE_RELATIVE_RESOURCE_FILES RELATIVE ${KEKENGINE_RESOURCE_DIR} "${KEKENGINE_RESOURCE_DIR}/*")
|
|
|
|
|
|
|
|
file(GLOB KEKGAME_SOURCE_FILES "src/kekgame/cpp/*.cpp")
|
|
|
|
file(GLOB_RECURSE KEKGAME_RESOURCE_FILES "${KEKGAME_RESOURCE_DIR}/*")
|
|
|
|
file(GLOB_RECURSE KEKGAME_RELATIVE_RESOURCE_FILES RELATIVE ${KEKGAME_RESOURCE_DIR} "${KEKGAME_RESOURCE_DIR}/*")
|
|
|
|
|
2022-10-07 15:48:50 +02:00
|
|
|
add_compile_definitions(FT_CONFIG_OPTION_ERROR_STRINGS) # Freetype error strings
|
|
|
|
|
2022-10-08 14:15:43 +02:00
|
|
|
if(${KEKENGINE_DEBUG})
|
|
|
|
add_compile_options(-Wall -g)
|
|
|
|
else()
|
|
|
|
add_compile_options(-Wall -O3)
|
|
|
|
endif()
|
2022-10-07 15:48:50 +02:00
|
|
|
|
2022-10-08 14:15:43 +02:00
|
|
|
add_subdirectory(dependencies/microtar)
|
|
|
|
|
|
|
|
# kekengine resources
|
|
|
|
add_custom_target(kekengine_res ALL DEPENDS ${KEKENGINE_RESOURCE_FILES})
|
|
|
|
|
|
|
|
add_custom_command(TARGET kekengine_res PRE_BUILD
|
|
|
|
BYPRODUCTS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources.tar
|
2022-10-08 14:27:25 +02:00
|
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
|
2022-10-08 14:15:43 +02:00
|
|
|
COMMAND ${CMAKE_COMMAND} -E
|
|
|
|
chdir ${KEKENGINE_RESOURCE_DIR}
|
|
|
|
tar cf ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources.tar ${KEKENGINE_RELATIVE_RESOURCE_FILES})
|
|
|
|
|
|
|
|
# libkekengine
|
2022-10-07 15:48:50 +02:00
|
|
|
add_library(kekengine ${KEKENGINE_SOURCE_FILES})
|
2022-10-08 14:27:25 +02:00
|
|
|
add_dependencies(kekengine kekengine_res)
|
2022-10-07 15:48:50 +02:00
|
|
|
|
2022-10-08 14:15:43 +02:00
|
|
|
target_link_libraries(kekengine PUBLIC glfw GLEW GL microtar)
|
2022-10-07 15:48:50 +02:00
|
|
|
target_include_directories(kekengine PRIVATE "src/kekengine/include")
|
|
|
|
target_compile_definitions(kekengine PUBLIC KEKENGINE_TARGET_LINUX)
|
|
|
|
|
|
|
|
find_package(PkgConfig REQUIRED)
|
|
|
|
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
|
|
|
|
target_link_libraries(kekengine PUBLIC ${GTK3_LIBRARIES})
|
|
|
|
target_include_directories(kekengine PRIVATE ${GTK3_INCLUDE_DIRS})
|
|
|
|
|
2022-10-08 14:27:25 +02:00
|
|
|
if(${KEKENGINE_BUILD_KEKGAME})
|
|
|
|
# kekgame resources
|
|
|
|
add_custom_target(kekgame_res ALL
|
|
|
|
DEPENDS ${KEKGAME_RESOURCE_FILES} kekengine_res)
|
2022-10-08 14:15:43 +02:00
|
|
|
|
2022-10-08 14:27:25 +02:00
|
|
|
add_custom_command(TARGET kekgame_res PRE_BUILD
|
|
|
|
BYPRODUCTS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources.tar
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E
|
|
|
|
chdir ${KEKGAME_RESOURCE_DIR}
|
|
|
|
tar rf ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources.tar ${KEKGAME_RELATIVE_RESOURCE_FILES})
|
2022-10-07 15:48:50 +02:00
|
|
|
|
2022-10-08 14:27:25 +02:00
|
|
|
# kekgame
|
|
|
|
add_executable(kekgame ${KEKGAME_SOURCE_FILES})
|
|
|
|
add_dependencies(kekgame kekgame_res)
|
2022-10-07 15:48:50 +02:00
|
|
|
|
2022-10-08 14:27:25 +02:00
|
|
|
target_link_libraries(kekgame PUBLIC kekengine)
|
|
|
|
target_include_directories(kekgame PRIVATE "src/kekengine/include")
|
|
|
|
endif()
|