annotate Makefile.src.in @ 12846:62f969bd7ff4 draft

(svn r17336) -Codechange: move some os specific files into src/os/
author rubidium <rubidium@openttd.org>
date Mon, 31 Aug 2009 22:38:37 +0000
parents db806c7e9c02
children d47724c1c01f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12778
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12746
diff changeset
1 # $Id$
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12746
diff changeset
2
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12746
diff changeset
3 # This file is part of OpenTTD.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12746
diff changeset
4 # 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.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12746
diff changeset
5 # 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.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12746
diff changeset
6 # 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/>.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12746
diff changeset
7
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
8 CC_HOST = !!CC_HOST!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
9 CXX_HOST = !!CXX_HOST!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
10 CC_BUILD = !!CC_BUILD!!
5587
c44c070c5032 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium <rubidium@openttd.org>
parents: 5535
diff changeset
11 CXX_BUILD = !!CXX_BUILD!!
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
12 WINDRES = !!WINDRES!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
13 STRIP = !!STRIP!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
14 CFLAGS = !!CFLAGS!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
15 CFLAGS_BUILD = !!CFLAGS_BUILD!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
16 LIBS = !!LIBS!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
17 LDFLAGS = !!LDFLAGS!!
12780
db806c7e9c02 (svn r17250) -Fix (r17249): I forgot depend.exe was affected too
glx <glx@openttd.org>
parents: 12778
diff changeset
18 LDFLAGS_BUILD= !!LDFLAGS_BUILD!!
10085
6e5a5c7f13c3 (svn r14261) -Change [Makefile]: Move the revision detection code from Makefile.src.in to a
matthijs <matthijs@openttd.org>
parents: 10081
diff changeset
19 ROOT_DIR = !!ROOT_DIR!!
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
20 BIN_DIR = !!BIN_DIR!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
21 LANG_DIR = !!LANG_DIR!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
22 SRC_OBJS_DIR = !!SRC_OBJS_DIR!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
23 LANG_OBJS_DIR= !!LANG_OBJS_DIR!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
24 SRC_DIR = !!SRC_DIR!!
10696
7edccbb67398 (svn r15027) -Merge: tomatos and bananas left to be, here is NoAI for all to see.
truebrain <truebrain@openttd.org>
parents: 10593
diff changeset
25 SCRIPT_SRC_DIR=!!SCRIPT_SRC_DIR!!
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
26 MEDIA_DIR = !!MEDIA_DIR!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
27 TTD = !!TTD!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
28 STRGEN = !!STRGEN!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
29 ENDIAN_CHECK = !!ENDIAN_CHECK!!
11907
ae4ef10e7535 (svn r16307) -Fix: makedepend can't handle the amount of files we have and it also miss some dependencies. That's why we introduce our custom implementation of makedepend.
glx <glx@openttd.org>
parents: 11004
diff changeset
30 DEPEND = !!DEPEND!!
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
31 ENDIAN_FORCE = !!ENDIAN_FORCE!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
32 OS = !!OS!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
33 STAGE = !!STAGE!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
34 MAKEDEPEND = !!MAKEDEPEND!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
35 CFLAGS_MAKEDEP= !!CFLAGS_MAKEDEP!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
36 SORT = !!SORT!!
5535
587cee1d0031 (svn r7866) -Fix (r7759): ./configure --revision=[revision] did not work as intended.
rubidium <rubidium@openttd.org>
parents: 5496
diff changeset
37 REVISION = !!REVISION!!
6081
31245c7b2e37 (svn r8814) [Config] -Add: added --awk and detect_awk. We now try to find an awk on the user system which allows gsub(). If not found, you can define one yourself, or it tells you versions you might want to install
truelight <truelight@openttd.org>
parents: 5979
diff changeset
38 AWK = !!AWK!!
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
39 CONFIG_CACHE_COMPILER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_COMPILER!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
40 CONFIG_CACHE_LINKER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_LINKER!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
41 CONFIG_CACHE_ENDIAN = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_ENDIAN!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
42 CONFIG_CACHE_SOURCE = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_SOURCE!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
43 CONFIG_CACHE_VERSION = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_VERSION!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
44
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
45 OBJS_C := !!OBJS_C!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
46 OBJS_CPP := !!OBJS_CPP!!
5941
d0e1f93e603a (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni <bjarni@openttd.org>
parents: 5650
diff changeset
47 OBJS_MM := !!OBJS_MM!!
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
48 OBJS_RC := !!OBJS_RC!!
5941
d0e1f93e603a (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni <bjarni@openttd.org>
parents: 5650
diff changeset
49 OBJS := $(OBJS_C) $(OBJS_CPP) $(OBJS_MM) $(OBJS_RC)
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
50 SRCS := !!SRCS!!
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
51
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
52 # All C-files depend on those 3 files
11004
48aced5a73d8 (svn r15344) -Change [Makefile]: don't recompile everything when english.txt changes, but only whatever includes table/strings.h.
rubidium <rubidium@openttd.org>
parents: 10696
diff changeset
53 FILE_DEP := $(CONFIG_CACHE_COMPILER) endian_target.h
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
54 # Create all dirs and subdirs
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
55 RES := $(shell mkdir -p $(BIN_DIR) $(sort $(dir $(OBJS))))
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
56
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
57 # Make sure endian_target.h is reasable as if it was in the src/ dir
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
58 CFLAGS += -I $(SRC_OBJS_DIR) -I $(LANG_OBJS_DIR)
10696
7edccbb67398 (svn r15027) -Merge: tomatos and bananas left to be, here is NoAI for all to see.
truebrain <truebrain@openttd.org>
parents: 10593
diff changeset
59 CFLAGS_MAKEDEP += -I $(SRC_OBJS_DIR) -I $(LANG_OBJS_DIR) -I $(SCRIPT_SRC_DIR)
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
60
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
61 ENDIAN_TARGETS := endian_target.h $(ENDIAN_CHECK)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
62
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
63 # Check if we want to show what we are doing
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
64 ifdef VERBOSE
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
65 Q =
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
66 E = @true
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
67 else
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
68 Q = @
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
69 E = @echo
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
70 endif
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
71
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
72 # Our default target
5610
5762b3a3883d (svn r8067) -Fix (r7759): if bin/$(TTD) was removed, it did not get placed back on make unless $(TTD) got relinked.
rubidium <rubidium@openttd.org>
parents: 5587
diff changeset
73 all: $(BIN_DIR)/$(TTD)
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
74
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
75 # This are 2 rules that are pointing back to STRGEN stuff.
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
76 # There is not really a need to have them here, but in case
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
77 # some weirdo wants to run 'make' in the 'src' dir and expects
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
78 # the languages to be recompiled, this catches that case and
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
79 # takes care of it nicely.
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
80 $(LANG_OBJS_DIR)/$(STRGEN):
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
81 $(MAKE) -C $(LANG_OBJS_DIR) $(STRGEN)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
82
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
83 $(LANG_OBJS_DIR)/table/strings.h: $(LANG_DIR)/english.txt $(LANG_OBJS_DIR)/$(STRGEN)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
84 $(MAKE) -C $(LANG_OBJS_DIR) table/strings.h
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
85
10085
6e5a5c7f13c3 (svn r14261) -Change [Makefile]: Move the revision detection code from Makefile.src.in to a
matthijs <matthijs@openttd.org>
parents: 10081
diff changeset
86 # Always run version detection, so we always have an accurate modified
6e5a5c7f13c3 (svn r14261) -Change [Makefile]: Move the revision detection code from Makefile.src.in to a
matthijs <matthijs@openttd.org>
parents: 10081
diff changeset
87 # flag
6e5a5c7f13c3 (svn r14261) -Change [Makefile]: Move the revision detection code from Makefile.src.in to a
matthijs <matthijs@openttd.org>
parents: 10081
diff changeset
88 VERSIONS := $(shell AWK="$(AWK)" "$(ROOT_DIR)/findversion.sh")
10091
f1270dbc1913 (svn r14272) -Fix [Makefile]: Always pass an explicit delimiter to the "cut" command, in
matthijs <matthijs@openttd.org>
parents: 10085
diff changeset
89 MODIFIED := $(shell echo "$(VERSIONS)" | cut -f 3 -d' ')
9457
267a95510fdf (svn r13375) -Add: logging of actions that could possibly cause desyncs and crashes to simplify debugging. See readme.txt for details
smatz <smatz@openttd.org>
parents: 7916
diff changeset
90
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
91 ifdef REVISION
10085
6e5a5c7f13c3 (svn r14261) -Change [Makefile]: Move the revision detection code from Makefile.src.in to a
matthijs <matthijs@openttd.org>
parents: 10081
diff changeset
92 # Use specified revision (which should be of the form "r000").
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
93 REV := $(REVISION)
11916
1be572ca9966 (svn r16318) -Change: use !! instead of @@ in src/*.in too.
rubidium <rubidium@openttd.org>
parents: 11907
diff changeset
94 REV_NR := $(shell echo $(REVISION) | sed "s@[^0-9]@@g")
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
95 else
10085
6e5a5c7f13c3 (svn r14261) -Change [Makefile]: Move the revision detection code from Makefile.src.in to a
matthijs <matthijs@openttd.org>
parents: 10081
diff changeset
96 # Use autodetected revisions
10091
f1270dbc1913 (svn r14272) -Fix [Makefile]: Always pass an explicit delimiter to the "cut" command, in
matthijs <matthijs@openttd.org>
parents: 10085
diff changeset
97 REV := $(shell echo "$(VERSIONS)" | cut -f 1 -d' ')
f1270dbc1913 (svn r14272) -Fix [Makefile]: Always pass an explicit delimiter to the "cut" command, in
matthijs <matthijs@openttd.org>
parents: 10085
diff changeset
98 REV_NR := $(shell echo "$(VERSIONS)" | cut -f 2 -d' ')
6812
32e4fae77a35 (svn r10051) -Add: git "version" detection so we've got at least some indication what version we're playing when using git ;)
rubidium <rubidium@openttd.org>
parents: 6523
diff changeset
99 endif
32e4fae77a35 (svn r10051) -Add: git "version" detection so we've got at least some indication what version we're playing when using git ;)
rubidium <rubidium@openttd.org>
parents: 6523
diff changeset
100
9765
b426b3cb4e71 (svn r13901) -Fix: make sure REV_NR isn't empty, rev.cpp would fail to compile
smatz <smatz@openttd.org>
parents: 9457
diff changeset
101 # Make sure we have something in REV and REV_NR
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
102 ifeq ($(REV),)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
103 REV := norev000
9765
b426b3cb4e71 (svn r13901) -Fix: make sure REV_NR isn't empty, rev.cpp would fail to compile
smatz <smatz@openttd.org>
parents: 9457
diff changeset
104 endif
b426b3cb4e71 (svn r13901) -Fix: make sure REV_NR isn't empty, rev.cpp would fail to compile
smatz <smatz@openttd.org>
parents: 9457
diff changeset
105 ifeq ($(REV_NR),)
7780
4301f74086b2 (svn r11330) -Add: OTTD version checking for NewGRFs. This allows NewGRFs to do something different for different versions of OpenTTD, like disabling it for too low versions or loading different graphics.
rubidium <rubidium@openttd.org>
parents: 7618
diff changeset
106 REV_NR := 0
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
107 endif
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
108
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
109 # This helps to recompile if flags change
12209
0084b2d2b163 (svn r16623) -Change: remove CC_CFLAGS as we're not using a C compiler anywhere at all
rubidium <rubidium@openttd.org>
parents: 12083
diff changeset
110 RES := $(shell if [ "`cat $(CONFIG_CACHE_COMPILER) 2>/dev/null`" != "$(CFLAGS)" ]; then echo "$(CFLAGS)" > $(CONFIG_CACHE_COMPILER); fi )
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
111 RES := $(shell if [ "`cat $(CONFIG_CACHE_LINKER) 2>/dev/null`" != "$(LDFLAGS) $(LIBS)" ]; then echo "$(LDFLAGS) $(LIBS)" > $(CONFIG_CACHE_LINKER); fi )
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
112 RES := $(shell if [ "`cat $(CONFIG_CACHE_ENDIAN) 2>/dev/null`" != "$(ENDIAN_FORCE)" ]; then echo "$(ENDIAN_FORCE)" > $(CONFIG_CACHE_ENDIAN); fi )
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
113
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
114 # If there is a change in the source-file-list, make sure we recheck the deps
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
115 RES := $(shell if [ "`cat $(CONFIG_CACHE_SOURCE) 2>/dev/null`" != "$(SRCS)" ]; then echo "$(SRCS)" > $(CONFIG_CACHE_SOURCE); fi )
5587
c44c070c5032 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium <rubidium@openttd.org>
parents: 5535
diff changeset
116 # If there is a change in the revision, make sure we recompile rev.cpp
9766
a8c9ec841194 (svn r13902) -Fix (r13375): rev.cpp wasn't recreated when --revision was used and the 'modified' status of sources changed
smatz <smatz@openttd.org>
parents: 9765
diff changeset
117 RES := $(shell if [ "`cat $(CONFIG_CACHE_VERSION) 2>/dev/null`" != "$(REV) $(MODIFIED)" ]; then echo "$(REV) $(MODIFIED)" > $(CONFIG_CACHE_VERSION); fi )
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
118
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
119 ifndef MAKEDEPEND
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
120 # The slow, but always correct, dep-check
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
121 DEP_MASK := %.d
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
122 DEPS := $(OBJS:%.o=%.d)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
123
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
124 # Only include the deps if we are compiling everything
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
125 ifeq ($(filter $(ENDIAN_TARGETS) %.o clean mrproper, $(MAKECMDGOALS)),)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
126 -include $(DEPS)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
127 else
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
128 # In case we want to compile a single target, include the .d file for it
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
129 ifneq ($(filter %.o, $(MAKECMDGOALS)),)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
130 SINGLE_DEP := $(filter %.o, $(MAKECMDGOALS))
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
131 -include $(SINGLE_DEP:%.o=%.d)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
132 endif
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
133 endif
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
134
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
135 # Find the deps via GCC. Rarely wrong, but a bit slow
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
136
12746
4ffb9ad0e03a (svn r17212) -Change: move minilzo to its 'own' 3rdparty directory as it belongs there
rubidium <rubidium@openttd.org>
parents: 12210
diff changeset
137 $(OBJS_C:%.o=%.d): %.d: $(SRC_DIR)/%.c $(FILE_DEP)
4ffb9ad0e03a (svn r17212) -Change: move minilzo to its 'own' 3rdparty directory as it belongs there
rubidium <rubidium@openttd.org>
parents: 12210
diff changeset
138 $(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.c=%.c)'
4ffb9ad0e03a (svn r17212) -Change: move minilzo to its 'own' 3rdparty directory as it belongs there
rubidium <rubidium@openttd.org>
parents: 12210
diff changeset
139 $(Q)$(CC_HOST) $(CFLAGS) -MM $< | sed 's@^$(@F:%.d=%.o):@$@ $(@:%.d=%.o):@' > $@
4ffb9ad0e03a (svn r17212) -Change: move minilzo to its 'own' 3rdparty directory as it belongs there
rubidium <rubidium@openttd.org>
parents: 12210
diff changeset
140
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
141 $(OBJS_CPP:%.o=%.d): %.d: $(SRC_DIR)/%.cpp $(FILE_DEP)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
142 $(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.cpp=%.cpp)'
11916
1be572ca9966 (svn r16318) -Change: use !! instead of @@ in src/*.in too.
rubidium <rubidium@openttd.org>
parents: 11907
diff changeset
143 $(Q)$(CXX_HOST) $(CFLAGS) -MM $< | sed 's@^$(@F:%.d=%.o):@$@ $(@:%.d=%.o):@' > $@
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
144
5941
d0e1f93e603a (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni <bjarni@openttd.org>
parents: 5650
diff changeset
145 $(OBJS_MM:%.o=%.d): %.d: $(SRC_DIR)/%.mm $(FILE_DEP)
d0e1f93e603a (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni <bjarni@openttd.org>
parents: 5650
diff changeset
146 $(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.mm=%.mm)'
11916
1be572ca9966 (svn r16318) -Change: use !! instead of @@ in src/*.in too.
rubidium <rubidium@openttd.org>
parents: 11907
diff changeset
147 $(Q)$(CC_HOST) $(CFLAGS) -MM $< | sed 's@^$(@F:%.d=%.o):@$@ $(@:%.d=%.o):@' > $@
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
148
5478
87717a3b51fc (svn r7762) [Configure] -Fix: .rc files were not ignored in old DEP system
truelight <truelight@openttd.org>
parents: 5475
diff changeset
149 $(OBJS_RC:%.o=%.d): %.d: $(SRC_DIR)/%.rc $(FILE_DEP)
5941
d0e1f93e603a (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni <bjarni@openttd.org>
parents: 5650
diff changeset
150 $(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.mm=%.mm)'
5478
87717a3b51fc (svn r7762) [Configure] -Fix: .rc files were not ignored in old DEP system
truelight <truelight@openttd.org>
parents: 5475
diff changeset
151 $(Q)touch $@
87717a3b51fc (svn r7762) [Configure] -Fix: .rc files were not ignored in old DEP system
truelight <truelight@openttd.org>
parents: 5475
diff changeset
152
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
153 else
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
154 # The much faster, but can be wrong, dep-check
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
155 DEP_MASK :=
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
156 DEPS := Makefile.dep
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
157
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
158 # Only include the deps if we are not cleaning
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
159 ifeq ($(filter $(ENDIAN_TARGETS) depend clean mrproper, $(MAKECMDGOALS)),)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
160 -include Makefile.dep
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
161 endif
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
162
11907
ae4ef10e7535 (svn r16307) -Fix: makedepend can't handle the amount of files we have and it also miss some dependencies. That's why we introduce our custom implementation of makedepend.
glx <glx@openttd.org>
parents: 11004
diff changeset
163 ifeq ("$(SRC_OBJS_DIR)/$(DEPEND)","$(MAKEDEPEND)")
ae4ef10e7535 (svn r16307) -Fix: makedepend can't handle the amount of files we have and it also miss some dependencies. That's why we introduce our custom implementation of makedepend.
glx <glx@openttd.org>
parents: 11004
diff changeset
164 DEP := $(MAKEDEPEND)
ae4ef10e7535 (svn r16307) -Fix: makedepend can't handle the amount of files we have and it also miss some dependencies. That's why we introduce our custom implementation of makedepend.
glx <glx@openttd.org>
parents: 11004
diff changeset
165 $(SRC_OBJS_DIR)/$(DEPEND): $(SRC_DIR)/depend/depend.cpp
ae4ef10e7535 (svn r16307) -Fix: makedepend can't handle the amount of files we have and it also miss some dependencies. That's why we introduce our custom implementation of makedepend.
glx <glx@openttd.org>
parents: 11004
diff changeset
166 $(E) '$(STAGE) Compiling and linking $(DEPEND)'
12780
db806c7e9c02 (svn r17250) -Fix (r17249): I forgot depend.exe was affected too
glx <glx@openttd.org>
parents: 12778
diff changeset
167 $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(LDFLAGS_BUILD) -o $@ $<
11907
ae4ef10e7535 (svn r16307) -Fix: makedepend can't handle the amount of files we have and it also miss some dependencies. That's why we introduce our custom implementation of makedepend.
glx <glx@openttd.org>
parents: 11004
diff changeset
168 endif
ae4ef10e7535 (svn r16307) -Fix: makedepend can't handle the amount of files we have and it also miss some dependencies. That's why we introduce our custom implementation of makedepend.
glx <glx@openttd.org>
parents: 11004
diff changeset
169
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
170 # Make sure that only 'make depend' ALWAYS triggers a recheck
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
171 ifeq ($(filter depend, $(MAKECMDGOALS)),)
11907
ae4ef10e7535 (svn r16307) -Fix: makedepend can't handle the amount of files we have and it also miss some dependencies. That's why we introduce our custom implementation of makedepend.
glx <glx@openttd.org>
parents: 11004
diff changeset
172 Makefile.dep: $(FILE_DEP) $(SRCS:%=$(SRC_DIR)/%) $(CONFIG_CACHE_SOURCE) $(DEP)
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
173 else
12036
a7240cb69d58 (svn r16443) -Fix: running 'make depend' after 'configure' in a fresh checkout failed
glx <glx@openttd.org>
parents: 12013
diff changeset
174 Makefile.dep: $(FILE_DEP) $(SRCS:%=$(SRC_DIR)/%) $(DEP) FORCE
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
175 endif
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
176 $(E) '$(STAGE) DEP CHECK (all files)'
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
177 $(Q)rm -f Makefile.dep.tmp
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
178 $(Q)touch Makefile.dep.tmp
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
179
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
180 # Calculate the deps via makedepend
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
181 $(Q)$(MAKEDEPEND) -f$(SRC_OBJS_DIR)/Makefile.dep.tmp -o.o -Y -v -- $(CFLAGS_MAKEDEP) -- $(SRCS:%=$(SRC_DIR)/%) 2>/dev/null
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
182
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
183 # Convert x:/... paths to /x/... for mingw
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
184 ifeq ($(OS), MINGW)
12013
c0e05f81bf93 (svn r16419) -Fix [FS#2916]: MSYS has two distinct ways to write paths. When calling external binaries it resolves paths which causes comparisons between a resolved and unresolved path. So always use the resolved path instead of the unresolved one.
rubidium <rubidium@openttd.org>
parents: 11916
diff changeset
185 @cat Makefile.dep.tmp | sed 's@/\([a-zA-Z]\):\/@\/\1\/@g' > Makefile.dep.tmp.mingw
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
186 @cp Makefile.dep.tmp.mingw Makefile.dep.tmp
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
187 @rm -f Makefile.dep.tmp.mingw
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
188 endif
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
189
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
190 # Remove all comments and includes that don't start with $(SRC_DIR)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
191 # Remove $(SRC_DIR) from object-file-name
6081
31245c7b2e37 (svn r8814) [Config] -Add: added --awk and detect_awk. We now try to find an awk on the user system which allows gsub(). If not found, you can define one yourself, or it tells you versions you might want to install
truelight <truelight@openttd.org>
parents: 5979
diff changeset
192 @$(AWK) ' \
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
193 /^# DO NOT/ { print $$0 ; next} \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
194 /^#/ {next} \
12013
c0e05f81bf93 (svn r16419) -Fix [FS#2916]: MSYS has two distinct ways to write paths. When calling external binaries it resolves paths which causes comparisons between a resolved and unresolved path. So always use the resolved path instead of the unresolved one.
rubidium <rubidium@openttd.org>
parents: 11916
diff changeset
195 /: / { \
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
196 left = NF - 1; \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
197 for (n = 2; n <= NF; n++) { \
11004
48aced5a73d8 (svn r15344) -Change [Makefile]: don't recompile everything when english.txt changes, but only whatever includes table/strings.h.
rubidium <rubidium@openttd.org>
parents: 10696
diff changeset
198 if (match($$n, "^$(ROOT_DIR)") == 0) { \
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
199 $$n = ""; \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
200 left--; \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
201 } \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
202 } \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
203 gsub("$(SRC_DIR)/", "", $$1); \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
204 if (left > 0) { \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
205 print $$0; \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
206 $$1 = "Makefile.dep:"; \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
207 print $$0; \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
208 } \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
209 next \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
210 } \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
211 { \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
212 print $$0 \
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
213 } \
11916
1be572ca9966 (svn r16318) -Change: use !! instead of @@ in src/*.in too.
rubidium <rubidium@openttd.org>
parents: 11907
diff changeset
214 ' < Makefile.dep.tmp | sed 's@ *@ @g;s@ $$@@' | $(SORT) > Makefile.dep
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
215
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
216 $(Q)rm -f Makefile.dep.tmp Makefile.dep.tmp.bak
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
217
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
218 endif
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
219
10696
7edccbb67398 (svn r15027) -Merge: tomatos and bananas left to be, here is NoAI for all to see.
truebrain <truebrain@openttd.org>
parents: 10593
diff changeset
220 # Avoid problems with deps if a .h/.hpp/.hpp.sq file is deleted without the deps
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
221 # being updated. Now the Makefile continues, the deps are recreated
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
222 # and all will be fine.
10696
7edccbb67398 (svn r15027) -Merge: tomatos and bananas left to be, here is NoAI for all to see.
truebrain <truebrain@openttd.org>
parents: 10593
diff changeset
223 %.h %.hpp %.hpp.sq:
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
224 @true
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
225
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
226
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
227 # Compile all the files according to the targets
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
228
12746
4ffb9ad0e03a (svn r17212) -Change: move minilzo to its 'own' 3rdparty directory as it belongs there
rubidium <rubidium@openttd.org>
parents: 12210
diff changeset
229 $(OBJS_C): %.o: $(SRC_DIR)/%.c $(DEP_MASK) $(FILE_DEP)
4ffb9ad0e03a (svn r17212) -Change: move minilzo to its 'own' 3rdparty directory as it belongs there
rubidium <rubidium@openttd.org>
parents: 12210
diff changeset
230 $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.c=%.c)'
4ffb9ad0e03a (svn r17212) -Change: move minilzo to its 'own' 3rdparty directory as it belongs there
rubidium <rubidium@openttd.org>
parents: 12210
diff changeset
231 $(Q)$(CC_HOST) $(CFLAGS) -c -o $@ $<
4ffb9ad0e03a (svn r17212) -Change: move minilzo to its 'own' 3rdparty directory as it belongs there
rubidium <rubidium@openttd.org>
parents: 12210
diff changeset
232
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
233 $(OBJS_CPP): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
234 $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
235 $(Q)$(CXX_HOST) $(CFLAGS) -c -o $@ $<
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
236
5941
d0e1f93e603a (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni <bjarni@openttd.org>
parents: 5650
diff changeset
237 $(OBJS_MM): %.o: $(SRC_DIR)/%.mm $(DEP_MASK) $(FILE_DEP)
d0e1f93e603a (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni <bjarni@openttd.org>
parents: 5650
diff changeset
238 $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.mm=%.mm)'
d0e1f93e603a (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni <bjarni@openttd.org>
parents: 5650
diff changeset
239 $(Q)$(CC_HOST) $(CFLAGS) -c -o $@ $<
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
240
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
241 $(OBJS_RC): %.o: $(SRC_DIR)/%.rc $(FILE_DEP)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
242 $(E) '$(STAGE) Compiling resource $(<:$(SRC_DIR)/%.rc=%.rc)'
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
243 $(Q)$(WINDRES) -o $@ -I $(MEDIA_DIR) $<
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
244
5610
5762b3a3883d (svn r8067) -Fix (r7759): if bin/$(TTD) was removed, it did not get placed back on make unless $(TTD) got relinked.
rubidium <rubidium@openttd.org>
parents: 5587
diff changeset
245 $(BIN_DIR)/$(TTD): $(TTD)
5762b3a3883d (svn r8067) -Fix (r7759): if bin/$(TTD) was removed, it did not get placed back on make unless $(TTD) got relinked.
rubidium <rubidium@openttd.org>
parents: 5587
diff changeset
246 $(Q)cp $< $@
5762b3a3883d (svn r8067) -Fix (r7759): if bin/$(TTD) was removed, it did not get placed back on make unless $(TTD) got relinked.
rubidium <rubidium@openttd.org>
parents: 5587
diff changeset
247
7564
0f45d5223c87 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium <rubidium@openttd.org>
parents: 7256
diff changeset
248 $(TTD): $(OBJS) $(CONFIG_CACHE_LINKER)
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
249 $(E) '$(STAGE) Linking $@'
5979
ca289345e1d3 (svn r8678) [PSP] -Add: added LIBS and CFLAGS needed to compile PSP
truelight <truelight@openttd.org>
parents: 5970
diff changeset
250 ifeq ($(OS), PSP)
6084
6e2526ba7cb5 (svn r8819) [Config] -Documentation: added why we need CC_HOST for linking on PSP
truelight <truelight@openttd.org>
parents: 6081
diff changeset
251 # Because of a bug in the PSP GCC tools, linking via CXX results
6e2526ba7cb5 (svn r8819) [Config] -Documentation: added why we need CC_HOST for linking on PSP
truelight <truelight@openttd.org>
parents: 6081
diff changeset
252 # in total chaos and more problems then you can handle. So we need
6e2526ba7cb5 (svn r8819) [Config] -Documentation: added why we need CC_HOST for linking on PSP
truelight <truelight@openttd.org>
parents: 6081
diff changeset
253 # CC to link OpenTTD for PSP
7564
0f45d5223c87 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium <rubidium@openttd.org>
parents: 7256
diff changeset
254 $(Q)$(CC_HOST) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
5979
ca289345e1d3 (svn r8678) [PSP] -Add: added LIBS and CFLAGS needed to compile PSP
truelight <truelight@openttd.org>
parents: 5970
diff changeset
255 else
7564
0f45d5223c87 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium <rubidium@openttd.org>
parents: 7256
diff changeset
256 $(Q)$(CXX_HOST) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
5979
ca289345e1d3 (svn r8678) [PSP] -Add: added LIBS and CFLAGS needed to compile PSP
truelight <truelight@openttd.org>
parents: 5970
diff changeset
257 endif
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
258 ifdef STRIP
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
259 $(Q)$(STRIP) $@
10385
9709c41adf56 (svn r14636) -Add: DOS port of OpenTTD, without network support though.
rubidium <rubidium@openttd.org>
parents: 10239
diff changeset
260 ifeq ($(OS), DOS)
9709c41adf56 (svn r14636) -Add: DOS port of OpenTTD, without network support though.
rubidium <rubidium@openttd.org>
parents: 10239
diff changeset
261 $(E) '$(STAGE) Adding CWSDPMI stub to $@'
9709c41adf56 (svn r14636) -Add: DOS port of OpenTTD, without network support though.
rubidium <rubidium@openttd.org>
parents: 10239
diff changeset
262 $(Q)$(ROOT_DIR)/os/dos/make_dos_binary_selfcontained.sh $(SRC_OBJS_DIR)/$@
9709c41adf56 (svn r14636) -Add: DOS port of OpenTTD, without network support though.
rubidium <rubidium@openttd.org>
parents: 10239
diff changeset
263 endif
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
264 endif
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
265
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
266 # The targets to compile the endian-code
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
267
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
268 endian_target.h: $(ENDIAN_CHECK) $(CONFIG_CACHE_ENDIAN)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
269 $(E) '$(STAGE) Testing endianness for target'
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
270 $(Q)./$(ENDIAN_CHECK) $(ENDIAN_FORCE) > $@
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
271
5587
c44c070c5032 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium <rubidium@openttd.org>
parents: 5535
diff changeset
272 $(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
273 $(E) '$(STAGE) Compiling and Linking $@'
5587
c44c070c5032 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium <rubidium@openttd.org>
parents: 5535
diff changeset
274 $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $< -o $@
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
275
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
276 # Revision files
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
277
7564
0f45d5223c87 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium <rubidium@openttd.org>
parents: 7256
diff changeset
278 $(SRC_DIR)/rev.cpp: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/rev.cpp.in
11916
1be572ca9966 (svn r16318) -Change: use !! instead of @@ in src/*.in too.
rubidium <rubidium@openttd.org>
parents: 11907
diff changeset
279 $(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s@\!\!REVISION\!\!@$(REV_NR)@g;s@!!VERSION!!@$(REV)@g;s@!!MODIFIED!!@$(MODIFIED)@g;s@!!DATE!!@`date +%d.%m.%y`@g" > $(SRC_DIR)/rev.cpp
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
280
12846
62f969bd7ff4 (svn r17336) -Codechange: move some os specific files into src/os/
rubidium <rubidium@openttd.org>
parents: 12780
diff changeset
281 $(SRC_DIR)/os/windows/ottdres.rc: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/os/windows/ottdres.rc.in
62f969bd7ff4 (svn r17336) -Codechange: move some os specific files into src/os/
rubidium <rubidium@openttd.org>
parents: 12780
diff changeset
282 $(Q)cat $(SRC_DIR)/os/windows/ottdres.rc.in | sed "s@\!\!REVISION\!\!@$(REV_NR)@g;s@!!VERSION!!@$(REV)@g;s@!!DATE!!@`date +%d.%m.%y`@g" > $(SRC_DIR)/os/windows/ottdres.rc
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
283
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
284 FORCE:
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
285
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
286 depend: $(DEPS)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
287
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
288 clean:
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
289 $(E) '$(STAGE) Cleaning up object files'
11907
ae4ef10e7535 (svn r16307) -Fix: makedepend can't handle the amount of files we have and it also miss some dependencies. That's why we introduce our custom implementation of makedepend.
glx <glx@openttd.org>
parents: 11004
diff changeset
290 $(Q)rm -f $(DEPS) $(OBJS) $(TTD) $(DEPEND) $(TTD:%=$(BIN_DIR)/%) $(CONFIG_CACHE_COMPILER) $(CONFIG_CACHE_LINKER) $(CONFIG_CACHE_ENDIAN) $(CONFIG_CACHE_SOURCE) $(ENDIAN_TARGETS)
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
291
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
292 mrproper: clean
12846
62f969bd7ff4 (svn r17336) -Codechange: move some os specific files into src/os/
rubidium <rubidium@openttd.org>
parents: 12780
diff changeset
293 $(Q)rm -f $(SRC_DIR)/rev.cpp $(SRC_DIR)/os/windows/ottdres.rc
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
294
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
295 %.o:
5970
d207cbc6e41a (svn r8658) -Fix r8605: missed an error message renaming from m to mm (objC to objC++)
bjarni <bjarni@openttd.org>
parents: 5941
diff changeset
296 @echo '$(STAGE) No such source-file: $(@:%.o=%).[c|cpp|mm|rc]'
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
297
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
298 .PHONY: all mrproper depend clean FORCE