Files
Dawn/CMakeLists.txt
2025-09-19 23:20:55 -05:00

125 lines
3.2 KiB
CMake

# Copyright (c) 2025 Dominic Masters
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
# Setup
cmake_minimum_required(VERSION 3.13)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
if(NOT DEFINED DAWN_TARGET_SYSTEM)
set(DAWN_TARGET_SYSTEM "linux")
endif()
# Prep cache
set(DAWN_CACHE_TARGET "dawn-target")
# Build variables
set(DAWN_ROOT_DIR "${CMAKE_SOURCE_DIR}")
set(DAWN_BUILD_DIR "${CMAKE_BINARY_DIR}")
set(DAWN_SOURCES_DIR "${DAWN_ROOT_DIR}/src")
set(DAWN_TEMP_DIR "${DAWN_BUILD_DIR}/temp")
set(DAWN_TOOLS_DIR "${DAWN_ROOT_DIR}/tools")
set(DAWN_DATA_DIR "${DAWN_ROOT_DIR}/data")
set(DAWN_ASSETS_DIR "${DAWN_ROOT_DIR}/assets")
set(DAWN_BUILT_ASSETS_DIR "${DAWN_BUILD_DIR}/built_assets" CACHE INTERNAL ${DAWN_CACHE_TARGET})
set(DAWN_GENERATED_HEADERS_DIR "${DAWN_BUILD_DIR}/generated")
set(DAWN_TARGET_NAME "Dawn" CACHE INTERNAL ${DAWN_CACHE_TARGET})
set(DAWN_BUILD_BINARY ${DAWN_BUILD_DIR}/Dawn CACHE INTERNAL ${DAWN_CACHE_TARGET})
set(DAWN_ASSETS "" CACHE INTERNAL ${DAWN_CACHE_TARGET})
# Create directories
file(MAKE_DIRECTORY ${DAWN_GENERATED_HEADERS_DIR})
# Find packages
find_package(Python3 COMPONENTS Interpreter REQUIRED)
# Toolchains
if(DAWN_TARGET_SYSTEM STREQUAL "psp")
find_package(pspsdk REQUIRED)
endif()
# Init Project
project(${DAWN_TARGET_NAME}
VERSION 1.0.0
LANGUAGES C CXX
)
# Executable
add_executable(${DAWN_TARGET_NAME})
# Add tools
# add_subdirectory(tools)
# Assets
# add_subdirectory(assets)
# Add libraries
if(DAWN_TARGET_SYSTEM STREQUAL "linux")
find_package(SDL2 REQUIRED)
find_package(OpenGL REQUIRED)
target_link_libraries(${DAWN_TARGET_NAME}
PRIVATE
SDL2
OpenGL::GL
GL
)
elseif(DAWN_TARGET_SYSTEM STREQUAL "psp")
find_package(SDL2 REQUIRED)
find_package(OpenGL REQUIRED)
target_link_libraries(${DAWN_TARGET_NAME}
PUBLIC
${SDL2_LIBRARIES}
SDL2
OpenGL::GL
zip
bz2
z
mbedtls
mbedcrypto
lzma
)
target_include_directories(${DAWN_TARGET_NAME} PRIVATE
${SDL2_INCLUDE_DIRS}
)
endif()
# Add code
add_subdirectory(src)
# Include generated headers
target_include_directories(${DAWN_TARGET_NAME} PUBLIC
${DAWN_GENERATED_HEADERS_DIR}
)
# # Build assets
# add_custom_target(DAWN_ASSETS_BUILT ALL
# COMMAND
# ${Python3_EXECUTABLE} ${DAWN_TOOLS_DIR}/assetstool/main.py
# --assets ${DAWN_ASSETS_DIR}
# --build-type wad
# --output-assets ${DAWN_BUILT_ASSETS_DIR}
# --output-file ${DAWN_BUILD_DIR}/dusk.dsk
# --output-headers ${DAWN_GENERATED_HEADERS_DIR}/asset/assetbundle.h
# --headers-dir ${DAWN_GENERATED_HEADERS_DIR}
# --input ${DAWN_ASSETS}
# )
# add_dependencies(${DAWN_TARGET_NAME} DAWN_ASSETS_BUILT)
# # Postbuild
# if(DAWN_TARGET_SYSTEM STREQUAL "psp")
# create_pbp_file(
# TARGET "${DAWN_TARGET_NAME}"
# ICON_PATH NULL
# BACKGROUND_PATH NULL
# PREVIEW_PATH NULL
# TITLE "${DAWN_TARGET_NAME}"
# VERSION 01.00
# )
# endif()