#! /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"
