File diff r24242:3697a2e18a06 → r24243:007d92886797
cmake/scripts/CreateGRF.cmake
Show inline comments
 
new file 100644
 
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 (NOT NFORENUM_EXECUTABLE)
 
if (NOT GRFCODEC_EXECUTABLE)
 
    message(FATAL_ERROR "Script needs GRFCODEC_EXECUTABLE defined")
 
endif (NOT GRFCODEC_EXECUTABLE)
 
if (NOT GRF_SOURCE_FOLDER)
 
    message(FATAL_ERROR "Script needs GRF_SOURCE_FOLDER defined")
 
endif (NOT GRF_SOURCE_FOLDER)
 
if (NOT GRF_BINARY_FILE)
 
    message(FATAL_ERROR "Script needs GRF_BINARY_FILE defined")
 
endif (NOT GRF_BINARY_FILE)
 

	
 
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 (NFO_LINE MATCHES "^#include")
 
        file(APPEND sprites/${GRF_SOURCE_FOLDER_NAME}.nfo "${NFO_LINE}\n")
 
    endif (NFO_LINE MATCHES "^#include")
 
endforeach(NFO_LINE)
 

	
 
execute_process(COMMAND ${NFORENUM_EXECUTABLE} -s sprites/${GRF_SOURCE_FOLDER_NAME}.nfo)
 
execute_process(COMMAND ${GRFCODEC_EXECUTABLE} -n -s -e -p1 ${GRF_SOURCE_FOLDER_NAME}.grf)
 
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${GRF_SOURCE_FOLDER_NAME}.grf ${GRF_BINARY_FILE})