109 lines
3.2 KiB
Text
109 lines
3.2 KiB
Text
|
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
|
||
|
*)
|