Archived
1
Fork 0
This repository has been archived on 2025-04-12. You can view files and clone it, but cannot push or open issues or pull requests.
graphite/CMakeLists.txt

109 lines
3.2 KiB
Text
Raw Normal View History

2024-01-03 16:05:02 -05:00
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
*)