mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-02-19 14:52:46 +08:00
101 lines
2.0 KiB
Plaintext
101 lines
2.0 KiB
Plaintext
![]() |
#!/bin/sh
|
||
|
#-----------------------------------------------------------------------------
|
||
|
#-- Name: distrib/mac/shared-ld-sh
|
||
|
#-- Purpose: Link a mach-o dynamic shared library for Darwin / Mac OS X
|
||
|
#-- Author: Gilles Depeyrot
|
||
|
#-- Copyright: (c) 2002 Gilles Depeyrot
|
||
|
#-- Licence: any use permitted
|
||
|
#-----------------------------------------------------------------------------
|
||
|
|
||
|
verbose=0
|
||
|
args=""
|
||
|
objects=""
|
||
|
linking_flag="-dynamiclib"
|
||
|
ldargs="-r -keep_private_externs -nostdlib"
|
||
|
|
||
|
if test "x$CXX" = "x"; then
|
||
|
CXX="c++"
|
||
|
fi
|
||
|
|
||
|
while test $# -gt 0; do
|
||
|
case $1 in
|
||
|
|
||
|
-v)
|
||
|
verbose=1
|
||
|
;;
|
||
|
|
||
|
-o|-compatibility_version|-current_version|-framework|-undefined|-install_name)
|
||
|
# collect these options and values
|
||
|
args="${args} $1 $2"
|
||
|
shift
|
||
|
;;
|
||
|
|
||
|
-arch|-isysroot)
|
||
|
# collect these options and values
|
||
|
ldargs="${ldargs} $1 $2"
|
||
|
shift
|
||
|
;;
|
||
|
|
||
|
-s|-Wl,*)
|
||
|
# collect these load args
|
||
|
ldargs="${ldargs} $1"
|
||
|
;;
|
||
|
|
||
|
-l*|-L*|-flat_namespace|-headerpad_max_install_names)
|
||
|
# collect these options
|
||
|
args="${args} $1"
|
||
|
;;
|
||
|
|
||
|
-dynamiclib|-bundle)
|
||
|
linking_flag="$1"
|
||
|
;;
|
||
|
|
||
|
-*)
|
||
|
echo "shared-ld: unhandled option '$1'"
|
||
|
exit 1
|
||
|
;;
|
||
|
|
||
|
*.o | *.a | *.dylib)
|
||
|
# collect object files
|
||
|
objects="${objects} $1"
|
||
|
;;
|
||
|
|
||
|
*)
|
||
|
echo "shared-ld: unhandled argument '$1'"
|
||
|
exit 1
|
||
|
;;
|
||
|
|
||
|
esac
|
||
|
shift
|
||
|
done
|
||
|
|
||
|
status=0
|
||
|
|
||
|
#
|
||
|
# Link one module containing all the others
|
||
|
#
|
||
|
if test ${verbose} = 1; then
|
||
|
echo "$CXX ${ldargs} ${objects} -o master.$$.o"
|
||
|
fi
|
||
|
$CXX ${ldargs} ${objects} -o master.$$.o
|
||
|
status=$?
|
||
|
|
||
|
#
|
||
|
# Link the shared library from the single module created, but only if the
|
||
|
# previous command didn't fail:
|
||
|
#
|
||
|
if test ${status} = 0; then
|
||
|
if test ${verbose} = 1; then
|
||
|
echo "$CXX ${linking_flag} master.$$.o ${args}"
|
||
|
fi
|
||
|
$CXX ${linking_flag} master.$$.o ${args}
|
||
|
status=$?
|
||
|
fi
|
||
|
|
||
|
#
|
||
|
# Remove intermediate module
|
||
|
#
|
||
|
rm -f master.$$.o
|
||
|
|
||
|
exit $status
|