| | #! /bin/sh |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | 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 |
| |
|
| | |
| | |
| | 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 |
| |
|
| | |
| | NL='\ |
| | ' |
| |
|
| | |
| | |
| | case `uname -s` in |
| | CYGWIN*) if test $libdir = . |
| | then |
| | ExtraLibDir=. |
| | else |
| | ExtraLibDir='$(LIBPL)' |
| | fi |
| | ExtraLibs="-L$ExtraLibDir -lpython\$(LDVERSION)";; |
| | esac |
| |
|
| | |
| | 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 makesetup |
| | " >$rulesf |
| | DEFS= |
| | BUILT= |
| | DISABLED= |
| | MODS= |
| | SHAREDMODS= |
| | OBJS= |
| | LIBS= |
| | LOCALLIBS= |
| | BASELIBS= |
| | while read line |
| | do |
| | |
| | |
| | while echo $line | grep '\\$' > /dev/null |
| | do |
| | read extraline |
| | line=`echo $line| sed s/.$//`$extraline |
| | done |
| |
|
| | |
| | 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;; |
| | '*disabled*') doconfig=disabled; 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; |
| | |
| | ;; |
| | -[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";; |
| | *.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" |
| | BUILT="$BUILT $mods" |
| | ;; |
| | no) |
| | BUILT="$BUILT $mods" |
| | ;; |
| | disabled) |
| | DISABLED="$DISABLED $mods" |
| | continue |
| | ;; |
| | 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)';; |
| | *) 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) \$(PY_CFLAGS_NODIST) \$(PY_CPPFLAGS)";; |
| | *) |
| | cc="$cc \$(PY_BUILTIN_MODULE_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 |
| | file="$srcdir/$mod\$(EXT_SUFFIX)" |
| | 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 PyObject* PyInit_$mod(void);$NL" |
| | INITBITS="${INITBITS} {\"$mod\", PyInit_$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%_MODBUILT_NAMES_%$BUILT%" >>$sedf |
| | echo "s%_MODDISABLED_NAMES_%$DISABLED%" >>$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 |
| | ) |
| |
|