Makefile.src.in
author rubidium
Thu, 18 Dec 2008 12:23:08 +0000
changeset 10436 8d3a9fbe8f19
parent 10385 4f9838649c7f
permissions -rw-r--r--
(svn r14689) -Change: make configure die on commonly made user mistakes, like not having SDL development files or zlib headers installed; you can still compile a dedicated server or a binary without zlib, but you have to explicitly force it.
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     1
CC_HOST      = !!CC_HOST!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     2
CXX_HOST     = !!CXX_HOST!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     3
CC_BUILD     = !!CC_BUILD!!
5587
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5535
diff changeset
     4
CXX_BUILD    = !!CXX_BUILD!!
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     5
WINDRES      = !!WINDRES!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     6
STRIP        = !!STRIP!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     7
CC_CFLAGS    = !!CC_CFLAGS!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     8
CFLAGS       = !!CFLAGS!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     9
CFLAGS_BUILD = !!CFLAGS_BUILD!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    10
LIBS         = !!LIBS!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    11
LDFLAGS      = !!LDFLAGS!!
10085
de2d010b7db9 (svn r14261) -Change [Makefile]: Move the revision detection code from Makefile.src.in to a
matthijs
parents: 10081
diff changeset
    12
ROOT_DIR     = !!ROOT_DIR!!
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    13
BIN_DIR      = !!BIN_DIR!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    14
LANG_DIR     = !!LANG_DIR!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    15
SRC_OBJS_DIR = !!SRC_OBJS_DIR!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    16
LANG_OBJS_DIR= !!LANG_OBJS_DIR!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    17
SRC_DIR      = !!SRC_DIR!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    18
MEDIA_DIR    = !!MEDIA_DIR!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    19
TTD          = !!TTD!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    20
STRGEN       = !!STRGEN!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    21
ENDIAN_CHECK = !!ENDIAN_CHECK!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    22
ENDIAN_FORCE = !!ENDIAN_FORCE!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    23
OS           = !!OS!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    24
STAGE        = !!STAGE!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    25
MAKEDEPEND   = !!MAKEDEPEND!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    26
CFLAGS_MAKEDEP= !!CFLAGS_MAKEDEP!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    27
SORT         = !!SORT!!
5535
67ca9df7b081 (svn r7866) -Fix (r7759): ./configure --revision=[revision] did not work as intended.
rubidium
parents: 5496
diff changeset
    28
