# 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()