70 lines
2.3 KiB
CMake
70 lines
2.3 KiB
CMake
|
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)
|