From 0902fdc904c8e4f2f3145dfe58939a5ca5458ce1 Mon Sep 17 00:00:00 2001 From: Lephenixnoir Date: Wed, 27 Jan 2021 20:32:34 +0100 Subject: [PATCH] cmake: provide a function to set up assets' language and dependencies --- fxsdk/assets/CMakeLists.txt | 10 +--------- fxsdk/cmake/Fxconv.cmake | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/fxsdk/assets/CMakeLists.txt b/fxsdk/assets/CMakeLists.txt index 8319a34..72f1d2c 100644 --- a/fxsdk/assets/CMakeLists.txt +++ b/fxsdk/assets/CMakeLists.txt @@ -26,15 +26,7 @@ set(ASSETS_cg # ... ) -set_source_files_properties(${ASSETS} PROPERTIES - OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/assets/fxconv-metadata.txt") -set_source_files_properties(${ASSETS_fx} PROPERTIES - OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/assets-fx/fxconv-metadata.txt") -set_source_files_properties(${ASSETS_cg} PROPERTIES - OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/assets-cg/fxconv-metadata.txt") - -set_source_files_properties(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} - PROPERTIES LANGUAGE FXCONV) +fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA) add_executable(myaddin ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}}) target_link_libraries(myaddin Gint::Gint) diff --git a/fxsdk/cmake/Fxconv.cmake b/fxsdk/cmake/Fxconv.cmake index 35335af..20e9e5a 100644 --- a/fxsdk/cmake/Fxconv.cmake +++ b/fxsdk/cmake/Fxconv.cmake @@ -1,2 +1,20 @@ set(CMAKE_FXCONV_COMPILE_OBJECT "fxconv -o --toolchain=sh-elf --${FXSDK_PLATFORM}") + +function(fxconv_declare_assets) + cmake_parse_arguments(CONV "WITH_METADATA" "" "" ${ARGN}) + + foreach(ASSET IN LISTS CONV_UNPARSED_ARGUMENTS) + # Declare this source file as an FXCONV object + set_source_files_properties("${ASSET}" PROPERTIES LANGUAGE FXCONV) + + # Set up a dependency to the local fxconv-metadata.txt + if(DEFINED CONV_WITH_METADATA) + get_filename_component(DIR "${ASSET}" DIRECTORY) + set(METADATA "${DIR}/fxconv-metadata.txt") + get_filename_component(METADATA "${METADATA}" ABSOLUTE + BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") + set_source_files_properties("${ASSET}" PROPERTIES OBJECT_DEPENDS "${METADATA}") + endif() + endforeach() +endfunction()