Changeset - r6081:185aed7a2254
[Not reviewed]
master
0 4 0
truelight - 18 years ago 2007-02-19 19:59:19
truelight@openttd.org
(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
4 files changed with 60 insertions and 12 deletions:
0 comments (0 inline, 0 general)
Makefile.in
Show inline comments
 
@@ -27,12 +27,13 @@ INSTALL_PERSONAL_DIR = !!PERSONAL_DIR!!
 
ENABLE_INSTALL = !!ENABLE_INSTALL!!
 
TTD = !!TTD!!
 
TTDS = $(SRC_DIRS:%=%/$(TTD))
 
OS = !!OS!!
 
OSXAPP = !!OSXAPP!!
 
REVISION = !!REVISION!!
 
AWK = !!AWK!!
 

	
 
RES := $(shell if ! [ -f $(CONFIG_CACHE_SOURCE_LIST) ] || [ -n "`cmp $(CONFIG_CACHE_SOURCE_LIST) $(SOURCE_LIST)`" ]; then cp $(SOURCE_LIST) $(CONFIG_CACHE_SOURCE_LIST); fi )
 

	
 
all: config.cache
 
	@for dir in $(DIRS); do \
 
		$(MAKE) -C $$dir all; \
 
@@ -115,13 +116,13 @@ REV := $(REVISION)
 
else
 
# Are we a SVN dir?
 
ifeq ($(shell if test -d $(SRC_DIR)/.svn; then echo 1; fi), 1)
 
# Find if the local source if modified
 
REV_MODIFIED := $(shell svnversion $(SRC_DIR) | sed -n 's/.*\(M\).*/\1/p' )
 
# Find the revision like: rXXXX-branch
 
REV := $(shell LC_ALL=C svn info $(SRC_DIR) | awk '/^URL:.*branches/ { split($$2, a, "/"); BRANCH="-"a[5] } /^Last Changed Rev:/ { REV="r"$$4"$(REV_MODIFIED)" } END { print REV BRANCH }')
 
REV := $(shell LC_ALL=C svn info $(SRC_DIR) | $(AWK) '/^URL:.*branches/ { split($$2, a, "/"); BRANCH="-"a[5] } /^Last Changed Rev:/ { REV="r"$$4"$(REV_MODIFIED)" } END { print REV BRANCH }')
 
endif
 
endif
 
# Make sure we have something in REV
 
ifeq ($(REV),)
 
REV := norev000
 
endif
Makefile.src.in
Show inline comments
 
@@ -24,12 +24,13 @@ ENDIAN_FORCE = !!ENDIAN_FORCE!!
 
OS           = !!OS!!
 
STAGE        = !!STAGE!!
 
MAKEDEPEND   = !!MAKEDEPEND!!
 
CFLAGS_MAKEDEP= !!CFLAGS_MAKEDEP!!
 
SORT         = !!SORT!!
 
REVISION     = !!REVISION!!
 
AWK          = !!AWK!!
 
CONFIG_CACHE_COMPILER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_COMPILER!!
 
CONFIG_CACHE_LINKER   = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_LINKER!!
 
CONFIG_CACHE_ENDIAN   = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_ENDIAN!!
 
CONFIG_CACHE_SOURCE   = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_SOURCE!!
 
CONFIG_CACHE_VERSION  = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_VERSION!!
 

	
 
@@ -79,13 +80,13 @@ REV := $(REVISION)
 
else
 
# Are we a SVN dir?
 
ifeq ($(shell if test -d $(SRC_DIR)/.svn; then echo 1; fi), 1)
 
# Find if the local source if modified
 
REV_MODIFIED := $(shell svnversion $(SRC_DIR) | sed -n 's/.*\(M\).*/\1/p' )
 
# Find the revision like: rXXXX-branch
 
REV := $(shell LC_ALL=C svn info $(SRC_DIR) | awk '/^URL:.*branch/ { split($$2, a, "/"); BRANCH="-"a[5] } /^Last Changed Rev:/ { REV="r"$$4"$(REV_MODIFIED)" } END { print REV BRANCH }')
 
REV := $(shell LC_ALL=C svn info $(SRC_DIR) | $(AWK) '/^URL:.*branch/ { split($$2, a, "/"); BRANCH="-"a[5] } /^Last Changed Rev:/ { REV="r"$$4"$(REV_MODIFIED)" } END { print REV BRANCH }')
 
endif
 
endif
 
# Make sure we have something in REV
 
ifeq ($(REV),)
 
REV := norev000
 
endif
 
@@ -163,13 +164,13 @@ ifeq ($(OS), MINGW)
 
	@cp Makefile.dep.tmp.mingw Makefile.dep.tmp
 
	@rm -f Makefile.dep.tmp.mingw
 
endif
 

	
 
# Remove all comments and includes that don't start with $(SRC_DIR)
 
# Remove $(SRC_DIR) from object-file-name
 
	@awk '                              \
 
	@$(AWK) '                           \
 
	/^# DO NOT/ { print $$0 ; next}     \
 
	/^#/ {next}                         \
 
	/:/ {                               \
 
		left = NF - 1;                    \
 
		for (n = 2; n <= NF; n++) {       \
 
			if (match($$n, "^$(SRC_DIR)") == 0) { \
config.lib
Show inline comments
 
@@ -14,12 +14,13 @@ set_default() {
 
	cc_host=""
 
	cxx_build=""
 
	cxx_host=""
 
	windres=""
 
	strip=""
 
	lipo=""
 
	awk="awk"
 
	os="DETECT"
 
	endian="AUTO"
 
	revision=""
 
	config_log="config.log"
 
	prefix_dir="/usr/local"
 
	binary_dir="games"
 
@@ -54,13 +55,13 @@ set_default() {
 
	with_midi_arg=""
 
	with_libtimidity="1"
 
	with_freetype="1"
 
	with_fontconfig="1"
 
	with_psp_config="1"
 

	
 
	save_params_array="build host cc_build cc_host cxx_build cxx_host windres strip lipo os revision endian config_log prefix_dir binary_dir data_dir icon_dir personal_dir install_dir custom_lang_dir second_data_dir enable_install enable_debug enable_profiling enable_dedicated enable_network enable_static enable_translator enable_assert enable_strip with_osx_sysroot enable_universal enable_osx_g5 with_application_bundle with_sdl with_cocoa with_zlib with_png with_makedepend with_direct_music with_sort with_iconv with_midi with_midi_arg with_libtimidity with_freetype with_fontconfig with_psp_config CC CXX CFLAGS LDFLAGS"
 
	save_params_array="build host cc_build cc_host cxx_build cxx_host windres strip awk lipo os revision endian config_log prefix_dir binary_dir data_dir icon_dir personal_dir install_dir custom_lang_dir second_data_dir enable_install enable_debug enable_profiling enable_dedicated enable_network enable_static enable_translator enable_assert enable_strip with_osx_sysroot enable_universal enable_osx_g5 with_application_bundle with_sdl with_cocoa with_zlib with_png with_makedepend with_direct_music with_sort with_iconv with_midi with_midi_arg with_libtimidity with_freetype with_fontconfig with_psp_config CC CXX CFLAGS LDFLAGS"
 
}
 

	
 
detect_params() {
 
	# Walk over all params from the user and override any default settings if
 
	#  needed. This also handles any invalid option.
 
	for p in "$@"; do
 
@@ -96,12 +97,14 @@ detect_params() {
 
			--cxx-build)                  prevp_p="cxx_build";;
 
			--cxx-build=*)                cxx_build="$optarg";;
 
			--cxx-host)                   prevp_p="cxx_host";;
 
			--cxx-host=*)                 cxx_host="$optarg";;
 
			--windres)                    prevp_p="windres";;
 
			--windres=*)                  windres="$optarg";;
 
			--awk)                        prevp_p="awk";;
 
			--awk=*)                      awk="$optarg";;
 
			--strip)                      prevp_p="strip";;
 
			--strip=*)                    strip="$optarg";;
 
			--lipo)                       prevp_p="lipo";;
 
			--lipo=*)                     lipo="$optarg";;
 

	
 
			--endian)                     prev_p="endian";;
 
