cpython/Modules/makesetup

310 lines
7.7 KiB
Plaintext
Raw Permalink Normal View History

1994-01-01 20:26:09 -04:00
#! /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 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
1994-09-12 07:42:20 -03:00
# - for each <module> mentioned in Setup before *noconfig*:
# + insert 'extern PyObject* PyInit_<module>(void);' before MARKER 1
# + insert '{"<module>", PyInit_<module>},' before MARKER 2
#
# Copying Makefile.pre to Makefile:
# - insert an identifying comment at the start
# - replace _MODBUILT_NAMES_ by the list of *static* and *shared* modules
# from Setup
# - replace _MODDISABLED_NAMES_ by the list of *disabled* modules from Setup
# - 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
1994-09-12 07:42:20 -03:00
# - 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'
1994-01-01 20:26:09 -04:00
# 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=''
1994-09-12 07:42:20 -03:00
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)
2001-01-27 17:43:40 -04:00
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='\
'
1994-01-01 20:26:09 -04:00
2016-09-15 21:46:05 -03:00
# Setup to link with extra libraries when making 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\$(LDVERSION)";;
esac
# Main loop
for i in ${*-Setup}
do
case $i in
1994-09-12 07:42:20 -03:00
-n) echo '*noobjects*';;
*) echo '*doconfig*'; cat "$i";;
esac
done |
sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' |
1994-01-01 20:26:09 -04:00
(
1994-09-12 07:42:20 -03:00
rulesf="@rules.$$"
trap 'rm -f $rulesf' 0 1 2 3
echo "
# Rules appended by makesetup
1994-09-12 07:42:20 -03:00
" >$rulesf
1994-01-01 20:26:09 -04:00
DEFS=
BUILT=
DISABLED=
1994-01-01 20:26:09 -04:00
MODS=
1994-09-12 07:42:20 -03:00
SHAREDMODS=
1994-01-01 20:26:09 -04:00
OBJS=
LIBS=
LOCALLIBS=
BASELIBS=
1994-01-01 20:26:09 -04:00
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
1994-01-01 20:26:09 -04:00
case $line in
*=*) DEFS="$line$NL$DEFS"; continue;;
1997-04-02 01:33:00 -04:00
'include '*) DEFS="$line$NL$DEFS"; continue;;
1994-09-12 07:42:20 -03:00
'*noobjects*')
case $noobjects in
yes) ;;
*) LOCALLIBS=$LIBS; LIBS=;;
esac
noobjects=yes;
1994-09-12 07:42:20 -03:00
continue;;
'*doconfig*') doconfig=yes; continue;;
'*static*') doconfig=yes; continue;;
1994-09-12 07:42:20 -03:00
'*noconfig*') doconfig=no; continue;;
'*shared*') doconfig=no; continue;;
'*disabled*') doconfig=disabled; continue;;
1994-01-01 20:26:09 -04:00
esac
srcs=
1994-01-01 20:26:09 -04:00
cpps=
1994-09-12 07:42:20 -03:00
libs=
mods=
skip=
1994-09-12 07:42:20 -03:00
for arg in $line
1994-01-01 20:26:09 -04:00
do
case $skip in
libs) libs="$libs $arg"; skip=; continue;;
cpps) cpps="$cpps $arg"; skip=; continue;;
srcs) srcs="$srcs $arg"; skip=; continue;;
esac
1994-01-01 20:26:09 -04:00
case $arg in
-framework) libs="$libs $arg"; skip=libs;
# OSX/OSXS/Darwin framework link cmd
;;
-[IDUCfF]*) cpps="$cpps $arg";;
-Xcompiler) skip=cpps;;
1997-12-02 16:38:11 -04:00
-Xlinker) libs="$libs $arg"; skip=libs;;
-rpath) libs="$libs $arg"; skip=libs;;
--rpath) libs="$libs $arg"; skip=libs;;
1994-09-12 07:42:20 -03:00
-[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";;
1994-09-12 07:42:20 -03:00
*.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";;
1994-01-01 20:26:09 -04:00
*.*) echo 1>&2 "bad word $arg in $line"
exit 1;;
-u) skip=libs; libs="$libs -u";;
[a-zA-Z_]*) mods="$mods $arg";;
1994-01-01 20:26:09 -04:00
*) echo 1>&2 "bad word $arg in $line"
exit 1;;
esac
done
1994-09-12 07:42:20 -03:00
case $doconfig in
yes)
LIBS="$LIBS $libs"
MODS="$MODS $mods"
BUILT="$BUILT $mods"
;;
no)
BUILT="$BUILT $mods"
;;
disabled)
DISABLED="$DISABLED $mods"
continue
1994-09-12 07:42:20 -03:00
;;
esac
case $noobjects in
yes) continue;;
esac
1994-09-12 07:42:20 -03:00
objs=''
for src in $srcs
1994-01-01 20:26:09 -04:00
do
1994-09-12 07:42:20 -03:00
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
1994-09-12 07:42:20 -03:00
*) continue;;
esac
obj="$srcdir/$obj"
1994-09-12 07:42:20 -03:00
objs="$objs $obj"
case $src in
glmodule.c) ;;
/*) ;;
\$*) ;;
*) src='$(srcdir)/'"$srcdir/$src";;
1994-09-12 07:42:20 -03:00
esac
case $doconfig in
no) cc="$cc \$(CCSHARED) \$(PY_CFLAGS) \$(PY_CPPFLAGS)";;
*)
cc="$cc \$(PY_BUILTIN_MODULE_CFLAGS)";;
1994-09-12 07:42:20 -03:00
esac
rule="$obj: $src; $cc $cpps -c $src -o $obj"
1994-09-12 07:42:20 -03:00
echo "$rule" >>$rulesf
1994-01-01 20:26:09 -04:00
done
1994-09-12 07:42:20 -03:00
case $doconfig in
yes) OBJS="$OBJS $objs";;
esac
for mod in $mods
do
file="$srcdir/$mod\$(EXT_SUFFIX)"
1994-09-12 07:42:20 -03:00
case $doconfig in
no) SHAREDMODS="$SHAREDMODS $file";;
esac
rule="$file: $objs"
Merged revisions 57778-58052 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r57820 | georg.brandl | 2007-08-31 08:59:27 +0200 (Fri, 31 Aug 2007) | 2 lines Document new shorthand notation for index entries. ........ r57827 | georg.brandl | 2007-08-31 10:47:51 +0200 (Fri, 31 Aug 2007) | 2 lines Fix subitem markup. ........ r57833 | martin.v.loewis | 2007-08-31 12:01:07 +0200 (Fri, 31 Aug 2007) | 1 line Mark registry components as 64-bit on Win64. ........ r57854 | bill.janssen | 2007-08-31 21:02:23 +0200 (Fri, 31 Aug 2007) | 1 line deprecate use of FakeSocket ........ r57855 | bill.janssen | 2007-08-31 21:02:46 +0200 (Fri, 31 Aug 2007) | 1 line remove mentions of socket.ssl in comments ........ r57856 | bill.janssen | 2007-08-31 21:03:31 +0200 (Fri, 31 Aug 2007) | 1 line remove use of non-existent SSLFakeSocket in apparently untested code ........ r57859 | martin.v.loewis | 2007-09-01 08:36:03 +0200 (Sat, 01 Sep 2007) | 3 lines Bug #1737210: Change Manufacturer of Windows installer to PSF. Will backport to 2.5. ........ r57865 | georg.brandl | 2007-09-01 09:51:24 +0200 (Sat, 01 Sep 2007) | 2 lines Fix RST link (backport from Py3k). ........ r57876 | georg.brandl | 2007-09-01 17:49:49 +0200 (Sat, 01 Sep 2007) | 2 lines Document sets' ">" and "<" operations (backport from py3k). ........ r57878 | skip.montanaro | 2007-09-01 19:40:03 +0200 (Sat, 01 Sep 2007) | 4 lines Added a note and examples to explain that re.split does not split on an empty pattern match. (issue 852532). ........ r57879 | walter.doerwald | 2007-09-01 20:18:09 +0200 (Sat, 01 Sep 2007) | 2 lines Fix wrong function names. ........ r57880 | walter.doerwald | 2007-09-01 20:34:05 +0200 (Sat, 01 Sep 2007) | 2 lines Fix typo. ........ r57889 | andrew.kuchling | 2007-09-01 22:31:59 +0200 (Sat, 01 Sep 2007) | 1 line Markup fix ........ r57892 | andrew.kuchling | 2007-09-01 22:43:36 +0200 (Sat, 01 Sep 2007) | 1 line Add various items ........ r57895 | andrew.kuchling | 2007-09-01 23:17:58 +0200 (Sat, 01 Sep 2007) | 1 line Wording change ........ r57896 | andrew.kuchling | 2007-09-01 23:18:31 +0200 (Sat, 01 Sep 2007) | 1 line Add more items ........ r57904 | ronald.oussoren | 2007-09-02 11:46:07 +0200 (Sun, 02 Sep 2007) | 3 lines Macosx: this patch ensures that the value of MACOSX_DEPLOYMENT_TARGET used by the Makefile is also used at configure-time. ........ r57925 | georg.brandl | 2007-09-03 09:16:46 +0200 (Mon, 03 Sep 2007) | 2 lines Fix #883466: don't allow Unicode as arguments to quopri and uu codecs. ........ r57936 | matthias.klose | 2007-09-04 01:33:04 +0200 (Tue, 04 Sep 2007) | 2 lines - Added support for linking the bsddb module against BerkeleyDB 4.6.x. ........ r57954 | mark.summerfield | 2007-09-04 10:16:15 +0200 (Tue, 04 Sep 2007) | 3 lines Added cross-references plus a note about dict & list shallow copying. ........ r57958 | martin.v.loewis | 2007-09-04 11:51:57 +0200 (Tue, 04 Sep 2007) | 3 lines Document that we rely on the OS to release the crypto context. Fixes #1626801. ........ r57960 | martin.v.loewis | 2007-09-04 15:13:14 +0200 (Tue, 04 Sep 2007) | 3 lines Patch #1388440: Add set_completion_display_matches_hook and get_completion_type to readline. ........ r57961 | martin.v.loewis | 2007-09-04 16:19:28 +0200 (Tue, 04 Sep 2007) | 3 lines Patch #1031213: Decode source line in SyntaxErrors back to its original source encoding. Will backport to 2.5. ........ r57972 | matthias.klose | 2007-09-04 20:17:36 +0200 (Tue, 04 Sep 2007) | 3 lines - Makefile.pre.in(buildbottest): Run an optional script pybuildbot.identify to include some information about the build environment. ........ r57973 | matthias.klose | 2007-09-04 21:05:38 +0200 (Tue, 04 Sep 2007) | 2 lines - Makefile.pre.in(buildbottest): Remove whitespace at eol. ........ r57975 | matthias.klose | 2007-09-04 22:46:02 +0200 (Tue, 04 Sep 2007) | 2 lines - Fix libffi configure for hppa*-*-linux* | parisc*-*-linux*. ........ r57980 | bill.janssen | 2007-09-05 02:46:27 +0200 (Wed, 05 Sep 2007) | 1 line SSL certificate distinguished names should be represented by tuples ........ r57985 | martin.v.loewis | 2007-09-05 08:39:17 +0200 (Wed, 05 Sep 2007) | 3 lines Patch #1105: Explain that one needs to build the solution to get dependencies right. ........ r57987 | armin.rigo | 2007-09-05 09:51:21 +0200 (Wed, 05 Sep 2007) | 4 lines PyDict_GetItem() returns a borrowed reference. There are probably a number of places that are open to attacks such as the following one, in bltinmodule.c:min_max(). ........ r57991 | martin.v.loewis | 2007-09-05 13:47:34 +0200 (Wed, 05 Sep 2007) | 3 lines Patch #786737: Allow building in a tree of symlinks pointing to a readonly source. ........ r57993 | georg.brandl | 2007-09-05 15:36:44 +0200 (Wed, 05 Sep 2007) | 2 lines Backport from Py3k: Bug #1684991: explain lookup semantics for __special__ methods (new-style classes only). ........ r58004 | armin.rigo | 2007-09-06 10:30:51 +0200 (Thu, 06 Sep 2007) | 4 lines Patch #1733973 by peaker: ptrace_enter_call() assumes no exception is currently set. This assumption is broken when throwing into a generator. ........ r58006 | armin.rigo | 2007-09-06 11:30:38 +0200 (Thu, 06 Sep 2007) | 4 lines PyDict_GetItem() returns a borrowed reference. This attack is against ceval.c:IMPORT_NAME, which calls an object (__builtin__.__import__) without holding a reference to it. ........ r58013 | georg.brandl | 2007-09-06 16:49:56 +0200 (Thu, 06 Sep 2007) | 2 lines Backport from 3k: #1116: fix reference to old filename. ........ r58021 | thomas.heller | 2007-09-06 22:26:20 +0200 (Thu, 06 Sep 2007) | 1 line Fix typo: c_float represents to C float type. ........ r58022 | skip.montanaro | 2007-09-07 00:29:06 +0200 (Fri, 07 Sep 2007) | 3 lines If this is correct for py3k branch and it's already in the release25-maint branch, seems like it ought to be on the trunk as well. ........ r58023 | gregory.p.smith | 2007-09-07 00:59:59 +0200 (Fri, 07 Sep 2007) | 4 lines Apply the fix from Issue1112 to make this test more robust and keep windows happy. ........ r58031 | brett.cannon | 2007-09-07 05:17:50 +0200 (Fri, 07 Sep 2007) | 4 lines Make uuid1 and uuid4 tests conditional on whether ctypes can be imported; implementation of either function depends on ctypes but uuid as a whole does not. ........ r58032 | brett.cannon | 2007-09-07 06:18:30 +0200 (Fri, 07 Sep 2007) | 6 lines Fix a crasher where Python code managed to infinitely recurse in C code without ever going back out to Python code in PyObject_Call(). Required introducing a static RuntimeError instance so that normalizing an exception there is no reliance on a recursive call that would put the exception system over the recursion check itself. ........ r58034 | thomas.heller | 2007-09-07 08:32:17 +0200 (Fri, 07 Sep 2007) | 1 line Add a 'c_longdouble' type to the ctypes module. ........ r58035 | thomas.heller | 2007-09-07 11:30:40 +0200 (Fri, 07 Sep 2007) | 1 line Remove unneeded #include. ........ r58036 | thomas.heller | 2007-09-07 11:33:24 +0200 (Fri, 07 Sep 2007) | 6 lines Backport from py3k branch: Add a workaround for a strange bug on win64, when _ctypes is compiled with the SDK compiler. This should fix the failing Lib\ctypes\test\test_as_parameter.py test. ........ r58037 | georg.brandl | 2007-09-07 16:14:40 +0200 (Fri, 07 Sep 2007) | 2 lines Fix a wrong indentation for sublists. ........ r58043 | georg.brandl | 2007-09-07 22:10:49 +0200 (Fri, 07 Sep 2007) | 2 lines #1095: ln -f doesn't work portably, fix in Makefile. ........ r58049 | skip.montanaro | 2007-09-08 02:34:17 +0200 (Sat, 08 Sep 2007) | 1 line be explicit about the actual location of the missing file ........
2007-09-08 14:39:28 -03:00
rule="$rule; \$(BLDSHARED) $objs $libs $ExtraLibs -o $file"
1994-09-12 07:42:20 -03:00
echo "$rule" >>$rulesf
done
1994-01-01 20:26:09 -04:00
done
1994-09-12 07:42:20 -03:00
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"
1994-01-01 20:26:09 -04:00
EXTDECLS=
INITBITS=
for mod in $MODS
do
EXTDECLS="${EXTDECLS}extern PyObject* PyInit_$mod(void);$NL"
INITBITS="${INITBITS} {\"$mod\", PyInit_$mod},$NL"
1994-01-01 20:26:09 -04:00
done
1994-09-12 07:42:20 -03:00
case $config in
-) ;;
*) sed -e "
1i$NL/* Generated automatically from $config by makesetup. */
/MARKER 1/i$NL$EXTDECLS
1994-01-01 20:26:09 -04:00
/MARKER 2/i$NL$INITBITS
" $config >config.c
;;
esac
1994-01-01 20:26:09 -04:00
case $makepre in
1994-09-12 07:42:20 -03:00
-) ;;
*) 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%_MODBUILT_NAMES_%$BUILT%" >>$sedf
echo "s%_MODDISABLED_NAMES_%$DISABLED%" >>$sedf
echo "s%_MODOBJS_%$OBJS%" >>$sedf
echo "s%_MODLIBS_%$LIBS%" >>$sedf
1994-09-12 07:42:20 -03:00
echo "/Definitions added by makesetup/a$NL$NL$DEFS" >>$sedf
sed -f $sedf $makepre >Makefile
cat $rulesf >>Makefile
rm -f $sedf
;;
esac
1994-01-01 20:26:09 -04:00
1994-09-12 07:42:20 -03:00
rm -f $rulesf
1994-01-01 20:26:09 -04:00
)