summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.grf.in4
-rw-r--r--media/extra_grf/assemble_nfo.awk32
2 files changed, 34 insertions, 2 deletions
diff --git a/Makefile.grf.in b/Makefile.grf.in
index 81089efb1..c2d058d59 100644
--- a/Makefile.grf.in
+++ b/Makefile.grf.in
@@ -75,10 +75,10 @@ $(BIN_DIR)/%.obm: $(BASESET_DIR)/%.obm $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/
$(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $< >$@
# Compile extra grf
-$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites
+$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites $(GRF_DIR)/assemble_nfo.awk
$(E) '$(STAGE) Assembling openttd.nfo'
$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null
- $(Q) $(CC_BUILD) -nostdinc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttd.nfo
+ $(Q) awk -f $(GRF_DIR)/assemble_nfo.awk $(GRF_DIR)/openttd.nfo > $(OBJS_DIR)/sprites/openttd.nfo
$(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/openttd.nfo
$(E) '$(STAGE) Compiling openttd.grf'
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/openttd.grf
diff --git a/media/extra_grf/assemble_nfo.awk b/media/extra_grf/assemble_nfo.awk
new file mode 100644
index 000000000..cf6b425c1
--- /dev/null
+++ b/media/extra_grf/assemble_nfo.awk
@@ -0,0 +1,32 @@
+# $Id$
+
+# This file is part of OpenTTD.
+# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
+# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
+
+BEGIN {
+ # Very basic variant function; barely any error checking.
+ # Just use the first argument as the file to start from when assembling everything
+ path = ARGV[1];
+ gsub("[^/\\\\]*$", "", path);
+ assemble(ARGV[1]);
+}
+
+# Recursive function for assembling by means of resolving the #includes.
+function assemble(filename) {
+ while ((getline < filename) > 0) {
+ if (NF == 2 && $1 == "#include" ) {
+ # Remove the quotes.
+ gsub("[\"'<>]", "", $2);
+ assemble(path $2);
+ } else {
+ print $0;
+ }
+ }
+
+ if (close(filename) < 0) {
+ print "Could not open " filename > "/dev/stderr";
+ exit -1;
+ }
+}