@@ -306,12 +309,14 @@ check_params() {
 
	if [ -z "`echo $enable_debug | grep '^[0123]$'`" ]; then
 
		echo "configure: error: invalid option --enable-debug=$enable_debug"
 
		echo " Available options are: --enable-debug[=0123]"
 
		exit 1
 
	fi
 

	
 
	detect_awk
 

	
 
	check_build
 
	check_host
 

	
 
	detect_os
 

	
 
# We might enable universal builds always on OSX targets.. but currently we don't
 
@@ -1136,18 +1141,57 @@ check_makedepend() {
 

	
 
	rm -f makedepend.tmp makedepend.tmp.bak
 

	
 
	log 1 "checking makedepend... $makedepend"
 
}
 

	
 
detect_awk() {
 
	# Not all awks allow gsub(), so we test for that here! It is in fact all we need...
 

	
 
	# These awks are known to work. Test for them explicit
 
	awks="gawk mawk nawk"
 

	
 
	awk_prefix="echo \"a.c b.c c.c\" | tr ' ' \\\\n | "
 
	awk_param="' { ORS = \" \" } /\.c$/   { gsub(\".c$\",   \".o\", \$0); print \$0; }' 2>/dev/null"
 
	awk_result="a.o b.o c.o "
 
	log 2 "Detecing awk..."
 

	
 
	log 2 "Trying: $awk_prefix $awk $awk_param"
 
	res=`eval $awk_prefix $awk $awk_param`
 
	log 2 "Result: '$res'"
 
	if [ "$res" != "$awk_result" ] && [ "$awk" = "awk" ]; then
 
		# User didn't supply his own awk, so try to detect some other known working names for an awk
 
		for awk in $awks; do
 
			log 2 "Trying: $awk_prefix $awk $awk_param"
 
			res=`eval $awk_prefix $awk $awk_param`
 
			log 2 "Result: '$res'"
 
			if [ "$res" = "$awk_result" ]; then break; fi
 
		done
 

	
 
		if [ "$res" != "$awk_result" ]; then
 
			log 1 "checking awk... not found"
 
			log 1 "configure: error: no awk found"
 
			log 1 "configure: error: please install one of the following: $awks"
 
			exit 1
 
		fi
 
	fi
 
	if [ "$res" != "$awk_result" ]; then
 
		log 1 "checking awk... not found"
 
		log 1 "configure: error: you supplied '$awk' but it doesn't seem a valid gawk or mawk"
 
		exit 1
 
	fi
 

	
 
	log 1 "checking awk... $awk"
 
}
 

	
 
detect_os() {
 
	if [ "$os" = "DETECT" ]; then
 
		# Detect UNIX, OSX, FREEBSD, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, WINCE, and PSP
 

	
 
		# Try first via dumpmachine, then via uname
 
		os=`echo "$host" | tr '[A-Z]' '[a-z]' | awk '
 
		os=`echo "$host" | tr '[A-Z]' '[a-z]' | $awk '
 
					/linux/        { print "UNIX";    exit}
 
					/darwin/       { print "OSX";     exit}
 
					/freebsd/      { print "FREEBSD"; exit}
 
					/morphos/      { print "MORPHOS"; exit}
 
					/beos/         { print "BEOS";    exit}
 
					/sunos/        { print "SUNOS";   exit}
 
@@ -1156,13 +1200,13 @@ detect_os() {
 
					/os2/          { print "OS2";     exit}
 
					/wince/        { print "WINCE";   exit}
 
					/psp/          { print "PSP";     exit}
 
		'`
 

	
 
		if [ -z "$os" ]; then
 
			os=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | awk '
 
			os=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | $awk '
 
					/linux/        { print "UNIX";    exit}
 
					/darwin/       { print "OSX";     exit}
 
					/freebsd/      { print "FREEBSD"; exit}
 
					/morphos/      { print "MORPHOS"; exit}
 
					/beos/         { print "BEOS";    exit}
 
					/sunos/        { print "SUNOS";   exit}
 
@@ -1751,12 +1795,13 @@ make_sed() {
 
		s#!!OBJS_MM!!#$OBJS_MM#g;
 
		s#!!OBJS_RC!!#$OBJS_RC#g;
 
		s#!!SRCS!!#$SRCS#g;
 
		s#!!OS!!#$os#g;
 
		s#!!CONFIGURE_FILES!!#$CONFIGURE_FILES#g;
 
		s#!!REVISION!!#$revision#g;
 
		s#!!AWK!!#$awk#g;
 
		s#!!ENABLE_INSTALL!!#$enable_install#g;
 
	"
 
}
 

	
 
generate_main() {
 
	STAGE="[MAIN]"
 
@@ -1847,12 +1892,13 @@ showhelp() {
 
	echo "System types:"
 
	echo "  --build=BUILD                  configure for building on BUILD [guessed]"
 
	echo "  --host=HOST                    cross-compile to build programs to run"
 
	echo "                                 on HOST [BUILD]"
 
	echo "  --windres=WINDRES              the windres to use [HOST-windres]"
 
	echo "  --strip=STRIP                  the strip to use [HOST-strip]"
 
	echo "  --awk=AWK                      the awk to use in configure [awk]"
 
	echo "  --lipo=LIPO                    the lipo to use (OSX ONLY) [HOST-lipo]"
 
	echo "  --os=OS                        the OS we are compiling for [DETECT]"
 
	echo "                                 DETECT/UNIX/OSX/FREEBSD/MORPHOS/BEOS/"
 
	echo "                                 SUNOS/CYGWIN/MINGW/OS2/WINCE/PSP"
 
	echo "  --endian=ENDIAN                set the endian of the HOST (AUTO/LE/BE)"
 
	echo "  --revision=rXXXX               overwrite the revision detection."
configure
Show inline comments
 
@@ -55,13 +55,13 @@ fi
 
if ! [ -f "$LANG_DIR/english.txt" ]; then
 
	echo "Languages not found in $LANG_DIR. Can't continue without it."
 
	echo "Please make sure the dir exists and contains at least english.txt"
 
fi
 

	
 
# Read the source.list and process it
 
SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | awk '
 
SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk '
 
	{  }
 
	/^(	*)#end/  { if (deep == skip) { skip -= 1; } deep -= 1; next; }
 
	/^(	*)#else/ { if (deep == skip) { skip -= 1; } else if (deep - 1 == skip) { skip += 1; } next; }
 
	/^(	*)#if/   {
 
		gsub("	", "", $0);
 
		gsub("^#if ", "", $0);
 
@@ -97,17 +97,17 @@ SRCS="`< $ROOT_DIR/source.list tr '\r' '
 
			gsub("	", "", $0);
 
			print $0;
 
		}
 
	}
 
' | $PIPE_SORT`"
 

	
 
OBJS_C="`  echo \"$SRCS\" | awk ' { ORS = " " } /\.c$/   { gsub(".c$",   ".o", $0); print $0; }'`"
 
OBJS_CPP="`echo \"$SRCS\" | awk ' { ORS = " " } /\.cpp$/ { gsub(".cpp$", ".o", $0); print $0; }'`"
 
OBJS_MM="` echo \"$SRCS\" | awk ' { ORS = " " } /\.mm$/  { gsub(".mm$",  ".o", $0); print $0; }'`"
 
OBJS_RC="` echo \"$SRCS\" | awk ' { ORS = " " } /\.rc$/  { gsub(".rc$",  ".o", $0); print $0; }'`"
 
SRCS="`    echo \"$SRCS\" | awk ' { ORS = " " } { print $0; }'`"
 
OBJS_C="`  echo \"$SRCS\" | $awk ' { ORS = " " } /\.c$/   { gsub(".c$",   ".o", $0); print $0; }'`"
 
OBJS_CPP="`echo \"$SRCS\" | $awk ' { ORS = " " } /\.cpp$/ { gsub(".cpp$", ".o", $0); print $0; }'`"
 
OBJS_MM="` echo \"$SRCS\" | $awk ' { ORS = " " } /\.mm$/  { gsub(".mm$",  ".o", $0); print $0; }'`"
 
OBJS_RC="` echo \"$SRCS\" | $awk ' { ORS = " " } /\.rc$/  { gsub(".rc$",  ".o", $0); print $0; }'`"
 
SRCS="`    echo \"$SRCS\" | $awk ' { ORS = " " } { print $0; }'`"
 

	
 
# In makefiles, we always use -u for sort
 
if [ -z "$sort" ]; then
 
	sort="sed s/a/a/"
 
else
 
	sort="$sort -u"
0 comments (0 inline, 0 general)