fish-shell/muparser/shared-ld-sh

101 lines
2.0 KiB
Plaintext
Raw Normal View History

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