2005-07-24 13:55:39 +00:00
|
|
|
|
# $Id$
|
|
|
|
|
|
2004-08-09 17:04:08 +00:00
|
|
|
|
##############################################################################
|
|
|
|
|
#
|
|
|
|
|
# Usage
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
# Synopsis:
|
|
|
|
|
#
|
|
|
|
|
# make WITH_ZLIB=1 UNIX=1 MANUAL_CONFIG=1
|
|
|
|
|
#
|
|
|
|
|
# (See below for the list of possible options.)
|
|
|
|
|
#
|
|
|
|
|
# Alternately, you can run make without the MANUAL_CONFIG part. It then
|
|
|
|
|
# generates Makefile.config, where you can customize all the options.
|
|
|
|
|
# However beware that for all subsequent calls the option values from
|
|
|
|
|
# Makefile.config take precedence to the commandline options.
|
|
|
|
|
#
|
|
|
|
|
# (That means that you probably want to either specify the options on command
|
|
|
|
|
# line together with MANUAL_CONFIG=1 or you want to specify no commandline
|
|
|
|
|
# options at all.)
|
|
|
|
|
|
|
|
|
|
# Targets:
|
|
|
|
|
#
|
|
|
|
|
# Defaults to building binary
|
|
|
|
|
# clean: remove intermediate build files
|
|
|
|
|
# mrproper: remove intermediate files and makefile configuration
|
|
|
|
|
# upgradeconf: add new options to old Makefile.config
|
|
|
|
|
# osx: OS X application
|
2004-12-07 17:58:06 +00:00
|
|
|
|
# release: used by OSX to make a dmg file ready to release
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
# Options:
|
|
|
|
|
#
|
|
|
|
|
# Summary of OS choice defines
|
|
|
|
|
# WIN32: building on Windows
|
|
|
|
|
# UNIX: building on *nix derivate (Linux, FreeBSD)
|
|
|
|
|
# OSX: building on Mac OS X
|
|
|
|
|
# MORPHOS: building on MorphOS
|
2004-11-15 07:53:09 +00:00
|
|
|
|
# BEOS: building on BeOS
|
2004-11-17 09:07:29 +00:00
|
|
|
|
# SUNOS: building on SunOS (Solaris)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
#
|
|
|
|
|
# Summary of library choice defines
|
|
|
|
|
# WITH_ZLIB: savegames using zlib
|
|
|
|
|
# WITH_PNG: screenshots using PNG
|
|
|
|
|
# WITH_SDL: SDL video driver support
|
2005-12-10 11:16:45 +00:00
|
|
|
|
# WITH_COCOA: Cocoa video driver support
|
2004-08-09 17:04:08 +00:00
|
|
|
|
#
|
|
|
|
|
# Summary of other defines:
|
|
|
|
|
# MANUAL_CONFIG: do not use Makefile.config, config options set manually
|
|
|
|
|
# DEBUG: build in debug mode
|
|
|
|
|
# PROFILE: build in profile mode, disables -s and -fomit-frame-pointer
|
|
|
|
|
# TRANSLATOR: build in translator mode (untranslated strings are prepended by
|
|
|
|
|
# a <TODO> mark)
|
|
|
|
|
# RELEASE: this will be the released version number. It replaces all places
|
|
|
|
|
# where it normally would print the revision number
|
2004-09-12 21:49:38 +00:00
|
|
|
|
# MIDI: if set, it will use it as custom path to midi player.
|
2005-03-27 15:42:25 +00:00
|
|
|
|
# If unset, it will use the hardcoded path in the c code
|
|
|
|
|
# This can still be overriden by the music.extmidi openttd.cfg option.
|
2005-07-26 06:59:48 +00:00
|
|
|
|
# WITH_DIRECTMUSIC: enable DirectMusic MIDI support
|
2004-12-24 00:33:41 +00:00
|
|
|
|
# WITH_NETWORK: enable networking
|
|
|
|
|
# DEDICATED: allows compilation on UNIX without SDL. Useful for dedicated servers
|
2004-08-09 17:04:08 +00:00
|
|
|
|
#
|
2004-09-18 16:29:12 +00:00
|
|
|
|
# Paths:
|
|
|
|
|
# INSTALL: If not set, the game uses the directory of the binary to
|
2004-12-04 17:54:56 +00:00
|
|
|
|
# store everything (lang, data, gm, save and openttd.cfg), this is the `old' behaviour.
|
2004-09-18 16:29:12 +00:00
|
|
|
|
# In this case, none of the following paths are used, you also should _not_
|
|
|
|
|
# use `make install', but copy the required stuff yourself (or just play out
|
|
|
|
|
# of you source directory, which should work fine).
|
|
|
|
|
# If you want to use `make install' to install the game globally, you should
|
|
|
|
|
# define it _before_ you build the game. If you only define INSTALL when you
|
|
|
|
|
# do `make install', the game won't be able to find it's files (so you should
|
|
|
|
|
# also define all the following paths before building).
|
|
|
|
|
#
|
|
|
|
|
# So, the following paths should be defined if INSTALL is defined.
|
|
|
|
|
# None of these paths have to end with /
|
|
|
|
|
# PREFIX: Normally /usr/local
|
|
|
|
|
# BINARY_DIR: The location of the binary, normally games. (Will be prefixed
|
|
|
|
|
# with $PREFIX)
|
2005-05-28 10:32:09 +00:00
|
|
|
|
# DATA_DIR: The location of the data (lang, data, gm and scenario), normally
|
|
|
|
|
# share/games/openttd. (Will be prefixed with $PREFIX) Note that scenarios
|
|
|
|
|
# are only put here if USE_HOMEDIR is true, otherwise they are placed in
|
|
|
|
|
# PERSONAL_DIR/scenario
|
2006-01-28 10:16:15 +00:00
|
|
|
|
# ICON_DIR: The location of the openttd icon. (Will be prefixed with
|
|
|
|
|
# $PREFIX).
|
2004-09-18 16:29:12 +00:00
|
|
|
|
# PERSONAL_DIR: The directory where openttd.cfg and the save folder will be
|
|
|
|
|
# stored. You cannot use ~ here, define USE_HOMEDIR for that.
|
|
|
|
|
# USE_HOMEDIR: If this variable is set, PERSONAL_DIR will be prefixed with
|
|
|
|
|
# ~/ at runtime (the user's homedir)
|
2004-12-07 17:16:57 +00:00
|
|
|
|
# SECOND_DATA_PATH Use this data dir if a file is not found in the data dir in the data path
|
2005-01-31 19:22:44 +00:00
|
|
|
|
# CUSTOM_LANG_PATH If this is set, it will use the path given to search for lng files
|
2004-12-07 17:16:57 +00:00
|
|
|
|
# instead of the lang dir in the data path
|
|
|
|
|
# NOTE: both SECOND_DATA_PATH and CUSTOM_LANG_PATH uses paths relative to where OTTD is opened
|
2004-09-18 16:29:12 +00:00
|
|
|
|
#
|
|
|
|
|
# DEST_DIR: make install will use this directory instead of the filesystem
|
|
|
|
|
# root to install its files. This should normally not be used by
|
|
|
|
|
# ordinary users, currently it is only used for the debian
|
|
|
|
|
# packaging. This value should only be set when calling `make
|
|
|
|
|
# install' and is not saved in Makefile.config
|
2005-03-09 23:59:18 +00:00
|
|
|
|
# (Note that DESTDIR is checked if DEST_DIR is not set.)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
#
|
|
|
|
|
# STATIC: link statically
|
|
|
|
|
# CYGWIN: build in Cygwin environment
|
|
|
|
|
# MINGW: build with MingW compiler, link with MingW libraries
|
|
|
|
|
#
|
2005-02-28 21:54:04 +00:00
|
|
|
|
# VERBOSE: show full compiler invocations instead of brief progress messages
|
|
|
|
|
#
|
2005-04-14 12:57:21 +00:00
|
|
|
|
# Special for crosscompiling there are some commands available:
|
|
|
|
|
#
|
2006-02-25 21:25:23 +00:00
|
|
|
|
# UNIVERSAL_BINARY: builds a universal binary for OSX. Make sure you got both PPC and x86 libs. Only works with GCC 4 or newer
|
|
|
|
|
# TRIPPLE_BINARY: builds a universal binary with the addition of code optimised for G5 (which means a total of 3 binaries in one file)
|
2006-01-07 12:53:57 +00:00
|
|
|
|
#
|
|
|
|
|
# JAGUAR: Crosscompiling for OSX 1.2.8 (codenamed Jaguar). Only works if OSX is defined too. Only works with GCC 4 or newer
|
|
|
|
|
# This can be changed to any PPC version of OSX by changing the ppc flags in Makefile.config
|
2005-12-04 17:36:19 +00:00
|
|
|
|
#
|
2005-12-06 14:35:10 +00:00
|
|
|
|
# ENDIAN_FORCE: forces the endian-check to give a certain result. Can be BE, LE or PREPROCESSOR.
|
|
|
|
|
# PREPROCESSOR is always used on all OSX targets and will make the preprocessor pick the right endian.
|
|
|
|
|
# this means that you don't have to think about endianess when compiling for OSX.
|
|
|
|
|
# Very useful for universal binaries and crosscompilers. Not sure if it works on non OSX targets
|
2005-04-14 12:57:21 +00:00
|
|
|
|
# WINDRES: the location of your windres
|
|
|
|
|
# CC_HOST: the gcc of your localhost if you are making a target that produces incompatible executables
|
|
|
|
|
# CFLAGS_HOST: cflags used for CC_HOST. Make it something if you are getting errors when you try to compi
|
|
|
|
|
# windows executables on linux. (just: CFLAGS_HOST:='-I' or something)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
#
|
|
|
|
|
# Configuration
|
|
|
|
|
#
|
|
|
|
|
|
2005-01-24 21:39:16 +00:00
|
|
|
|
|
2004-09-08 09:07:18 +00:00
|
|
|
|
# Makefile version tag
|
2005-03-11 22:48:37 +00:00
|
|
|
|
# it checks if the version tag in Makefile.config is the same and force update outdated config files
|
2005-11-17 19:43:37 +00:00
|
|
|
|
MAKEFILE_VERSION:=8
|
2004-09-08 09:07:18 +00:00
|
|
|
|
|
2005-01-24 20:55:54 +00:00
|
|
|
|
# CONFIG_WRITER has to be found even for manual configuration
|
2004-08-09 17:04:08 +00:00
|
|
|
|
CONFIG_WRITER=makefiledir/Makefile.config_writer
|
|
|
|
|
|
|
|
|
|
ifndef MANUAL_CONFIG
|
|
|
|
|
# Automatic configuration
|
|
|
|
|
MAKE_CONFIG:=Makefile.config
|
|
|
|
|
MAKEFILE:=Makefile
|
|
|
|
|
LIB_DETECTION=makefiledir/Makefile.libdetection
|
|
|
|
|
CONFIG_WRITER=makefiledir/Makefile.config_writer
|
|
|
|
|
|
|
|
|
|
# Apply automatic configuration
|
|
|
|
|
# See target section for how this is built, suppress errors
|
|
|
|
|
# since first time it isn't found but make reads this twice
|
|
|
|
|
-include $(MAKE_CONFIG)
|
|
|
|
|
else
|
|
|
|
|
CONFIG_INCLUDED:=1
|
|
|
|
|
endif
|
|
|
|
|
|
2005-06-19 17:05:24 +00:00
|
|
|
|
ifndef LIBPNG-CONFIG
|
|
|
|
|
LIBPNG-CONFIG :=libpng-config
|
|
|
|
|
endif
|
|
|
|
|
|
2005-03-11 22:48:37 +00:00
|
|
|
|
# updates Makefile.config if it's outdated
|
2004-09-08 09:07:18 +00:00
|
|
|
|
ifneq ($(MAKEFILE_VERSION),$(CONFIG_VERSION))
|
2004-09-09 19:16:27 +00:00
|
|
|
|
ifndef MANUAL_CONFIG # manual config should not check this
|
|
|
|
|
UPDATECONFIG:=upgradeconf
|
|
|
|
|
CONFIG_INCLUDED:=
|
|
|
|
|
else
|
|
|
|
|
# this should define SDL-CONFIG for manual configuration
|
|
|
|
|
ifeq ($(shell uname),FreeBSD)
|
|
|
|
|
SDL-CONFIG:=sdl11-config
|
|
|
|
|
else
|
|
|
|
|
SDL-CONFIG:=sdl-config
|
|
|
|
|
endif
|
|
|
|
|
endif
|
2005-04-14 13:46:40 +00:00
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifndef SDL-CONFIG
|
|
|
|
|
UPDATECONFIG:=upgradeconf
|
|
|
|
|
CONFIG_INCLUDED:=
|
2004-08-09 17:04:08 +00:00
|
|
|
|
endif
|
|
|
|
|
|
2005-03-11 22:48:37 +00:00
|
|
|
|
# this is used if there aren't any Makefile.config
|
2004-08-09 17:04:08 +00:00
|
|
|
|
ifndef CONFIG_INCLUDED
|
2004-09-18 16:29:12 +00:00
|
|
|
|
# sets network on by default if there aren't any config file
|
2004-12-04 17:54:56 +00:00
|
|
|
|
ENABLE_NETWORK:=1
|
2004-09-18 16:29:12 +00:00
|
|
|
|
|
|
|
|
|
# paths for make install
|
|
|
|
|
# disabled as they would break it for some (many?) people if they were default
|
|
|
|
|
#PREFIX:=/usr/local
|
|
|
|
|
#DATA_DIR:=share/games/openttd
|
|
|
|
|
#BINARY_DIR:=games
|
|
|
|
|
#PERSONAL_DIR:=.openttd
|
|
|
|
|
#USE_HOMEDIR:=1
|
|
|
|
|
|
2004-08-09 17:04:08 +00:00
|
|
|
|
-include $(LIB_DETECTION)
|
|
|
|
|
endif
|
|
|
|
|
|
2004-09-08 09:07:18 +00:00
|
|
|
|
ifdef SUPRESS_LANG_ERRORS
|
|
|
|
|
LANG_ERRORS = >/dev/null 2>&1
|
|
|
|
|
endif
|
|
|
|
|
|
2005-12-06 22:09:28 +00:00
|
|
|
|
ifdef OSX
|
|
|
|
|
-include os/MacOSX/Makefile.setup
|
|
|
|
|
endif
|
|
|
|
|
|
2004-08-09 17:04:08 +00:00
|
|
|
|
ifdef STATIC
|
|
|
|
|
ifndef WIN32
|
|
|
|
|
ifndef OSX
|
|
|
|
|
ifndef MORPHOS
|
|
|
|
|
ifndef SKIP_STATIC_CHECK
|
2005-03-11 22:48:37 +00:00
|
|
|
|
$(error Static is only known to work on MorphOS and MacOSX!!! --- Check Makefile.config for more info and howto bypass this check)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
2005-12-10 11:16:45 +00:00
|
|
|
|
ifdef WITH_COCOA
|
|
|
|
|
ifdef WITH_SDL
|
|
|
|
|
$(error You can not use both the SDL video driver and the Cocoa video driver at the same time)
|
|
|
|
|
endif
|
|
|
|
|
ifdef DEDICATED
|
|
|
|
|
$(error You can not use the Cocoa video driver in a dedicated server)
|
|
|
|
|
endif
|
|
|
|
|
else
|
2004-08-09 17:04:08 +00:00
|
|
|
|
# Force SDL on UNIX platforms
|
|
|
|
|
ifndef WITH_SDL
|
|
|
|
|
ifdef UNIX
|
2004-12-04 20:34:59 +00:00
|
|
|
|
ifndef DEDICATED
|
|
|
|
|
$(error You need to have SDL installed in order to run OpenTTD on UNIX. Use DEDICATED if you want to compile a CLI based server)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
endif
|
|
|
|
|
endif
|
2004-12-04 20:34:59 +00:00
|
|
|
|
endif
|
2005-12-10 11:16:45 +00:00
|
|
|
|
endif
|
2004-12-04 20:34:59 +00:00
|
|
|
|
|
2005-01-15 21:30:16 +00:00
|
|
|
|
# remove the dependancy for sdl if DEDICALTED is used
|
|
|
|
|
ifdef DEDICATED
|
2005-12-21 01:19:03 +00:00
|
|
|
|
WITH_SDL:=
|
2005-08-06 20:34:41 +00:00
|
|
|
|
endif
|
2005-12-21 01:19:03 +00:00
|
|
|
|
|
|
|
|
|
# add -lpthread to LDFLAGS
|
|
|
|
|
ifndef WIN32
|
|
|
|
|
ifndef MORPHOS
|
|
|
|
|
ifndef OSX
|
|
|
|
|
LDFLAGS+=-lpthread
|
|
|
|
|
endif
|
|
|
|
|
endif
|
2005-08-06 20:53:02 +00:00
|
|
|
|
endif
|
2005-12-21 01:19:03 +00:00
|
|
|
|
|
2005-08-06 21:45:48 +00:00
|
|
|
|
ifdef OSX
|
2005-12-21 01:19:03 +00:00
|
|
|
|
LDFLAGS+=-framework Cocoa
|
2005-08-06 21:45:48 +00:00
|
|
|
|
endif
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
#
|
|
|
|
|
# Compiler configuration
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
# Executable file extension
|
|
|
|
|
ifdef WIN32
|
|
|
|
|
EXE=.exe
|
|
|
|
|
else
|
|
|
|
|
EXE=
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# Set output executable names
|
2004-08-12 22:06:56 +00:00
|
|
|
|
TTD=openttd$(EXE)
|
2004-09-04 14:20:12 +00:00
|
|
|
|
ENDIAN_CHECK=endian_check$(EXE)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
STRGEN=strgen/strgen$(EXE)
|
|
|
|
|
OSXAPP="OpenTTD.app"
|
|
|
|
|
|
|
|
|
|
ifdef RELEASE
|
|
|
|
|
REV:=$(RELEASE)
|
|
|
|
|
else
|
2004-11-17 18:22:21 +00:00
|
|
|
|
REV := $(shell if test -d .svn; then svnversion . | awk '{ print "r"$$0 }'; fi)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# MorphOS needs builddate
|
2005-02-04 17:57:07 +00:00
|
|
|
|
BUILDDATE=`date +%d.%m.%y`
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
2005-04-14 12:57:21 +00:00
|
|
|
|
# Check if there is a windres override
|
|
|
|
|
ifndef WINDRES
|
|
|
|
|
WINDRES = windres
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# Check if we have a new target
|
|
|
|
|
ifdef CC_TARGET
|
|
|
|
|
CC = $(CC_TARGET)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# Check if CC_HOST is defined. If not, it is CC
|
|
|
|
|
ifndef CC_HOST
|
|
|
|
|
CC_HOST = $(CC)
|
|
|
|
|
endif
|
|
|
|
|
ifndef CFLAGS_HOST
|
|
|
|
|
CFLAGS_HOST = $(BASECFLAGS)
|
|
|
|
|
endif
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
|
2005-01-19 20:22:10 +00:00
|
|
|
|
CC_VERSION = $(shell $(CC) -dumpversion | cut -c 1,3)
|
2005-01-17 13:21:10 +00:00
|
|
|
|
|
|
|
|
|
# GNU make can only test for (in)equality
|
|
|
|
|
# this is a workaround to test for >=
|
2005-07-30 16:29:23 +00:00
|
|
|
|
ifeq ($(shell expr $(CC_VERSION) \>= 29), 1)
|
2005-12-14 06:16:34 +00:00
|
|
|
|
CFLAGS += -O -Wall -Wno-multichar -Wsign-compare -Wstrict-prototypes -Wundef
|
2005-02-06 18:38:42 +00:00
|
|
|
|
CFLAGS += -Wwrite-strings -Wpointer-arith
|
2005-01-17 13:21:10 +00:00
|
|
|
|
endif
|
2005-07-30 16:29:23 +00:00
|
|
|
|
ifeq ($(shell expr $(CC_VERSION) \>= 30), 1)
|
2005-01-17 13:21:10 +00:00
|
|
|
|
CFLAGS += -W -Wno-unused-parameter
|
|
|
|
|
endif
|
2005-07-30 16:29:23 +00:00
|
|
|
|
ifeq ($(shell expr $(CC_VERSION) \>= 34), 1)
|
2005-01-22 20:23:18 +00:00
|
|
|
|
CFLAGS += -Wdeclaration-after-statement -Wold-style-definition
|
2005-01-17 13:21:10 +00:00
|
|
|
|
endif
|
|
|
|
|
|
2005-01-30 23:03:31 +00:00
|
|
|
|
ifdef DEBUG
|
2005-03-10 15:23:13 +00:00
|
|
|
|
ifeq ($(shell expr $(DEBUG) \>= 1), 1)
|
|
|
|
|
CFLAGS += -g -D_DEBUG
|
|
|
|
|
endif
|
|
|
|
|
ifeq ($(shell expr $(DEBUG) \>= 2), 1)
|
|
|
|
|
CFLAGS += -fno-inline
|
|
|
|
|
endif
|
|
|
|
|
ifeq ($(shell expr $(DEBUG) \>= 3), 1)
|
|
|
|
|
CFLAGS += -O0
|
|
|
|
|
endif
|
2005-01-30 23:03:31 +00:00
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifdef PROFILE
|
|
|
|
|
CFLAGS += -pg
|
|
|
|
|
LDFLAGS += -pg
|
2006-02-17 20:24:17 +00:00
|
|
|
|
ifdef OSX
|
|
|
|
|
# Shark (Xcode's profiling tool) needs -g to relate CPU usage to line numbers in the source code
|
|
|
|
|
BASECFLAGS += -g
|
|
|
|
|
endif
|
2005-01-30 23:03:31 +00:00
|
|
|
|
endif
|
|
|
|
|
|
2004-08-09 17:04:08 +00:00
|
|
|
|
CDEFS=-DWITH_REV
|
|
|
|
|
|
2005-01-30 23:03:31 +00:00
|
|
|
|
ifndef DEBUG
|
|
|
|
|
ifndef PROFILE
|
2004-08-09 17:04:08 +00:00
|
|
|
|
# Release mode
|
|
|
|
|
ifndef MORPHOS
|
2005-05-14 22:42:33 +00:00
|
|
|
|
ifndef IRIX
|
2004-08-09 17:04:08 +00:00
|
|
|
|
# automatical strip breaks under morphos
|
|
|
|
|
BASECFLAGS += -s
|
|
|
|
|
LDFLAGS += -s
|
|
|
|
|
endif
|
|
|
|
|
endif
|
2005-05-14 22:42:33 +00:00
|
|
|
|
endif
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
ifdef OSX
|
|
|
|
|
# these compilerflags makes the app run as fast as possible without making the app unstable. It works on G3 or newer
|
2005-12-04 17:36:19 +00:00
|
|
|
|
BASECFLAGS += -O3 -funroll-loops -fsched-interblock -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 -mdynamic-no-pic
|
2006-02-25 18:11:11 +00:00
|
|
|
|
ifdef IS_G5
|
|
|
|
|
BASECFLAGS += -mtune=970 -mcpu=970 -mpowerpc-gpopt
|
|
|
|
|
endif
|
2004-08-09 17:04:08 +00:00
|
|
|
|
else
|
|
|
|
|
ifdef MORPHOS
|
2005-08-21 10:44:57 +00:00
|
|
|
|
BASECFLAGS += -I/gg/os-include -O2 -noixemul -fstrict-aliasing -fexpensive-optimizations
|
2005-02-04 19:51:43 +00:00
|
|
|
|
BASECFLAGS += -mcpu=604 -fno-inline -mstring -mmultiple
|
2004-08-09 17:04:08 +00:00
|
|
|
|
else
|
2005-01-25 16:03:45 +00:00
|
|
|
|
BASECFLAGS += -O2
|
2004-08-09 17:04:08 +00:00
|
|
|
|
endif
|
|
|
|
|
ifndef PROFILE
|
2005-05-14 22:42:33 +00:00
|
|
|
|
ifndef IRIX
|
2004-08-09 17:04:08 +00:00
|
|
|
|
BASECFLAGS += -fomit-frame-pointer
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
endif
|
2005-05-14 22:42:33 +00:00
|
|
|
|
endif
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
ifdef STATIC
|
|
|
|
|
ifndef OSX # OSX can't build static if -static flag is used
|
|
|
|
|
LDFLAGS += -static
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
2004-12-23 23:15:07 +00:00
|
|
|
|
# If building on MingW don't link with Cygwin libs
|
2004-08-09 17:04:08 +00:00
|
|
|
|
ifdef WIN32
|
|
|
|
|
ifdef CYGWIN
|
2004-12-23 23:15:07 +00:00
|
|
|
|
BASECFLAGS += -mwin32
|
|
|
|
|
LDFLAGS += -mwin32
|
|
|
|
|
endif
|
|
|
|
|
ifdef MINGW
|
2004-08-09 17:04:08 +00:00
|
|
|
|
BASECFLAGS += -mno-cygwin
|
|
|
|
|
LDFLAGS += -mno-cygwin
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
CFLAGS += $(BASECFLAGS)
|
|
|
|
|
|
|
|
|
|
ifdef UNIX
|
|
|
|
|
CDEFS += -DUNIX
|
|
|
|
|
endif
|
|
|
|
|
|
2004-11-15 07:53:09 +00:00
|
|
|
|
ifdef BEOS
|
|
|
|
|
CDEFS += -DBEOS
|
2005-10-06 18:28:27 +00:00
|
|
|
|
LDFLAGS += -lmidi -lbe -lpthread
|
2004-11-15 07:53:09 +00:00
|
|
|
|
ifdef WITH_NETWORK
|
|
|
|
|
ifdef BEOS_NET_SERVER
|
2005-01-17 13:13:11 +00:00
|
|
|
|
CDEFS += -DBEOS_NET_SERVER
|
2005-10-06 18:28:27 +00:00
|
|
|
|
LDFLAGS += -lnet
|
2005-01-17 13:13:11 +00:00
|
|
|
|
else
|
2005-10-06 18:28:27 +00:00
|
|
|
|
# BONE needs a few more libraries than R5
|
2005-01-17 13:13:11 +00:00
|
|
|
|
LDFLAGS += -lbind -lsocket
|
2004-11-15 07:53:09 +00:00
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
2005-01-25 15:38:35 +00:00
|
|
|
|
ifdef MORPHOS
|
2005-02-04 19:51:43 +00:00
|
|
|
|
# -Wstrict-prototypes generates much noise because of system headers
|
|
|
|
|
CFLAGS += -Wno-strict-prototypes
|
2005-01-25 15:38:35 +00:00
|
|
|
|
endif
|
|
|
|
|
|
2004-11-17 09:07:29 +00:00
|
|
|
|
ifdef SUNOS
|
|
|
|
|
CDEFS += -DSUNOS
|
|
|
|
|
ifdef WITH_NETWORK
|
|
|
|
|
LDFLAGS += -lnsl -lsocket
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
2005-10-07 16:48:53 +00:00
|
|
|
|
# tell the source that we are building a dedicated server
|
|
|
|
|
ifdef DEDICATED
|
|
|
|
|
CDEFS += -DDEDICATED
|
|
|
|
|
endif
|
|
|
|
|
|
2004-08-09 17:04:08 +00:00
|
|
|
|
# SDL config
|
|
|
|
|
ifdef WITH_SDL
|
|
|
|
|
CDEFS += -DWITH_SDL
|
2005-02-01 05:28:18 +00:00
|
|
|
|
CFLAGS += $(shell $(SDL-CONFIG) --cflags)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
ifdef STATIC
|
2005-02-01 05:28:18 +00:00
|
|
|
|
LIBS += $(shell $(SDL-CONFIG) --static-libs)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
else
|
2005-02-01 05:28:18 +00:00
|
|
|
|
LIBS += $(shell $(SDL-CONFIG) --libs)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# zlib config
|
|
|
|
|
ifdef WITH_ZLIB
|
|
|
|
|
CDEFS += -DWITH_ZLIB
|
|
|
|
|
ifdef STATIC
|
|
|
|
|
ifdef OSX
|
|
|
|
|
# zlib is default on OSX, so everybody have it. No need for static linking
|
|
|
|
|
LIBS += -lz
|
|
|
|
|
else
|
|
|
|
|
ifndef STATIC_ZLIB_PATH
|
|
|
|
|
ifndef MANUAL_CONFIG
|
2005-03-11 22:48:37 +00:00
|
|
|
|
# updates Makefile.config with the zlib path
|
2004-08-09 17:04:08 +00:00
|
|
|
|
UPDATECONFIG:=upgradeconf
|
|
|
|
|
endif
|
|
|
|
|
TEMP:=$(shell ls /lib 2>/dev/null | grep "zlib.a")$(shell ls /lib 2>/dev/null | grep "libz.a")
|
|
|
|
|
ifdef TEMP
|
|
|
|
|
STATIC_ZLIB_PATH:=/lib/$(TEMP)
|
|
|
|
|
else
|
|
|
|
|
TEMP:=$(shell ls /usr/lib 2>/dev/null | grep "zlib.a")$(shell ls /usr/lib 2>/dev/null | grep "libz.a")
|
|
|
|
|
ifdef TEMP
|
|
|
|
|
STATIC_ZLIB_PATH:=/usr/lib/$(TEMP)
|
|
|
|
|
else
|
|
|
|
|
TEMP:=$(shell ls /usr/local/lib 2>/dev/null | grep "zlib.a")$(shell ls /usr/local/lib 2>/dev/null | grep "libz.a")
|
|
|
|
|
ifdef TEMP
|
|
|
|
|
STATIC_ZLIB_PATH:=/usr/local/lib/$(TEMP)
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
LIBS += $(STATIC_ZLIB_PATH)
|
|
|
|
|
endif
|
|
|
|
|
else
|
|
|
|
|
LIBS += -lz
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# libpng config
|
|
|
|
|
ifdef WITH_PNG
|
|
|
|
|
CDEFS += -DWITH_PNG
|
2005-08-08 15:10:37 +00:00
|
|
|
|
CFLAGS += $(shell $(LIBPNG-CONFIG) --cppflags --I_opts)
|
2004-12-04 23:19:31 +00:00
|
|
|
|
|
2004-08-09 17:04:08 +00:00
|
|
|
|
# seems like older libpng versions are broken and need this
|
|
|
|
|
PNGCONFIG_FLAGS = --ldflags --libs
|
|
|
|
|
ifdef STATIC
|
2004-12-10 13:00:11 +00:00
|
|
|
|
ifdef OSX
|
|
|
|
|
# Seems like we need a tiny hack for OSX static to work
|
2005-06-19 17:05:24 +00:00
|
|
|
|
LIBS += $(shell $(LIBPNG-CONFIG) --prefix)/lib/libpng.a
|
2004-12-10 13:00:11 +00:00
|
|
|
|
else
|
2005-06-19 17:05:24 +00:00
|
|
|
|
LIBS += $(shell $(LIBPNG-CONFIG) --static $(PNGCONFIG_FLAGS))
|
2004-12-10 13:00:11 +00:00
|
|
|
|
endif
|
2004-08-09 17:04:08 +00:00
|
|
|
|
else
|
2005-06-19 17:05:24 +00:00
|
|
|
|
LIBS += $(shell $(LIBPNG-CONFIG) --L_opts $(PNGCONFIG_FLAGS))
|
2004-08-09 17:04:08 +00:00
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
2004-11-08 21:11:52 +00:00
|
|
|
|
# enables/disables assert()
|
2004-11-08 21:24:48 +00:00
|
|
|
|
ifdef DISABLE_ASSERTS
|
|
|
|
|
CFLAGS += -DNDEBUG
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# automatically disables asserts for release
|
|
|
|
|
ifdef RELEASE
|
2004-11-08 21:11:52 +00:00
|
|
|
|
ifndef ENABLE_ASSERTS
|
|
|
|
|
CFLAGS += -DNDEBUG
|
|
|
|
|
endif
|
2004-11-08 21:24:48 +00:00
|
|
|
|
endif
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
ifdef TRANSLATOR
|
|
|
|
|
STRGEN_FLAGS=-t
|
|
|
|
|
else
|
|
|
|
|
STRGEN_FLAGS=
|
|
|
|
|
endif
|
|
|
|
|
|
2005-10-25 19:41:32 +00:00
|
|
|
|
# OSX specific setup
|
2004-08-09 17:04:08 +00:00
|
|
|
|
ifdef OSX
|
2005-12-06 14:35:10 +00:00
|
|
|
|
# set the endian flag for OSX, that can't fail
|
|
|
|
|
ENDIAN_FORCE:=PREPROCESSOR
|
|
|
|
|
|
2005-10-25 19:41:32 +00:00
|
|
|
|
ifndef DEDICATED
|
|
|
|
|
LIBS += -framework QuickTime
|
|
|
|
|
endif
|
|
|
|
|
|
2005-12-10 11:16:45 +00:00
|
|
|
|
ifdef WITH_COCOA
|
|
|
|
|
CDEFS += -DWITH_COCOA
|
|
|
|
|
LIBS += -F/System/Library/Frameworks -framework Cocoa -framework Carbon -framework AudioUnit
|
|
|
|
|
endif
|
|
|
|
|
|
2005-10-25 19:41:32 +00:00
|
|
|
|
# OSX path setup
|
|
|
|
|
ifndef SECOND_DATA_PATH
|
|
|
|
|
SECOND_DATA_PATH:="$(OSXAPP)/Contents/Data/"
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifndef CUSTOM_LANG_DIR
|
|
|
|
|
ifndef DEDICATED
|
|
|
|
|
CUSTOM_LANG_DIR:="$(OSXAPP)/Contents/Lang/"
|
|
|
|
|
endif
|
|
|
|
|
endif
|
2005-10-07 16:48:53 +00:00
|
|
|
|
endif
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
ifdef MIDI
|
|
|
|
|
CDEFS += -DEXTERNAL_PLAYER=\"$(MIDI)\"
|
|
|
|
|
ifdef MIDI_ARG
|
|
|
|
|
CDEFS += -DMIDI_ARG=\"$(MIDI_ARG)\"
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifdef WITH_NETWORK
|
|
|
|
|
CDEFS += -DENABLE_NETWORK
|
2004-12-04 17:54:56 +00:00
|
|
|
|
ifdef QNX
|
|
|
|
|
LIBS += -lsocket
|
|
|
|
|
endif
|
2004-08-09 17:04:08 +00:00
|
|
|
|
endif
|
|
|
|
|
|
2004-12-07 17:16:57 +00:00
|
|
|
|
|
|
|
|
|
ifdef SECOND_DATA_PATH
|
|
|
|
|
CDEFS += -DSECOND_DATA_DIR=\"$(SECOND_DATA_PATH)/\"
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifdef CUSTOM_LANG_DIR
|
|
|
|
|
CDEFS += -DCUSTOM_LANG_DIR=\"$(CUSTOM_LANG_DIR)/\"
|
|
|
|
|
endif
|
|
|
|
|
|
2004-08-09 17:04:08 +00:00
|
|
|
|
ifdef WITH_DIRECTMUSIC
|
|
|
|
|
CDEFS += -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifdef WIN32
|
2005-04-14 12:57:21 +00:00
|
|
|
|
LIBS += -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32
|
|
|
|
|
ifdef WITH_DIRECTMUSIC
|
|
|
|
|
LIBS += -lstdc++
|
|
|
|
|
endif
|
2004-08-09 17:04:08 +00:00
|
|
|
|
TTDLDFLAGS += -Wl,--subsystem,windows
|
|
|
|
|
endif
|
|
|
|
|
|
2005-03-09 23:59:18 +00:00
|
|
|
|
ifndef DEST_DIR
|
|
|
|
|
DEST_DIR = $(DESTDIR)
|
|
|
|
|
endif
|
|
|
|
|
|
2004-08-09 17:04:08 +00:00
|
|
|
|
# sets up the paths for use for make install
|
2004-09-18 16:29:12 +00:00
|
|
|
|
ifdef INSTALL
|
|
|
|
|
# We use _PREFIXED vars here, so the paths are recalculated every time, and
|
|
|
|
|
# the prefix is not prepended in the makefile config
|
|
|
|
|
BINARY_DIR_PREFIXED:=$(PREFIX)/$(BINARY_DIR)
|
|
|
|
|
DATA_DIR_PREFIXED:=$(PREFIX)/$(DATA_DIR)
|
2006-01-28 10:16:15 +00:00
|
|
|
|
ICON_DIR_PREFIXED:=$(PREFIX)/$(ICON_DIR)
|
2004-09-18 16:29:12 +00:00
|
|
|
|
# We use _INSTALL vars here, these vars are the locations where the files will
|
|
|
|
|
# be installed
|
|
|
|
|
DATA_DIR_INSTALL=$(DEST_DIR)/$(DATA_DIR_PREFIXED)
|
|
|
|
|
BINARY_DIR_INSTALL=$(DEST_DIR)/$(BINARY_DIR_PREFIXED)
|
2006-01-28 10:16:15 +00:00
|
|
|
|
ICON_DIR_INSTALL=$(DEST_DIR)/$(ICON_DIR_PREFIXED)
|
2004-09-18 16:29:12 +00:00
|
|
|
|
# Let the code know where to find stuff
|
|
|
|
|
ifdef DATA_DIR_PREFIXED
|
|
|
|
|
CDEFS += -DGAME_DATA_DIR=\"$(DATA_DIR_PREFIXED)/\"
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifdef PERSONAL_DIR
|
|
|
|
|
CDEFS += -DPERSONAL_DIR=\"$(PERSONAL_DIR)/\"
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifdef USE_HOMEDIR
|
|
|
|
|
CDEFS += -DUSE_HOMEDIR
|
2004-08-09 17:04:08 +00:00
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
#
|
|
|
|
|
# What to compile
|
|
|
|
|
# (users do not want to modify anything below)
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Sources
|
|
|
|
|
|
2005-12-04 17:36:19 +00:00
|
|
|
|
# clean up C_SOURCES first. Needed since building universal binaries on OSX calls the makefile recursively (just one time)
|
2005-12-10 07:29:31 +00:00
|
|
|
|
SRCS :=
|
|
|
|
|
|
|
|
|
|
SRCS += aircraft_cmd.c
|
|
|
|
|
SRCS += aircraft_gui.c
|
|
|
|
|
SRCS += airport.c
|
|
|
|
|
SRCS += airport_gui.c
|
|
|
|
|
SRCS += aystar.c
|
|
|
|
|
SRCS += bridge_gui.c
|
|
|
|
|
SRCS += callback_table.c
|
|
|
|
|
SRCS += clear_cmd.c
|
|
|
|
|
SRCS += command.c
|
|
|
|
|
SRCS += console.c
|
|
|
|
|
SRCS += console_cmds.c
|
|
|
|
|
SRCS += currency.c
|
|
|
|
|
SRCS += debug.c
|
|
|
|
|
SRCS += dedicated.c
|
|
|
|
|
SRCS += depot.c
|
|
|
|
|
SRCS += disaster_cmd.c
|
|
|
|
|
SRCS += dock_gui.c
|
|
|
|
|
SRCS += driver.c
|
|
|
|
|
SRCS += dummy_land.c
|
|
|
|
|
SRCS += economy.c
|
|
|
|
|
SRCS += engine.c
|
|
|
|
|
SRCS += engine_gui.c
|
|
|
|
|
SRCS += fileio.c
|
|
|
|
|
SRCS += gfx.c
|
|
|
|
|
SRCS += gfxinit.c
|
|
|
|
|
SRCS += graph_gui.c
|
|
|
|
|
SRCS += industry_cmd.c
|
|
|
|
|
SRCS += industry_gui.c
|
|
|
|
|
SRCS += intro_gui.c
|
|
|
|
|
SRCS += landscape.c
|
|
|
|
|
SRCS += main_gui.c
|
|
|
|
|
SRCS += map.c
|
|
|
|
|
SRCS += md5.c
|
|
|
|
|
SRCS += mersenne.c
|
|
|
|
|
SRCS += minilzo.c
|
|
|
|
|
SRCS += misc.c
|
|
|
|
|
SRCS += misc_cmd.c
|
|
|
|
|
SRCS += misc_gui.c
|
|
|
|
|
SRCS += mixer.c
|
|
|
|
|
SRCS += music_gui.c
|
|
|
|
|
SRCS += namegen.c
|
|
|
|
|
SRCS += network.c
|
|
|
|
|
SRCS += network_client.c
|
|
|
|
|
SRCS += network_data.c
|
|
|
|
|
SRCS += network_gamelist.c
|
|
|
|
|
SRCS += network_gui.c
|
|
|
|
|
SRCS += network_server.c
|
|
|
|
|
SRCS += network_udp.c
|
|
|
|
|
SRCS += newgrf.c
|
2006-02-03 12:55:21 +00:00
|
|
|
|
SRCS += newgrf_engine.c
|
2006-02-03 15:51:00 +00:00
|
|
|
|
SRCS += newgrf_station.c
|
2005-12-10 07:29:31 +00:00
|
|
|
|
SRCS += news_gui.c
|
|
|
|
|
SRCS += npf.c
|
|
|
|
|
SRCS += oldloader.c
|
|
|
|
|
SRCS += openttd.c
|
|
|
|
|
SRCS += order_cmd.c
|
|
|
|
|
SRCS += order_gui.c
|
|
|
|
|
SRCS += pathfind.c
|
|
|
|
|
SRCS += player_gui.c
|
|
|
|
|
SRCS += players.c
|
|
|
|
|
SRCS += pool.c
|
|
|
|
|
SRCS += queue.c
|
|
|
|
|
SRCS += rail.c
|
|
|
|
|
SRCS += rail_cmd.c
|
|
|
|
|
SRCS += rail_gui.c
|
|
|
|
|
SRCS += rev.c
|
|
|
|
|
SRCS += road_cmd.c
|
|
|
|
|
SRCS += road_gui.c
|
|
|
|
|
SRCS += roadveh_cmd.c
|
|
|
|
|
SRCS += roadveh_gui.c
|
|
|
|
|
SRCS += saveload.c
|
|
|
|
|
SRCS += screenshot.c
|
|
|
|
|
SRCS += settings.c
|
|
|
|
|
SRCS += settings_gui.c
|
|
|
|
|
SRCS += ship_cmd.c
|
|
|
|
|
SRCS += ship_gui.c
|
|
|
|
|
SRCS += signs.c
|
|
|
|
|
SRCS += smallmap_gui.c
|
|
|
|
|
SRCS += sound.c
|
|
|
|
|
SRCS += sprite.c
|
|
|
|
|
SRCS += spritecache.c
|
|
|
|
|
SRCS += station_cmd.c
|
|
|
|
|
SRCS += station_gui.c
|
|
|
|
|
SRCS += string.c
|
|
|
|
|
SRCS += strings.c
|
|
|
|
|
SRCS += subsidy_gui.c
|
|
|
|
|
SRCS += terraform_gui.c
|
|
|
|
|
SRCS += texteff.c
|
|
|
|
|
SRCS += thread.c
|
|
|
|
|
SRCS += tile.c
|
|
|
|
|
SRCS += town_cmd.c
|
|
|
|
|
SRCS += town_gui.c
|
|
|
|
|
SRCS += train_cmd.c
|
|
|
|
|
SRCS += train_gui.c
|
|
|
|
|
SRCS += tree_cmd.c
|
|
|
|
|
SRCS += tunnelbridge_cmd.c
|
|
|
|
|
SRCS += unmovable_cmd.c
|
|
|
|
|
SRCS += vehicle.c
|
|
|
|
|
SRCS += vehicle_gui.c
|
|
|
|
|
SRCS += viewport.c
|
|
|
|
|
SRCS += water_cmd.c
|
|
|
|
|
SRCS += waypoint.c
|
|
|
|
|
SRCS += widget.c
|
|
|
|
|
SRCS += window.c
|
|
|
|
|
SRCS += music/null_m.c
|
|
|
|
|
SRCS += sound/null_s.c
|
|
|
|
|
SRCS += video/dedicated_v.c
|
|
|
|
|
SRCS += video/null_v.c
|
2004-12-15 22:05:40 +00:00
|
|
|
|
|
2005-09-07 15:10:11 +00:00
|
|
|
|
# AI related files
|
2005-12-10 07:29:31 +00:00
|
|
|
|
SRCS += ai/ai.c
|
|
|
|
|
SRCS += ai/default/default.c
|
|
|
|
|
SRCS += ai/trolly/build.c
|
|
|
|
|
SRCS += ai/trolly/pathfinder.c
|
|
|
|
|
SRCS += ai/trolly/shared.c
|
|
|
|
|
SRCS += ai/trolly/trolly.c
|
2005-07-24 20:47:42 +00:00
|
|
|
|
|
2005-05-16 16:19:32 +00:00
|
|
|
|
ifdef WITH_SDL
|
2005-12-10 07:29:31 +00:00
|
|
|
|
SRCS += sdl.c
|
|
|
|
|
SRCS += sound/sdl_s.c
|
|
|
|
|
SRCS += video/sdl_v.c
|
2005-05-16 16:19:32 +00:00
|
|
|
|
endif
|
|
|
|
|
|
2004-08-09 17:04:08 +00:00
|
|
|
|
ifdef WIN32
|
2005-12-10 07:29:31 +00:00
|
|
|
|
SRCS += win32.c
|
|
|
|
|
SRCS += music/win32_m.c
|
|
|
|
|
SRCS += sound/win32_s.c
|
|
|
|
|
SRCS += video/win32_v.c
|
2004-08-09 17:04:08 +00:00
|
|
|
|
else
|
2005-12-10 07:29:31 +00:00
|
|
|
|
SRCS += unix.c
|
|
|
|
|
SRCS += music/extmidi.c
|
2004-08-09 17:04:08 +00:00
|
|
|
|
endif
|
|
|
|
|
|
2005-07-24 20:47:42 +00:00
|
|
|
|
ifdef OSX
|
2005-12-10 11:16:45 +00:00
|
|
|
|
SRCS += os/macosx/macos.m
|
|
|
|
|
ifndef DEDICATED
|
|
|
|
|
SRCS += music/qtmidi.c
|
|
|
|
|
endif
|
|
|
|
|
ifdef WITH_COCOA
|
|
|
|
|
SRCS += video/cocoa_v.m
|
|
|
|
|
SRCS += sound/cocoa_s.c
|
|
|
|
|
SRCS += os/macosx/splash.c
|
|
|
|
|
endif
|
2005-10-07 16:48:53 +00:00
|
|
|
|
endif
|
2005-07-24 20:47:42 +00:00
|
|
|
|
|
2004-11-15 07:53:09 +00:00
|
|
|
|
ifdef BEOS
|
2005-12-10 07:29:31 +00:00
|
|
|
|
SRCS += music/bemidi.cpp
|
2004-11-15 07:53:09 +00:00
|
|
|
|
endif
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
ifdef WIN32
|
2005-12-11 07:36:49 +00:00
|
|
|
|
SRCS += ottdres.rc
|
2004-08-09 17:04:08 +00:00
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifdef WITH_DIRECTMUSIC
|
2005-12-10 07:29:31 +00:00
|
|
|
|
SRCS += music/dmusic.cpp
|
2004-08-09 17:04:08 +00:00
|
|
|
|
endif
|
|
|
|
|
|
2005-12-10 07:29:31 +00:00
|
|
|
|
OBJS += $(filter %.o, $(SRCS:%.cpp=%.o) $(SRCS:%.m=%.o) $(SRCS:%.c=%.o) $(SRCS:%.rc=%.o))
|
2005-01-25 16:10:06 +00:00
|
|
|
|
DEPS = $(OBJS:%.o=.deps/%.d)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
LANG_TXT = $(filter-out %.unfinished.txt,$(wildcard lang/*.txt))
|
|
|
|
|
LANGS = $(LANG_TXT:%.txt=%.lng)
|
|
|
|
|
|
2004-09-06 16:45:53 +00:00
|
|
|
|
|
2005-03-01 01:14:27 +00:00
|
|
|
|
##############################################################################
|
|
|
|
|
#
|
|
|
|
|
# Build commands
|
|
|
|
|
#
|
|
|
|
|
|
2005-08-27 13:06:59 +00:00
|
|
|
|
# If we are verbose, we will show commands prefixed by $(Q).
|
|
|
|
|
# The $(Q)s get replaced by @ in non-verbose mode.
|
2005-03-01 01:14:27 +00:00
|
|
|
|
# Inspired by the Linux kernel build system.
|
|
|
|
|
ifdef VERBOSE
|
|
|
|
|
Q =
|
|
|
|
|
else
|
|
|
|
|
Q = @
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
2004-08-09 17:04:08 +00:00
|
|
|
|
##############################################################################
|
|
|
|
|
#
|
|
|
|
|
# Targets
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Normal build rules
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ifdef OSX
|
2005-12-04 17:36:19 +00:00
|
|
|
|
# needs to be before all
|
2004-08-09 17:04:08 +00:00
|
|
|
|
OSX:=OSX
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
2005-10-31 18:29:21 +00:00
|
|
|
|
all: endian_target.h endian_host.h $(UPDATECONFIG) $(LANGS) $(TTD) $(OSX)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
2005-12-04 22:43:40 +00:00
|
|
|
|
ifdef OSX
|
|
|
|
|
-include os/macosx/Makefile
|
|
|
|
|
endif
|
|
|
|
|
|
2005-04-24 15:41:01 +00:00
|
|
|
|
endian_host.h: $(ENDIAN_CHECK)
|
|
|
|
|
@echo '===> Testing endianness for host'
|
|
|
|
|
$(Q)./$(ENDIAN_CHECK) > $@
|
|
|
|
|
|
|
|
|
|
endian_target.h: $(ENDIAN_CHECK)
|
|
|
|
|
@echo '===> Testing endianness for target'
|
2005-04-14 12:57:21 +00:00
|
|
|
|
$(Q)./$(ENDIAN_CHECK) $(ENDIAN_FORCE) > $@
|
2004-09-04 14:20:12 +00:00
|
|
|
|
|
|
|
|
|
$(ENDIAN_CHECK): endian_check.c
|
2005-08-08 15:10:37 +00:00
|
|
|
|
@echo '===> Compiling and Linking $@'
|
|
|
|
|
$(Q)$(CC_HOST) $(CFLAGS_HOST) $(CDEFS) $< -o $@
|
2004-09-12 21:49:38 +00:00
|
|
|
|
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
2005-08-08 15:10:37 +00:00
|
|
|
|
$(TTD): $(OBJS) $(MAKE_CONFIG)
|
|
|
|
|
@echo '===> Linking $@'
|
|
|
|
|
$(Q)$(CC) $(LDFLAGS) $(TTDLDFLAGS) $(OBJS) $(LIBS) -o $@
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
2005-04-24 15:41:01 +00:00
|
|
|
|
$(STRGEN): strgen/strgen.c endian_host.h
|
2005-08-08 15:10:37 +00:00
|
|
|
|
@echo '===> Compiling and Linking $@'
|
|
|
|
|
$(Q)$(CC_HOST) $(CFLAGS_HOST) $(CDEFS) $< -o $@
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
2004-11-21 11:34:07 +00:00
|
|
|
|
table/strings.h: lang/english.txt $(STRGEN)
|
2005-01-23 17:35:01 +00:00
|
|
|
|
@echo '===> Generating $@'
|
2005-03-01 01:14:27 +00:00
|
|
|
|
$(Q)$(STRGEN)
|
2004-09-12 21:49:38 +00:00
|
|
|
|
|
2004-11-21 12:21:23 +00:00
|
|
|
|
lang/%.lng: lang/%.txt $(STRGEN) lang/english.txt
|
2005-01-23 17:35:01 +00:00
|
|
|
|
@echo '===> Compiling language $(*F)'
|
2005-07-17 18:09:23 +00:00
|
|
|
|
$(Q)$(STRGEN) $(STRGEN_FLAGS) $< $(LANG_ERRORS) || rm -f $@
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
2004-12-22 21:12:36 +00:00
|
|
|
|
ifdef MORPHOS
|
|
|
|
|
release: all
|
2005-03-01 01:14:27 +00:00
|
|
|
|
$(Q)rm -fr "/t/openttd-$(RELEASE)-morphos.lha"
|
|
|
|
|
$(Q)mkdir -p "/t/"
|
|
|
|
|
$(Q)mkdir -p "/t/openttd-$(RELEASE)-morphos"
|
|
|
|
|
$(Q)mkdir -p "/t/openttd-$(RELEASE)-morphos/docs"
|
|
|
|
|
$(Q)mkdir -p "/t/openttd-$(RELEASE)-morphos/data"
|
|
|
|
|
$(Q)mkdir -p "/t/openttd-$(RELEASE)-morphos/lang"
|
|
|
|
|
$(Q)mkdir -p "/t/openttd-$(RELEASE)-morphos/scenario"
|
|
|
|
|
$(Q)cp -R $(TTD) "/t/openttd-$(RELEASE)-morphos/"
|
|
|
|
|
$(Q)cp data/* "/t/openttd-$(RELEASE)-morphos/data/"
|
|
|
|
|
$(Q)cp lang/*.lng "/t/openttd-$(RELEASE)-morphos/lang/"
|
|
|
|
|
$(Q)cp scenario/* "/t/openttd-$(RELEASE)-morphos/scenario/"
|
|
|
|
|
$(Q)cp readme.txt "/t/openttd-$(RELEASE)-morphos/docs/ReadMe"
|
|
|
|
|
$(Q)cp docs/console.txt "/t/openttd-$(RELEASE)-morphos/docs/Console"
|
|
|
|
|
$(Q)cp COPYING "/t/openttd-$(RELEASE)-morphos/docs/"
|
|
|
|
|
$(Q)cp changelog.txt "/t/openttd-$(RELEASE)-morphos/docs/ChangeLog"
|
|
|
|
|
$(Q)cp known-bugs.txt "/t/openttd-$(RELEASE)-morphos/docs/known-bugs.txt"
|
|
|
|
|
$(Q)cp os/morphos/icons/openttd.info "/t/openttd-$(RELEASE)-morphos/$(TTD).info"
|
|
|
|
|
$(Q)cp os/morphos/icons/docs.info "/t/openttd-$(RELEASE)-morphos/docs.info"
|
|
|
|
|
$(Q)cp os/morphos/icons/drawer.info "/t/openttd-$(RELEASE)-morphos.info"
|
|
|
|
|
$(Q)cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/ReadMe.info"
|
|
|
|
|
$(Q)cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/Console.info"
|
|
|
|
|
$(Q)cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/COPYING.info"
|
|
|
|
|
$(Q)cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/ChangeLog.info"
|
|
|
|
|
$(Q)strip --strip-all --strip-unneeded --remove-section .comment "/t/openttd-$(RELEASE)-morphos/$(TTD)"
|
|
|
|
|
$(Q)lha a -r "t:openttd-$(RELEASE)-morphos.lha" "t:openttd-$(RELEASE)-morphos"
|
|
|
|
|
$(Q)lha a "t:openttd-$(RELEASE)-morphos.lha" "t:openttd-$(RELEASE)-morphos.info"
|
|
|
|
|
$(Q)rm -fr "/t/openttd-$(RELEASE)-morphos"
|
|
|
|
|
$(Q)rm -fr "/t/openttd-$(RELEASE)-morphos.info"
|
2004-12-22 21:12:36 +00:00
|
|
|
|
@echo "Release archive can be found in RAM:t/ now."
|
|
|
|
|
|
2005-01-31 19:22:44 +00:00
|
|
|
|
.PHONY: release
|
2004-12-22 21:12:36 +00:00
|
|
|
|
endif
|
|
|
|
|
|
2004-08-09 17:04:08 +00:00
|
|
|
|
rev.c: FORCE
|
|
|
|
|
@# setting the revision number in a place, there the binary can read it
|
2004-12-12 21:18:39 +00:00
|
|
|
|
@echo 'const char _openttd_revision[] = "$(REV)";' >>rev.c.new
|
2004-08-09 17:04:08 +00:00
|
|
|
|
@# some additions for MorphOS versions tag
|
|
|
|
|
@echo '#ifdef __MORPHOS__' >>rev.c.new
|
2005-09-01 21:19:07 +00:00
|
|
|
|
@echo 'const char morphos_versions_tag[] = "\\0$$VER: OpenTTD $(REV) ('${BUILDDATE}') <20> OpenTTD Team [MorphOS, PowerPC]";' >>rev.c.new
|
2004-08-09 17:04:08 +00:00
|
|
|
|
@echo '#endif' >>rev.c.new
|
|
|
|
|
@# Only update the real rev.c if it actually changed, to prevent
|
|
|
|
|
@# useless rebuilds.
|
|
|
|
|
@cmp -s rev.c rev.c.new 2>/dev/null || mv rev.c.new rev.c
|
|
|
|
|
@rm -f rev.c.new
|
|
|
|
|
|
|
|
|
|
FORCE:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
clean:
|
2005-01-23 17:35:01 +00:00
|
|
|
|
@echo '===> Cleaning up'
|
2005-04-24 15:41:01 +00:00
|
|
|
|
# endian.h is out-dated and no longer in use, so it can be removed soon
|
|
|
|
|
$(Q)rm -rf .deps *~ $(TTD) $(STRGEN) core table/strings.h $(LANGS) $(OBJS) $(OSX_MIDI_PLAYER_FILE) endian.h endian_host.h endian_target.h $(ENDIAN_CHECK)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
mrproper: clean
|
2005-03-01 01:14:27 +00:00
|
|
|
|
$(Q)rm -rf $(MAKE_CONFIG)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
ifndef OSX
|
|
|
|
|
ifndef MORPHOS
|
|
|
|
|
install:
|
2004-09-18 16:29:12 +00:00
|
|
|
|
ifeq ($(INSTALL),)
|
|
|
|
|
$(error make install is highly experimental at his state and not\
|
2005-03-11 22:48:37 +00:00
|
|
|
|
tested very much - use at your own risk - to use run \"make install INSTALL:=1\" - make sure Makefile.config\
|
2004-08-09 17:04:08 +00:00
|
|
|
|
is set correctly up - run \"make upgradeconf\")
|
2004-09-18 16:29:12 +00:00
|
|
|
|
endif
|
|
|
|
|
|
2004-12-04 17:54:56 +00:00
|
|
|
|
ifeq ($(PREFIX), )
|
2005-03-11 22:48:37 +00:00
|
|
|
|
$(error no prefix set - check Makefile.config)
|
2004-09-18 16:29:12 +00:00
|
|
|
|
endif
|
|
|
|
|
# We compare against the non prefixed version here, so we won't install
|
|
|
|
|
# if only the prefix has been set
|
|
|
|
|
ifeq ($(DATA_DIR),)
|
2005-03-11 22:48:37 +00:00
|
|
|
|
$(error no data path set - check Makefile.config)
|
2004-09-18 16:29:12 +00:00
|
|
|
|
endif
|
|
|
|
|
ifeq ($(BINARY_DIR),)
|
2005-03-11 22:48:37 +00:00
|
|
|
|
$(error no binary path set - check Makefile.config)
|
2004-09-18 16:29:12 +00:00
|
|
|
|
endif
|
|
|
|
|
# We'll install in $DEST_DIR instead of root if it is set (we don't
|
|
|
|
|
# care about extra /'s
|
2005-03-11 22:47:33 +00:00
|
|
|
|
install -d $(DATA_DIR_INSTALL)/lang \
|
|
|
|
|
$(DATA_DIR_INSTALL)/data \
|
|
|
|
|
$(DATA_DIR_INSTALL)/gm \
|
2006-02-01 01:36:18 +00:00
|
|
|
|
$(ICON_DIR_INSTALL) \
|
2005-03-11 22:47:33 +00:00
|
|
|
|
$(BINARY_DIR_INSTALL)
|
2005-05-28 10:32:09 +00:00
|
|
|
|
ifndef USE_HOMEDIR
|
|
|
|
|
mkdir -p $(PERSONAL_DIR)/scenario
|
|
|
|
|
else
|
|
|
|
|
mkdir -p $(DATA_DIR_INSTALL)/scenario
|
|
|
|
|
endif
|
2005-03-11 22:47:33 +00:00
|
|
|
|
install $(TTD) $(BINARY_DIR_INSTALL)
|
|
|
|
|
install -m 644 lang/*.lng $(DATA_DIR_INSTALL)/lang
|
|
|
|
|
install -m 644 data/*.grf $(DATA_DIR_INSTALL)/data
|
|
|
|
|
install -m 644 data/opntitle.dat $(DATA_DIR_INSTALL)/data
|
2006-01-28 10:16:15 +00:00
|
|
|
|
install -m 644 media/openttd.64.png $(ICON_DIR_INSTALL)
|
|
|
|
|
install -m 644 media/openttd.32.xpm $(ICON_DIR_INSTALL)
|
2005-05-28 10:32:09 +00:00
|
|
|
|
ifndef USE_HOMEDIR
|
2005-01-25 00:07:50 +00:00
|
|
|
|
cp scenario/* $(PERSONAL_DIR)/scenario/
|
2005-05-28 10:32:09 +00:00
|
|
|
|
else
|
|
|
|
|
cp scenario/* $(DATA_DIR_INSTALL)/scenario/
|
|
|
|
|
endif
|
2004-08-09 17:04:08 +00:00
|
|
|
|
else #MorphOS
|
|
|
|
|
install:
|
|
|
|
|
$(error make install is not supported on MorphOS)
|
|
|
|
|
endif
|
|
|
|
|
else # OSX
|
|
|
|
|
install:
|
|
|
|
|
$(error make install is not supported on MacOSX)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
love:
|
|
|
|
|
@echo "YES! I thought you would never ask. We will have a great time. You can keep me turned on all night"
|
|
|
|
|
|
2005-10-31 18:29:21 +00:00
|
|
|
|
.PHONY: clean all $(OSX) install love
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Automatic configuration
|
|
|
|
|
-include $(CONFIG_WRITER)
|
2004-09-12 21:49:38 +00:00
|
|
|
|
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
# Export all variables set to subprocesses (a bit dirty)
|
|
|
|
|
.EXPORT_ALL_VARIABLES:
|
|
|
|
|
upgradeconf: $(MAKE_CONFIG)
|
2005-03-01 01:14:27 +00:00
|
|
|
|
$(Q)rm $(MAKE_CONFIG)
|
|
|
|
|
$(Q)$(MAKE) $(MAKE_CONFIG)
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
.PHONY: upgradeconf
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Internal build rules
|
|
|
|
|
|
|
|
|
|
# This makes sure the .deps dir is always around.
|
2005-12-25 09:19:16 +00:00
|
|
|
|
DEPS_MAGIC := $(shell mkdir -p $(sort $(dir $(DEPS))))
|
|
|
|
|
|
|
|
|
|
depend:
|
|
|
|
|
@true # The include handles this automagically
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
|
|
|
|
# Introduce the dependencies
|
2006-02-07 19:34:22 +00:00
|
|
|
|
ifeq ($(findstring $(MAKECMDGOALS), clean info depend mrproper),)
|
2005-01-25 15:46:32 +00:00
|
|
|
|
-include $(DEPS)
|
2005-08-08 15:10:37 +00:00
|
|
|
|
endif
|
|
|
|
|
|
2005-12-25 09:19:16 +00:00
|
|
|
|
# Silence stale header dependency errors
|
|
|
|
|
%.h:
|
|
|
|
|
@true
|
2005-08-08 15:10:37 +00:00
|
|
|
|
|
2005-08-11 13:04:50 +00:00
|
|
|
|
.deps/%.d: %.c $(MAKE_CONFIG) table/strings.h endian_target.h
|
2005-12-25 09:19:16 +00:00
|
|
|
|
@echo '===> DEP $<'
|
2005-12-27 22:55:24 +00:00
|
|
|
|
$(Q)$(CC) $(CFLAGS) $(CDEFS) -MM $< | sed 's#^$(@F:%.d=%.o):#$@ $(@:.deps/%.d=%.o):#' > $@
|
2005-08-08 15:10:37 +00:00
|
|
|
|
|
2005-08-11 13:04:50 +00:00
|
|
|
|
.deps/%.d: %.cpp $(MAKE_CONFIG) table/strings.h endian_target.h
|
2005-12-25 09:19:16 +00:00
|
|
|
|
@echo '===> DEP $<'
|
2006-01-29 19:49:15 +00:00
|
|
|
|
$(Q)$(CXX) $(CFLAGS) $(CDEFS) -MM $< | sed 's#^$(@F:%.d=%.o):#$@ $(@:.deps/%.d=%.o):#' > $@
|
2004-08-09 17:04:08 +00:00
|
|
|
|
|
2005-08-11 13:04:50 +00:00
|
|
|
|
.deps/%.d: %.m $(MAKE_CONFIG) table/strings.h endian_target.h
|
2005-12-25 09:19:16 +00:00
|
|
|
|
@echo '===> DEP $<'
|
2005-12-27 22:55:24 +00:00
|
|
|
|
$(Q)$(CC) $(OBJCFLAGS) $(CDEFS) -MM $< | sed 's#^$(@F:%.d=%.o):#$@ $(@:.deps/%.d=%.o):#' > $@
|
2004-09-06 16:45:53 +00:00
|
|
|
|
|
2005-01-25 16:10:06 +00:00
|
|
|
|
|
2005-08-08 15:10:37 +00:00
|
|
|
|
%.o: %.c $(MAKE_CONFIG)
|
|
|
|
|
@echo '===> Compiling $<'
|
|
|
|
|
$(Q)$(CC) $(CFLAGS) $(CDEFS) -c -o $@ $<
|
2005-01-25 16:10:06 +00:00
|
|
|
|
|
2005-08-08 15:10:37 +00:00
|
|
|
|
%.o: %.cpp $(MAKE_CONFIG)
|
|
|
|
|
@echo '===> Compiling $<'
|
|
|
|
|
$(Q)$(CXX) $(CFLAGS) $(CDEFS) -c -o $@ $<
|
2005-07-24 20:47:42 +00:00
|
|
|
|
|
2005-08-08 15:10:37 +00:00
|
|
|
|
%.o: %.m $(MAKE_CONFIG)
|
|
|
|
|
@echo '===> Compiling $<'
|
2005-08-08 20:23:56 +00:00
|
|
|
|
$(Q)$(CC) $(CFLAGS) $(CDEFS) -c -o $@ $<
|
2005-01-25 15:35:11 +00:00
|
|
|
|
|
2005-12-11 07:36:49 +00:00
|
|
|
|
%.o: %.rc
|
|
|
|
|
@echo '===> Compiling resource $<'
|
|
|
|
|
$(Q)$(WINDRES) -o $@ $<
|
|
|
|
|
|
2005-01-25 15:35:11 +00:00
|
|
|
|
|
|
|
|
|
info:
|
2005-03-06 12:56:02 +00:00
|
|
|
|
@echo 'CFLAGS = $(CFLAGS)'
|
2005-01-25 15:35:11 +00:00
|
|
|
|
@echo 'LDFLAGS = $(LDFLAGS)'
|
|
|
|
|
@echo 'LIBS = $(LIBS)'
|
2005-08-11 13:04:50 +00:00
|
|
|
|
@echo 'CDEFS = $(CDEFS)'
|