cmake_minimum_required(VERSION 3.3 FATAL_ERROR) project(CloonelJumpProject CXX) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/include") include(TargetArch) include(CTest) include(FindPkgConfig) include(CMakeDependentOption) find_package(PNG REQUIRED) find_package(Boost 1.55.0 REQUIRED) find_package(PhysFS 2.0.3) PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wconversion") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Wextra -pedantic -Wconversion -DWITH_DEBUG_VISUALS -O0") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Wextra -pedantic -Wconversion -O3") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -O0") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3") set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CLOONEL_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}") target_architecture(TARGET_ARCH) message (STATUS "Target architecture: ${TARGET_ARCH}") cmake_dependent_option(WITH_BUILTIN_PHYSFS "Force using the version of PhysFS accompanying the code even if a system library is available" OFF "PHYSFS_FOUND" ON) option(FORCE_OPENGLES "Try to chose the openGL ES renderer if available. Enable this on Raspberry Pi" OFF) option(RASPBERRY_PI "Compile for Raspberry Pi" OFF) if (TARGET_ARCH MATCHES "^x86_64$") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -msse3") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -msse3") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -msse3") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -msse3") endif (TARGET_ARCH MATCHES "^x86_64$") if (FORCE_OPENGLES OR RASPBERRY_PI) target_add_definitions(${PROJECT_NAME} INTERFACE -DFORCE_OPENGLES) if (RASPBERRY_PI) target_add_definitions(${PROJECT_NAME} INTERFACE -DRASPBERRY_PI) endif(RASPBERRY_PI) endif (FORCE_OPENGLES OR RASPBERRY_PI) if (WITH_BUILTIN_PHYSFS) message(STATUS "Using internal PhysFS") set(PHYSFS_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/physfs-2.0.3") set(PHYSFS_LIBRARY "physfs") else(WITH_BUILTIN_PHYSFS) message(STATUS "Using system's PhysFS, set WITH_BUILTIN_PHYSFS to on to override this") endif(WITH_BUILTIN_PHYSFS) if (RASPBERRY_PI) message(STATUS "Will build for Raspberry Pi") include_directories(SYSTEM /opt/vc/include /opt/vc/include/interface/vcos/pthreads /opt/vc/include/interface/vmcs_host/linux ) link_directories( /opt/vc/lib ) endif (RASPBERRY_PI) add_library(${PROJECT_NAME} INTERFACE) target_include_directories(${PROJECT_NAME} SYSTEM INTERFACE ${Boost_INCLUDE_DIRS} ) target_include_directories(${PROJECT_NAME} INTERFACE "${PROJECT_BINARY_DIR}" INTERFACE lib/tree-3.1/src ) target_compile_definitions(${PROJECT_NAME} INTERFACE VWR_STATIC_CAST_RESULTS INTERFACE VWR_SIZE_TYPE=uint32_t INTERFACE VWR_OUTER_NAMESPACE=cloonel INTERFACE ${PNG_DEFINITIONS} ) configure_file( "${PROJECT_SOURCE_DIR}/src/${PROJECT_NAME}Config.h.in" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.h" ) if (RASPBERRY_PI) target_link_libraries(${PROJECT_NAME} bcm_host ) endif(RASPBERRY_PI) if (NOT PHYSFS_FOUND) add_subdirectory(lib/physfs-2.0.3) endif(NOT PHYSFS_FOUND) add_subdirectory(src/jumping) add_subdirectory(src/clooneljump) add_subdirectory(src/cloonelgraphics) if (BUILD_TESTING) add_subdirectory(test/unit) endif()