summaryrefslogtreecommitdiff
path: root/media/baseset/CMakeLists.txt
diff options
context:
space:
mode:
authorPatric Stout <truebrain@openttd.org>2019-04-07 11:51:19 +0200
committerglx22 <glx22@users.noreply.github.com>2020-06-05 19:36:05 +0200
commit85315e2e3132dd7aff9ee96c1ba8d282350d9d5e (patch)
tree9c582e49a1d054e10e5d1b6e21e27d6c3ff747e7 /media/baseset/CMakeLists.txt
parent203a77c1dc722df677302e84c6d5c0d4cb06d8ee (diff)
downloadopenttd-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.txt87
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)