#!/bin/sh # # ======================================================================== # FILE: ld_so_aix # TYPE: executable, uses makexp_aix # SYSTEM: AIX # # DESCRIPTION: Creates a shareable .o from a pre-compiled (unshared) # .o file # # USAGE: ld_so_aix [CC] [arguments] # # ARGUMENTS: Same as for "ld". The -bM, -bE, -bI, -H, -T, and -lm # arguments will be supplied by this script. The compiler # specific ("-lc" or "-lc_r", "-lpthreads", etc) arguments # will be automatically passed to "ld" according to the CC # command provided as a first argument to this script. # Usually, the same CC command was used to produce the # pre-compiled .o file. # # NOTES: 1. Currently specific to the building of Python # interpreter shared objects, in that the entry # point name is hardcoded based on the object file # name (the "mathmodule.o" file will expect an # entry point of "initmath"). This could be remedied # by the support (or simple expectation) of a "-e" # argument. # 2. The resulting shared object file is left in the # current directory with the extension .so # 3. Uncommenting the "echo" lines gives detailed output # about the commands executed in the script. # # HISTORY: Aug-6-1996 -- Take care of the compiler specific -- # -- args by leaving CC to invoke "ld". -- # Vladimir Marangozov # # Jul-1-1996 -- Make sure to use /usr/ccs/bin/ld -- # -- Use makexp_aix for the export list. -- # Vladimir Marangozov (Vladimir.Marangozov@imag.fr) # # Manus Hand (mhand@csn.net) -- Initial code -- 6/24/96 # ======================================================================== # # Variables CC=$1; shift objfile=$1; shift filename=`echo $objfile | sed -e "s:.*/\([^/]*\)$:\1:" -e "s/\..*$//"` entry=init`echo $filename | sed "s/module.*//"` expfile="$filename.exp" impfile="python.exp" CCOPT="-Wl,-e$entry -Wl,-bE:$expfile -Wl,-bI:$impfile" CCOPT="$CCOPT -Wl,-bM:SRE -Wl,-T512 -Wl,-H512 -lm" CCARGS="$objfile $*" # Export list generation makexp_aix $filename.exp "$objfile" $objfile # Perform the link. #echo $CC $CCOPT $CCARGS $CC $CCOPT $CCARGS # Delete the module's export list file. # Comment this line if you need it. rm -f $filename.exp # Remove the exec rights on the shared module. #echo chmod -x `echo $objfile | sed "s/\.o$/.so/"` chmod -x `echo $objfile | sed "s/\.o$/.so/"`