* Imported original elk 3.0 tree.
git-svn-id: svn://svn.zoy.org/elk/trunk@1 55e467fa-43c5-0310-a8a2-de718669efc6
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
. ../config/system
|
||||
. ../config/site
|
||||
|
||||
cat <<HERE
|
||||
# Echo the LDFLAGS required for linking the Elk interpreter kernel.
|
||||
|
||||
echo $ldflags
|
||||
HERE
|
||||
@@ -0,0 +1,89 @@
|
||||
. ../config/system
|
||||
. ../config/site
|
||||
|
||||
cat <<HERE
|
||||
#!/bin/sh
|
||||
|
||||
# This script creates an interpreter that is linked statically with your
|
||||
# extensions and/or application-specific object files (usually on platforms
|
||||
# that don't support incremental linking).
|
||||
#
|
||||
# The first argument is the executable to be created, the remaining
|
||||
# arguments are the object files and optional libraries.
|
||||
#
|
||||
# See INSTALL in the toplevel directory of the distribution for an
|
||||
# example and further information.
|
||||
|
||||
if [ \$# = 0 ]
|
||||
then
|
||||
echo Usage: "\$0: output-file [object-files]"
|
||||
exit 1
|
||||
fi
|
||||
ofile=$install_dir/lib/standalone.o
|
||||
aout=\$1
|
||||
if [ -f \$aout ]
|
||||
then
|
||||
echo \$aout already exists.
|
||||
exit 1
|
||||
fi
|
||||
shift
|
||||
extensions=\$*
|
||||
|
||||
# A special case is required for AIX. The AIX linker discards all object
|
||||
# files whose external symbols are not referenced. This stupid \`garbage
|
||||
# collection' cannot be switched off. Since extensions do not have entry
|
||||
# points that are called directly, they are garbage collected away by the
|
||||
# linker (the interpreter scans its symbol table on startup to find the
|
||||
# entry points and calls them indirectly by using the symbol values).
|
||||
#
|
||||
# To avoid this, we have to create an \`export list' containing at least one
|
||||
# external function from each extension. We are using the elk_init_
|
||||
# functions, as it is guaranteed that each extensions exports at least one
|
||||
# such function.
|
||||
#
|
||||
# We grep in the nm output for all lines of this form (i.e. entries that
|
||||
# start with .elk_init_ and have a symbol type of "extern"):
|
||||
#
|
||||
# .elk_init_foobar | 113520|extern| | | |.text
|
||||
#
|
||||
# then select the symbol name, and delete the initial period.
|
||||
|
||||
case $system in
|
||||
*-aix3*-cc)
|
||||
echo Creating export list for AIX 3.x linker:
|
||||
for e in \$extensions
|
||||
do
|
||||
case \$e in
|
||||
-l*) ;;
|
||||
*)
|
||||
nm -e \$e | grep '^\.$init_prefix.*|extern|' | sed -e 's/[|.]//g'\\
|
||||
| awk '{print \$1}' >> exportlist
|
||||
;;
|
||||
esac
|
||||
done
|
||||
cat exportlist
|
||||
$cc -o \$aout -bexport:exportlist \$ofile \$extensions $ldflags
|
||||
rm exportlist
|
||||
;;
|
||||
*-aix4*-cc)
|
||||
echo Creating export list for AIX 4.x linker:
|
||||
for e in \$extensions
|
||||
do
|
||||
case \$e in
|
||||
-l*) ;;
|
||||
*)
|
||||
nm \$e | grep '^\.$init_prefix.* *T ' \\
|
||||
| awk '{print \$1}' >> exportlist
|
||||
;;
|
||||
esac
|
||||
done
|
||||
cat exportlist
|
||||
$cc -o \$aout -bexport:exportlist \$ofile \$extensions $ldflags
|
||||
rm exportlist
|
||||
;;
|
||||
*)
|
||||
$cc -o \$aout \$ofile \$extensions $ldflags
|
||||
;;
|
||||
esac
|
||||
chmod +x \$aout
|
||||
HERE
|
||||
@@ -0,0 +1,24 @@
|
||||
. ../config/system
|
||||
. ../config/site
|
||||
|
||||
cat <<HERE
|
||||
#!/bin/sh
|
||||
|
||||
# Link one dynamically loadable extension (an object file); or
|
||||
# combine several object files into one dynamically loadable extension
|
||||
# and resolve against libraries.
|
||||
#
|
||||
# Arguments are the output file and one or more object files and libraries.
|
||||
|
||||
if [ \$# -lt 2 ]; then
|
||||
echo Usage: "\$0: output-file object-files [libraries]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
output=\$1
|
||||
shift
|
||||
|
||||
$ld -r $obj_ldflags \$*
|
||||
mv a.out \$output
|
||||
chmod 644 \$output
|
||||
HERE
|
||||
@@ -0,0 +1,24 @@
|
||||
. ../config/system
|
||||
. ../config/site
|
||||
|
||||
cat <<HERE
|
||||
#!/bin/sh
|
||||
|
||||
# Link one dynamically loadable extension (an object file); or
|
||||
# combine several object files into one dynamically loadable extension
|
||||
# and resolve against libraries.
|
||||
#
|
||||
# Arguments are the output file and one or more object files and libraries.
|
||||
|
||||
if [ \$# -lt 2 ]; then
|
||||
echo Usage: "\$0: output-file object-files [libraries]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
output=\$1
|
||||
shift
|
||||
|
||||
$ld -r $obj_ldflags $xflag \$*
|
||||
mv a.out \$output
|
||||
chmod 644 \$output
|
||||
HERE
|
||||
@@ -0,0 +1,25 @@
|
||||
. ../config/system
|
||||
. ../config/site
|
||||
|
||||
cat <<HERE
|
||||
#!/bin/sh
|
||||
|
||||
# Dynamic loading is not supported on this platform. This shell script
|
||||
# just combines several .o files into a single .o file.
|
||||
#
|
||||
# Arguments are the output file and one or more object files and libraries.
|
||||
|
||||
if [ \$# -lt 2 ]; then
|
||||
echo Usage: "\$0: output-file object-files [libraries]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
output=\$1
|
||||
shift
|
||||
|
||||
if [ \$# != 1 -o _\$1 != _\$output ]; then
|
||||
$ld -r $obj_ldflags $xflag \$*
|
||||
mv a.out \$output
|
||||
chmod 644 \$output
|
||||
fi
|
||||
HERE
|
||||
@@ -0,0 +1,23 @@
|
||||
. ../config/system
|
||||
. ../config/site
|
||||
|
||||
cat <<HERE
|
||||
#!/bin/sh
|
||||
|
||||
# Link one dynamically loadable extension (an object file); or
|
||||
# combine several object files into one dynamically loadable extension
|
||||
# and resolve against libraries.
|
||||
#
|
||||
# Arguments are the output file and one or more object files and libraries.
|
||||
|
||||
if [ \$# -lt 2 ]; then
|
||||
echo Usage: "\$0: output-file object-files [libraries]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
output=\$1
|
||||
shift
|
||||
|
||||
$ld -r -o \$output $obj_ldflags $xflag \$*
|
||||
chmod 644 \$output
|
||||
HERE
|
||||
@@ -0,0 +1,24 @@
|
||||
. ../config/system
|
||||
. ../config/site
|
||||
|
||||
cat <<HERE
|
||||
#!/bin/sh
|
||||
|
||||
# Link one dynamically loadable extension (an object file); or
|
||||
# combine several object files into one dynamically loadable extension
|
||||
# and resolve against libraries.
|
||||
#
|
||||
# Arguments are the output file and one or more object files and libraries.
|
||||
|
||||
if [ \$# -lt 2 ]; then
|
||||
echo Usage: "\$0: output-file object-files [libraries]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
output=\$1
|
||||
shift
|
||||
|
||||
$ld -b $obj_ldflags $xflag \$*
|
||||
mv a.out \$output
|
||||
chmod 755 \$output
|
||||
HERE
|
||||
Reference in New Issue
Block a user