mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-01-31 11:23:21 +00:00
872fdcbbab
This allows for v2 container NewGRFs to be created. Hashes are needed for building the baseset metadata, so the .hash files are stored the source tree so they can be built if grfcodec and grfid are not present. The hash of openttd.grf is not actually needed, but it is simpler to leave it in than handle only orig_extra.grf.
52 lines
2.3 KiB
CMake
52 lines
2.3 KiB
CMake
# Macro which contains all bits and pieces to create a single grf file based
|
|
# on NFO and PNG files.
|
|
#
|
|
# create_grf_command()
|
|
#
|
|
function(create_grf_command)
|
|
set(EXTRA_PNG_SOURCE_FILES ${ARGV})
|
|
|
|
get_filename_component(GRF_SOURCE_FOLDER_NAME "${CMAKE_CURRENT_SOURCE_DIR}" NAME)
|
|
get_filename_component(GRF_BINARY_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../${GRF_SOURCE_FOLDER_NAME}.grf ABSOLUTE)
|
|
file(GLOB_RECURSE GRF_PNG_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.png)
|
|
file(GLOB_RECURSE GRF_NFO_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.nfo)
|
|
set(GRF_PNG_SOURCE_FILES ${GRF_PNG_SOURCE_FILES} ${EXTRA_PNG_SOURCE_FILES})
|
|
|
|
# Copy over all the PNG files to the correct folder
|
|
foreach(GRF_PNG_SOURCE_FILE IN LISTS GRF_PNG_SOURCE_FILES)
|
|
get_filename_component(GRF_PNG_SOURCE_FILE_NAME "${GRF_PNG_SOURCE_FILE}" NAME)
|
|
set(GRF_PNG_BINARY_FILE "${CMAKE_CURRENT_BINARY_DIR}/sprites/${GRF_PNG_SOURCE_FILE_NAME}")
|
|
|
|
add_custom_command(OUTPUT ${GRF_PNG_BINARY_FILE}
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
${GRF_PNG_SOURCE_FILE}
|
|
${GRF_PNG_BINARY_FILE}
|
|
MAIN_DEPENDENCY ${GRF_PNG_SOURCE_FILE}
|
|
COMMENT "Copying ${GRF_PNG_SOURCE_FILE_NAME} sprite file"
|
|
)
|
|
|
|
list(APPEND GRF_PNG_BINARY_FILES ${GRF_PNG_BINARY_FILE})
|
|
endforeach()
|
|
|
|
add_custom_command(OUTPUT ${GRF_BINARY_FILE} ${GRF_BINARY_FILE}.hash
|
|
COMMAND ${CMAKE_COMMAND}
|
|
-DGRF_SOURCE_FOLDER=${CMAKE_CURRENT_SOURCE_DIR}
|
|
-DGRF_BINARY_FILE=${GRF_BINARY_FILE}
|
|
-DNFORENUM_EXECUTABLE=${NFORENUM_EXECUTABLE}
|
|
-DGRFCODEC_EXECUTABLE=${GRFCODEC_EXECUTABLE}
|
|
-DGRFID_EXECUTABLE=${GRFID_EXECUTABLE}
|
|
-P ${CMAKE_SOURCE_DIR}/cmake/scripts/CreateGRF.cmake
|
|
MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/cmake/scripts/CreateGRF.cmake
|
|
DEPENDS ${GRF_PNG_BINARY_FILES}
|
|
${GRF_NFO_SOURCE_FILES}
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
COMMENT "Generating ${GRF_SOURCE_FOLDER_NAME}.grf"
|
|
)
|
|
|
|
# For conviance, if you want to only test building the GRF
|
|
add_custom_target(${GRF_SOURCE_FOLDER_NAME}.grf
|
|
DEPENDS
|
|
${GRF_BINARY_FILE}
|
|
)
|
|
endfunction()
|