diff options
author | Patric Stout <truebrain@openttd.org> | 2019-04-07 11:51:19 +0200 |
---|---|---|
committer | glx22 <glx22@users.noreply.github.com> | 2020-06-05 19:36:05 +0200 |
commit | 85315e2e3132dd7aff9ee96c1ba8d282350d9d5e (patch) | |
tree | 9c582e49a1d054e10e5d1b6e21e27d6c3ff747e7 /media/baseset/CMakeLists.txt | |
parent | 203a77c1dc722df677302e84c6d5c0d4cb06d8ee (diff) | |
download | openttd-85315e2e3132dd7aff9ee96c1ba8d282350d9d5e.tar.xz |
Codechange: rework how grf and ob[msg] are generated
For grfs, it now uses CMake scripts to do its job, and both grf
files are split into their own folder to make more clear what is
going on. Additionally, it no longer builds in-source (although the
resulting grf is copied back in the source folder).
For ob[msg] it now uses CMake scripts to generate the translation
files; the result is no longer stored in-source (but in the build
folder).
Although all files are available to create the GRFs and basesets, it
won't really work till CMake is introduced (which will happen in a
few commits from here)
Diffstat (limited to 'media/baseset/CMakeLists.txt')
-rw-r--r-- | media/baseset/CMakeLists.txt | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/media/baseset/CMakeLists.txt b/media/baseset/CMakeLists.txt new file mode 100644 index 000000000..309ac7a49 --- /dev/null +++ b/media/baseset/CMakeLists.txt @@ -0,0 +1,87 @@ +add_subdirectory(openttd) +add_subdirectory(orig_extra) + +set(BASESET_SOURCE_FILES + ${CMAKE_CURRENT_SOURCE_DIR}/orig_dos.obg + ${CMAKE_CURRENT_SOURCE_DIR}/orig_dos_de.obg + ${CMAKE_CURRENT_SOURCE_DIR}/orig_win.obg + ${CMAKE_CURRENT_SOURCE_DIR}/no_music.obm + ${CMAKE_CURRENT_SOURCE_DIR}/orig_dos.obm + ${CMAKE_CURRENT_SOURCE_DIR}/orig_tto.obm + ${CMAKE_CURRENT_SOURCE_DIR}/orig_win.obm + ${CMAKE_CURRENT_SOURCE_DIR}/no_sound.obs + ${CMAKE_CURRENT_SOURCE_DIR}/orig_dos.obs + ${CMAKE_CURRENT_SOURCE_DIR}/orig_win.obs +) +set(BASESET_OTHER_SOURCE_FILES + ${CMAKE_CURRENT_SOURCE_DIR}/openttd.grf + ${CMAKE_CURRENT_SOURCE_DIR}/opntitle.dat + ${CMAKE_CURRENT_SOURCE_DIR}/orig_extra.grf +) + +# Done by the subdirectories, if nforenum / grfcodec is installed +if (NFORENUM_FOUND AND GRFCODEC_FOUND) + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/openttd.grf PROPERTIES GENERATED TRUE) + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/orig_extra.grf PROPERTIES GENERATED TRUE) + + list(APPEND BASESET_BINARY_FILES openttd.grf) + list(APPEND BASESET_BINARY_FILES orig_extra.grf) +endif (NFORENUM_FOUND AND GRFCODEC_FOUND) + +set(BASESET_EXTRAGRF_FILE ${CMAKE_CURRENT_SOURCE_DIR}/orig_extra.grf) + +# Walk over all the baseset files, and generate a command to configure them +foreach(BASESET_SOURCE_FILE IN LISTS BASESET_SOURCE_FILES) + get_filename_component(BASESET_SOURCE_FILE_NAME "${BASESET_SOURCE_FILE}" NAME) + set(BASESET_BINARY_FILE "${CMAKE_BINARY_DIR}/baseset/${BASESET_SOURCE_FILE_NAME}") + + get_target_property(LANG_SOURCE_FILES language_files LANG_SOURCE_FILES) + + add_custom_command_timestamp(OUTPUT ${BASESET_BINARY_FILE} + COMMAND ${CMAKE_COMMAND} + -DBASESET_SOURCE_FILE=${BASESET_SOURCE_FILE} + -DBASESET_BINARY_FILE=${BASESET_BINARY_FILE} + -DBASESET_EXTRAGRF_FILE=${BASESET_EXTRAGRF_FILE} + -P ${CMAKE_SOURCE_DIR}/cmake/scripts/Baseset.cmake + -- + ${LANG_SOURCE_FILES} + MAIN_DEPENDENCY ${BASESET_SOURCE_FILE} + DEPENDS ${LANG_SOURCE_FILES} + ${BASESET_EXTRAGRF_FILE} + ${CMAKE_SOURCE_DIR}/cmake/scripts/Baseset.cmake + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating ${BASESET_SOURCE_FILE_NAME} baseset metadata file" + ) + + list(APPEND BASESET_BINARY_FILES ${BASESET_BINARY_FILE}) +endforeach(BASESET_SOURCE_FILE) + +# Walk over all the other baseset files, and generate a command to copy them +foreach(BASESET_OTHER_SOURCE_FILE IN LISTS BASESET_OTHER_SOURCE_FILES) + get_filename_component(BASESET_OTHER_SOURCE_FILE_NAME "${BASESET_OTHER_SOURCE_FILE}" NAME) + set(BASESET_OTHER_BINARY_FILE "${CMAKE_BINARY_DIR}/baseset/${BASESET_OTHER_SOURCE_FILE_NAME}") + + add_custom_command(OUTPUT ${BASESET_OTHER_BINARY_FILE} + COMMAND ${CMAKE_COMMAND} -E copy + ${BASESET_OTHER_SOURCE_FILE} + ${BASESET_OTHER_BINARY_FILE} + MAIN_DEPENDENCY ${BASESET_OTHER_SOURCE_FILE} + COMMENT "Copying ${BASESET_OTHER_SOURCE_FILE_NAME} baseset file" + ) + + list(APPEND BASESET_BINARY_FILES ${BASESET_OTHER_BINARY_FILE}) +endforeach(BASESET_OTHER_SOURCE_FILE) + +# Create a new target which generates all baseset metadata files +add_custom_target_timestamp(baseset_files + DEPENDS + ${BASESET_BINARY_FILES} +) + +add_library(basesets + INTERFACE +) +add_dependencies(basesets + baseset_files +) +add_library(openttd::basesets ALIAS basesets) |