Files @ r16526:225fd831e236
Branch filter:

Location: cpp/openttd-patchpack/source/Makefile.grf.in

frosch
(svn r21262) -Fix (r18708)[FS#4246]: Custom station foundations using the 'simple foundations'-method did not draw any sprite for WSE-slopes when there are foundations on both neighboured tiles in the north. As there must be at least one sprite to provide the correct offset for the groundsprite draw the (empty) default foundation sprite in that case.
# $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/>.
#
# Building requires GRFCodec and NFORenum. Older versions of GRFCodec are
#  known to miscompile the graphics.
#
# Recent nightlies (including sources) of both can be found at:
#  http://www.openttd.org/download-grfcodec
#  http://www.openttd.org/download-nforenum
#
# The mercurial repository of both can be found at:
#  http://hg.openttdcoop.org/grfcodec
#  http://hg.openttdcoop.org/nforenum
#


ROOT_DIR = !!ROOT_DIR!!
GRF_DIR  = $(ROOT_DIR)/media/extra_grf
BIN_DIR  = !!BIN_DIR!!/data
OBJS_DIR = !!GRF_OBJS_DIR!!
OS       = !!OS!!
STAGE    = !!STAGE!!

# Check if we want to show what we are doing
ifdef VERBOSE
	Q =
	E = @true
else
	Q = @
	E = @echo
endif

# Some configurational settings for your environment.
# If GRFCodec doesn't know a command, it'll exit with a non-zero exit code.
GRFCODEC := $(shell grfcodec -s -v >/dev/null 2>/dev/null && echo "grfcodec -s" || echo "grfcodec")
# Old NFORenums don't give an error code when a parameter isn't known, so we have to work around that.
NFORENUM := $(shell [ `nforenum -s -v 2>/dev/null | wc -l ` -eq 1 ] && echo "nforenum -s" || echo "nforenum")
MD5SUM   := $(shell [ "$(OS)" = "OSX" ] && echo "md5 -r" || echo "md5sum")

# Some "should not be changed" settings.
NFO_FILES    := $(GRF_DIR)/*.nfo
PNG_FILES    := $(GRF_DIR)/*.png

# Build the GRF.
all: $(BIN_DIR)/openttd.grf

# Make sure the sprites directory exists.
$(OBJS_DIR)/sprites:
	$(Q)-mkdir "$@"

# Generic
$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites
	@# Only try; if nforenum isn't available, just retouch the file as they likely didn't need it anyway.
	$(Q) ($(NFORENUM) --help > /dev/null 2>&1 && $(MAKE) $(OBJS_DIR)/openttd.grf && cp $(OBJS_DIR)/openttd.grf $(BIN_DIR)/openttd.grf) || ([ -e $(BIN_DIR)/openttd.grf ] && touch $(BIN_DIR)/openttd.grf && echo "no NFORenum and GRFCodec found, skipping rebuild of openttd.grf...") || (echo "no NFORenum and GRFCodec found, but no openttd.grf either. Install NFORenum and GRFCodec." && exit 1)

# Yeah, we'd like to use -i in the sed, but Mac OS X's sed and GNU sed just can't agree on the usage of -i. In any case either one of them fails.
$(OBJS_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites
	$(E) '$(STAGE) Assembling openttd.nfo'
	$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null
	$(Q) gcc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttd.nfo
	$(Q) $(NFORENUM) $(OBJS_DIR)/sprites/openttd.nfo
	$(E) '$(STAGE) Compiling openttd.grf'
	$(Q) $(GRFCODEC) -e -p1 $(OBJS_DIR)/openttd.grf
	$(Q) cp $(OBJS_DIR)/openttd.grf $(BIN_DIR)/openttd.grf
	$(E) '$(STAGE) Updating base graphics sets'
	$(Q) for grf in $(BIN_DIR)/orig*.obg; do sed 's/^OPENTTD.GRF  = [0-9a-f]*$$/OPENTTD.GRF  = '`$(MD5SUM) $(BIN_DIR)/openttd.grf | sed 's@ .*@@'`'/' $$grf > $$grf.tmp && mv $$grf.tmp $$grf; done

# Clean up temporary files.
clean:
	$(Q)rm -f *.bak *.grf

# Clean up temporary files
mrproper: clean
	$(Q)rm -fr sprites

.PHONY: all mrproper depend clean