mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-09-23 23:00:42 +00:00
Use temporary staging dirs when building resources
This allows intermediate build artifacts to be cleaned up without specifying them individually as BYPRODUCTS. When building a data file <name>, all files are first built under tmp/<name> before the target itself is moved from tmp/<name>/<name> to Packaged/<name>. add_house_file() could also be modified in this way, but it wouldn't reduce the boilerplate by much, so it's probably not worth it.
This commit is contained in:
@@ -512,8 +512,8 @@ target_link_libraries(ConvertColorCursors PortabilityLayer)
|
|||||||
|
|
||||||
|
|
||||||
add_custom_target(BuildDirs
|
add_custom_target(BuildDirs
|
||||||
BYPRODUCTS Packaged
|
BYPRODUCTS Packaged tmp
|
||||||
COMMAND "${CMAKE_COMMAND}" -E make_directory Packaged/Houses
|
COMMAND "${CMAKE_COMMAND}" -E make_directory Packaged/Houses tmp
|
||||||
VERBATIM
|
VERBATIM
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -523,89 +523,61 @@ function(add_data_file NAME)
|
|||||||
list(APPEND DATA_FILES "Packaged/${NAME}")
|
list(APPEND DATA_FILES "Packaged/${NAME}")
|
||||||
set(DATA_FILES "${DATA_FILES}" PARENT_SCOPE)
|
set(DATA_FILES "${DATA_FILES}" PARENT_SCOPE)
|
||||||
|
|
||||||
cmake_parse_arguments(PARSE_ARGV 1 ARG
|
cmake_parse_arguments(PARSE_ARGV 1 ARG "" "" "")
|
||||||
""
|
set(TMPDIR "${CMAKE_CURRENT_BINARY_DIR}/tmp/${NAME}")
|
||||||
""
|
list(TRANSFORM ARG_UNPARSED_ARGUMENTS
|
||||||
"BYPRODUCTS;COMMANDS"
|
REPLACE {TMPDIR} "${TMPDIR}"
|
||||||
)
|
)
|
||||||
|
|
||||||
if(ARG_BYPRODUCTS)
|
|
||||||
set(RM_BYPRODUCTS_COMMAND COMMAND "${CMAKE_COMMAND}" -E rm)
|
|
||||||
set(RM_BYPRODUCTS_PATHS "${ARG_BYPRODUCTS}")
|
|
||||||
list(TRANSFORM RM_BYPRODUCTS_PATHS PREPEND "${CMAKE_CURRENT_BINARY_DIR}/")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT "Packaged/${NAME}"
|
OUTPUT "Packaged/${NAME}"
|
||||||
BYPRODUCTS ${ARG_BYPRODUCTS}
|
|
||||||
DEPENDS BuildDirs
|
DEPENDS BuildDirs
|
||||||
${ARG_COMMANDS}
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${TMPDIR}"
|
||||||
${RM_BYPRODUCTS_COMMAND} ${RM_BYPRODUCTS_PATHS}
|
${ARG_UNPARSED_ARGUMENTS}
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E rename
|
||||||
|
"${TMPDIR}/${NAME}"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/Packaged/${NAME}"
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E rm -r -- "${TMPDIR}"
|
||||||
VERBATIM
|
VERBATIM
|
||||||
)
|
)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
add_data_file(ApplicationResources.gpf
|
add_data_file(ApplicationResources.gpf
|
||||||
BYPRODUCTS
|
|
||||||
Packaged/ApplicationResources.gpr
|
|
||||||
Packaged/ApplicationResources.gpa
|
|
||||||
COMMANDS
|
|
||||||
DEPENDS
|
DEPENDS
|
||||||
MiniRez gpr2gpa FTagData MergeGPF "GliderProData/Glider PRO.r"
|
MiniRez gpr2gpa FTagData MergeGPF "GliderProData/Glider PRO.r"
|
||||||
ApplicationResourcePatches/manifest.json DefaultTimestamp.timestamp
|
ApplicationResourcePatches/manifest.json DefaultTimestamp.timestamp
|
||||||
COMMAND MiniRez
|
COMMAND MiniRez
|
||||||
"GliderProData/Glider PRO.r"
|
"GliderProData/Glider PRO.r"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/Packaged/ApplicationResources.gpr"
|
"{TMPDIR}/ApplicationResources.gpr"
|
||||||
COMMAND gpr2gpa
|
COMMAND gpr2gpa
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/Packaged/ApplicationResources.gpr"
|
"{TMPDIR}/ApplicationResources.gpr"
|
||||||
DefaultTimestamp.timestamp
|
DefaultTimestamp.timestamp
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/Packaged/ApplicationResources.gpa"
|
"{TMPDIR}/ApplicationResources.gpa"
|
||||||
-patch ApplicationResourcePatches/manifest.json
|
-patch ApplicationResourcePatches/manifest.json
|
||||||
COMMAND FTagData
|
COMMAND FTagData
|
||||||
DefaultTimestamp.timestamp
|
DefaultTimestamp.timestamp
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/Packaged/ApplicationResources.gpf"
|
"{TMPDIR}/ApplicationResources.gpf"
|
||||||
data ozm5 0 0 locked
|
data ozm5 0 0 locked
|
||||||
COMMAND MergeGPF
|
COMMAND MergeGPF
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/Packaged/ApplicationResources.gpf"
|
"{TMPDIR}/ApplicationResources.gpf"
|
||||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||||
)
|
)
|
||||||
|
|
||||||
file(GLOB_RECURSE FONT_DEPS RELATIVE "${CMAKE_SOURCE_DIR}" CONFIGURE_DEPENDS Resources/Fonts/*)
|
file(GLOB_RECURSE FONT_DEPS RELATIVE "${CMAKE_SOURCE_DIR}" CONFIGURE_DEPENDS Resources/Fonts/*)
|
||||||
add_data_file(Fonts.gpf
|
add_data_file(Fonts.gpf
|
||||||
BYPRODUCTS
|
|
||||||
Packaged/Fonts.gpr
|
|
||||||
Packaged/Fonts.gpa
|
|
||||||
Packaged/FontCacheCatalog.bin
|
|
||||||
Packaged/FontCacheManifest.json
|
|
||||||
Packaged/CachedFont0.bin
|
|
||||||
Packaged/CachedFont1.bin
|
|
||||||
Packaged/CachedFont2.bin
|
|
||||||
Packaged/CachedFont3.bin
|
|
||||||
Packaged/CachedFont4.bin
|
|
||||||
Packaged/CachedFont5.bin
|
|
||||||
Packaged/CachedFont6.bin
|
|
||||||
Packaged/CachedFont7.bin
|
|
||||||
Packaged/CachedFont8.bin
|
|
||||||
Packaged/CachedFont9.bin
|
|
||||||
Packaged/CachedFont10.bin
|
|
||||||
Packaged/CachedFont11.bin
|
|
||||||
Packaged/CachedFont12.bin
|
|
||||||
Packaged/CachedFont13.bin
|
|
||||||
Packaged/CachedFont14.bin
|
|
||||||
COMMANDS
|
|
||||||
DEPENDS GenerateFonts MiniRez gpr2gpa FTagData MergeGPF ${FONT_DEPS}
|
DEPENDS GenerateFonts MiniRez gpr2gpa FTagData MergeGPF ${FONT_DEPS}
|
||||||
COMMAND GenerateFonts "${CMAKE_SOURCE_DIR}/Resources" Packaged
|
COMMAND GenerateFonts "${CMAKE_SOURCE_DIR}/Resources" {TMPDIR}
|
||||||
COMMAND MiniRez "${CMAKE_SOURCE_DIR}/Empty.r" Packaged/Fonts.gpr
|
COMMAND MiniRez "${CMAKE_SOURCE_DIR}/Empty.r" {TMPDIR}/Fonts.gpr
|
||||||
COMMAND gpr2gpa
|
COMMAND gpr2gpa
|
||||||
Packaged/Fonts.gpr
|
{TMPDIR}/Fonts.gpr
|
||||||
"${CMAKE_SOURCE_DIR}/DefaultTimestamp.timestamp"
|
"${CMAKE_SOURCE_DIR}/DefaultTimestamp.timestamp"
|
||||||
Packaged/Fonts.gpa
|
{TMPDIR}/Fonts.gpa
|
||||||
-patch Packaged/FontCacheManifest.json
|
-patch {TMPDIR}/FontCacheManifest.json
|
||||||
COMMAND FTagData
|
COMMAND FTagData
|
||||||
DefaultTimestamp.timestamp
|
DefaultTimestamp.timestamp
|
||||||
Packaged/Fonts.gpf
|
{TMPDIR}/Fonts.gpf
|
||||||
data ozm5 0 0 locked
|
data ozm5 0 0 locked
|
||||||
COMMAND MergeGPF Packaged/Fonts.gpf
|
COMMAND MergeGPF {TMPDIR}/Fonts.gpf
|
||||||
)
|
)
|
||||||
|
|
||||||
# These files are committed to the repo and aren't currently useful on non-Windows systems anyway.
|
# These files are committed to the repo and aren't currently useful on non-Windows systems anyway.
|
||||||
|
Reference in New Issue
Block a user