fish-shell/muparser/shared-ld-sh
Kurtis Rader d247c121a2 Check-in MuParser source
First step in fixing issue #3157 is to check-in the source code and hook
it into our build system.

The inclusion of the MuParser source adds the MIT License to those that
apply to fish. Update our documentation to reflect that fact.

The MuParser documentation is at
http://beltoforion.de/article.php?a=muparser.  The source was downloaded
from https://github.com/beltoforion/muparser/releases. It is also hosted
on Github, https://github.com/beltoforion/muparser/. I did not download
it from Github because that source contained just a couple of cleanup
changes which don't affect its behavior.
2017-08-23 14:43:45 -07:00

101 lines
2.0 KiB
Bash
Executable File

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