154 lines
5.4 KiB
CMake
154 lines
5.4 KiB
CMake
# Copyright (c) 2023 Dominic Msters
|
|
#
|
|
# This software is released under the MIT License.
|
|
# https://opensource.org/licenses/MIT
|
|
|
|
add_subdirectory(texturegen)
|
|
add_subdirectory(tilesetgen)
|
|
add_subdirectory(truetypegen)
|
|
add_subdirectory(uigen)
|
|
add_subdirectory(languagegen)
|
|
add_subdirectory(generatedlanguages)
|
|
add_subdirectory(sceneitemcomponentregister)
|
|
|
|
# Settings
|
|
set(DAWN_TOOL_GENERATED_LANG_DIR "${DAWN_TEMP_DIR}/languages" CACHE INTERNAL ${DAWN_CACHE_TARGET})
|
|
set(DAWN_SCENE_ITEM_COMPONENT_LIST "" CACHE INTERNAL ${DAWN_CACHE_TARGET})
|
|
|
|
# Texture Tool
|
|
function(tool_texture target in)
|
|
add_custom_target(${target}
|
|
COMMAND texturegen --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" --output="${DAWN_ASSETS_BUILD_DIR}/${target}"
|
|
COMMENT "Generating texture ${target} from ${in}"
|
|
DEPENDS texturegen
|
|
)
|
|
add_dependencies(${DAWN_TARGET_NAME} ${target})
|
|
endfunction()
|
|
|
|
# Tileset Tool
|
|
function(tool_tileset targetTileset targetTexture in cols rows)
|
|
tool_texture(${targetTexture} ${in})
|
|
add_custom_target(${targetTileset}
|
|
COMMAND tilesetgen "${DAWN_ASSETS_SOURCE_DIR}/${in}" "${DAWN_ASSETS_BUILD_DIR}/${targetTileset}" "${cols}" "${rows}"
|
|
COMMENT "Generating tileset ${target} from ${in}"
|
|
DEPENDS tilesetgen ${targetTexture}
|
|
)
|
|
add_dependencies(${DAWN_TARGET_NAME} ${targetTileset})
|
|
endfunction()
|
|
|
|
# TrueType Tool
|
|
function(tool_truetype target in out width height fontSize)
|
|
add_custom_target(${target}
|
|
COMMAND truetypegen "${DAWN_ASSETS_SOURCE_DIR}/${in}" "${DAWN_ASSETS_BUILD_DIR}/${out}" "${width}" "${height}" "${fontSize}"
|
|
COMMENT "Generating truetype ${target} from ${in}"
|
|
DEPENDS truetypegen
|
|
)
|
|
add_dependencies(${DAWN_TARGET_NAME} ${target})
|
|
endfunction()
|
|
|
|
# UI Tool
|
|
function(tool_ui target in)
|
|
add_custom_target(${target}
|
|
COMMAND uigen --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" --output="${DAWN_GENERATED_DIR}/prefabs/ui/${target}"
|
|
COMMENT "Generating UI ${target} from ${in}"
|
|
DEPENDS uigen
|
|
)
|
|
target_include_directories(${DAWN_TARGET_NAME}
|
|
PUBLIC
|
|
${DAWN_GENERATED_DIR}/ui
|
|
)
|
|
add_dependencies(${DAWN_TARGET_NAME} ${target})
|
|
endfunction()
|
|
|
|
# Generated Language Rollup Tool
|
|
function(tool_generatedlanguages in)
|
|
add_custom_target(generatedlanguages
|
|
COMMAND generatedlanguagestool --input="${DAWN_TOOL_GENERATED_LANG_DIR}" --output="${DAWN_ASSETS_BUILD_DIR}"
|
|
COMMENT "Generating all languages"
|
|
DEPENDS generatedlanguagestool
|
|
)
|
|
if(NOT generatedlanguages IN_LIST DAWN_TARGET_DEPENDENCIES_LAST)
|
|
set(
|
|
DAWN_TARGET_DEPENDENCIES_LAST
|
|
generatedlanguages
|
|
CACHE INTERNAL ${DAWN_CACHE_TARGET}
|
|
)
|
|
endif()
|
|
endfunction()
|
|
|
|
# Language Tool
|
|
function(tool_language target in)
|
|
add_custom_target(${target}
|
|
COMMAND languagegen --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" --output="${DAWN_TOOL_GENERATED_LANG_DIR}/${target}.language"
|
|
COMMENT "Generating language set ${target} from ${in}"
|
|
DEPENDS languagegen
|
|
)
|
|
tool_generatedlanguages("${DAWN_TOOL_GENERATED_LANG_DIR}/${target}.language")
|
|
add_dependencies(${DAWN_TARGET_NAME} ${target})
|
|
endfunction()
|
|
|
|
# Audio Tool
|
|
if(DAWN_TARGET_OPENAL)
|
|
add_subdirectory(audiogen)
|
|
|
|
function(tool_audio target in)
|
|
add_custom_target(${target}
|
|
COMMAND audiogen --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" --output="${DAWN_ASSETS_BUILD_DIR}/${target}"
|
|
COMMENT "Generating audio ${target} from ${in}"
|
|
DEPENDS audiogen
|
|
)
|
|
add_dependencies(${DAWN_TARGET_NAME} ${target})
|
|
endfunction()
|
|
endif()
|
|
|
|
# Scene Item Component Tool
|
|
function(tool_scenecomponent clazz hfile)
|
|
# add_custom_target(${clazz}_scenecomponent
|
|
# COMMENT "Registering component ${hfile}::${clazz}"
|
|
# DEPENDS ${ARGN}
|
|
# )
|
|
# set(
|
|
# DAWN_SCENE_ITEM_COMPONENT_LIST
|
|
# ${DAWN_SCENE_ITEM_COMPONENT_LIST}
|
|
# ${clazz}
|
|
# ${hfile}
|
|
# CACHE INTERNAL ${DAWN_CACHE_TARGET}
|
|
# )
|
|
# file(CONFIGURE OUTPUT
|
|
# "${DAWN_TEMP_DIR}/SceneItemComponents.txt"
|
|
# CONTENT "${DAWN_SCENE_ITEM_COMPONENT_LIST}"
|
|
# )
|
|
# if(NOT TARGET sceneitemcomponentgen_cmd)
|
|
# add_custom_target(sceneitemcomponentgen_cmd
|
|
# COMMAND sceneitemcomponentgen --input="${DAWN_TEMP_DIR}/SceneItemComponents.txt" --output="${DAWN_GENERATED_DIR}/scene/SceneItemComponentListItems.cpp"
|
|
# COMMENT "Generating scene item component ${hfile}::${clazz}"
|
|
# DEPENDS sceneitemcomponentgen
|
|
# )
|
|
# # target_sources(${DAWN_TARGET_NAME}
|
|
# # PRIVATE
|
|
# # ${DAWN_GENERATED_DIR}/scene/SceneItemComponentListItems.cpp
|
|
# # )
|
|
# endif()
|
|
# add_dependencies(sceneitemcomponentgen ${clazz}_scenecomponent)
|
|
# add_dependencies(${DAWN_TARGET_NAME} ${clazz}_scenecomponent sceneitemcomponentgen sceneitemcomponentgen_cmd)
|
|
endfunction()
|
|
|
|
|
|
if(DAWN_VISUAL_NOVEL)
|
|
add_subdirectory(vnscenegen)
|
|
|
|
# VN Scene Tool
|
|
function(tool_vnscene target in)
|
|
tool_generatedlanguages("${DAWN_TOOL_GENERATED_LANG_DIR}/${target}.language")
|
|
add_custom_target(${target}
|
|
COMMAND vnscenegen --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" --output="${DAWN_GENERATED_DIR}/scenes/${target}" --language-out="${DAWN_TOOL_GENERATED_LANG_DIR}/${target}.language"
|
|
COMMENT "Generating VN Scene ${target} from ${in}"
|
|
DEPENDS vnscenegen
|
|
)
|
|
target_include_directories(${DAWN_TARGET_NAME}
|
|
PUBLIC
|
|
${DAWN_GENERATED_DIR}
|
|
)
|
|
add_dependencies(${DAWN_TARGET_NAME} ${target})
|
|
endfunction()
|
|
endif() |