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.
prism/CMakeLists.txt

117 lines
3 KiB
Text
Raw Normal View History

cmake_minimum_required(VERSION 3.20)
project(PrismEngine)
2020-08-11 12:07:21 -04:00
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")
2020-08-11 12:07:21 -04:00
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
message("Linux build detected!")
find_package(SDL2 REQUIRED CONFIG)
2020-08-11 12:07:21 -04:00
set(ENABLE_VULKAN TRUE)
set(ENABLE_LINUX TRUE)
set(NEEDS_HOSTED_SHADER_COMPILER FALSE)
set(REQUIRED_SHADER_LANGUAGE "spirv")
2020-08-11 12:07:21 -04:00
endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" AND NOT IOS)
message("macOS build detected!")
2021-09-13 13:47:29 -04:00
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()
2020-08-11 12:07:21 -04:00
if(${CMAKE_SYSTEM_NAME} STREQUAL "iOS")
message("iOS build detected!")
#set(ENABLE_VULKAN TRUE)
2020-08-11 12:07:21 -04:00
set(ENABLE_DARWIN TRUE)
set(ENABLE_IOS TRUE)
2022-02-18 14:36:38 -05:00
set(ENABLE_METAL TRUE)
set(NEEDS_HOSTED_SHADER_COMPILER TRUE)
set(REQUIRED_SHADER_LANGUAGE "msl")
set(EXTRA_PLATFORM_ARG "mobile")
2020-08-11 12:07:21 -04:00
endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "tvOS")
message("tvOS build detected!")
#set(ENABLE_VULKAN TRUE)
2020-08-11 12:07:21 -04:00
set(ENABLE_DARWIN TRUE)
set(ENABLE_TVOS TRUE)
2022-02-18 14:36:38 -05:00
set(ENABLE_METAL TRUE)
set(NEEDS_HOSTED_SHADER_COMPILER TRUE)
set(REQUIRED_SHADER_LANGUAGE "msl")
set(EXTRA_PLATFORM_ARG "mobile")
2020-08-11 12:07:21 -04:00
endif()
2020-08-12 22:10:36 -04:00
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
message("Windows build detected!")
find_package(SDL2 REQUIRED)
2022-02-18 16:36:48 -05:00
set(ENABLE_WINDOWS TRUE)
set(ENABLE_VULKAN TRUE)
set(NEEDS_HOSTED_SHADER_COMPILER FALSE)
set(REQUIRED_SHADER_LANGUAGE "spirv")
2020-08-12 22:10:36 -04:00
endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "WindowsStore")
message("UWP build detected!")
set(ENABLE_UWP TRUE)
set(NEEDS_HOSTED_SHADER_COMPILER TRUE)
2020-08-12 22:10:36 -04:00
endif()
2022-02-18 16:36:48 -05:00
if(${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten")
message("Web build detected!")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3 -O0")
2022-02-18 17:38:11 -05:00
2022-02-18 16:36:48 -05:00
set(ENABLE_WEB TRUE)
set(ENABLE_WEBGPU TRUE)
set(NEEDS_HOSTED_SHADER_COMPILER TRUE)
set(REQUIRED_SHADER_LANGUAGE "wgsl")
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!")
2022-02-18 16:36:48 -05:00
endif()
2020-08-11 12:07:21 -04:00
add_subdirectory(extern)
2020-09-22 12:54:08 -04:00
# enable lto
2021-10-11 14:33:45 -04:00
if (CMAKE_BUILD_TYPE EQUAL "Release")
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
endif ()
2020-09-22 12:54:08 -04:00
2020-08-11 12:07:21 -04:00
add_subdirectory(platforms)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
add_subdirectory(engine)
2020-12-28 15:45:09 -05:00
add_subdirectory(tools)
add_subdirectory(example)