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