mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-04 06:00:15 +00:00
190 lines
6.6 KiB
Makefile
190 lines
6.6 KiB
Makefile
# $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/>.
|
|
|
|
# Check if we want to show what we are doing
|
|
ifdef VERBOSE
|
|
Q =
|
|
else
|
|
Q = @
|
|
endif
|
|
|
|
include Makefile.am
|
|
|
|
CONFIG_CACHE_PWD = !!CONFIG_CACHE_PWD!!
|
|
CONFIG_CACHE_SOURCE_LIST = !!CONFIG_CACHE_SOURCE_LIST!!
|
|
BIN_DIR = !!BIN_DIR!!
|
|
ICON_THEME_DIR = !!ICON_THEME_DIR!!
|
|
MAN_DIR = !!MAN_DIR!!
|
|
MENU_DIR = !!MENU_DIR!!
|
|
SRC_DIR = !!SRC_DIR!!
|
|
ROOT_DIR = !!ROOT_DIR!!
|
|
BUNDLE_DIR = "$(ROOT_DIR)/bundle"
|
|
BUNDLES_DIR = "$(ROOT_DIR)/bundles"
|
|
INSTALL_DIR = !!INSTALL_DIR!!
|
|
INSTALL_BINARY_DIR = "$(INSTALL_DIR)/"!!BINARY_DIR!!
|
|
INSTALL_MAN_DIR = "$(INSTALL_DIR)/$(MAN_DIR)"
|
|
INSTALL_MENU_DIR = "$(INSTALL_DIR)/$(MENU_DIR)"
|
|
INSTALL_ICON_DIR = "$(INSTALL_DIR)/"!!ICON_DIR!!
|
|
INSTALL_ICON_THEME_DIR = "$(INSTALL_DIR)/$(ICON_THEME_DIR)"
|
|
INSTALL_DATA_DIR = "$(INSTALL_DIR)/"!!DATA_DIR!!
|
|
INSTALL_DOC_DIR = "$(INSTALL_DIR)/"!!DOC_DIR!!
|
|
SOURCE_LIST = !!SOURCE_LIST!!
|
|
CONFIGURE_FILES = !!CONFIGURE_FILES!!
|
|
BINARY_NAME = !!BINARY_NAME!!
|
|
STRIP = !!STRIP!!
|
|
TTD = !!TTD!!
|
|
TTDS = $(SRC_DIRS:%=%/$(TTD))
|
|
OS = !!OS!!
|
|
OSXAPP = !!OSXAPP!!
|
|
LIPO = !!LIPO!!
|
|
AWK = !!AWK!!
|
|
SORT = !!SORT!!
|
|
DISTCC = !!DISTCC!!
|
|
|
|
RES := $(shell if [ ! -f $(CONFIG_CACHE_PWD) ] || [ "`pwd`" != "`cat $(CONFIG_CACHE_PWD)`" ]; then echo "`pwd`" > $(CONFIG_CACHE_PWD); fi )
|
|
RES := $(shell if [ ! -f $(CONFIG_CACHE_SOURCE_LIST) ] || [ -n "`cmp $(CONFIG_CACHE_SOURCE_LIST) $(SOURCE_LIST) 2>/dev/null`" ]; then cp $(SOURCE_LIST) $(CONFIG_CACHE_SOURCE_LIST); fi )
|
|
|
|
all: config.pwd config.cache
|
|
ifdef DISTCC
|
|
@if [ -z "`echo '$(MFLAGS)' | grep '\-j'`" ]; then echo; echo "WARNING: you enabled distcc support, but you don't seem to be using the -jN paramter"; echo; fi
|
|
endif
|
|
@for dir in $(DIRS); do \
|
|
$(MAKE) -C $$dir all || exit 1; \
|
|
done
|
|
ifdef LIPO
|
|
# Lipo is an OSX thing. If it is defined, it means we are building for universal,
|
|
# and so we have have to combine the binaries into one big binary
|
|
|
|
# Remove the last binary made by the last compiled target
|
|
$(Q)rm -f $(BIN_DIR)/$(TTD)
|
|
# Make all the binaries into one
|
|
$(Q)$(LIPO) -create -output $(BIN_DIR)/$(TTD) $(TTDS)
|
|
endif
|
|
|
|
help:
|
|
@echo "Available make commands:"
|
|
@echo ""
|
|
@echo "Compilation:"
|
|
@echo " all compile the executable and the lang files"
|
|
@echo " lang compile the lang files only"
|
|
@echo "Clean up:"
|
|
@echo " clean remove the files generated during compilation"
|
|
@echo " mrproper remove the files generated during configuration and compilation"
|
|
@echo "Run after compilation:"
|
|
@echo " run execute openttd after the compilation"
|
|
@echo " run-gdb execute openttd in debug mode after the compilation"
|
|
@echo " run-prof execute openttd in profiling mode after the compilation"
|
|
@echo "Installation:"
|
|
@echo " install install the compiled files and the data-files after the compilation"
|
|
@echo " bundle create the base for an installation bundle"
|
|
@echo " bundle_zip create the zip installation bundle"
|
|
@echo " bundle_gzip create the gzip installation bundle"
|
|
@echo " bundle_bzip2 create the bzip2 installation bundle"
|
|
@echo " bundle_lha create the lha installation bundle"
|
|
@echo " bundle_dmg create the dmg installation bundle"
|
|
|
|
config.pwd: $(CONFIG_CACHE_PWD)
|
|
$(MAKE) reconfigure
|
|
|
|
config.cache: $(CONFIG_CACHE_SOURCE_LIST) $(CONFIGURE_FILES)
|
|
$(MAKE) reconfigure
|
|
|
|
reconfigure:
|
|
ifeq ($(shell if test -f config.cache; then echo 1; fi), 1)
|
|
@echo "----------------"
|
|
@echo "The system detected that source.list or any configure file is altered."
|
|
@echo " Going to reconfigure with last known settings..."
|
|
@echo "----------------"
|
|
# Make sure we don't lock config.cache
|
|
@$(shell cat config.cache | sed 's@\\ @\\\\ @g') || exit 1
|
|
@echo "----------------"
|
|
@echo "Reconfig done. Please re-execute make."
|
|
@echo "----------------"
|
|
else
|
|
@echo "----------------"
|
|
@echo "Have not found a configuration, please run configure first."
|
|
@echo "----------------"
|
|
@exit 1
|
|
endif
|
|
|
|
clean:
|
|
@for dir in $(DIRS); do \
|
|
$(MAKE) -C $$dir clean; \
|
|
done
|
|
$(Q)rm -rf $(BUNDLE_TARGET)
|
|
|
|
lang:
|
|
@for dir in $(LANG_DIRS); do \
|
|
$(MAKE) -C $$dir all; \
|
|
done
|
|
|
|
mrproper:
|
|
@for dir in $(DIRS); do \
|
|
$(MAKE) -C $$dir mrproper; \
|
|
done
|
|
# Don't be tempted to merge these two for loops. Doing that breaks make
|
|
# --dry-run, since make has this "feature" that it always runs commands
|
|
# containing $(MAKE), even when --dry-run is passed. The objective is of
|
|
# course to also get a dry-run of submakes, but make is not smart enough
|
|
# to see that a for loop runs both a submake and an actual command.
|
|
@for dir in $(DIRS); do \
|
|
rm -f $$dir/Makefile; \
|
|
done
|
|
$(Q)rm -rf objs
|
|
$(Q)rm -f Makefile Makefile.am Makefile.bundle
|
|
$(Q)rm -f media/openttd.desktop media/openttd.desktop.install
|
|
$(Q)rm -f $(CONFIG_CACHE_SOURCE_LIST) config.cache config.pwd config.log $(CONFIG_CACHE_PWD)
|
|
# directories for bundle generation
|
|
$(Q)rm -rf $(BUNDLE_DIR)
|
|
$(Q)rm -rf $(BUNDLES_DIR)
|
|
# output of profiling
|
|
$(Q)rm -f $(BIN_DIR)/gmon.out
|
|
# output of generating 'API' documentation
|
|
$(Q)rm -f $(ROOT_DIR)/openttd.tag
|
|
$(Q)rm -rf $(ROOT_DIR)/docs/source
|
|
# output of generating AI API documentation
|
|
$(Q)rm -f $(SRC_DIR)/ai/api/openttd.tag
|
|
$(Q)rm -rf $(ROOT_DIR)/docs/aidocs
|
|
# directories created by OpenTTD on regression testing
|
|
$(Q)rm -rf $(BIN_DIR)/ai/regression/content_download $(BIN_DIR)/ai/regression/save $(BIN_DIR)/ai/regression/scenario
|
|
distclean: mrproper
|
|
|
|
maintainer-clean: distclean
|
|
$(Q)rm -f $(BIN_DIR)/baseset/openttd.grf
|
|
|
|
depend:
|
|
@for dir in $(SRC_DIRS); do \
|
|
$(MAKE) -C $$dir depend; \
|
|
done
|
|
|
|
run: all
|
|
$(Q)cd !!BIN_DIR!! && ./!!TTD!! $(OPENTTD_ARGS)
|
|
|
|
run-gdb: all
|
|
$(Q)cd !!BIN_DIR!! && gdb --ex run --args ./!!TTD!! $(OPENTTD_ARGS)
|
|
|
|
run-prof: all
|
|
$(Q)cd !!BIN_DIR!! && ./!!TTD!! $(OPENTTD_ARGS) && gprof !!TTD!! | less
|
|
|
|
regression: all
|
|
$(Q)cd !!BIN_DIR!! && sh ai/regression/run.sh
|
|
test: regression
|
|
|
|
%.o:
|
|
@for dir in $(SRC_DIRS); do \
|
|
$(MAKE) -C $$dir $(@:src/%=%); \
|
|
done
|
|
|
|
%.lng:
|
|
@for dir in $(LANG_DIRS); do \
|
|
$(MAKE) -C $$dir $@; \
|
|
done
|
|
|
|
.PHONY: test distclean mrproper clean
|
|
|
|
include Makefile.bundle
|