cmake_minimum_required(VERSION 3.2) project(Graphite) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/runtime/bin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/runtime) function(SetMSVCOutput output) if(MSVC) foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${output}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${output}) endforeach(OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES) endif() endfunction() SetMSVCOutput(${CMAKE_CURRENT_SOURCE_DIR}/bin/runtime/bin) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) find_package(Vulkan) find_package(OpenGL) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) if(${VULKAN_FOUND}) option(ENABLE_VULKAN "Enable Vulkan support" ON) endif() if(${OPENGL_FOUND}) option(ENABLE_OPENGL45 "Enable OpenGL 4.5 support" ON) option(ENABLE_OPENGLES2 "Enable OpenGL ES 2 support" ON) endif() option(BUILD_EDITOR "Build editor" OFF) option(INCLUDE_LICENSES "Include licenses" ON) include(paths.cmake) set(CMAKE_POSITION_INDEPENDENT_CODE ON) add_subdirectory(3rdparty) set(GAME_NAME "testgame") #used only for the executable name atm set(GAME_FOLDER "game") #the game folder used for asset lookups add_definitions(-DGAME_NAME="${GAME_NAME}" -DGAME_FOLDER="${GAME_FOLDER}" -DGLM_ENABLE_EXPERIMENTAL) set(CMAKE_CXX_STANDARD 14) #needed for some things like better auto type deduction set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,bin") set(CMAKE_DEBUG_POSTFIX "") #stop libraries from vendor messing with our library names if(MSVC) add_definitions(-D_CRT_SECURE_NO_WARNINGS) endif() if(NOT EMSCRIPTEN) if(WIN32) add_definitions(-DWINDOWS) set(RUNTIME_EXPORT_STRING win32) endif() if(APPLE) add_definitions(-DMACOS) set(RUNTIME_EXPORT_STRING macos) endif() if(UNIX) add_definitions(-DLINUX) set(RUNTIME_EXPORT_STRING linux) endif() add_definitions(-DGLFW_INCLUDE_NONE) if(CMAKE_CXX_COMPILER_ID MATCHES "GCC") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Wextra -Wold-style-cast -Wno-missing-braces") endif() if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wfloat-conversion -Wextra-semi -Wdouble-promotion -Wshadow -Wno-missing-braces -DGLFW_INCLUDE_NONE") endif() else() add_definitions(-DEMSCRIPTEN) set(RUNTIME_EXPORT_STRING emscripten) endif() if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_definitions(-DVDEBUG) endif() add_subdirectory(engine) add_subdirectory(dist) if(BUILD_EDITOR) add_subdirectory(editor) endif() add_custom_target(runtime_zip WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/runtime COMMAND ${CMAKE_COMMAND} -E tar "cf" "${CMAKE_CURRENT_SOURCE_DIR}/bin/runtime-${RUNTIME_EXPORT_STRING}.zip" --format=zip *)