REVISION     = !!REVISION!!
6081
57d2fa5e3073 (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
parents: 5979
diff changeset
    29
AWK          = !!AWK!!
6523
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
    30
GCC295       = !!GCC295!!
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    31
CONFIG_CACHE_COMPILER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_COMPILER!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    32
CONFIG_CACHE_LINKER   = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_LINKER!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    33
CONFIG_CACHE_ENDIAN   = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_ENDIAN!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    34
CONFIG_CACHE_SOURCE   = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_SOURCE!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    35
CONFIG_CACHE_VERSION  = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_VERSION!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    36
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    37
OBJS_C   := !!OBJS_C!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    38
OBJS_CPP := !!OBJS_CPP!!
5941
adaea39e84ab (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents: 5650
diff changeset
    39
OBJS_MM  := !!OBJS_MM!!
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    40
OBJS_RC  := !!OBJS_RC!!
5941
adaea39e84ab (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents: 5650
diff changeset
    41
OBJS     := $(OBJS_C) $(OBJS_CPP) $(OBJS_MM) $(OBJS_RC)
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    42
SRCS     := !!SRCS!!
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    43
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    44
# All C-files depend on those 3 files
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    45
FILE_DEP := $(CONFIG_CACHE_COMPILER) $(LANG_OBJS_DIR)/table/strings.h endian_target.h
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    46
# Create all dirs and subdirs
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    47
RES      := $(shell mkdir -p $(BIN_DIR) $(sort $(dir $(OBJS))))
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    48
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    49
# Make sure endian_target.h is reasable as if it was in the src/ dir
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    50
CFLAGS += -I $(SRC_OBJS_DIR) -I $(LANG_OBJS_DIR)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    51
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    52
ENDIAN_TARGETS := endian_target.h $(ENDIAN_CHECK)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    53
6523
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
    54
# This 'sed' basicly just removes 'const' from the line if it is a 2+D array
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
    55
# For more information, please check:
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
    56
#  http://maillist.openttd.org/pipermail/devs/2007-April/000284.html
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
    57
#  http://maillist.openttd.org/pipermail/devs/2007-February/000248.html
10239
cf55a4c21e7f (svn r14467) -Fix [FS#2350](r14443): use '~' instead of '#' as sed separator, it could be understood in a wrong way by shell
smatz
parents: 10220
diff changeset
    58
GCC295_FIX=sed -r 's~^(\t*)(.*)( const )([A-Za-z0-9_ ]+(\[.*\]){2,})(( = \{)|(;))(.*)$$~\1\2 \4\6\8\9~g'
6523
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
    59
# This 'sed' removes the 3rd '4' in the # lines of the -E output of
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
    60
#  gcc 2.95.3 and lower, as it should indicate that it is a C-linkage, but the
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
    61
#  compiler can't handle that information (just don't ask). So we remove it
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
    62
#  and then it compiles happily and without bitching :)
7256
d05502614a2c (svn r10563) -Fix: gcc 2.95 (which is still needed for MorphOS :() does have trouble with using the protected/private variables of the enclosing class (and super classes of that enclosing class).
rubidium
parents: 6918
diff changeset
    63
# Furthermore gcc 2.95 has some trouble with protected and private when
d05502614a2c (svn r10563) -Fix: gcc 2.95 (which is still needed for MorphOS :() does have trouble with using the protected/private variables of the enclosing class (and super classes of that enclosing class).
rubidium
parents: 6918
diff changeset
    64
#  accessing the protected/private stuff of the enclosing class (or the
d05502614a2c (svn r10563) -Fix: gcc 2.95 (which is still needed for MorphOS :() does have trouble with using the protected/private variables of the enclosing class (and super classes of that enclosing class).
rubidium
parents: 6918
diff changeset
    65
#  super class of the enclosing class).
10239
cf55a4c21e7f (svn r14467) -Fix [FS#2350](r14443): use '~' instead of '#' as sed separator, it could be understood in a wrong way by shell
smatz
parents: 10220
diff changeset
    66
GCC295_FIX_2=sed -e 's~\(^\# [0-9][0-9]* "[^"]*"[ 0-9]*\) 4$$~\1~g;s~private:~public:~g;s~protected:~public:~g'
6523
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
    67
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    68
# Check if we want to show what we are doing
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    69
ifdef VERBOSE
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    70
	Q =
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    71
	E = @true
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    72
else
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    73
	Q = @
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    74
	E = @echo
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    75
endif
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    76
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    77
# Our default target
5610
68b36ebb3469 (svn r8067) -Fix (r7759): if bin/$(TTD) was removed, it did not get placed back on make unless $(TTD) got relinked.
rubidium
parents: 5587
diff changeset
    78
all: $(BIN_DIR)/$(TTD)
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    79
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    80
# This are 2 rules that are pointing back to STRGEN stuff.
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    81
#  There is not really a need to have them here, but in case
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    82
#  some weirdo wants to run 'make' in the 'src' dir and expects
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    83
#  the languages to be recompiled, this catches that case and
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    84
#  takes care of it nicely.
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    85
$(LANG_OBJS_DIR)/$(STRGEN):
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    86
	$(MAKE) -C $(LANG_OBJS_DIR) $(STRGEN)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    87
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    88
$(LANG_OBJS_DIR)/table/strings.h: $(LANG_DIR)/english.txt $(LANG_OBJS_DIR)/$(STRGEN)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    89
	$(MAKE) -C $(LANG_OBJS_DIR) table/strings.h
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    90
10085
de2d010b7db9 (svn r14261) -Change [Makefile]: Move the revision detection code from Makefile.src.in to a
matthijs
parents: 10081
diff changeset
    91
# Always run version detection, so we always have an accurate modified
de2d010b7db9 (svn r14261) -Change [Makefile]: Move the revision detection code from Makefile.src.in to a
matthijs
parents: 10081
diff changeset
    92
# flag
de2d010b7db9 (svn r14261) -Change [Makefile]: Move the revision detection code from Makefile.src.in to a
matthijs
parents: 10081
diff changeset
    93
VERSIONS := $(shell AWK="$(AWK)" "$(ROOT_DIR)/findversion.sh")
10091
938c2b821972 (svn r14272) -Fix [Makefile]: Always pass an explicit delimiter to the "cut" command, in
matthijs
parents: 10085
diff changeset
    94
MODIFIED := $(shell echo "$(VERSIONS)" | cut -f 3 -d'	')
9457
75f11a6caef8 (svn r13375) -Add: logging of actions that could possibly cause desyncs and crashes to simplify debugging. See readme.txt for details
smatz
parents: 7916
diff changeset
    95
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    96
ifdef REVISION
10085
de2d010b7db9 (svn r14261) -Change [Makefile]: Move the revision detection code from Makefile.src.in to a
matthijs
parents: 10081
diff changeset
    97
# Use specified revision (which should be of the form "r000").
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    98
REV := $(REVISION)
10239
cf55a4c21e7f (svn r14467) -Fix [FS#2350](r14443): use '~' instead of '#' as sed separator, it could be understood in a wrong way by shell
smatz
parents: 10220
diff changeset
    99
REV_NR := $(shell echo $(REVISION) | sed "s~[^0-9]~~g")
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   100
else
10085
de2d010b7db9 (svn r14261) -Change [Makefile]: Move the revision detection code from Makefile.src.in to a
matthijs
parents: 10081
diff changeset
   101
# Use autodetected revisions
10091
938c2b821972 (svn r14272) -Fix [Makefile]: Always pass an explicit delimiter to the "cut" command, in
matthijs
parents: 10085
diff changeset
   102
REV      := $(shell echo "$(VERSIONS)" | cut -f 1 -d'	')
938c2b821972 (svn r14272) -Fix [Makefile]: Always pass an explicit delimiter to the "cut" command, in
matthijs
parents: 10085
diff changeset
   103
REV_NR   := $(shell echo "$(VERSIONS)" | cut -f 2 -d'	')
6812
a7000b1ba9d9 (svn r10051) -Add: git "version" detection so we've got at least some indication what version we're playing when using git ;)
rubidium
parents: 6523
diff changeset
   104
endif
a7000b1ba9d9 (svn r10051) -Add: git "version" detection so we've got at least some indication what version we're playing when using git ;)
rubidium
parents: 6523
diff changeset
   105
9765
509c47361e6e (svn r13901) -Fix: make sure REV_NR isn't empty, rev.cpp would fail to compile
smatz
parents: 9457
diff changeset
   106
# Make sure we have something in REV and REV_NR
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   107
ifeq ($(REV),)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   108
REV := norev000
9765
509c47361e6e (svn r13901) -Fix: make sure REV_NR isn't empty, rev.cpp would fail to compile
smatz
parents: 9457
diff changeset
   109
endif
509c47361e6e (svn r13901) -Fix: make sure REV_NR isn't empty, rev.cpp would fail to compile
smatz
parents: 9457
diff changeset
   110
ifeq ($(REV_NR),)
7780
12ef69de4e60 (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
parents: 7618
diff changeset
   111
REV_NR := 0
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   112
endif
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   113
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   114
# This helps to recompile if flags change
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   115
RES := $(shell if [ "`cat $(CONFIG_CACHE_COMPILER) 2>/dev/null`" != "$(CC_CFLAGS) $(CFLAGS)" ]; then echo "$(CC_CFLAGS) $(CFLAGS)" > $(CONFIG_CACHE_COMPILER); fi )
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   116
RES := $(shell if [ "`cat $(CONFIG_CACHE_LINKER) 2>/dev/null`" != "$(LDFLAGS) $(LIBS)" ]; then echo "$(LDFLAGS) $(LIBS)" > $(CONFIG_CACHE_LINKER); fi )
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   117
RES := $(shell if [ "`cat $(CONFIG_CACHE_ENDIAN) 2>/dev/null`" != "$(ENDIAN_FORCE)" ]; then echo "$(ENDIAN_FORCE)" > $(CONFIG_CACHE_ENDIAN); fi )
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   118
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   119
# If there is a change in the source-file-list, make sure we recheck the deps
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   120
RES := $(shell if [ "`cat $(CONFIG_CACHE_SOURCE) 2>/dev/null`" != "$(SRCS)" ]; then echo "$(SRCS)" > $(CONFIG_CACHE_SOURCE); fi )
5587
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5535
diff changeset
   121
# If there is a change in the revision, make sure we recompile rev.cpp
9766
dfded2c32238 (svn r13902) -Fix (r13375): rev.cpp wasn't recreated when --revision was used and the 'modified' status of sources changed
smatz
parents: 9765
diff changeset
   122
RES := $(shell if [ "`cat $(CONFIG_CACHE_VERSION) 2>/dev/null`" != "$(REV) $(MODIFIED)" ]; then echo "$(REV) $(MODIFIED)" > $(CONFIG_CACHE_VERSION); fi )
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   123
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   124
ifndef MAKEDEPEND
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   125
# The slow, but always correct, dep-check
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   126
DEP_MASK := %.d
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   127
DEPS     := $(OBJS:%.o=%.d)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   128
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   129
# Only include the deps if we are compiling everything
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   130
ifeq ($(filter $(ENDIAN_TARGETS) %.o clean mrproper, $(MAKECMDGOALS)),)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   131
-include $(DEPS)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   132
else
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   133
# In case we want to compile a single target, include the .d file for it
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   134
ifneq ($(filter %.o, $(MAKECMDGOALS)),)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   135
SINGLE_DEP := $(filter %.o, $(MAKECMDGOALS))
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   136
-include $(SINGLE_DEP:%.o=%.d)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   137
endif
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   138
endif
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   139
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   140
# Find the deps via GCC. Rarely wrong, but a bit slow
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   141
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   142
$(OBJS_C:%.o=%.d): %.d: $(SRC_DIR)/%.c $(FILE_DEP)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   143
	$(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.c=%.c)'
10239
cf55a4c21e7f (svn r14467) -Fix [FS#2350](r14443): use '~' instead of '#' as sed separator, it could be understood in a wrong way by shell
smatz
parents: 10220
diff changeset
   144
	$(Q)$(CC_HOST) $(CC_CFLAGS) $(CFLAGS) -MM $< | sed 's~^$(@F:%.d=%.o):~$@ $(@:%.d=%.o):~' > $@
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   145
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   146
$(OBJS_CPP:%.o=%.d): %.d: $(SRC_DIR)/%.cpp $(FILE_DEP)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   147
	$(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.cpp=%.cpp)'
10239
cf55a4c21e7f (svn r14467) -Fix [FS#2350](r14443): use '~' instead of '#' as sed separator, it could be understood in a wrong way by shell
smatz
parents: 10220
diff changeset
   148
	$(Q)$(CXX_HOST) $(CFLAGS) -MM $< | sed 's~^$(@F:%.d=%.o):~$@ $(@:%.d=%.o):~' > $@
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   149
5941
adaea39e84ab (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents: 5650
diff changeset
   150
$(OBJS_MM:%.o=%.d): %.d: $(SRC_DIR)/%.mm $(FILE_DEP)
adaea39e84ab (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents: 5650
diff changeset
   151
	$(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.mm=%.mm)'
10239
cf55a4c21e7f (svn r14467) -Fix [FS#2350](r14443): use '~' instead of '#' as sed separator, it could be understood in a wrong way by shell
smatz
parents: 10220
diff changeset
   152
	$(Q)$(CC_HOST) $(CFLAGS) -MM $< | sed 's~^$(@F:%.d=%.o):~$@ $(@:%.d=%.o):~' > $@
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   153
5478
13365b9cadb8 (svn r7762) [Configure] -Fix: .rc files were not ignored in old DEP system
truelight
parents: 5475
diff changeset
   154
$(OBJS_RC:%.o=%.d): %.d: $(SRC_DIR)/%.rc $(FILE_DEP)
5941
adaea39e84ab (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents: 5650
diff changeset
   155
	$(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.mm=%.mm)'
5478
13365b9cadb8 (svn r7762) [Configure] -Fix: .rc files were not ignored in old DEP system
truelight
parents: 5475
diff changeset
   156
	$(Q)touch $@
13365b9cadb8 (svn r7762) [Configure] -Fix: .rc files were not ignored in old DEP system
truelight
parents: 5475
diff changeset
   157
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   158
else
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   159
# The much faster, but can be wrong, dep-check
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   160
DEP_MASK :=
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   161
DEPS     := Makefile.dep
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   162
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   163
# Only include the deps if we are not cleaning
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   164
ifeq ($(filter $(ENDIAN_TARGETS) depend clean mrproper, $(MAKECMDGOALS)),)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   165
-include Makefile.dep
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   166
endif
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   167
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   168
# Make sure that only 'make depend' ALWAYS triggers a recheck
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   169
ifeq ($(filter depend, $(MAKECMDGOALS)),)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   170
Makefile.dep: $(FILE_DEP) $(SRCS:%=$(SRC_DIR)/%) $(CONFIG_CACHE_SOURCE)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   171
else
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   172
Makefile.dep: FORCE
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   173
endif
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   174
	$(E) '$(STAGE) DEP CHECK (all files)'
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   175
	$(Q)rm -f Makefile.dep.tmp
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   176
	$(Q)touch Makefile.dep.tmp
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   177
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   178
# Calculate the deps via makedepend
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   179
	$(Q)$(MAKEDEPEND) -f$(SRC_OBJS_DIR)/Makefile.dep.tmp -o.o -Y -v -- $(CFLAGS_MAKEDEP) -- $(SRCS:%=$(SRC_DIR)/%) 2>/dev/null
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   180
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   181
# Convert x:/... paths to /x/... for mingw
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   182
ifeq ($(OS), MINGW)
10239
cf55a4c21e7f (svn r14467) -Fix [FS#2350](r14443): use '~' instead of '#' as sed separator, it could be understood in a wrong way by shell
smatz
parents: 10220
diff changeset
   183
	@cat Makefile.dep.tmp | sed 's~\([a-zA-Z]\):\/~\/\1\/~g' > Makefile.dep.tmp.mingw
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   184
	@cp Makefile.dep.tmp.mingw Makefile.dep.tmp
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   185
	@rm -f Makefile.dep.tmp.mingw
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   186
endif
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   187
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   188
# Remove all comments and includes that don't start with $(SRC_DIR)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   189
# Remove $(SRC_DIR) from object-file-name
6081
57d2fa5e3073 (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
parents: 5979
diff changeset
   190
	@$(AWK) '                           \
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   191
	/^# DO NOT/ { print $$0 ; next}     \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   192
	/^#/ {next}                         \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   193
	/:/ {                               \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   194
		left = NF - 1;                    \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   195
		for (n = 2; n <= NF; n++) {       \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   196
			if (match($$n, "^$(SRC_DIR)") == 0) { \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   197
				$$n = "";                     \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   198
				left--;                       \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   199
			}                               \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   200
		}                                 \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   201
		gsub("$(SRC_DIR)/", "", $$1);     \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   202
		if (left > 0) {                   \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   203
			print $$0;                      \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   204
			$$1 = "Makefile.dep:";          \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   205
			print $$0;                      \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   206
		}                                 \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   207
		next                              \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   208
	}                                   \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   209
	{                                   \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   210
		print $$0                         \
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   211
	}                                   \
10239
cf55a4c21e7f (svn r14467) -Fix [FS#2350](r14443): use '~' instead of '#' as sed separator, it could be understood in a wrong way by shell
smatz
parents: 10220
diff changeset
   212
	' < Makefile.dep.tmp | sed 's~  *~ ~g;s~ $$~~' | $(SORT) > Makefile.dep
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   213
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   214
	$(Q)rm -f Makefile.dep.tmp Makefile.dep.tmp.bak
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   215
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   216
endif
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   217
5650
abe82ec83232 (svn r8109) -Fix r5693: ignore .hpp to avoid problems with deps
glx
parents: 5610
diff changeset
   218
# Avoid problems with deps if a .h/.hpp file is deleted without the deps
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   219
#  being updated. Now the Makefile continues, the deps are recreated
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   220
#  and all will be fine.
5650
abe82ec83232 (svn r8109) -Fix r5693: ignore .hpp to avoid problems with deps
glx
parents: 5610
diff changeset
   221
%.h %.hpp:
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   222
	@true
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   223
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   224
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   225
# Compile all the files according to the targets
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   226
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   227
$(OBJS_C): %.o: $(SRC_DIR)/%.c $(DEP_MASK) $(FILE_DEP)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   228
	$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.c=%.c)'
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   229
	$(Q)$(CC_HOST) $(CC_CFLAGS) $(CFLAGS) -c -o $@ $<
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   230
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   231
$(OBJS_CPP): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   232
	$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
6523
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
   233
ifeq ($(GCC295), 1)
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
   234
	$(Q)$(CXX_HOST) -E $(CFLAGS) $< | $(GCC295_FIX) | $(GCC295_FIX_2) | $(CXX_HOST) $(CFLAGS) -c -o $@ -x c++ -
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
   235
else
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   236
	$(Q)$(CXX_HOST) $(CFLAGS) -c -o $@ $<
6523
bbc566ffb999 (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
truelight
parents: 6104
diff changeset
   237
endif
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   238
5941
adaea39e84ab (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents: 5650
diff changeset
   239
$(OBJS_MM): %.o: $(SRC_DIR)/%.mm $(DEP_MASK) $(FILE_DEP)
adaea39e84ab (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents: 5650
diff changeset
   240
	$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.mm=%.mm)'
adaea39e84ab (svn r8605) -Codechange: [OSX] changed all objective C to objective C++
bjarni
parents: 5650
diff changeset
   241
	$(Q)$(CC_HOST) $(CFLAGS) -c -o $@ $<
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   242
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   243
$(OBJS_RC): %.o: $(SRC_DIR)/%.rc $(FILE_DEP)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   244
	$(E) '$(STAGE) Compiling resource $(<:$(SRC_DIR)/%.rc=%.rc)'
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   245
	$(Q)$(WINDRES) -o $@ -I $(MEDIA_DIR) $<
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   246
5610
68b36ebb3469 (svn r8067) -Fix (r7759): if bin/$(TTD) was removed, it did not get placed back on make unless $(TTD) got relinked.
rubidium
parents: 5587
diff changeset
   247
$(BIN_DIR)/$(TTD): $(TTD)
68b36ebb3469 (svn r8067) -Fix (r7759): if bin/$(TTD) was removed, it did not get placed back on make unless $(TTD) got relinked.
rubidium
parents: 5587
diff changeset
   248
	$(Q)cp $< $@
68b36ebb3469 (svn r8067) -Fix (r7759): if bin/$(TTD) was removed, it did not get placed back on make unless $(TTD) got relinked.
rubidium
parents: 5587
diff changeset
   249
7564
fa54ab680589 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents: 7256
diff changeset
   250
$(TTD): $(OBJS) $(CONFIG_CACHE_LINKER)
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   251
	$(E) '$(STAGE) Linking $@'
5979
8209c942efd5 (svn r8678) [PSP] -Add: added LIBS and CFLAGS needed to compile PSP
truelight
parents: 5970
diff changeset
   252
ifeq ($(OS), PSP)
6084
1bf4040cd72e (svn r8819) [Config] -Documentation: added why we need CC_HOST for linking on PSP
truelight
parents: 6081
diff changeset
   253
	# Because of a bug in the PSP GCC tools, linking via CXX results
1bf4040cd72e (svn r8819) [Config] -Documentation: added why we need CC_HOST for linking on PSP
truelight
parents: 6081
diff changeset
   254
	#  in total chaos and more problems then you can handle. So we need
1bf4040cd72e (svn r8819) [Config] -Documentation: added why we need CC_HOST for linking on PSP
truelight
parents: 6081
diff changeset
   255
	#  CC to link OpenTTD for PSP
7564
fa54ab680589 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents: 7256
diff changeset
   256
	$(Q)$(CC_HOST) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
5979
8209c942efd5 (svn r8678) [PSP] -Add: added LIBS and CFLAGS needed to compile PSP
truelight
parents: 5970
diff changeset
   257
else
7564
fa54ab680589 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents: 7256
diff changeset
   258
	$(Q)$(CXX_HOST) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
5979
8209c942efd5 (svn r8678) [PSP] -Add: added LIBS and CFLAGS needed to compile PSP
truelight
parents: 5970
diff changeset
   259
endif
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   260
ifdef STRIP
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   261
	$(Q)$(STRIP) $@
10385
4f9838649c7f (svn r14636) -Add: DOS port of OpenTTD, without network support though.
rubidium
parents: 10239
diff changeset
   262
ifeq ($(OS), DOS)
4f9838649c7f (svn r14636) -Add: DOS port of OpenTTD, without network support though.
rubidium
parents: 10239
diff changeset
   263
	$(E) '$(STAGE) Adding CWSDPMI stub to $@'
4f9838649c7f (svn r14636) -Add: DOS port of OpenTTD, without network support though.
rubidium
parents: 10239
diff changeset
   264
	$(Q)$(ROOT_DIR)/os/dos/make_dos_binary_selfcontained.sh $(SRC_OBJS_DIR)/$@
4f9838649c7f (svn r14636) -Add: DOS port of OpenTTD, without network support though.
rubidium
parents: 10239
diff changeset
   265
endif
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   266
endif
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   267
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   268
# The targets to compile the endian-code
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   269
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   270
endian_target.h: $(ENDIAN_CHECK) $(CONFIG_CACHE_ENDIAN)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   271
	$(E) '$(STAGE) Testing endianness for target'
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   272
	$(Q)./$(ENDIAN_CHECK) $(ENDIAN_FORCE) > $@
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   273
5587
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5535
diff changeset
   274
$(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   275
	$(E) '$(STAGE) Compiling and Linking $@'
5587
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5535
diff changeset
   276
	$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $< -o $@
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   277
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   278
# Revision files
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   279
7564
fa54ab680589 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents: 7256
diff changeset
   280
$(SRC_DIR)/rev.cpp: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/rev.cpp.in
10239
cf55a4c21e7f (svn r14467) -Fix [FS#2350](r14443): use '~' instead of '#' as sed separator, it could be understood in a wrong way by shell
smatz
parents: 10220
diff changeset
   281
	$(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
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   282
7564
fa54ab680589 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents: 7256
diff changeset
   283
$(SRC_DIR)/ottdres.rc: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/ottdres.rc.in
10239
cf55a4c21e7f (svn r14467) -Fix [FS#2350](r14443): use '~' instead of '#' as sed separator, it could be understood in a wrong way by shell
smatz
parents: 10220
diff changeset
   284
	$(Q)cat $(SRC_DIR)/ottdres.rc.in | sed "s~@@REVISION@@~$(REV_NR)~g;s~@@VERSION@@~$(REV)~g;s~@@DATE@@~`date +%d.%m.%y`~g" > $(SRC_DIR)/ottdres.rc
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   285
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   286
FORCE:
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   287
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   288
depend: $(DEPS)
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   289
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   290
clean:
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   291
	$(E) '$(STAGE) Cleaning up object files'
7564
fa54ab680589 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents: 7256
diff changeset
   292
	$(Q)rm -f $(DEPS) $(OBJS) $(TTD) $(TTD:%=$(BIN_DIR)/%) $(CONFIG_CACHE_COMPILER) $(CONFIG_CACHE_LINKER) $(CONFIG_CACHE_ENDIAN) $(CONFIG_CACHE_SOURCE) $(ENDIAN_TARGETS)
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   293
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   294
mrproper: clean
7564
fa54ab680589 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents: 7256
diff changeset
   295
	$(Q)rm -f $(SRC_DIR)/rev.cpp $(SRC_DIR)/ottdres.rc
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   296
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   297
%.o:
5970
257bde043070 (svn r8658) -Fix r8605: missed an error message renaming from m to mm (objC to objC++)
bjarni
parents: 5941
diff changeset
   298
	@echo '$(STAGE) No such source-file: $(@:%.o=%).[c|cpp|mm|rc]'
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   299
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   300
.PHONY: all mrproper depend clean FORCE