Makefile
changeset 0 29654efe3188
child 32 bc861ea6d23b
equal deleted inserted replaced
-1:000000000000 0:29654efe3188
       
     1 # This Makefile is partially based on "a completely generic Makefile",
       
     2 # originally created by Justin Husted <husted@cs>
       
     3 #
       
     4 # Rewrite and sane dependencies support by Petr Baudis <pasky@ucw.cz>
       
     5 # Cygwin support and configuration by Jaen Saul <slowbyte@hot.ee>
       
     6 # A lot of modifications by Bjarni Corfitzen <bjarni@openttd.com>
       
     7 #
       
     8 # Last modified by: $Author: strigeus $
       
     9 # On: $Date: 2004/03/11 19:15:06 $
       
    10 
       
    11 
       
    12 ##############################################################################
       
    13 #
       
    14 # Usage
       
    15 #
       
    16 
       
    17 # Synopsis:
       
    18 #
       
    19 # make WITH_ZLIB=1 UNIX=1 MANUAL_CONFIG=1
       
    20 #
       
    21 # (See below for the list of possible options.)
       
    22 #
       
    23 # Alternately, you can run make without the MANUAL_CONFIG part. It then
       
    24 # generates Makefile.config, where you can customize all the options.
       
    25 # However beware that for all subsequent calls the option values from
       
    26 # Makefile.config take precedence to the commandline options.
       
    27 #
       
    28 # (That means that you probably want to either specify the options on command
       
    29 # line together with MANUAL_CONFIG=1 or you want to specify no commandline
       
    30 # options at all.)
       
    31 
       
    32 # Targets:
       
    33 #
       
    34 # Defaults to building binary
       
    35 # clean: remove intermediate build files
       
    36 # mrproper: remove intermediate files and makefile configuration
       
    37 # upgradeconf: add new options to old Makefile.config
       
    38 # osx: OS X application
       
    39 
       
    40 # Options:
       
    41 #
       
    42 # Summary of OS choice defines
       
    43 # WIN32: building on Windows
       
    44 # UNIX: building on *nix derivate (Linux, FreeBSD)
       
    45 # OSX: building on Mac OS X
       
    46 # MORPHOS: building on MorphOS
       
    47 #
       
    48 # Summary of library choice defines
       
    49 # WITH_ZLIB: savegames using zlib
       
    50 # WITH_PNG: screenshots using PNG
       
    51 # WITH_SDL: SDL video driver support
       
    52 #
       
    53 # Summary of other defines:
       
    54 # MANUAL_CONFIG: do not use Makefile.config, config options set manually
       
    55 # DEBUG: build in debug mode
       
    56 # PROFILE: build in profile mode, disables -s and -fomit-frame-pointer
       
    57 # DISPLAY_WARNINGS: when off, some errors are not displayed while compiling
       
    58 # TRANSLATOR: build in translator mode (untranslated strings are prepended by
       
    59 #             a <TODO> mark)
       
    60 # RELEASE: this will be the released version number. It replaces all places
       
    61 #          where it normally would print the revision number
       
    62 # MIDI: if set, it will use it as custom path to midi player. 
       
    63 #  If unset, it will use the hardcoded path in the c code
       
    64 #
       
    65 # DATA_DIR_PREFIX: This sets the dir OpenTTD looks for the needed files. 
       
    66 #   MUST END WITH / if defined
       
    67 #
       
    68 # STATIC: link statically
       
    69 # CYGWIN: build in Cygwin environment
       
    70 # MINGW: build with MingW compiler, link with MingW libraries
       
    71 #
       
    72 # Experimental (does not work properly):
       
    73 # WITH_NETWORK: enable networking
       
    74 # WITH_DIRECTMUSIC: enable DirectMusic MIDI support
       
    75 
       
    76 
       
    77 ##############################################################################
       
    78 #
       
    79 # Configuration
       
    80 #
       
    81 
       
    82 # CONFIG_WRITER have to be found even for manual configuration
       
    83 CONFIG_WRITER=makefiledir/Makefile.config_writer
       
    84 
       
    85 ifndef MANUAL_CONFIG
       
    86 # Automatic configuration
       
    87 MAKE_CONFIG:=Makefile.config
       
    88 MAKEFILE:=Makefile
       
    89 LIB_DETECTION=makefiledir/Makefile.libdetection
       
    90 CONFIG_WRITER=makefiledir/Makefile.config_writer
       
    91 
       
    92 # Apply automatic configuration
       
    93 # See target section for how this is built, suppress errors
       
    94 # since first time it isn't found but make reads this twice
       
    95 -include $(MAKE_CONFIG)
       
    96 else
       
    97 CONFIG_INCLUDED:=1
       
    98 endif
       
    99 
       
   100 # tests if makefile.config contains the new needed SDL-CONFIG
       
   101 # it updates makefile.config if needed. Flags like ENABLE_NETWORK are remembered
       
   102 ifndef SDL-CONFIG
       
   103 ifdef WITH_SDL
       
   104 ifndef MANUAL_CONFIG
       
   105 #network is enabled by default
       
   106 ENABLE_NETWORK:=1
       
   107 UPDATECONFIG:=upgradeconf
       
   108 CONFIG_INCLUDED:=
       
   109 else
       
   110 # this should define SDL-CONFIG for manual configuration
       
   111 ifeq ($(shell uname),FreeBSD)
       
   112 SDL-CONFIG:=sdl11-config
       
   113 else
       
   114 SDL-CONFIG:=sdl-config
       
   115 endif
       
   116 endif
       
   117 endif
       
   118 endif
       
   119 
       
   120 ifndef CONFIG_INCLUDED
       
   121 -include $(LIB_DETECTION)
       
   122 endif
       
   123 
       
   124 ifdef DISPLAY_WARNINGS
       
   125 WARNING_DISPLAY:=-fstrict-aliasing
       
   126 else
       
   127 WARNING_DISPLAY:=-fno-strict-aliasing
       
   128 endif
       
   129 
       
   130 ifdef STATIC
       
   131 ifndef WIN32
       
   132 ifndef OSX
       
   133 ifndef MORPHOS
       
   134 ifndef SKIP_STATIC_CHECK
       
   135 $(error Static is only known to work on MorphOS and MacOSX!!! --- Check makefile.config for more info and howto bypass this check)
       
   136 endif
       
   137 endif
       
   138 endif
       
   139 endif
       
   140 endif
       
   141 
       
   142 
       
   143 # Force SDL on UNIX platforms
       
   144 ifndef WITH_SDL
       
   145 ifdef UNIX
       
   146 $(error You need to have SDL installed in order to run OpenTTD on UNIX.)
       
   147 endif
       
   148 endif
       
   149 
       
   150 
       
   151 
       
   152 ##############################################################################
       
   153 #
       
   154 # Compiler configuration
       
   155 #
       
   156 
       
   157 CC=gcc
       
   158 CXX=g++
       
   159 
       
   160 ifdef MORPHOS
       
   161 CC += -noixemul -pipe
       
   162 CXX += -noixemul -pipe
       
   163 endif
       
   164 
       
   165 # Executable file extension
       
   166 ifdef WIN32
       
   167 EXE=.exe
       
   168 else
       
   169 EXE=
       
   170 endif
       
   171 
       
   172 # Set output executable names
       
   173 TTD=ttd$(EXE)
       
   174 STRGEN=strgen/strgen$(EXE)
       
   175 OSXAPP="OpenTTD.app"
       
   176 
       
   177 # What revision are we compiling, if we have an idea?
       
   178 REV_NUMBER := $(shell if test -d .svn; then svnversion . | tr -dc 0-9; fi)
       
   179 
       
   180 ifdef RELEASE
       
   181 REV:=$(RELEASE)
       
   182 else
       
   183 REV := $(shell if test -d .svn; then echo -n r; svnversion .; fi)
       
   184 tmp_test:=$(shell echo "$(REV)" | grep "M" )
       
   185 ifdef tmp_test
       
   186 REV_NUMBER:=1
       
   187 endif
       
   188 endif
       
   189 
       
   190 ifndef REV_NUMBER
       
   191 REV_NUMBER:=0
       
   192 endif
       
   193 
       
   194 # MorphOS needs builddate
       
   195 BUILDDATE=`date +%d.%m.%y`
       
   196 
       
   197 # AMD64 needs a little more settings to work
       
   198 ifeq ($(shell uname -m), x86_64)
       
   199 endwarnings:=endwarnings
       
   200 64_bit_warnings:=64_bit_warnings
       
   201 BASECFLAGS += -m64 -D_LITTLE_ENDIAN
       
   202 endif
       
   203 
       
   204 
       
   205 # When calling the compiler, use these flags
       
   206 # -g	debugging symbols
       
   207 # -Wall	all warnings
       
   208 # -s    automatic strip
       
   209 #
       
   210 # You may also want:
       
   211 # -O	optimize or -O2 fully optimize (O's above 2 are not recommended)
       
   212 # -pg	profile - generate profiling data.  See "man gprof" to use this.
       
   213 
       
   214 CFLAGS=-Wall -Wno-multichar
       
   215 CDEFS=-DWITH_REV
       
   216 LDFLAGS=
       
   217 LIBS=
       
   218 
       
   219 ifdef DEBUG
       
   220 # Debug mode
       
   221 CDEFS += -D_DEBUG
       
   222 BASECFLAGS += -g
       
   223 else
       
   224 ifdef PROFILE
       
   225 BASECFLAGS += -pg
       
   226 else
       
   227 # Release mode
       
   228 ifndef MORPHOS
       
   229 # automatical strip breaks under morphos
       
   230 BASECFLAGS += -s
       
   231 LDFLAGS += -s
       
   232 endif
       
   233 endif
       
   234 
       
   235 ifdef OSX
       
   236 # these compilerflags makes the app run as fast as possible without making the app unstable. It works on G3 or newer
       
   237 BASECFLAGS += -O3 -funroll-loops -fsched-interblock -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 -mdynamic-no-pic -mpowerpc-gpopt -force_cpusubtype_ALL $(WARNING_DISPLAY)
       
   238 else
       
   239 ifdef MORPHOS
       
   240 BASECFLAGS += -O2 -funroll-loops -fexpensive-optimizations -mstring -mmultiple $(WARNING_DISPLAY)
       
   241 else
       
   242 BASECFLAGS += -O2 $(WARNING_DISPLAY)
       
   243 endif
       
   244 ifndef PROFILE
       
   245 BASECFLAGS += -fomit-frame-pointer
       
   246 endif
       
   247 endif
       
   248 endif
       
   249 
       
   250 ifdef STATIC
       
   251 ifndef OSX	# OSX can't build static if -static flag is used
       
   252 LDFLAGS += -static
       
   253 endif
       
   254 endif
       
   255 
       
   256 # If building on Cygwin/MingW don't link with Cygwin libs
       
   257 ifdef WIN32
       
   258 ifdef MINGW
       
   259 ifdef CYGWIN
       
   260 BASECFLAGS += -mno-cygwin
       
   261 LDFLAGS += -mno-cygwin
       
   262 endif
       
   263 endif
       
   264 endif
       
   265 
       
   266 CFLAGS += $(BASECFLAGS)
       
   267 
       
   268 ifdef UNIX
       
   269 CDEFS += -DUNIX
       
   270 endif
       
   271 
       
   272 # SDL config
       
   273 ifdef WITH_SDL
       
   274 CDEFS += -DWITH_SDL
       
   275 CFLAGS += `$(SDL-CONFIG) --cflags`
       
   276 ifdef STATIC
       
   277 LIBS += `$(SDL-CONFIG) --static-libs`
       
   278 else
       
   279 LIBS += `$(SDL-CONFIG) --libs`
       
   280 endif
       
   281 endif
       
   282 
       
   283 
       
   284 # zlib config
       
   285 ifdef WITH_ZLIB
       
   286 	CDEFS +=  -DWITH_ZLIB
       
   287 	ifdef STATIC
       
   288 		ifdef OSX
       
   289 # zlib is default on OSX, so everybody have it. No need for static linking
       
   290 			LIBS += -lz
       
   291 		else
       
   292 			ifndef STATIC_ZLIB_PATH
       
   293 				ifndef MANUAL_CONFIG
       
   294 					# updates makefile.config with the zlib path
       
   295 					UPDATECONFIG:=upgradeconf
       
   296 				endif
       
   297 				TEMP:=$(shell ls /lib 2>/dev/null | grep "zlib.a")$(shell ls /lib 2>/dev/null | grep "libz.a")
       
   298 				ifdef TEMP
       
   299 					STATIC_ZLIB_PATH:=/lib/$(TEMP)
       
   300 				else
       
   301 					TEMP:=$(shell ls /usr/lib 2>/dev/null | grep "zlib.a")$(shell ls /usr/lib 2>/dev/null | grep "libz.a")
       
   302 					ifdef TEMP
       
   303 						STATIC_ZLIB_PATH:=/usr/lib/$(TEMP)
       
   304 					else
       
   305 						TEMP:=$(shell ls /usr/local/lib 2>/dev/null | grep "zlib.a")$(shell ls /usr/local/lib 2>/dev/null | grep "libz.a")
       
   306 						ifdef TEMP
       
   307 							STATIC_ZLIB_PATH:=/usr/local/lib/$(TEMP)
       
   308 						endif
       
   309 					endif
       
   310 				endif
       
   311 			endif
       
   312 			LIBS += $(STATIC_ZLIB_PATH)
       
   313 		endif
       
   314 	else
       
   315 		LIBS += -lz
       
   316 	endif
       
   317 endif
       
   318 
       
   319 # libpng config
       
   320 ifdef WITH_PNG
       
   321 CDEFS += -DWITH_PNG
       
   322 # FreeBSD doesn't use libpng-config
       
   323 ifdef FREEBSD
       
   324 LIBS += -lpng
       
   325 else
       
   326 CFLAGS += `libpng-config --cflags`
       
   327 ifdef OSX
       
   328 ifdef STATIC
       
   329 # Seems like we need a tiny hack for OSX static to work
       
   330 LIBS += `libpng-config --prefix`/lib/libpng.a
       
   331 else
       
   332 LIBS += `libpng-config  --libs`
       
   333 endif
       
   334 else
       
   335 # seems like older libpng versions are broken and need this
       
   336 PNGCONFIG_FLAGS = --ldflags --libs
       
   337 ifdef STATIC
       
   338 LIBS += `libpng-config --static $(PNGCONFIG_FLAGS)`
       
   339 else
       
   340 LIBS += `libpng-config  $(PNGCONFIG_FLAGS)`
       
   341 endif
       
   342 endif
       
   343 endif
       
   344 endif
       
   345 
       
   346 
       
   347 ifdef TRANSLATOR
       
   348 STRGEN_FLAGS=-t
       
   349 else
       
   350 STRGEN_FLAGS=
       
   351 endif
       
   352 
       
   353 # file paths setup
       
   354 ifdef GAME_DATA_DIR
       
   355 CDEFS += -DGAME_DATA_DIR=\"$(GAME_DATA_DIR)\"
       
   356 endif
       
   357 
       
   358 ifdef PERSONAL_DIR
       
   359 CDEFS += -DPERSONAL_DIR=\"$(PERSONAL_DIR)\"
       
   360 endif
       
   361 
       
   362 ifdef USE_HOMEDIR
       
   363 CDEFS += -DUSE_HOMEDIR
       
   364 endif
       
   365 
       
   366 # MIDI setup
       
   367 ifdef OSX
       
   368 ifndef MIDI
       
   369 MIDI:=$(OSXAPP)/contents/macos/track_starter
       
   370 endif
       
   371 endif
       
   372 
       
   373 ifdef MIDI
       
   374 CDEFS += -DEXTERNAL_PLAYER=\"$(MIDI)\"
       
   375 ifdef MIDI_ARG
       
   376 CDEFS += -DMIDI_ARG=\"$(MIDI_ARG)\"
       
   377 endif
       
   378 endif
       
   379 
       
   380 # Experimental
       
   381 ifdef WITH_NETWORK
       
   382 CDEFS += -DENABLE_NETWORK
       
   383 ifdef UNIX
       
   384 ifndef OSX
       
   385 ifndef MORPHOS
       
   386 # this have caused problems on many platforms and disabling it didn't break anything
       
   387 # now we test if disabling it as a general breaks it for anybody
       
   388 #LIBS += -lresolv
       
   389 endif
       
   390 endif
       
   391 endif
       
   392 endif
       
   393 
       
   394 ifdef WITH_DIRECTMUSIC
       
   395 CDEFS += -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT
       
   396 endif
       
   397 
       
   398 ifdef WIN32
       
   399 LIBS += -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32 -lstdc++
       
   400 TTDLDFLAGS += -Wl,--subsystem,windows
       
   401 endif
       
   402 
       
   403 # sets up the paths for use for make install
       
   404 ifdef BINARY_DIR
       
   405 BINARY_INSTALL:=$(BINARY_DIR)$(TTD)
       
   406 else
       
   407 BINARY_INSTALL:=$(INSTALL_DIR)$(TTD)
       
   408 endif
       
   409 ifdef DATA_DIR_PREFIX
       
   410 DATA_DIR:=$(DATA_DIR_PREFIX)
       
   411 else
       
   412 DATA_DIR:=$(INSTALL_DIR)
       
   413 endif
       
   414 
       
   415 ##############################################################################
       
   416 #
       
   417 # What to compile
       
   418 # (users do not want to modify anything below)
       
   419 #
       
   420 
       
   421 
       
   422 ### Sources
       
   423 
       
   424 ttd_SOURCES = \
       
   425 	ai.c aircraft_cmd.c aircraft_gui.c airport.c airport_gui.c bridge_gui.c \
       
   426 	clear_cmd.c command.c disaster_cmd.c dock_gui.c dummy_land.c economy.c \
       
   427 	engine.c engine_gui.c fileio.c gfx.c graph_gui.c industry_cmd.c \
       
   428 	industry_gui.c intro_gui.c landscape.c main_gui.c misc.c misc_cmd.c \
       
   429 	misc_gui.c music_gui.c namegen.c network.c news_gui.c oldloader.c \
       
   430 	order_cmd.c order_gui.c pathfind.c player_gui.c players.c rail_cmd.c \
       
   431 	rail_gui.c road_cmd.c road_gui.c roadveh_cmd.c roadveh_gui.c saveload.c \
       
   432 	settings_gui.c ship_cmd.c ship_gui.c smallmap_gui.c sound.c \
       
   433 	spritecache.c station_cmd.c station_gui.c strings.c subsidy_gui.c \
       
   434 	texteff.c town_cmd.c town_gui.c train_cmd.c train_gui.c tree_cmd.c \
       
   435 	ttd.c tunnelbridge_cmd.c unmovable_cmd.c vehicle.c viewport.c \
       
   436 	water_cmd.c widget.c window.c minilzo.c screenshot.c settings.c rev.c \
       
   437 	grfspecial.c terraform_gui.c network_gui.c
       
   438 
       
   439 ifdef WITH_SDL
       
   440 ttd_SOURCES += sdl.c
       
   441 endif
       
   442 
       
   443 ifdef WIN32
       
   444 ttd_SOURCES += win32.c w32dm.c
       
   445 else
       
   446 ttd_SOURCES += extmidi.c unix.c
       
   447 endif
       
   448 
       
   449 ttd_OBJS = $(ttd_SOURCES:%.c=%.o)
       
   450 
       
   451 ifdef WIN32
       
   452 # Resource file
       
   453 ttd_OBJS += winres.o
       
   454 endif
       
   455 
       
   456 ifdef WITH_DIRECTMUSIC
       
   457 ttd_SOURCES += w32dm2.cpp
       
   458 ttd_OBJS += w32dm2.o
       
   459 endif
       
   460 
       
   461 ttd_DEPS1 = $(foreach obj,$(ttd_OBJS),.deps/$(obj))
       
   462 ttd_DEPS = $(ttd_DEPS1:%.o=%.P)
       
   463 
       
   464 LANG_TXT = $(filter-out %.unfinished.txt,$(wildcard lang/*.txt))
       
   465 LANGS = $(LANG_TXT:%.txt=%.lng)
       
   466 
       
   467 C_COMPILE = $(CC) $(CFLAGS) $(CDEFS)
       
   468 CXX_COMPILE = $(CXX) $(CFLAGS) $(CDEFS)
       
   469 
       
   470 C_BUILD = $(C_COMPILE) -c
       
   471 CXX_BUILD = $(CXX_COMPILE) -c
       
   472 
       
   473 C_LINK = $(CC) $(LDFLAGS) -o
       
   474 
       
   475 
       
   476 ##############################################################################
       
   477 #
       
   478 # Targets
       
   479 #
       
   480 
       
   481 
       
   482 ### Normal build rules
       
   483 
       
   484 
       
   485 ifdef OSX
       
   486 OSX:=OSX
       
   487 endif
       
   488 
       
   489 
       
   490 all: $(UPDATECONFIG) $(TTD) $(OSX) $(endwarnings)
       
   491 
       
   492 
       
   493 $(TTD): table/strings.h $(ttd_OBJS) $(LANGS) $(MAKE_CONFIG)
       
   494 	$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS)
       
   495 
       
   496 $(OSX):
       
   497 	@mkdir -p $(OSXAPP)/Contents/MacOS
       
   498 	@mkdir -p $(OSXAPP)/Contents/Resources
       
   499 	@echo "APPL????" > $(OSXAPP)/Contents/PkgInfo
       
   500 	@cp os/macos/ttd.icns $(OSXAPP)/Contents/Resources/
       
   501 	@os/macos/plistgen.sh $(OSXAPP) $(REV)
       
   502 	@cp os/macos/track_starter $(OSXAPP)/contents/macos
       
   503 	@ls os/macos | grep -q "\.class" || \
       
   504 	javac os/macos/OpenTTDMidi.java
       
   505 	@cp os/macos/OpenTTDMidi.class $(OSXAPP)/contents/macos
       
   506 	@cp $(TTD) $(OSXAPP)/Contents/MacOS/ttd
       
   507 
       
   508 $(endwarnings): $(64_bit_warnings)
       
   509 
       
   510 $(64_bit_warnings):
       
   511 	$(warning 64 bit CPUs will get some 64 bit specific bugs!)
       
   512 	$(warning If you see any bugs, include in your bug report that you use a 64 bit CPU)
       
   513 
       
   514 $(STRGEN): strgen/strgen.c rev.o
       
   515 	$(CC) $(BASECFLAGS) $(CDEFS) -o $@ $^
       
   516 
       
   517 lang/english.lng: lang/english.txt $(STRGEN)
       
   518 	$(STRGEN)
       
   519 	
       
   520 table/strings.h: lang/english.lng
       
   521 
       
   522 lang/%.lng: lang/%.txt $(STRGEN)
       
   523 	$(STRGEN) $(STRGEN_FLAGS) $<
       
   524 
       
   525 winres.o: ttd.rc
       
   526 	windres -o $@ $<
       
   527 
       
   528 
       
   529 rev.c: FORCE
       
   530 	@# setting the revision number in a place, there the binary can read it
       
   531 	@echo 'const char _openttd_revision[] = "'$(REV)'";' >>rev.c.new
       
   532 	@echo 'const int _revision_number = $(REV_NUMBER);' >>rev.c.new
       
   533 	@# some additions for MorphOS versions tag
       
   534 	@echo '#ifdef __MORPHOS__'  >>rev.c.new
       
   535 	@echo 'const char morphos_versions_tag[] = "\\0$$VER: OpenTTD '$(REV)' ('${BUILDDATE}') © OpenTTD Team [MorphOS, PowerPC]";'  >>rev.c.new
       
   536 	@echo '#endif' >>rev.c.new
       
   537 	@# Only update the real rev.c if it actually changed, to prevent
       
   538 	@# useless rebuilds.
       
   539 	@cmp -s rev.c rev.c.new 2>/dev/null || mv rev.c.new rev.c
       
   540 	@rm -f rev.c.new
       
   541 
       
   542 FORCE:
       
   543 
       
   544 
       
   545 clean:
       
   546 	rm -rf .deps *~ $(TTD) $(STRGEN) core table/strings.h $(LANGS) $(ttd_OBJS)
       
   547 
       
   548 mrproper: clean
       
   549 	rm -rf $(MAKE_CONFIG)
       
   550 
       
   551 ifndef OSX
       
   552 ifndef MORPHOS
       
   553 install:
       
   554 	@if [ "$(INSTALL)" == "" ]; then $(error make install is highly experimental at his state and not\
       
   555 	tested very much - use at your own risk - to use run \"make install INSTALL:=1\" - make sure makefile.config\
       
   556 	is set correctly up - run \"make upgradeconf\")
       
   557 	@if [ "$(DATA_DIR)" == "" ]; then $(error no install path set - check makefile.config)
       
   558 	mkdir -p $(DATA_DIR)/lang
       
   559 	mkdir -p $(DATA_DIR)/data
       
   560 	cp $(TTD) $(BINARY_INSTALL)
       
   561 	cp lang/*.lng $(DATA_DIR)/lang
       
   562 	cp data/*.grf $(DATA_DIR)/data
       
   563 else	#MorphOS
       
   564 install:
       
   565 	$(error make install is not supported on MorphOS)
       
   566 endif
       
   567 else	# OSX
       
   568 install:
       
   569 	$(error make install is not supported on MacOSX)
       
   570 endif
       
   571 
       
   572 
       
   573 love:
       
   574 	@echo "YES! I thought you would never ask. We will have a great time. You can keep me turned on all night"
       
   575 
       
   576 .PHONY: clean all $(OSX) install $(64_bit_warnings) $(endwarnings) love
       
   577 
       
   578 
       
   579 ### Automatic configuration
       
   580 -include $(CONFIG_WRITER)
       
   581 	
       
   582 
       
   583 # Export all variables set to subprocesses (a bit dirty)
       
   584 .EXPORT_ALL_VARIABLES:
       
   585 upgradeconf: $(MAKE_CONFIG)
       
   586 	rm $(MAKE_CONFIG)
       
   587 	$(MAKE) $(MAKE_CONFIG)
       
   588 
       
   589 .PHONY: upgradeconf
       
   590 
       
   591 
       
   592 ### Internal build rules
       
   593 
       
   594 # This makes sure the .deps dir is always around.
       
   595 DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
       
   596 
       
   597 # Introduce the dependencies
       
   598 -include $(ttd_DEPS)
       
   599 
       
   600 # This compiles the object file as well as silently updating its dependencies
       
   601 # list at the same time. It is not an issue that they aren't around during the
       
   602 # first compilation round as we just build everything at that time anyway,
       
   603 # therefore we do not need to watch deps.
       
   604 %.o: %.c $(MAKE_CONFIG)
       
   605 	@echo '$(C_BUILD) $<'; \
       
   606 		$(C_BUILD) $< -Wp,-MD,.deps/$(*F).pp
       
   607 	@-cp .deps/$(*F).pp .deps/$(*F).P; \
       
   608 		tr ' ' '\012' < .deps/$(*F).pp \
       
   609 		| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
       
   610 		>> .deps/$(*F).P; \
       
   611 	rm .deps/$(*F).pp
       
   612 
       
   613 # For DirectMusic build
       
   614 %.o: %.cpp  $(MAKE_CONFIG)
       
   615 	$(CXX_BUILD) $<