# Copyright (c) 2022 Dominic Masters # # This software is released under the MIT License. # https://opensource.org/licenses/MIT cmake_minimum_required(VERSION 3.13) set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/") set(DAWN_PROJECT_NAME "Dawn") set(DAWN_PROJECT_VERSION "01.00") # Variable Caches set(DAWN_CACHE_TARGET "dawn-target") # Build target if(DEFINED ENV{DAWN_BUILD_SYSTEM}) set(DAWN_BUILD_SYSTEM $ENV{DAWN_BUILD_SYSTEM} CACHE INTERNAL ${DAWN_CACHE_TARGET}) else() set(DAWN_BUILD_SYSTEM "linux" CACHE INTERNAL ${DAWN_CACHE_TARGET}) endif() # Build tools specifics if(DAWN_BUILD_SYSTEM STREQUAL "vita") if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) if(DEFINED ENV{VITASDK}) set(CMAKE_TOOLCHAIN_FILE "$ENV{VITASDK}/share/vita.toolchain.cmake" CACHE PATH "toolchain file") else() message(FATAL_ERROR "Please define VITASDK to point to your SDK path!") endif() endif() include("$ENV{VITASDK}/share/vita.cmake" REQUIRED) set(DAWN_VITA_APP_NAME "${DAWN_PROJECT_NAME}" CACHE INTERNAL ${DAWN_CACHE_TARGET}) set(DAWN_VITA_TITLEID "YWSH00001" CACHE INTERNAL ${DAWN_CACHE_TARGET}) set(DAWN_VITA_VERSION "${DAWN_PROJECT_VERSION}" CACHE INTERNAL ${DAWN_CACHE_TARGET}) set(VITA_MKSFOEX_FLAGS "${VITA_MKSFOEX_FLAGS} -d PARENTAL_LEVEL=1" CACHE INTERNAL ${DAWN_CACHE_TARGET}) elseif(DAWN_BUILD_SYSTEM STREQUAL "psp") if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) if(DEFINED ENV{PSPDEV}) set(CMAKE_TOOLCHAIN_FILE "$ENV{PSPDEV}/psp/share/pspdev.cmake" CACHE PATH "toolchain file") else() message(FATAL_ERROR "Please define PSPDEV to point to your SDK path!") endif() endif() include("$ENV{PSPDEV}/psp/share/pspdev.cmake" REQUIRED) endif() # Set Common 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_ASSETS_DIR "${DAWN_ROOT_DIR}/assets") set(DAWN_ASSETS_BUILD_DIR "${DAWN_BUILD_DIR}/assets") # Variables set(DAWN_TARGET_NAME "Dawn" CACHE INTERNAL ${DAWN_CACHE_TARGET}) set(DAWN_ASSETS "" CACHE INTERNAL ${DAWN_CACHE_TARGET}) set(DAWN_BUILD_BINARY ${DAWN_BUILD_DIR}/Dawn CACHE INTERNAL ${DAWN_CACHE_TARGET}) # Initialize Project First. project("${DAWN_PROJECT_NAME}" VERSION "${DAWN_PROJECT_VERSION}" LANGUAGES C CXX ) add_executable(${DAWN_TARGET_NAME}) # Add tools add_subdirectory(tools) # Libraries add_subdirectory(lib) # Sources add_subdirectory(src) # Append assets add_dependencies(${DAWN_TARGET_NAME} dawnassets) if(DAWN_BUILD_SYSTEM STREQUAL "vita") vita_create_self(${DAWN_TARGET_NAME}.self ${DAWN_BUILD_BINARY}) vita_create_vpk( ${DAWN_TARGET_NAME}.vpk ${DAWN_VITA_TITLEID} ${DAWN_TARGET_NAME}.self VERSION ${DAWN_VITA_VERSION} NAME ${DAWN_VITA_APP_NAME} ) elseif(DAWN_BUILD_SYSTEM STREQUAL "psp") create_pbp_file( TARGET ${PROJECT_NAME} ICON_PATH NULL BACKGROUND_PATH NULL PREVIEW_PATH NULL TITLE ${PROJECT_NAME} VERSION ${DAWN_PROJECT_VERSION} ) endif()