107 lines
3.7 KiB
Bash
Executable File
107 lines
3.7 KiB
Bash
Executable File
#! /bin/sh
|
|
#
|
|
# ============================================================================
|
|
# FILE: defmakexp_aix
|
|
# TYPE: standalone executable
|
|
# SYSTEM: AIX, Solaris
|
|
#
|
|
# DESCRIPTION: This script creates the default export list file "python.exp"
|
|
# for AIX platforms which has to be included in the Modules
|
|
# directory of the python source tree.
|
|
# It contains all global symbols defined in the following files:
|
|
# a) main.o config.o getpath.o
|
|
# b) libModules.a libPython.a libObjects.a libParser.a
|
|
#
|
|
# The script should be run after a new unpack, configure & make
|
|
# of the python release, without any options nor changes to
|
|
# Modules/Setup.in (i.e. a default static build).
|
|
#
|
|
# USAGE: defmakexp_aix [path]
|
|
#
|
|
# where [path] points to the Python source root directory.
|
|
# ============================================================================
|
|
#
|
|
|
|
|
|
#
|
|
# Check for AIX or Solaris
|
|
#
|
|
if (test `uname -s` != "AIX") &&
|
|
(test `uname -s` != "IRIX") &&
|
|
(test `uname -s` != "SunOS" || test `uname -r | cut -d. -f1` != "5"); then
|
|
echo "*** Make sure you are running AIX or Solaris"
|
|
exit 1
|
|
fi
|
|
|
|
if test "$*" = ""; then
|
|
echo "Usage: defmakexp_aix [path to python's source root directory]"
|
|
exit 1
|
|
fi
|
|
|
|
#
|
|
# Variables
|
|
#
|
|
ROOTDIR=$1
|
|
MODSDIR=$ROOTDIR/Modules
|
|
PYTHDIR=$ROOTDIR/Python
|
|
OBJSDIR=$ROOTDIR/Objects
|
|
PARSDIR=$ROOTDIR/Parser
|
|
|
|
OBJFILES="$MODSDIR/main.o $MODSDIR/config.o $MODSDIR/getpath.o"
|
|
LIBFILES="$MODSDIR/libModules.a $OBJSDIR/libObjects.a $PARSDIR/libParser.a"
|
|
LIBFILES="$LIBFILES $PYTHDIR/libPython.a"
|
|
ALLFILES="$OBJFILES $LIBFILES"
|
|
|
|
#
|
|
# Check for object and library files
|
|
#
|
|
for i in $ALLFILES; do
|
|
echo "checking for $i"
|
|
if test ! -f $i; then echo "*** Cannot find $i"; exit 1; fi
|
|
done
|
|
|
|
#
|
|
# Setup the header of Modules/python.exp
|
|
#
|
|
pyexp=$MODSDIR/python.exp
|
|
echo "making export list $pyexp"
|
|
echo "#!" > $pyexp
|
|
echo "*" >> $pyexp
|
|
echo "* ========================================================= " >> $pyexp
|
|
echo "* This is the default export list of the python executable. " >> $pyexp
|
|
echo "* This file is used for the AIX platform ONLY. It provides " >> $pyexp
|
|
echo "* a list of all variables in the python executable that are " >> $pyexp
|
|
echo "* "exported" -- that is, which may be used by any extension " >> $pyexp
|
|
echo "* modules that are created. This file should be used as an " >> $pyexp
|
|
echo "* AIX "import" file when creating extension modules on that " >> $pyexp
|
|
echo "* platform. " >> $pyexp
|
|
echo "* " >> $pyexp
|
|
echo "* This file was generated from the default configuration of " >> $pyexp
|
|
echo "* the distribution (that is, from a build in which NONE of " >> $pyexp
|
|
echo "* the python Modules were built as shared libraries). " >> $pyexp
|
|
echo "* " >> $pyexp
|
|
echo "* THIS FILE IS OVERWRITTEN anytime the python executable is " >> $pyexp
|
|
echo "* re-built using a Modules/Setup file that was customized " >> $pyexp
|
|
echo "* to call for the building of some or all python Modules as " >> $pyexp
|
|
echo "* shared libraries and with the definition of LINKCC having " >> $pyexp
|
|
echo "* been uncommented. A new python.exp will be generated by " >> $pyexp
|
|
echo "* such a build; it will list ONLY the global symbols which " >> $pyexp
|
|
echo "* are defined in the statically-bound modules and libraries." >> $pyexp
|
|
echo "* ========================================================= " >> $pyexp
|
|
echo "*" >> $pyexp
|
|
|
|
#
|
|
# Make the export list
|
|
#
|
|
if test `uname -s` = "AIX"; then
|
|
nmflags='-Bex'
|
|
else
|
|
nmflags='-p'
|
|
fi
|
|
: ${nm=nm}
|
|
$nm $nmflags $ALLFILES \
|
|
| sed -e '/ [^BDT] /d' -e '/\./d' -e 's/.* [BDT] //' \
|
|
| sort | uniq >> $pyexp
|
|
|
|
echo "done"
|