makefiledir/Makefile.config_writer
author bjarni
Wed, 29 Mar 2006 16:28:41 +0000
changeset 3354 245157a5eafe
parent 3313 735b30b93dc2
child 3380 2d02cfdf6d14
permissions -rw-r--r--
(svn r4149) -Codechange: [OSX] rewrite of how universal binaries are compiled
Now OSX stores object files in .OSX and instead of making FAT object files, there are one for each architecture
Each architecture got their own targets to make a non-FAT binary and in the end, lipo will merge them into one binary

It's now possible to select which architectures you want to support by defining OTTD_PPC, OTTD_PPC970 (G5) and/or OTTD_i386
All combos are supported. UNIVERSAL_BINARY and TRIPLE_BINARY can still be used even though it's possible to gain the same result by using the new flags
Making a universal build when you already got part of it compiled (say the PPC part), it will reuse it and only compile the i386 part to save time
Note: in some cases when you switch flags, you risk that openttd is not updated. Delete it and try again. The Makefile can't solve this except if it forces linking each time

This fixes: FS#87 universal binary building borked in 0.4.7
Now universal binaries work on OSX 10.3.9 again

Building universal binaries no longer needs to store flags in Makefile.config as the new design makes it possible to figure everything out automatically
# This file generates Makefile.config
# Create default config from autodetected values
# Magic at work, note that you can't use commas in arguments for this
CONFIG_LINE=@$(SHELL) -c 'echo $(1)' >> $(MAKE_CONFIG) 2> /dev/null

