diff options
author | Aki <please@ignore.pl> | 2022-02-06 19:14:54 +0100 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-02-06 19:16:34 +0100 |
commit | d289918bfdf7635ec3bb2c94d8255da2b2572aea (patch) | |
tree | 6e9143cbfd63fd0e6a674d37a51a58ea85882929 /cmake | |
parent | ba64478a1aa1740da47ff0016dff6cc633900b73 (diff) | |
download | starshatter-d289918bfdf7635ec3bb2c94d8255da2b2572aea.zip starshatter-d289918bfdf7635ec3bb2c94d8255da2b2572aea.tar.gz starshatter-d289918bfdf7635ec3bb2c94d8255da2b2572aea.tar.bz2 |
Added datafiles to the repository
This includes only text files from the most common distribution of content.dat
and shatter.dat.
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/modules/AddDatafile.cmake | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/cmake/modules/AddDatafile.cmake b/cmake/modules/AddDatafile.cmake new file mode 100644 index 0000000..6e98479 --- /dev/null +++ b/cmake/modules/AddDatafile.cmake @@ -0,0 +1,53 @@ +# Adds a target that creates a datafile archive containing all files under selected directory tree. For example: +# +# add_datafile( +# shatter +# DIRECTORY shatter +# OUTPUT shatter.dat +# ) +# +# Will create 'shatter.dat' in the respective binary directory containing all files in 'shatter' subdirectory of current +# source directory. DIRECTORY option's argument defaults to the target name. OUTPUT option's argument defaults to the +# target name with ".dat" suffix. +# +# To create the archive Datafile.exe is used, so for non-Windows platforms an emulator that can run it is needed. + +function(add_datafile) + set(FUNC_DATAFILE_TARGET ${ARGV0}) + cmake_parse_arguments( + PARSE_ARGV 1 + FUNC_DATAFILE + "" + "DIRECTORY;OUTPUT" + "" + ) + if(NOT DEFINED FUNC_DATAFILE_DIRECTORY) + set(FUNC_DATAFILE_DIRECTORY ${FUNC_DATAFILE_TARGET}) + endif() + if(NOT DEFINED FUNC_DATAFILE_OUTPUT) + set(FUNC_DATAFILE_OUTPUT "${FUNC_DATAFILE_TARGET}.dat") + endif() + cmake_path(ABSOLUTE_PATH FUNC_DATAFILE_DIRECTORY NORMALIZE BASE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + cmake_path(ABSOLUTE_PATH FUNC_DATAFILE_OUTPUT NORMALIZE BASE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + if(CMAKE_HOST_SYSTEM_NAME MATCHES Windows) + set(FUNC_DATAFILE_VAR PATH) + set(FUNC_DATAFILE_PATHS $ENV{PATH}) + list(PREPEND FUNC_DATAFILE_PATHS $<TARGET_FILE_DIR:Zlib::zlib>) + else() + set(FUNC_DATAFILE_VAR WINEPATH) + set(FUNC_DATAFILE_PATHS $ENV{WINEPATH}) + list(PREPEND FUNC_DATAFILE_PATHS $<TARGET_FILE_DIR:Zlib::zlib>) + list(PREPEND FUNC_DATAFILE_PATHS $<SHELL_PATH:${CMAKE_FIND_ROOT_PATH}/bin>) + endif() + add_custom_command( + OUTPUT ${FUNC_DATAFILE_OUTPUT} + DEPENDS ${FUNC_DATAFILE_DIRECTORY} + COMMAND + ${CMAKE_COMMAND} -E env "${FUNC_DATAFILE_VAR}='${FUNC_DATAFILE_PATHS}'" + ${CMAKE_CORSSCOMPILING_EMULATOR} + $<TARGET_FILE:Datafile> $<SHELL_PATH:${FUNC_DATAFILE_OUTPUT}> -mak + COMMENT "Creating datafile ${FUNC_DATAFILE_TARGET}" + WORKING_DIRECTORY ${FUNC_DATAFILE_DIRECTORY} + ) + add_custom_target(${FUNC_DATAFILE_TARGET} ALL DEPENDS ${FUNC_DATAFILE_OUTPUT}) +endfunction() |