Start to hook up code generation with CMake builds

Automatically generate material, sound, and level data.

Generated code is not currently linked.
This commit is contained in:
Matt Penny 2024-09-26 23:06:10 -04:00
parent 51e7e001a5
commit 6a14db3a16
4 changed files with 15 additions and 12 deletions

View file

@ -185,7 +185,7 @@ function(_add_extract_frame_command INPUT_FILE OUTPUT_FILE SECONDS)
COMMAND COMMAND
${IMAGEMAGICK_CONVERT} ${OUTPUT_FILE} -crop 491x369+265+202 -resize 160x120 ${OUTPUT_FILE} ${IMAGEMAGICK_CONVERT} ${OUTPUT_FILE} -crop 491x369+265+202 -resize 160x120 ${OUTPUT_FILE}
COMMENT COMMENT
"Converting $<PATH:RELATIVE_PATH,${INPUT_FILE},${PROJECT_SOURCE_DIR}>" "Extracting frame from $<PATH:RELATIVE_PATH,${INPUT_FILE},${PROJECT_SOURCE_DIR}>"
VERBATIM VERBATIM
) )
endfunction() endfunction()
@ -455,8 +455,7 @@ foreach(MATERIAL ${MATERIALS})
_add_material_generate_command(${MATERIAL} GENERATED_MATERIALS) _add_material_generate_command(${MATERIAL} GENERATED_MATERIALS)
endforeach() endforeach()
# TODO: proper dependencies from consumers
add_custom_target( add_custom_target(
all_materials materials
DEPENDS ${GENERATED_MATERIALS} DEPENDS ${GENERATED_MATERIALS}
) )

View file

@ -29,7 +29,7 @@ function(_add_extract_video_audio_command INPUT_FILE OUTPUT_FILE)
COMMAND COMMAND
${FFMPEG} -i ${INPUT_FILE} -vn -loglevel error -y ${OUTPUT_FILE} ${FFMPEG} -i ${INPUT_FILE} -vn -loglevel error -y ${OUTPUT_FILE}
COMMENT COMMENT
"Converting $<PATH:RELATIVE_PATH,${INPUT_FILE},${PROJECT_SOURCE_DIR}>" "Extracting audio from $<PATH:RELATIVE_PATH,${INPUT_FILE},${PROJECT_SOURCE_DIR}>"
VERBATIM VERBATIM
) )
endfunction() endfunction()
@ -327,7 +327,6 @@ endforeach()
###################### ######################
function(_add_sound_convert_command INPUT_FILE OUTPUT_LIST) function(_add_sound_convert_command INPUT_FILE OUTPUT_LIST)
# TODO: change output to PAK_MODIFIED_SOUND_DIR once makefile is no longer in use
cmake_path( cmake_path(
REPLACE_EXTENSION INPUT_FILE REPLACE_EXTENSION INPUT_FILE
".aifc" ".aifc"
@ -434,17 +433,14 @@ add_custom_command(
VERBATIM VERBATIM
) )
# TODO: proper dependencies from consumers
add_custom_target( add_custom_target(
sound_data_tables sound_tables
DEPENDS DEPENDS
# Sound data
${SOUND_TABLE_SOUNDS} ${SOUND_TABLE_SOUNDS}
${SOUND_TABLE_TBL} ${SOUND_TABLE_TBL}
)
add_custom_target( # Lookup tables
sound_lookup_tables
DEPENDS
${CLIPS_H} ${CLIPS_H}
${LANGUAGES_H} ${LANGUAGES_H}
${LANGUAGES_C} ${LANGUAGES_C}

View file

@ -158,7 +158,6 @@ add_custom_command(
VERBATIM VERBATIM
) )
# TODO: remove
add_custom_target( add_custom_target(
level_list level_list
DEPENDS ${LEVEL_LIST} DEPENDS ${LEVEL_LIST}

View file

@ -6,6 +6,15 @@ target_include_directories(portal PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}"
) )
# Generated code
add_dependencies(portal
materials
sound_tables
# TODO: rework when including chambers in compilation
level_list
)
############### ###############
## Game code ## ## Game code ##
############### ###############