124 lines
No EOL
3.1 KiB
CMake
Executable file
124 lines
No EOL
3.1 KiB
CMake
Executable file
cmake_minimum_required(VERSION 3.20)
|
|
project(PrismEngine)
|
|
|
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
|
|
|
|
# enable folders in IDEs that support this feature
|
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
|
|
include(${CMAKE_CURRENT_LIST_DIR}/cmake/Common.cmake)
|
|
include(${CMAKE_CURRENT_LIST_DIR}/cmake/AddPlatformExecutable.cmake)
|
|
include(FetchContent)
|
|
|
|
#set(SHADER_COMPILER_COMMAND $<TARGET_FILE:ShaderCompilerTool>)
|
|
# set(SHADER_COMPILER_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/../build/bin/Debug/ShaderCompilerTool")
|
|
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|
message("Linux build detected!")
|
|
|
|
find_package(SDL2 CONFIG)
|
|
if(NOT TARGET SDL2::SDL2)
|
|
find_package(SDL2 REQUIRED)
|
|
endif()
|
|
|
|
set(ENABLE_VULKAN TRUE)
|
|
set(ENABLE_LINUX TRUE)
|
|
|
|
set(NEEDS_HOSTED_SHADER_COMPILER FALSE)
|
|
set(REQUIRED_SHADER_LANGUAGE "spirv")
|
|
endif()
|
|
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" AND NOT IOS)
|
|
message("macOS build detected!")
|
|
|
|
find_package(SDL2 REQUIRED)
|
|
|
|
set(ENABLE_VULKAN TRUE)
|
|
set(ENABLE_DARWIN TRUE)
|
|
set(ENABLE_MACOS TRUE)
|
|
set(ENABLE_METAL TRUE)
|
|
|
|
set(CMAKE_XCODE_GENERATE_SCHEME OFF)
|
|
set(NEEDS_HOSTED_SHADER_COMPILER FALSE)
|
|
set(REQUIRED_SHADER_LANGUAGE "msl")
|
|
endif()
|
|
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "iOS")
|
|
message("iOS build detected!")
|
|
|
|
#set(ENABLE_VULKAN TRUE)
|
|
set(ENABLE_DARWIN TRUE)
|
|
set(ENABLE_IOS TRUE)
|
|
set(ENABLE_METAL TRUE)
|
|
|
|
set(NEEDS_HOSTED_SHADER_COMPILER TRUE)
|
|
set(REQUIRED_SHADER_LANGUAGE "msl")
|
|
set(EXTRA_PLATFORM_ARG "mobile")
|
|
endif()
|
|
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "tvOS")
|
|
message("tvOS build detected!")
|
|
|
|
#set(ENABLE_VULKAN TRUE)
|
|
set(ENABLE_DARWIN TRUE)
|
|
set(ENABLE_TVOS TRUE)
|
|
set(ENABLE_METAL TRUE)
|
|
|
|
set(NEEDS_HOSTED_SHADER_COMPILER TRUE)
|
|
set(REQUIRED_SHADER_LANGUAGE "msl")
|
|
set(EXTRA_PLATFORM_ARG "mobile")
|
|
endif()
|
|
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
|
message("Windows build detected!")
|
|
|
|
find_package(SDL2 REQUIRED)
|
|
|
|
set(ENABLE_WINDOWS TRUE)
|
|
set(ENABLE_VULKAN TRUE)
|
|
|
|
set(NEEDS_HOSTED_SHADER_COMPILER FALSE)
|
|
set(REQUIRED_SHADER_LANGUAGE "spirv")
|
|
endif()
|
|
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "WindowsStore")
|
|
message("UWP build detected!")
|
|
|
|
set(ENABLE_UWP TRUE)
|
|
set(NEEDS_HOSTED_SHADER_COMPILER TRUE)
|
|
endif()
|
|
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten")
|
|
message("Web build detected!")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3 -O0")
|
|
|
|
set(ENABLE_WEB TRUE)
|
|
set(ENABLE_WEBGPU TRUE)
|
|
|
|
set(NEEDS_HOSTED_SHADER_COMPILER TRUE)
|
|
set(REQUIRED_SHADER_LANGUAGE "wgsl")
|
|
endif()
|
|
|
|
if(ENABLE_VULKAN)
|
|
find_package(Vulkan REQUIRED)
|
|
endif()
|
|
|
|
if(NEEDS_HOSTED_SHADER_COMPILER AND (NOT DEFINED SHADER_COMPILER_LOCATION))
|
|
message(FATAL_ERROR "You are building for a platform that needs a hosted shader compiler. Please specify the path in SHADER_COMPILER_LOCATION!")
|
|
endif()
|
|
|
|
add_subdirectory(extern)
|
|
|
|
# enable lto
|
|
if (CMAKE_BUILD_TYPE EQUAL "Release")
|
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
|
|
endif ()
|
|
|
|
add_subdirectory(platforms)
|
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
|
|
add_subdirectory(engine)
|
|
add_subdirectory(tools)
|
|
add_subdirectory(example) |