mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-13 04:44:39 +00:00
Replace tabs with spaces in the ml script.
scripts/ml.in:
As above.
This commit is contained in:
780
scripts/ml.in
780
scripts/ml.in
@@ -1,5 +1,5 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# vim: ts=4 sw=4 noet
|
# vim: ts=4 sw=4 et
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
#---------------------------------------------------------------------------#
|
#---------------------------------------------------------------------------#
|
||||||
# Copyright (C) 1995-2008, 2010-2011 The University of Melbourne.
|
# Copyright (C) 1995-2008, 2010-2011 The University of Melbourne.
|
||||||
@@ -95,102 +95,102 @@ MDBCOMP_LIB_NAME=mer_mdbcomp
|
|||||||
MAYBE_STATIC_OPT=""
|
MAYBE_STATIC_OPT=""
|
||||||
|
|
||||||
case $debug in
|
case $debug in
|
||||||
true)
|
true)
|
||||||
trace=true
|
trace=true
|
||||||
;;
|
;;
|
||||||
false)
|
false)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
trace_base=false
|
trace_base=false
|
||||||
case $trace in
|
case $trace in
|
||||||
true)
|
true)
|
||||||
trace_base=true
|
trace_base=true
|
||||||
;;
|
;;
|
||||||
false)
|
false)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
case $ss_debug in
|
case $ss_debug in
|
||||||
true)
|
true)
|
||||||
trace_base=true
|
trace_base=true
|
||||||
;;
|
;;
|
||||||
false)
|
false)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case "$mercury_stdlib_dir" in
|
case "$mercury_stdlib_dir" in
|
||||||
"")
|
"")
|
||||||
LIBDIR=
|
LIBDIR=
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
LIBDIR=$mercury_stdlib_dir/lib
|
LIBDIR=$mercury_stdlib_dir/lib
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# If you haven't set mercury_libs, set it to the default value
|
# If you haven't set mercury_libs, set it to the default value
|
||||||
# (shared on most systems). Note that if you have set all_libs,
|
# (shared on most systems). Note that if you have set all_libs,
|
||||||
# it will also have set mercury_libs.
|
# it will also have set mercury_libs.
|
||||||
case $mercury_libs in
|
case $mercury_libs in
|
||||||
default)
|
default)
|
||||||
mercury_libs=shared
|
mercury_libs=shared
|
||||||
case $FULLARCH in
|
case $FULLARCH in
|
||||||
*-cygwin*|*-mingw*|i*86-*-solaris*)
|
*-cygwin*|*-mingw*|i*86-*-solaris*)
|
||||||
# Shared libraries are not the default on the above systems.
|
# Shared libraries are not the default on the above systems.
|
||||||
# See configure.ac for details.
|
# See configure.ac for details.
|
||||||
case $make_shared_lib in
|
case $make_shared_lib in
|
||||||
false)
|
false)
|
||||||
mercury_libs=static
|
mercury_libs=static
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# We cannot determine if we are using MSVC by looking at FULLARCH;
|
# We cannot determine if we are using MSVC by looking at FULLARCH;
|
||||||
# we must use static linkage with it as we do not currently support
|
# we must use static linkage with it as we do not currently support
|
||||||
# the use of DLLs on Windows.
|
# the use of DLLs on Windows.
|
||||||
case "$C_COMPILER_TYPE" in
|
case "$C_COMPILER_TYPE" in
|
||||||
msvc*)
|
msvc*)
|
||||||
mercury_libs=static
|
mercury_libs=static
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# If you haven't set all_libs, set it to the default value
|
# If you haven't set all_libs, set it to the default value
|
||||||
# (shared on most systems).
|
# (shared on most systems).
|
||||||
case $all_libs in
|
case $all_libs in
|
||||||
default)
|
default)
|
||||||
all_libs=shared
|
all_libs=shared
|
||||||
case $FULLARCH in
|
case $FULLARCH in
|
||||||
*-cygwin*|*-mingw*)
|
*-cygwin*|*-mingw*)
|
||||||
# Shared libraries are not the default on the above systems.
|
# Shared libraries are not the default on the above systems.
|
||||||
# See configure.ac for details.
|
# See configure.ac for details.
|
||||||
#
|
#
|
||||||
# We don't do this for Solaris/x86 because -ldl is
|
# We don't do this for Solaris/x86 because -ldl is
|
||||||
# only available for dynamically linked executables
|
# only available for dynamically linked executables
|
||||||
# XXX With these defaults linking with Mercury
|
# XXX With these defaults linking with Mercury
|
||||||
# libraries other than the standard library will fail.
|
# libraries other than the standard library will fail.
|
||||||
case $make_shared_lib in
|
case $make_shared_lib in
|
||||||
false)
|
false)
|
||||||
all_libs=static
|
all_libs=static
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case "$C_COMPILER_TYPE" in
|
case "$C_COMPILER_TYPE" in
|
||||||
msvc*)
|
msvc*)
|
||||||
all_libs=static
|
all_libs=static
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Defaults have been set, now set options.
|
# Defaults have been set, now set options.
|
||||||
|
|
||||||
case $all_libs in
|
case $all_libs in
|
||||||
static)
|
static)
|
||||||
MAYBE_STATIC_OPT=$LD_STATIC_FLAGS
|
MAYBE_STATIC_OPT=$LD_STATIC_FLAGS
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -203,364 +203,364 @@ esac
|
|||||||
# if the --print-grade option is specified,
|
# if the --print-grade option is specified,
|
||||||
# then all we do is print the grade and then exit
|
# then all we do is print the grade and then exit
|
||||||
case "$print_grade" in
|
case "$print_grade" in
|
||||||
true)
|
true)
|
||||||
echo $GRADE
|
echo $GRADE
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Compute the gc grade from the grade
|
# Compute the gc grade from the grade
|
||||||
case "$GRADE" in
|
case "$GRADE" in
|
||||||
*.par*.gcd*.ll_debug*.prof*)
|
*.par*.gcd*.ll_debug*.prof*)
|
||||||
gc_grade=par_gc_debug_ll_debug_prof
|
gc_grade=par_gc_debug_ll_debug_prof
|
||||||
;;
|
;;
|
||||||
*.gcd*.ll_debug*.prof*)
|
*.gcd*.ll_debug*.prof*)
|
||||||
gc_grade=gc_debug_ll_debug_prof
|
gc_grade=gc_debug_ll_debug_prof
|
||||||
;;
|
;;
|
||||||
*.par*.gcd*.ll_debug*)
|
*.par*.gcd*.ll_debug*)
|
||||||
gc_grade=par_gc_debug_ll_debug
|
gc_grade=par_gc_debug_ll_debug
|
||||||
;;
|
;;
|
||||||
*.gcd*.ll_debug*)
|
*.gcd*.ll_debug*)
|
||||||
gc_grade=gc_debug_ll_debug
|
gc_grade=gc_debug_ll_debug
|
||||||
;;
|
;;
|
||||||
*.par*.gcd*.prof*)
|
*.par*.gcd*.prof*)
|
||||||
gc_grade=par_gc_debug_prof
|
gc_grade=par_gc_debug_prof
|
||||||
;;
|
;;
|
||||||
*.par*.gcd*)
|
*.par*.gcd*)
|
||||||
gc_grade=par_gc_debug
|
gc_grade=par_gc_debug
|
||||||
;;
|
;;
|
||||||
*.gcd*.prof*)
|
*.gcd*.prof*)
|
||||||
gc_grade=gc_debug_prof
|
gc_grade=gc_debug_prof
|
||||||
;;
|
;;
|
||||||
*.gcd*)
|
*.gcd*)
|
||||||
gc_grade=gc_debug
|
gc_grade=gc_debug
|
||||||
;;
|
;;
|
||||||
*.par*.gc*.ll_debug*.prof*)
|
*.par*.gc*.ll_debug*.prof*)
|
||||||
gc_grade=par_gc_ll_debug_prof
|
gc_grade=par_gc_ll_debug_prof
|
||||||
;;
|
;;
|
||||||
*.par*.gc*.ll_debug*)
|
*.par*.gc*.ll_debug*)
|
||||||
gc_grade=par_gc_ll_debug
|
gc_grade=par_gc_ll_debug
|
||||||
;;
|
;;
|
||||||
*.gc*.ll_debug*.prof*)
|
*.gc*.ll_debug*.prof*)
|
||||||
gc_grade=gc_ll_debug_prof
|
gc_grade=gc_ll_debug_prof
|
||||||
;;
|
;;
|
||||||
*.gc*.ll_debug*)
|
*.gc*.ll_debug*)
|
||||||
gc_grade=gc_ll_debug
|
gc_grade=gc_ll_debug
|
||||||
;;
|
;;
|
||||||
*.par*.gc*.prof*)
|
*.par*.gc*.prof*)
|
||||||
gc_grade=par_gc_prof
|
gc_grade=par_gc_prof
|
||||||
;;
|
;;
|
||||||
*.par*.gc*)
|
*.par*.gc*)
|
||||||
gc_grade=par_gc
|
gc_grade=par_gc
|
||||||
;;
|
;;
|
||||||
*.gc*.prof*)
|
*.gc*.prof*)
|
||||||
gc_grade=gc_prof
|
gc_grade=gc_prof
|
||||||
;;
|
;;
|
||||||
*.gc*)
|
*.gc*)
|
||||||
gc_grade=gc
|
gc_grade=gc
|
||||||
;;
|
;;
|
||||||
*.hgc*)
|
*.hgc*)
|
||||||
gc_grade=hgc
|
gc_grade=hgc
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
gc_grade=nogc
|
gc_grade=nogc
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# if the --print-gc-grade option is specified,
|
# if the --print-gc-grade option is specified,
|
||||||
# then all we do is print the gc grade and then exit
|
# then all we do is print the gc grade and then exit
|
||||||
case "$print_gc_grade" in
|
case "$print_gc_grade" in
|
||||||
true)
|
true)
|
||||||
echo $gc_grade
|
echo $gc_grade
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case "$gc_grade" in
|
case "$gc_grade" in
|
||||||
nogc)
|
nogc)
|
||||||
LIBGC=
|
LIBGC=
|
||||||
LIBGC_STATIC=
|
LIBGC_STATIC=
|
||||||
;;
|
;;
|
||||||
hgc)
|
hgc)
|
||||||
# HGC is part of the runtime, don't link anything extra.
|
# HGC is part of the runtime, don't link anything extra.
|
||||||
LIBGC=
|
LIBGC=
|
||||||
LIBGC_STATIC=
|
LIBGC_STATIC=
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
LIBGC="-l$gc_grade"
|
LIBGC="-l$gc_grade"
|
||||||
LIBGC_STATIC=`$FIX_PATH_FOR_LINKER $LIBDIR/lib$gc_grade.@LIB_SUFFIX@`
|
LIBGC_STATIC=`$FIX_PATH_FOR_LINKER $LIBDIR/lib$gc_grade.@LIB_SUFFIX@`
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
||||||
case $readline in
|
case $readline in
|
||||||
true)
|
true)
|
||||||
;;
|
;;
|
||||||
false)
|
false)
|
||||||
READLINE_LIBRARIES=
|
READLINE_LIBRARIES=
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case $trace_base in
|
case $trace_base in
|
||||||
true)
|
true)
|
||||||
TRACE_BASE_LIBS="-l$EVENTSPEC_LIB_NAME \
|
TRACE_BASE_LIBS="-l$EVENTSPEC_LIB_NAME \
|
||||||
-l$BROWSER_LIB_NAME -l$MDBCOMP_LIB_NAME"
|
-l$BROWSER_LIB_NAME -l$MDBCOMP_LIB_NAME"
|
||||||
TRACE_BASE_LIBS_SYSTEM="$TRACE_BASE_LIBS_SYSTEM \
|
TRACE_BASE_LIBS_SYSTEM="$TRACE_BASE_LIBS_SYSTEM \
|
||||||
$READLINE_LIBRARIES"
|
$READLINE_LIBRARIES"
|
||||||
TRACE_BASE_STATIC_LIBS="\
|
TRACE_BASE_STATIC_LIBS="\
|
||||||
`$FIX_PATH_FOR_LINKER \
|
`$FIX_PATH_FOR_LINKER \
|
||||||
$LIBDIR/$GRADE/lib$EVENTSPEC_LIB_NAME.@LIB_SUFFIX@` \
|
$LIBDIR/$GRADE/lib$EVENTSPEC_LIB_NAME.@LIB_SUFFIX@` \
|
||||||
`$FIX_PATH_FOR_LINKER \
|
`$FIX_PATH_FOR_LINKER \
|
||||||
$LIBDIR/$GRADE/lib$BROWSER_LIB_NAME.@LIB_SUFFIX@` \
|
$LIBDIR/$GRADE/lib$BROWSER_LIB_NAME.@LIB_SUFFIX@` \
|
||||||
`$FIX_PATH_FOR_LINKER \
|
`$FIX_PATH_FOR_LINKER \
|
||||||
$LIBDIR/$GRADE/lib$MDBCOMP_LIB_NAME.@LIB_SUFFIX@`"
|
$LIBDIR/$GRADE/lib$MDBCOMP_LIB_NAME.@LIB_SUFFIX@`"
|
||||||
;;
|
;;
|
||||||
false)
|
false)
|
||||||
TRACE_BASE_LIBS=
|
TRACE_BASE_LIBS=
|
||||||
TRACE_BASE_LIBS_SYSTEM=
|
TRACE_BASE_LIBS_SYSTEM=
|
||||||
TRACE_BASE_STATIC_LIBS=
|
TRACE_BASE_STATIC_LIBS=
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case $trace in
|
case $trace in
|
||||||
true)
|
true)
|
||||||
TRACE_LIBS="-l$TRACE_LIB_NAME $TRACE_BASE_LIBS"
|
TRACE_LIBS="-l$TRACE_LIB_NAME $TRACE_BASE_LIBS"
|
||||||
TRACE_LIBS_SYSTEM="$TRACE_BASE_LIBS_SYSTEM"
|
TRACE_LIBS_SYSTEM="$TRACE_BASE_LIBS_SYSTEM"
|
||||||
TRACE_STATIC_LIBS="\
|
TRACE_STATIC_LIBS="\
|
||||||
`$FIX_PATH_FOR_LINKER \
|
`$FIX_PATH_FOR_LINKER \
|
||||||
$LIBDIR/$GRADE/lib$TRACE_LIB_NAME.@LIB_SUFFIX@` \
|
$LIBDIR/$GRADE/lib$TRACE_LIB_NAME.@LIB_SUFFIX@` \
|
||||||
$TRACE_BASE_STATIC_LIBS"
|
$TRACE_BASE_STATIC_LIBS"
|
||||||
;;
|
;;
|
||||||
false)
|
false)
|
||||||
TRACE_LIBS=
|
TRACE_LIBS=
|
||||||
TRACE_LIBS_SYSTEM=
|
TRACE_LIBS_SYSTEM=
|
||||||
TRACE_STATIC_LIBS=
|
TRACE_STATIC_LIBS=
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case $ss_debug in
|
case $ss_debug in
|
||||||
true)
|
true)
|
||||||
SSDB_LIBS="-l$SSDB_LIB_NAME"
|
SSDB_LIBS="-l$SSDB_LIB_NAME"
|
||||||
SSDB_STATIC_LIBS="\
|
SSDB_STATIC_LIBS="\
|
||||||
`$FIX_PATH_FOR_LINKER \
|
`$FIX_PATH_FOR_LINKER \
|
||||||
$LIBDIR/$GRADE/lib$SSDB_LIB_NAME.@LIB_SUFFIX@`"
|
$LIBDIR/$GRADE/lib$SSDB_LIB_NAME.@LIB_SUFFIX@`"
|
||||||
;;
|
;;
|
||||||
false)
|
false)
|
||||||
SSDB_LIBS=
|
SSDB_LIBS=
|
||||||
SSDB_STATIC_LIBS=
|
SSDB_STATIC_LIBS=
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# compile_target_code.m falls back to calling `strip' separately if using a
|
# compile_target_code.m falls back to calling `strip' separately if using a
|
||||||
# linker flag is not possible. That would be non-trivial in this script.
|
# linker flag is not possible. That would be non-trivial in this script.
|
||||||
case $strip in
|
case $strip in
|
||||||
true)
|
true)
|
||||||
STRIP_OPTS="@LD_STRIP_FLAG@"
|
STRIP_OPTS="@LD_STRIP_FLAG@"
|
||||||
;;
|
;;
|
||||||
false)
|
false)
|
||||||
STRIP_OPTS=""
|
STRIP_OPTS=""
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Determine whether to link the executable with debugging symbols when using
|
# Determine whether to link the executable with debugging symbols when using
|
||||||
# MSVC.
|
# MSVC.
|
||||||
if test $strip = "false"
|
if test $strip = "false"
|
||||||
then
|
then
|
||||||
case "$C_COMPILER_TYPE" in
|
case "$C_COMPILER_TYPE" in
|
||||||
msvc*) DEBUG_FLAG="-DEBUG" ;;
|
msvc*) DEBUG_FLAG="-DEBUG" ;;
|
||||||
*) DEBUG_FLAG="" ;;
|
*) DEBUG_FLAG="" ;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
DEBUG_FLAG=""
|
DEBUG_FLAG=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case $thread_safe in
|
case $thread_safe in
|
||||||
true)
|
true)
|
||||||
use_thread_libs=true
|
use_thread_libs=true
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case $use_thread_libs.$make_shared_lib in
|
case $use_thread_libs.$make_shared_lib in
|
||||||
true.false)
|
true.false)
|
||||||
ARCH_OPTS=$LDFLAGS_FOR_THREADS
|
ARCH_OPTS=$LDFLAGS_FOR_THREADS
|
||||||
;;
|
;;
|
||||||
true.true)
|
true.true)
|
||||||
ARCH_OPTS=$LD_LIBFLAGS_FOR_THREADS
|
ARCH_OPTS=$LD_LIBFLAGS_FOR_THREADS
|
||||||
;;
|
;;
|
||||||
false.*)
|
false.*)
|
||||||
THREAD_LIBS=""
|
THREAD_LIBS=""
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
case "$thread_safe,$all_libs" in
|
case "$thread_safe,$all_libs" in
|
||||||
true,static)
|
true,static)
|
||||||
THREAD_LIBS="$THREAD_LIBS $HWLOC_STATIC_LIBS"
|
THREAD_LIBS="$THREAD_LIBS $HWLOC_STATIC_LIBS"
|
||||||
;;
|
;;
|
||||||
true,shared)
|
true,shared)
|
||||||
THREAD_LIBS="$THREAD_LIBS $HWLOC_LIBS"
|
THREAD_LIBS="$THREAD_LIBS $HWLOC_LIBS"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Set the correct flags if we're to use the MS Visual C runtime.
|
# Set the correct flags if we're to use the MS Visual C runtime.
|
||||||
use_msvcrt=@USE_MSVCRT@
|
use_msvcrt=@USE_MSVCRT@
|
||||||
if test $use_msvcrt = "yes"
|
if test $use_msvcrt = "yes"
|
||||||
then
|
then
|
||||||
MSVCRT_OPTS="-MD" # Enable linking with the MS Visual C runtime.
|
MSVCRT_OPTS="-MD" # Enable linking with the MS Visual C runtime.
|
||||||
NODEFAULTLIB_FLAG="-nodefaultlib:libcmt"
|
NODEFAULTLIB_FLAG="-nodefaultlib:libcmt"
|
||||||
else
|
else
|
||||||
MSVCRT_OPTS=""
|
MSVCRT_OPTS=""
|
||||||
NODEFAULTLIB_FLAG=""
|
NODEFAULTLIB_FLAG=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Use any applicable LTO options
|
# Use any applicable LTO options
|
||||||
LTO_OPTS="$LDFLAGS_FOR_LTO"
|
LTO_OPTS="$LDFLAGS_FOR_LTO"
|
||||||
|
|
||||||
case $make_shared_lib in
|
case $make_shared_lib in
|
||||||
true)
|
true)
|
||||||
LINKER="$LINK_SHARED_OBJ"
|
LINKER="$LINK_SHARED_OBJ"
|
||||||
case $allow_undef in
|
case $allow_undef in
|
||||||
true)
|
true)
|
||||||
UNDEF_OPT="$ALLOW_UNDEFINED"
|
UNDEF_OPT="$ALLOW_UNDEFINED"
|
||||||
;;
|
;;
|
||||||
false)
|
false)
|
||||||
UNDEF_OPT="$ERROR_UNDEFINED"
|
UNDEF_OPT="$ERROR_UNDEFINED"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
RPATH_OPT="$SHLIB_RPATH_OPT"
|
RPATH_OPT="$SHLIB_RPATH_OPT"
|
||||||
RPATH_SEP="$SHLIB_RPATH_SEP"
|
RPATH_SEP="$SHLIB_RPATH_SEP"
|
||||||
STDLIBS="$SHARED_LIBS $THREAD_LIBS"
|
STDLIBS="$SHARED_LIBS $THREAD_LIBS"
|
||||||
case $trace in
|
case $trace in
|
||||||
true)
|
true)
|
||||||
ARCH_OPTS="$ARCH_OPTS $LD_LIBFLAGS_FOR_TRACE"
|
ARCH_OPTS="$ARCH_OPTS $LD_LIBFLAGS_FOR_TRACE"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
SANITIZER_OPTS="$LDFLAGS_FOR_SANITIZERS"
|
SANITIZER_OPTS="$LDFLAGS_FOR_SANITIZERS"
|
||||||
;;
|
;;
|
||||||
false)
|
false)
|
||||||
LINKER="$CC"
|
LINKER="$CC"
|
||||||
UNDEF_OPT=""
|
UNDEF_OPT=""
|
||||||
RPATH_OPT="$EXE_RPATH_OPT"
|
RPATH_OPT="$EXE_RPATH_OPT"
|
||||||
RPATH_SEP="$EXE_RPATH_SEP"
|
RPATH_SEP="$EXE_RPATH_SEP"
|
||||||
STDLIBS="$MATH_LIB $THREAD_LIBS"
|
STDLIBS="$MATH_LIB $THREAD_LIBS"
|
||||||
case $trace in
|
case $trace in
|
||||||
true)
|
true)
|
||||||
ARCH_OPTS="$ARCH_OPTS $LDFLAGS_FOR_TRACE"
|
ARCH_OPTS="$ARCH_OPTS $LDFLAGS_FOR_TRACE"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
SANITIZER_OPTS="$LDFLAGS_FOR_SANITIZERS"
|
SANITIZER_OPTS="$LDFLAGS_FOR_SANITIZERS"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# If the --print-link-command option is specified,
|
# If the --print-link-command option is specified,
|
||||||
# then all we do is print the command used to link executables
|
# then all we do is print the command used to link executables
|
||||||
# and then exit.
|
# and then exit.
|
||||||
case "$print_link_command" in
|
case "$print_link_command" in
|
||||||
true)
|
true)
|
||||||
echo $LINKER
|
echo $LINKER
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# If the --print-shared-lib-command option is specified,
|
# If the --print-shared-lib-command option is specified,
|
||||||
# then all we do is print the command used to link executables
|
# then all we do is print the command used to link executables
|
||||||
# and then exit.
|
# and then exit.
|
||||||
case "$print_shared_lib_link_command" in
|
case "$print_shared_lib_link_command" in
|
||||||
true)
|
true)
|
||||||
echo $LINK_SHARED_OBJ
|
echo $LINK_SHARED_OBJ
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if $print_map
|
if $print_map
|
||||||
then
|
then
|
||||||
PRINT_MAP_OPT="-Wl,--print-map"
|
PRINT_MAP_OPT="-Wl,--print-map"
|
||||||
else
|
else
|
||||||
PRINT_MAP_OPT=""
|
PRINT_MAP_OPT=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
merc_libdir_opts="\
|
merc_libdir_opts="\
|
||||||
@LIB_LIBPATH@$LIBDIR/$GRADE
|
@LIB_LIBPATH@$LIBDIR/$GRADE
|
||||||
@LIB_LIBPATH@$LIBDIR
|
@LIB_LIBPATH@$LIBDIR
|
||||||
"
|
"
|
||||||
system_libdir_opts=
|
system_libdir_opts=
|
||||||
for dir in $ALL_LOCAL_C_LIB_DIRS kludge_for_broken_shells; do
|
for dir in $ALL_LOCAL_C_LIB_DIRS kludge_for_broken_shells; do
|
||||||
if test "$dir" != "kludge_for_broken_shells"
|
if test "$dir" != "kludge_for_broken_shells"
|
||||||
then
|
then
|
||||||
system_libdir_opts="@LIB_LIBPATH@$dir $system_libdir_opts"
|
system_libdir_opts="@LIB_LIBPATH@$dir $system_libdir_opts"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
LIBDIR_OPTS="$user_libdir_opts $merc_libdir_opts $system_libdir_opts"
|
LIBDIR_OPTS="$user_libdir_opts $merc_libdir_opts $system_libdir_opts"
|
||||||
|
|
||||||
case $mercury_libs in
|
case $mercury_libs in
|
||||||
shared)
|
shared)
|
||||||
MERCURY_LIBS=${MERCURY_LIBS="$SSDB_LIBS $TRACE_LIBS \
|
MERCURY_LIBS=${MERCURY_LIBS="$SSDB_LIBS $TRACE_LIBS \
|
||||||
-l$STD_LIB_NAME -l$RT_LIB_NAME $LIBGC"}
|
-l$STD_LIB_NAME -l$RT_LIB_NAME $LIBGC"}
|
||||||
LIBS=${LIBS="$MERCURY_LIBS $TRACE_LIBS_SYSTEM $STDLIBS"}
|
LIBS=${LIBS="$MERCURY_LIBS $TRACE_LIBS_SYSTEM $STDLIBS"}
|
||||||
merc_shlib_dirs="$merc_shlib_dirs $LIBDIR/$GRADE"
|
merc_shlib_dirs="$merc_shlib_dirs $LIBDIR/$GRADE"
|
||||||
merc_shlib_dirs="$merc_shlib_dirs $LIBDIR"
|
merc_shlib_dirs="$merc_shlib_dirs $LIBDIR"
|
||||||
;;
|
;;
|
||||||
static)
|
static)
|
||||||
MERCURY_LIBS=${MERCURY_LIBS="$SSDB_STATIC_LIBS \
|
MERCURY_LIBS=${MERCURY_LIBS="$SSDB_STATIC_LIBS \
|
||||||
$TRACE_STATIC_LIBS \
|
$TRACE_STATIC_LIBS \
|
||||||
`$FIX_PATH_FOR_LINKER \
|
`$FIX_PATH_FOR_LINKER \
|
||||||
$LIBDIR/$GRADE/lib$STD_LIB_NAME.@LIB_SUFFIX@` \
|
$LIBDIR/$GRADE/lib$STD_LIB_NAME.@LIB_SUFFIX@` \
|
||||||
`$FIX_PATH_FOR_LINKER \
|
`$FIX_PATH_FOR_LINKER \
|
||||||
$LIBDIR/$GRADE/lib$RT_LIB_NAME.@LIB_SUFFIX@` \
|
$LIBDIR/$GRADE/lib$RT_LIB_NAME.@LIB_SUFFIX@` \
|
||||||
$LIBGC_STATIC"}
|
$LIBGC_STATIC"}
|
||||||
LIBS=${LIBS="$MERCURY_LIBS $TRACE_LIBS_SYSTEM $STDLIBS"}
|
LIBS=${LIBS="$MERCURY_LIBS $TRACE_LIBS_SYSTEM $STDLIBS"}
|
||||||
merc_shlib_dirs=""
|
merc_shlib_dirs=""
|
||||||
;;
|
;;
|
||||||
none)
|
none)
|
||||||
LIBS="$TRACE_LIBS_SYSTEM $STDLIBS"
|
LIBS="$TRACE_LIBS_SYSTEM $STDLIBS"
|
||||||
LIBDIR_OPTS="$user_libdir_opts $system_libdir_opts"
|
LIBDIR_OPTS="$user_libdir_opts $system_libdir_opts"
|
||||||
merc_shlib_dirs=""
|
merc_shlib_dirs=""
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case $all_libs in
|
case $all_libs in
|
||||||
shared)
|
shared)
|
||||||
system_shlib_dirs=$ALL_LOCAL_C_LIB_DIRS
|
system_shlib_dirs=$ALL_LOCAL_C_LIB_DIRS
|
||||||
;;
|
;;
|
||||||
static)
|
static)
|
||||||
system_shlib_dirs=""
|
system_shlib_dirs=""
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
RPATH_OPT_LIST=
|
RPATH_OPT_LIST=
|
||||||
# Only set RPATH_OPT_LIST if the system supports shared libraries.
|
# Only set RPATH_OPT_LIST if the system supports shared libraries.
|
||||||
case $EXT_FOR_SHARED_LIB in
|
case $EXT_FOR_SHARED_LIB in
|
||||||
so)
|
so)
|
||||||
prev=""
|
prev=""
|
||||||
for dir in $user_shlib_dirs $merc_shlib_dirs \
|
for dir in $user_shlib_dirs $merc_shlib_dirs \
|
||||||
$system_shlib_dirs 'kludge for broken shells'
|
$system_shlib_dirs 'kludge for broken shells'
|
||||||
do
|
do
|
||||||
case "$dir" in
|
case "$dir" in
|
||||||
'kludge for broken shells')
|
'kludge for broken shells')
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
case "$prev" in
|
case "$prev" in
|
||||||
"")
|
"")
|
||||||
RPATH_OPT_LIST="$RPATH_OPT$dir"
|
RPATH_OPT_LIST="$RPATH_OPT$dir"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
RPATH_OPT_LIST="$RPATH_OPT_LIST$RPATH_SEP$dir"
|
RPATH_OPT_LIST="$RPATH_OPT_LIST$RPATH_SEP$dir"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
prev=$dir
|
prev=$dir
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case "$MKFIFO" in
|
case "$MKFIFO" in
|
||||||
none)
|
none)
|
||||||
demangle=false
|
demangle=false
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case "$C_COMPILER_TYPE" in
|
case "$C_COMPILER_TYPE" in
|
||||||
msvc*) NOLOGO_OPTS="-nologo" ;;
|
msvc*) NOLOGO_OPTS="-nologo" ;;
|
||||||
*) NOLOGO_OPTS="" ;;
|
*) NOLOGO_OPTS="" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
LINKER_PRE_FLAGS="$NOLOGO_OPTS $MSVCRT_OPTS $PRINT_MAP_OPT $UNDEF_OPT $STRIP_OPTS $LTO_OPTS $MAYBE_STATIC_OPT $ARCH_OPTS $SANITIZER_OPTS"
|
LINKER_PRE_FLAGS="$NOLOGO_OPTS $MSVCRT_OPTS $PRINT_MAP_OPT $UNDEF_OPT $STRIP_OPTS $LTO_OPTS $MAYBE_STATIC_OPT $ARCH_OPTS $SANITIZER_OPTS"
|
||||||
@@ -568,78 +568,78 @@ LINKER_POST_FLAGS="@LINK_OPT_SEP@ $NODEFAULTLIB_FLAG $DEBUG_FLAG $LIBDIR_OPTS $R
|
|||||||
|
|
||||||
case $verbose in
|
case $verbose in
|
||||||
true)
|
true)
|
||||||
echo "ml: using grade \`$GRADE'"
|
echo "ml: using grade \`$GRADE'"
|
||||||
case $demangle in
|
case $demangle in
|
||||||
false)
|
false)
|
||||||
echo $LINKER $LINKER_PRE_FLAGS "$@" $LINKER_POST_FLAGS
|
echo $LINKER $LINKER_PRE_FLAGS "$@" $LINKER_POST_FLAGS
|
||||||
;;
|
;;
|
||||||
true)
|
true)
|
||||||
echo $LINKER $LINKER_PRE_FLAGS "$@" $LINKER_POST_FLAGS "|"
|
echo $LINKER $LINKER_PRE_FLAGS "$@" $LINKER_POST_FLAGS "|"
|
||||||
echo "$DEMANGLER"
|
echo "$DEMANGLER"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case $demangle in
|
case $demangle in
|
||||||
true)
|
true)
|
||||||
# We would like to just run $CC and pipe the result into $DEMANGLER,
|
# We would like to just run $CC and pipe the result into $DEMANGLER,
|
||||||
# but `$CC | $DEMANGLER' would return the wrong exit status, so
|
# but `$CC | $DEMANGLER' would return the wrong exit status, so
|
||||||
# we need to use a named pipe; if the system doesn't have named
|
# we need to use a named pipe; if the system doesn't have named
|
||||||
# pipes, then we don't use the demangler.
|
# pipes, then we don't use the demangler.
|
||||||
|
|
||||||
# Create the pipe, making sure we remove it if interrupted.
|
# Create the pipe, making sure we remove it if interrupted.
|
||||||
old_umask=`umask`
|
old_umask=`umask`
|
||||||
umask 022
|
umask 022
|
||||||
try=0
|
try=0
|
||||||
until
|
until
|
||||||
ML_TMPDIR=$TMPDIR/ml$$.$try
|
ML_TMPDIR=$TMPDIR/ml$$.$try
|
||||||
PIPE=$ML_TMPDIR/pipe
|
PIPE=$ML_TMPDIR/pipe
|
||||||
trap 'rmdir $ML_TMPDIR >/dev/null 2>&1; exit 1' 1 2 3 13 15
|
trap 'rmdir $ML_TMPDIR >/dev/null 2>&1; exit 1' 1 2 3 13 15
|
||||||
mkdir $ML_TMPDIR
|
mkdir $ML_TMPDIR
|
||||||
do
|
do
|
||||||
try="`expr $try + 1`"
|
try="`expr $try + 1`"
|
||||||
# give up after 20 tries
|
# give up after 20 tries
|
||||||
case "$try" in
|
case "$try" in
|
||||||
20)
|
20)
|
||||||
echo "ml: unable to create temporary directory for pipe" \
|
echo "ml: unable to create temporary directory for pipe" \
|
||||||
1>&2
|
1>&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
trap 'rm -rf $ML_TMPDIR; exit 1' 1 2 3 13 15
|
trap 'rm -rf $ML_TMPDIR; exit 1' 1 2 3 13 15
|
||||||
umask $old_umask
|
umask $old_umask
|
||||||
$MKFIFO $PIPE
|
$MKFIFO $PIPE
|
||||||
# Execute the demangler in the background, with stdin coming from
|
# Execute the demangler in the background, with stdin coming from
|
||||||
# the pipe and with stdout redirected to stderr.
|
# the pipe and with stdout redirected to stderr.
|
||||||
exec $DEMANGLER --explain-link-errors 1>&2 < $PIPE &
|
exec $DEMANGLER --explain-link-errors 1>&2 < $PIPE &
|
||||||
# Execute $CC with stdout & stderr redirected to go via the pipe
|
# Execute $CC with stdout & stderr redirected to go via the pipe
|
||||||
# to $DEMANGLER and then to stderr.
|
# to $DEMANGLER and then to stderr.
|
||||||
case $# in
|
case $# in
|
||||||
0)
|
0)
|
||||||
$LINKER $LINKER_PRE_FLAGS $LINKER_POST_FLAGS >$PIPE 2>&1
|
$LINKER $LINKER_PRE_FLAGS $LINKER_POST_FLAGS >$PIPE 2>&1
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
$LINKER $LINKER_PRE_FLAGS "$@" $LINKER_POST_FLAGS >$PIPE 2>&1
|
$LINKER $LINKER_PRE_FLAGS "$@" $LINKER_POST_FLAGS >$PIPE 2>&1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
linker_status=$?
|
linker_status=$?
|
||||||
# Now we can remove the pipe; since is an open file, it will stay
|
# Now we can remove the pipe; since is an open file, it will stay
|
||||||
# around until $DEMANGLER exits.
|
# around until $DEMANGLER exits.
|
||||||
rm -rf $ML_TMPDIR
|
rm -rf $ML_TMPDIR
|
||||||
# Wait for the demangler to exit before exiting ourselves.
|
# Wait for the demangler to exit before exiting ourselves.
|
||||||
wait
|
wait
|
||||||
exit $linker_status
|
exit $linker_status
|
||||||
;;
|
;;
|
||||||
false)
|
false)
|
||||||
case $# in
|
case $# in
|
||||||
0)
|
0)
|
||||||
exec $LINKER $LINKER_PRE_FLAGS $LINKER_POST_FLAGS
|
exec $LINKER $LINKER_PRE_FLAGS $LINKER_POST_FLAGS
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
exec $LINKER $LINKER_PRE_FLAGS "$@" $LINKER_POST_FLAGS
|
exec $LINKER $LINKER_PRE_FLAGS "$@" $LINKER_POST_FLAGS
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Reference in New Issue
Block a user