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)