summaryrefslogtreecommitdiffstats
path: root/Modules/ld_so_aix
blob: e5da17eda5a7c0858c79a2ac73076cba75f67efd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/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/"`