Haxxorizer/CMakeLists.txt

70 lines
2.3 KiB
CMake
Raw Permalink Normal View History

2023-10-16 20:54:53 +02:00
cmake_minimum_required(VERSION 3.13)
project(Haxxorizer VERSION 1.0)
option(HAXXORIZER_DEBUG "Build with debug information" OFF)
if(UNIX)
set(HAXXORIZER_TARGET_PLATFORM Linux)
endif()
if(WIN32)
set(HAXXORIZER_TARGET_PLATFORM Windows)
endif()
message("Debug: ${HAXXORIZER_DEBUG}")
message("Target platform: ${HAXXORIZER_TARGET_PLATFORM}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
set(HAXXORIZER_RESOURCE_DIR "${PROJECT_SOURCE_DIR}/src/haxxorizer/res")
file(GLOB_RECURSE HAXXORIZER_SOURCE_FILES "src/haxxorizer/cpp/*.cpp")
file(GLOB_RECURSE HAXXORIZER_RESOURCE_FILES "${HAXXORIZER_RESOURCE_DIR}/*")
file(GLOB_RECURSE HAXXORIZER_RELATIVE_RESOURCE_FILES RELATIVE ${HAXXORIZER_RESOURCE_DIR} "${HAXXORIZER_RESOURCE_DIR}/*")
if(${HAXXORIZER_DEBUG})
add_compile_options(-Wall -g)
else()
add_compile_options(-Wall -O3)
endif()
add_subdirectory(dependencies/kekengine)
# haxxorizer resources
add_custom_target(haxxorizer_res ALL DEPENDS ${KEKENGINE_RESOURCE_FILES})
add_dependencies(haxxorizer_res kekengine_static)
get_target_property(KEKENGINE_BINARY_DIR kekengine "RUNTIME_OUTPUT_DIRECTORY")
add_custom_command(TARGET haxxorizer_res PRE_BUILD
BYPRODUCTS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources.tar
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
COMMAND ${CMAKE_COMMAND} -E
copy "${KEKENGINE_BINARY_DIR}/resources.tar" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources.tar"
COMMAND ${CMAKE_COMMAND} -E
chdir ${HAXXORIZER_RESOURCE_DIR}
tar rf ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources.tar ${HAXXORIZER_RELATIVE_RESOURCE_FILES})
# haxxorizer
add_executable(haxxorizer ${HAXXORIZER_SOURCE_FILES})
add_dependencies(haxxorizer haxxorizer_res)
target_include_directories(haxxorizer PUBLIC "src/haxxorizer/include")
find_package(PkgConfig REQUIRED)
pkg_check_modules(FREETYPE REQUIRED freetype2)
target_include_directories(haxxorizer PUBLIC ${FREETYPE_INCLUDE_DIRS})
pkg_check_modules(BULLET REQUIRED bullet)
target_include_directories(haxxorizer PUBLIC ${BULLET_INCLUDE_DIRS})
if(WIN32)
target_link_options(haxxorizer PUBLIC -static-libgcc -static-libstdc++ -static)
endif()
target_link_libraries(haxxorizer PUBLIC kekengine_static)