$(MAKE_CONFIG):

	touch $(MAKE_CONFIG)

	$(call CONFIG_LINE,\# OpenTTD config file for makefile)
	$(call CONFIG_LINE,\# Set your options here - 1 for use and empty for disable)
	$(call CONFIG_LINE,)

	$(call CONFIG_LINE,\# User setup flags)
	$(call CONFIG_LINE,\# Translator: adds TODO to any untranslated strings)
	$(call CONFIG_LINE,\# MIDI: sets path to midi player)
	$(call CONFIG_LINE,\# MIDI_ARG: sets an argument which is used when calling the midi player. Default off)
	$(call CONFIG_LINE,\# SUPRESS_LANG_ERRORS: supresses output about missing and mismatched strings)
	$(call CONFIG_LINE,\# WITH_NETWORK: makes OpenTTD able to play multiplayer using TCP and UDP)
	$(call CONFIG_LINE,\# DEDICATED: compiles a dedicated server. This one can only host using a CLI, but do not need SDL)
	$(call CONFIG_LINE,STATIC:=$(STATIC))
	$(call CONFIG_LINE,TRANSLATOR:=$(TRANSLATOR))
	$(call CONFIG_LINE,DEBUG:=$(DEBUG))
	$(call CONFIG_LINE,PROFILE:=$(PROFILE))
	$(call CONFIG_LINE,MIDI:=$(MIDI))
	$(call CONFIG_LINE,MIDI_ARG:=$(MIDI_ARG))
	$(call CONFIG_LINE,SUPRESS_LANG_ERRORS:=$(SUPRESS_LANG_ERRORS))
	$(call CONFIG_LINE,WITH_DIRECTMUSIC:=$(WITH_DIRECTMUSIC))
	$(call CONFIG_LINE,WITH_NETWORK:=$(WITH_NETWORK))
	$(call CONFIG_LINE,DEDICATED:=$(DEDICATED))
	$(call CONFIG_LINE,)

	$(call CONFIG_LINE,\# Disable asserts. Leave them on for easier bug finding)
	$(call CONFIG_LINE,DISABLE_ASSERTS:=$(DISABLE_ASSERTS))
	$(call CONFIG_LINE,)

	$(call CONFIG_LINE,\# See Makefile for details on these paths)
	$(call CONFIG_LINE,\# Folders should not end with /)
	$(call CONFIG_LINE,INSTALL:=$(INSTALL))
	$(call CONFIG_LINE,PREFIX:=$(PREFIX))
	$(call CONFIG_LINE,BINARY_DIR:=$(BINARY_DIR))
	$(call CONFIG_LINE,DATA_DIR:=$(DATA_DIR))
	$(call CONFIG_LINE,ICON_DIR:=$(ICON_DIR))
	$(call CONFIG_LINE,USE_HOMEDIR:=$(USE_HOMEDIR))
	$(call CONFIG_LINE,PERSONAL_DIR:=$(PERSONAL_DIR))
	$(call CONFIG_LINE,SECOND_DATA_PATH:=$(SECOND_DATA_PATH))
	$(call CONFIG_LINE,CUSTOM_LANG_PATH:=$(CUSTOM_LANG_PATH))
	$(call CONFIG_LINE,)

	$(call CONFIG_LINE,\# Flag to skip test for OS when building static)
	$(call CONFIG_LINE,\# OpenTTD have only been succesfully tested with static builds on MorphOS and MacOSX)
	$(call CONFIG_LINE,\# If you want to try anyway on other OSes, set this flag)
	$(call CONFIG_LINE,\# Inform us if you have success)
	$(call CONFIG_LINE,SKIP_STATIC_CHECK:=$(SKIP_STATIC_CHECK))
	$(call CONFIG_LINE,)
	$(call CONFIG_LINE,)

	$(call CONFIG_LINE,\# Everything below this line is autogenerated)
	$(call CONFIG_LINE,\#)
	$(call CONFIG_LINE,\# If you need to change anything below, you should run "make upgradeconf")
	$(call CONFIG_LINE,\# If that does not fix the problem, you should make a bug report.)
	$(call CONFIG_LINE,\# It would really help if you could tell how to autodetect the missing setting)
	$(call CONFIG_LINE,\# That info could be where the missing lib is placed)
	$(call CONFIG_LINE,)

	$(call CONFIG_LINE,\# Libs)
	$(call CONFIG_LINE,WITH_ZLIB:=$(WITH_ZLIB))
	$(call CONFIG_LINE,WITH_SDL:=$(WITH_SDL))
	$(call CONFIG_LINE,WITH_PNG:=$(WITH_PNG))
	$(call CONFIG_LINE,STATIC_ZLIB_PATH:=$(STATIC_ZLIB_PATH))
	$(call CONFIG_LINE,WITH_COCOA:=$(WITH_COCOA))
	$(call CONFIG_LINE,)

	$(call CONFIG_LINE,\# OS flags)
	$(call CONFIG_LINE,WIN32:=$(WIN32))
	$(call CONFIG_LINE,UNIX:=$(UNIX))
	$(call CONFIG_LINE,OSX:=$(OSX))
	$(call CONFIG_LINE,FREEBSD:=$(FREEBSD))
	$(call CONFIG_LINE,MORPHOS:=$(MORPHOS))
	$(call CONFIG_LINE,BEOS:=$(BEOS))
	$(call CONFIG_LINE,SUNOS:=$(SUNOS))
	$(call CONFIG_LINE,CYGWIN:=$(CYGWIN))
	$(call CONFIG_LINE,MINGW:=$(MINGW))
	$(call CONFIG_LINE,)

	$(call CONFIG_LINE,\# For cross-compiling)
	$(call CONFIG_LINE,CC_TARGET:=$(CC_TARGET))
	$(call CONFIG_LINE,CC_HOST:=$(CC_HOST))
	$(call CONFIG_LINE,CFLAGS_HOST:=$(CFLAGS_HOST))
	$(call CONFIG_LINE,WINDRES:=$(WINDRES))
	$(call CONFIG_LINE,ENDIAN_FORCE:=$(ENDIAN_FORCE))
	$(call CONFIG_LINE,)

	$(call CONFIG_LINE,\# misc)
	$(call CONFIG_LINE,SDL-CONFIG:=$(SDL-CONFIG))
	$(call CONFIG_LINE,LIBPNG-CONFIG:=$(LIBPNG-CONFIG))
	$(call CONFIG_LINE,BEOS_NET_SERVER:=$(BEOS_NET_SERVER))
	$(call CONFIG_LINE,CONFIG_INCLUDED:=yes)
	$(call CONFIG_LINE,PATH_SET:=$(PATH_SET))
	$(call CONFIG_LINE,CONFIG_VERSION:=$(MAKEFILE_VERSION))