symbian-qemu-0.9.1-12/python-2.6.1/Modules/makesetup
changeset 1 2fb8b9db1c86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/python-2.6.1/Modules/makesetup	Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,297 @@
+#! /bin/sh
+
+# Convert templates into Makefile and config.c, based on the module
+# definitions found in the file Setup.
+#
+# Usage: makesetup [-s dir] [-c file] [-m file] [Setup] ... [-n [Setup] ...]
+#
+# Options:
+# -s directory: alternative source directory (default .)
+# -l directory: library source directory (default derived from $0)
+# -c file:      alternative config.c template (default $libdir/config.c.in)
+# -c -:         don't write config.c
+# -m file:      alternative Makefile template (default ./Makefile.pre)
+# -m -:         don't write Makefile
+#
+# Remaining arguments are one or more Setup files (default ./Setup).
+# Setup files after a -n option are used for their variables, modules
+# and libraries but not for their .o files.
+#
+# See Setup.dist for a description of the format of the Setup file.
+#
+# The following edits are made:
+#
+# Copying config.c.in to config.c:
+# - insert an identifying comment at the start
+# - for each <module> mentioned in Setup before *noconfig*:
+#   + insert 'extern void init<module>(void);' before MARKER 1
+#   + insert '{"<module>", initmodule},' before MARKER 2
+#
+# Copying Makefile.pre to Makefile:
+# - insert an identifying comment at the start
+# - replace _MODOBJS_ by the list of objects from Setup (except for
+#   Setup files after a -n option)
+# - replace _MODLIBS_ by the list of libraries from Setup
+# - for each object file mentioned in Setup, append a rule
+#   '<file>.o: <file>.c; <build commands>' to the end of the Makefile
+# - for each module mentioned in Setup, append a rule
+#   which creates a shared library version to the end of the Makefile
+# - for each variable definition found in Setup, insert the definition
+#   before the comment 'Definitions added by makesetup'
+
+# Loop over command line options
+usage='
+usage: makesetup [-s srcdir] [-l libdir] [-c config.c.in] [-m Makefile.pre]
+                 [Setup] ... [-n [Setup] ...]'
+srcdir='.'
+libdir=''
+config=''
+makepre=''
+noobjects=''
+doconfig=yes
+while :
+do
+	case $1 in
+	-s)	shift; srcdir=$1; shift;;
+	-l)	shift; libdir=$1; shift;;
+	-c)	shift; config=$1; shift;;
+	-m)	shift; makepre=$1; shift;;
+	--)	shift; break;;
+	-n)	noobjects=yes;;
+	-*)	echo "$usage" 1>&2; exit 2;;
+	*)	break;;
+	esac
+done
+
+# Set default libdir and config if not set by command line
+# (Not all systems have dirname)
+case $libdir in
+'')	case $0 in
+	*/*)	libdir=`echo $0 | sed 's,/[^/]*$,,'`;;
+	*)	libdir=.;;
+	esac;;
+esac
+case $config in
+'')	config=$libdir/config.c.in;;
+esac
+case $makepre in
+'')	makepre=Makefile.pre;;
+esac
+
+# Newline for sed i and a commands
+NL='\
+'
+
+# Setup to link with extra libraries when makeing shared extensions.
+# Currently, only Cygwin needs this baggage.
+case `uname -s` in
+CYGWIN*) if test $libdir = .
+	 then
+	 	ExtraLibDir=.
+	 else
+	 	ExtraLibDir='$(LIBPL)'
+	 fi
+	 ExtraLibs="-L$ExtraLibDir -lpython\$(VERSION)";;
+esac
+
+# Main loop
+for i in ${*-Setup}
+do
+	case $i in
+	-n)	echo '*noobjects*';;
+	*)	echo '*doconfig*'; cat "$i";;
+	esac
+done |
+sed -e 's/[ 	]*#.*//' -e '/^[ 	]*$/d' |
+(
+	rulesf="@rules.$$"
+	trap 'rm -f $rulesf' 0 1 2 3
+	echo "
+# Rules appended by makedepend
+" >$rulesf
+	DEFS=
+	MODS=
+	SHAREDMODS=
+	OBJS=
+	LIBS=
+	LOCALLIBS=
+	BASELIBS=
+	while read line
+	do
+		# to handle backslashes for sh's that don't automatically
+		# continue a read when the last char is a backslash
+		while echo $line | grep '\\$' > /dev/null
+		do
+			read extraline
+			line=`echo $line| sed s/.$//`$extraline
+		done
+
+		# Output DEFS in reverse order so first definition overrides
+		case $line in
+		*=*)	DEFS="$line$NL$DEFS"; continue;;
+		'include '*)	DEFS="$line$NL$DEFS"; continue;;
+		'*noobjects*')
+			case $noobjects in
+			yes)	;;
+			*)	LOCALLIBS=$LIBS; LIBS=;;
+			esac
+			noobjects=yes;
+			continue;;
+		'*doconfig*')	doconfig=yes; continue;;
+		'*static*')	doconfig=yes; continue;;
+		'*noconfig*')	doconfig=no; continue;;
+		'*shared*')	doconfig=no; continue;;
+		esac
+		srcs=
+		cpps=
+		libs=
+		mods=
+		skip=
+		for arg in $line
+		do
+			case $skip in
+			libs)	libs="$libs $arg"; skip=; continue;;
+			cpps)	cpps="$cpps $arg"; skip=; continue;;
+			srcs)	srcs="$srcs $arg"; skip=; continue;;
+			esac
+			case $arg in
+			-framework)	libs="$libs $arg"; skip=libs;
+				        # OSX/OSXS/Darwin framework link cmd
+					;;
+			-[IDUCfF]*)	cpps="$cpps $arg";;
+			-Xcompiler)	skip=cpps;;
+			-Xlinker)	libs="$libs $arg"; skip=libs;;
+			-rpath)		libs="$libs $arg"; skip=libs;;
+			--rpath)	libs="$libs $arg"; skip=libs;;
+			-[A-Zl]*)	libs="$libs $arg";;
+			*.a)		libs="$libs $arg";;
+			*.so)		libs="$libs $arg";;
+			*.sl)		libs="$libs $arg";;
+			/*.o)		libs="$libs $arg";;
+			*.def)		libs="$libs $arg";;
+			*.o)		srcs="$srcs `basename $arg .o`.c";;
+			*.[cC])		srcs="$srcs $arg";;
+			*.m)		srcs="$srcs $arg";; # Objective-C src
+			*.cc)		srcs="$srcs $arg";;
+			*.c++)		srcs="$srcs $arg";;
+			*.cxx)		srcs="$srcs $arg";;
+			*.cpp)		srcs="$srcs $arg";;
+			\$*)		libs="$libs $arg"
+					cpps="$cpps $arg";;
+			*.*)		echo 1>&2 "bad word $arg in $line"
+					exit 1;;
+			-u)		skip=libs; libs="$libs -u";;
+			[a-zA-Z_]*)	mods="$mods $arg";;
+			*)		echo 1>&2 "bad word $arg in $line"
+					exit 1;;
+			esac
+		done
+		case $doconfig in
+		yes)
+			LIBS="$LIBS $libs"
+			MODS="$MODS $mods"
+			;;
+		esac
+		case $noobjects in
+		yes)	continue;;
+		esac
+		objs=''
+		for src in $srcs
+		do
+			case $src in
+			*.c)   obj=`basename $src .c`.o; cc='$(CC)';;
+			*.cc)  obj=`basename $src .cc`.o; cc='$(CXX)';;
+			*.c++) obj=`basename $src .c++`.o; cc='$(CXX)';;
+			*.C)   obj=`basename $src .C`.o; cc='$(CXX)';;
+			*.cxx) obj=`basename $src .cxx`.o; cc='$(CXX)';;
+			*.cpp) obj=`basename $src .cpp`.o; cc='$(CXX)';;
+			*.m)   obj=`basename $src .m`.o; cc='$(CC)';; # Obj-C
+			*)     continue;;
+			esac
+			obj="$srcdir/$obj"
+			objs="$objs $obj"
+			case $src in
+			glmodule.c) ;;
+			/*) ;;
+			\$*) ;;
+			*) src='$(srcdir)/'"$srcdir/$src";;
+			esac
+			case $doconfig in
+			no)	cc="$cc \$(CCSHARED) \$(CFLAGS) \$(CPPFLAGS)";;
+			*)
+				cc="$cc \$(PY_CFLAGS)";;
+			esac
+			rule="$obj: $src; $cc $cpps -c $src -o $obj"
+			echo "$rule" >>$rulesf
+		done
+		case $doconfig in
+		yes)	OBJS="$OBJS $objs";;
+		esac
+		for mod in $mods
+		do
+			case $objs in
+			*$mod.o*)	base=$mod;;
+			*)		base=${mod}module;;
+			esac
+			file="$srcdir/$base\$(SO)"
+			case $doconfig in
+			no)	SHAREDMODS="$SHAREDMODS $file";;
+			esac
+			rule="$file: $objs"
+			rule="$rule; \$(BLDSHARED) $objs $libs $ExtraLibs -o $file"
+			echo "$rule" >>$rulesf
+		done
+	done
+
+	case $SHAREDMODS in
+	'')	;;
+	*)	DEFS="SHAREDMODS=$SHAREDMODS$NL$DEFS";;
+	esac
+
+	case $noobjects in
+	yes)	BASELIBS=$LIBS;;
+	*)	LOCALLIBS=$LIBS;;
+	esac
+	LIBS='$(LOCALMODLIBS) $(BASEMODLIBS)'
+	DEFS="BASEMODLIBS=$BASELIBS$NL$DEFS"
+	DEFS="LOCALMODLIBS=$LOCALLIBS$NL$DEFS"
+
+	EXTDECLS=
+	INITBITS=
+	for mod in $MODS
+	do
+		EXTDECLS="${EXTDECLS}extern void init$mod(void);$NL"
+		INITBITS="${INITBITS}	{\"$mod\", init$mod},$NL"
+	done
+
+
+	case $config in
+	-)  ;;
+	*)  sed -e "
+		1i$NL/* Generated automatically from $config by makesetup. */
+		/MARKER 1/i$NL$EXTDECLS
+ 
+		/MARKER 2/i$NL$INITBITS
+
+		" $config >config.c
+	    ;;
+	esac
+
+	case $makepre in
+	-)	;;
+	*)	sedf="@sed.in.$$"
+		trap 'rm -f $sedf' 0 1 2 3
+		echo "1i\\" >$sedf
+		str="# Generated automatically from $makepre by makesetup."
+		echo "$str" >>$sedf
+		echo "s%_MODOBJS_%$OBJS%" >>$sedf
+		echo "s%_MODLIBS_%$LIBS%" >>$sedf
+		echo "/Definitions added by makesetup/a$NL$NL$DEFS" >>$sedf
+		sed -f $sedf $makepre >Makefile
+		cat $rulesf >>Makefile
+		rm -f $sedf
+	    ;;
+	esac
+
+	rm -f $rulesf
+)