config.lib
changeset 6081 57d2fa5e3073
parent 6080 3148f3835e18
child 6082 dc7b5c71799f
--- a/config.lib	Mon Feb 19 18:58:28 2007 +0000
+++ b/config.lib	Mon Feb 19 19:59:19 2007 +0000
@@ -17,6 +17,7 @@
 	windres=""
 	strip=""
 	lipo=""
+	awk="awk"
 	os="DETECT"
 	endian="AUTO"
 	revision=""
@@ -57,7 +58,7 @@
 	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() {
@@ -99,6 +100,8 @@
 			--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";;
@@ -309,6 +312,8 @@
 		exit 1
 	fi
 
+	detect_awk
+
 	check_build
 	check_host
 
@@ -1139,12 +1144,51 @@
 	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}
@@ -1159,7 +1203,7 @@
 		'`
 
 		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}
@@ -1754,6 +1798,7 @@
 		s#!!OS!!#$os#g;
 		s#!!CONFIGURE_FILES!!#$CONFIGURE_FILES#g;
 		s#!!REVISION!!#$revision#g;
+		s#!!AWK!!#$awk#g;
 		s#!!ENABLE_INSTALL!!#$enable_install#g;
 	"
 }
@@ -1850,6 +1895,7 @@
 	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/"