mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-13 09:39:10 +00:00
.github
bin
cmake
scripts
Baseset.cmake
CreateGRF.cmake
Desktop.cmake
FindVersion.cmake
GenerateWidget.cmake
Regression.cmake
SquirrelExport.cmake
SquirrelIncludes.cmake
AddCustomXXXTimestamp.cmake
Catch.cmake
CatchAddTests.cmake
CheckAtomic.cmake
CompileFlags.cmake
CreateGrfCommand.cmake
CreateRegression.cmake
Endian.cmake
FindAllegro.cmake
FindEditbin.cmake
FindFluidsynth.cmake
FindFontconfig.cmake
FindGrfcodec.cmake
FindHarfbuzz.cmake
FindICU.cmake
FindIconv.cmake
FindLZO.cmake
FindPandoc.cmake
FindSSE.cmake
FindXaudio2.cmake
InstallAndPackage.cmake
LinkPackage.cmake
MSVCFilters.cmake
Options.cmake
PackageBundle.cmake
PackageDeb.cmake
PackageNSIS.cmake
PackageRPM.cmake
SourceList.cmake
Static.cmake
docs
media
os
regression
src
.dorpsgek.yml
.editorconfig
.gitignore
CMakeLists.txt
CODINGSTYLE.md
COMPILING.md
CONTRIBUTING.md
COPYING.md
CPackProperties.cmake.in
CREDITS.md
Doxyfile.in
README.md
changelog.txt
known-bugs.txt
vcpkg.json
76 lines
2.8 KiB
CMake
76 lines
2.8 KiB
CMake
cmake_minimum_required(VERSION 3.5)
|
|
|
|
#
|
|
# Create a single GRF file based on sprites/<grfname>.nfo and sprites/*.png
|
|
# files.
|
|
#
|
|
|
|
if(NOT NFORENUM_EXECUTABLE)
|
|
message(FATAL_ERROR "Script needs NFORENUM_EXECUTABLE defined")
|
|
endif()
|
|
if(NOT GRFCODEC_EXECUTABLE)
|
|
message(FATAL_ERROR "Script needs GRFCODEC_EXECUTABLE defined")
|
|
endif()
|
|
if(NOT GRFID_EXECUTABLE)
|
|
message(FATAL_ERROR "Script needs GRFID_EXECUTABLE defined")
|
|
endif()
|
|
if(NOT GRF_SOURCE_FOLDER)
|
|
message(FATAL_ERROR "Script needs GRF_SOURCE_FOLDER defined")
|
|
endif()
|
|
if(NOT GRF_BINARY_FILE)
|
|
message(FATAL_ERROR "Script needs GRF_BINARY_FILE defined")
|
|
endif()
|
|
|
|
# Remove the existing output so failures never go unnoticed
|
|
file(REMOVE ${GRF_BINARY_FILE} ${GRF_BINARY_FILE}.hash)
|
|
|
|
get_filename_component(GRF_SOURCE_FOLDER_NAME "${GRF_SOURCE_FOLDER}" NAME)
|
|
|
|
file(WRITE sprites/${GRF_SOURCE_FOLDER_NAME}.nfo "")
|
|
file(READ ${GRF_SOURCE_FOLDER}/${GRF_SOURCE_FOLDER_NAME}.nfo NFO_LINES)
|
|
# Replace ; with \;, and make a list out of this based on \n
|
|
string(REPLACE ";" "\\;" NFO_LINES "${NFO_LINES}")
|
|
string(REPLACE "\n" ";" NFO_LINES "${NFO_LINES}")
|
|
|
|
foreach(NFO_LINE IN LISTS NFO_LINES)
|
|
# Recover the ; that was really in the text (and not a newline)
|
|
string(REPLACE "\\;" ";" NFO_LINE "${NFO_LINE}")
|
|
|
|
if(NFO_LINE MATCHES "^#include")
|
|
string(REGEX REPLACE "^#include \"(.*)\"$" "\\1" INCLUDE_FILE ${NFO_LINE})
|
|
file(READ ${GRF_SOURCE_FOLDER}/${INCLUDE_FILE} INCLUDE_LINES)
|
|
file(APPEND sprites/${GRF_SOURCE_FOLDER_NAME}.nfo "${INCLUDE_LINES}")
|
|
else()
|
|
file(APPEND sprites/${GRF_SOURCE_FOLDER_NAME}.nfo "${NFO_LINE}\n")
|
|
endif()
|
|
endforeach()
|
|
|
|
execute_process(COMMAND ${NFORENUM_EXECUTABLE} -s sprites/${GRF_SOURCE_FOLDER_NAME}.nfo RESULT_VARIABLE RESULT)
|
|
if(RESULT)
|
|
if(NOT RESULT MATCHES "^[0-9]*$")
|
|
message(FATAL_ERROR "Failed to run NFORenum (${RESULT}), please check NFORENUM_EXECUTABLE variable")
|
|
endif()
|
|
message(FATAL_ERROR "NFORenum failed")
|
|
endif()
|
|
|
|
execute_process(COMMAND ${GRFCODEC_EXECUTABLE} -n -s -e -g2 -p1 ${GRF_SOURCE_FOLDER_NAME}.grf RESULT_VARIABLE RESULT)
|
|
if(RESULT)
|
|
if(NOT RESULT MATCHES "^[0-9]*$")
|
|
message(FATAL_ERROR "Failed to run GRFCodec (${RESULT}), please check GRFCODEC_EXECUTABLE variable")
|
|
endif()
|
|
message(FATAL_ERROR "GRFCodec failed")
|
|
endif()
|
|
|
|
execute_process(COMMAND ${GRFID_EXECUTABLE} -m ${GRF_SOURCE_FOLDER_NAME}.grf OUTPUT_VARIABLE GRFID_HASH RESULT_VARIABLE RESULT)
|
|
if(RESULT)
|
|
if(NOT RESULT MATCHES "^[0-9]*$")
|
|
message(FATAL_ERROR "Failed to run GRFID (${RESULT}), please check GRFID_EXECUTABLE variable")
|
|
endif()
|
|
message(FATAL_ERROR "GRFID failed")
|
|
endif()
|
|
|
|
file(WRITE ${GRF_BINARY_FILE}.hash ${GRFID_HASH})
|
|
|
|
# Copy build files back to the source directory.
|
|
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${GRF_SOURCE_FOLDER_NAME}.grf ${GRF_BINARY_FILE})
|