summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2018-11-22 13:15:20 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2018-11-22 13:15:42 +0000
commite63dc062b947b3d905052c00764206ca6dd981fe (patch)
treed9ae2f3a7edac11844458fd013f21fcc394202f3
parentReleasing progress-linux version 0.1.58-1~dschinn1. (diff)
downloadbabl-e63dc062b947b3d905052c00764206ca6dd981fe.zip
babl-e63dc062b947b3d905052c00764206ca6dd981fe.tar.xz
Merging upstream version 0.1.60.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
-rw-r--r--INSTALL10
-rw-r--r--NEWS3
-rw-r--r--README179
-rw-r--r--babl/babl-conversion.c21
-rw-r--r--babl/babl-icc.c2
-rw-r--r--babl/babl-image.c13
-rw-r--r--babl/babl-palette.c5
-rw-r--r--babl/babl-version.h2
-rw-r--r--babl/babl.c2
-rw-r--r--babl/babl.h2
-rwxr-xr-xconfigure37
-rw-r--r--configure.ac2
-rw-r--r--docs/index-static.html.in2
-rw-r--r--extensions/cairo.c36
-rw-r--r--ltmain.sh415
-rw-r--r--m4/libtool.m415
16 files changed, 282 insertions, 464 deletions
diff --git a/INSTALL b/INSTALL
index 72bb7f5..39c33dd 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
-babl 0.1.58
+babl 0.1.60
Dynamic; any to any, pixel format conversion library.
@@ -12,10 +12,10 @@ From a released version the following is the expected method of
installation (or a variation on this theme):
------------------------------------------------------------
- foo$ wget ftp://ftp.gtk.org/pub/babl/0.1/babl-0.1.58.tar.bz2
- foo$ tar jxf babl-0.1.58.tar.gz
- foo$ cd babl-0.1.58
- foo/babl-0.1.58$ ./configure && make && sudo make install
+ foo$ wget ftp://ftp.gtk.org/pub/babl/0.1/babl-0.1.60.tar.bz2
+ foo$ tar jxf babl-0.1.60.tar.gz
+ foo$ cd babl-0.1.60
+ foo/babl-0.1.60$ ./configure && make && sudo make install
------------------------------------------------------------
diff --git a/NEWS b/NEWS
index 0d1eac9..3cddd1b 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,9 @@ The NEWS file in the babl source tree is the source location for
the news section both in the README and the webpage.
-->
+2018-10-05 babl-0.1.60 </dt><dd>
+Improved thread safety, acceleration for R'G'B'A u8 -> cairo-ARGB32 conversion.
+ </dd><dt>
2018-10-05 babl-0.1.58 </dt><dd>
Preserve color of transparent pixels in conversion to premultiplied alpha,
Added single precision code-paths for faster fallback/reference conversions.
diff --git a/README b/README
index 3954c2c..43a3711 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-Babl-0.1.58
+Babl-0.1.60
Contents
@@ -63,6 +63,9 @@ babl release. If there are significant improvements to babl when a GEGL
release is done a babl release is most often put out just prior to the
GEGL release.
+2018-10-05 babl-0.1.60
+ Improved thread safety, acceleration for R'G'B'A u8 -> cairo-ARGB32
+ conversion.
2018-10-05 babl-0.1.58
Preserve color of transparent pixels in conversion to premultiplied
alpha, Added single precision code-paths for faster fallback/
@@ -678,43 +681,6 @@ components
magenta
yellow
-camayakaA
-
-components
-
- ca
- ma
- ya
- ka
- A
-
-cmykA
-
-components
-
- cyan
- magenta
- yellow
- key
- A
-
-cmyk
-
-components
-
- cyan
- magenta
- yellow
- key
-
-cmy
-
-components
-
- cyan
- magenta
- yellow
-
Pixel formats
RGBA double
@@ -2669,139 +2635,6 @@ components
u8 yellow
u8 key
-camayakaA double
-
-bytes/pixel
- 40
-model
- camayakaA
-components
-
- double ca
- double ma
- double ya
- double ka
- double A
-
-cmykA double
-
-bytes/pixel
- 40
-model
- cmykA
-components
-
- double cyan
- double magenta
- double yellow
- double key
- double A
-
-cmyk double
-
-bytes/pixel
- 32
-model
- cmyk
-components
-
- double cyan
- double magenta
- double yellow
- double key
-
-cmy double
-
-bytes/pixel
- 24
-model
- cmy
-components
-
- double cyan
- double magenta
- double yellow
-
-camayakaA float
-
-bytes/pixel
- 20
-model
- camayakaA
-components
-
- float ca
- float ma
- float ya
- float ka
- float A
-
-cmykA float
-
-bytes/pixel
- 20
-model
- cmykA
-components
-
- float cyan
- float magenta
- float yellow
- float key
- float A
-
-cmyk float
-
-bytes/pixel
- 16
-model
- cmyk
-components
-
- float cyan
- float magenta
- float yellow
- float key
-
-cmy float
-
-bytes/pixel
- 12
-model
- cmy
-components
-
- float cyan
- float magenta
- float yellow
-
-cmyk u8
-
-bytes/pixel
- 4
-model
- cmyk
-components
-
- u8 cyan
- u8 magenta
- u8 yellow
- u8 key
-
-cmykA u8
-
-bytes/pixel
- 5
-model
- cmykA
-components
-
- u8 cyan
- u8 magenta
- u8 yellow
- u8 key
- u8 A
-
Environment
Through the environment variable BABL_TOLERANCE you can control a speed
@@ -2857,7 +2690,7 @@ more widely expect premultiplied data in more operations which will
become a speedup when more filters want to integrate in the layer
processing pipeline.
-There is a post on patreon with further details about details of the
+There is a post on patreon with further details about the
implementation.
TODO
@@ -2954,4 +2787,4 @@ Ell
Félix Piédallu
Initial meson build
-/babl-0.1.58
+/babl-0.1.60
diff --git a/babl/babl-conversion.c b/babl/babl-conversion.c
index 1127c00..180ddad 100644
--- a/babl/babl-conversion.c
+++ b/babl/babl-conversion.c
@@ -228,20 +228,13 @@ _conversion_new (const char *name,
const Babl *src_format = NULL;
const Babl *dst_format = NULL;
- if (model_is_rgba (BABL (babl->conversion.source)) ||
- model_is_rgba (BABL (babl->conversion.destination)))
- {
- src_format = babl_format_with_model_as_type (
- BABL (babl->conversion.source),
- babl_type_from_id (BABL_DOUBLE));
- dst_format = babl_format_with_model_as_type (
- BABL (babl->conversion.destination),
- babl_type_from_id (BABL_DOUBLE));
- }
- else
- {
- babl_fatal ("neither source nor destination model is RGBA (requirement might be temporary)");
- }
+ src_format = babl_format_with_model_as_type (
+ BABL (babl->conversion.source),
+ babl_type_from_id (BABL_DOUBLE));
+ dst_format = babl_format_with_model_as_type (
+ BABL (babl->conversion.destination),
+ babl_type_from_id (BABL_DOUBLE));
+
babl_conversion_new (
src_format,
dst_format,
diff --git a/babl/babl-icc.c b/babl/babl-icc.c
index f463e9e..1ffe415 100644
--- a/babl/babl-icc.c
+++ b/babl/babl-icc.c
@@ -626,7 +626,7 @@ const char *babl_space_get_icc (const Babl *babl, int *length)
"babl profile", NULL, 0,
&babl_noconst->space.icc_length);
}
- *length = babl->space.icc_length;
+ if (length) *length = babl->space.icc_length;
return babl->space.icc_profile;
}
diff --git a/babl/babl-image.c b/babl/babl-image.c
index 04535a4..5ab9765 100644
--- a/babl/babl-image.c
+++ b/babl/babl-image.c
@@ -105,6 +105,15 @@ babl_image_from_linear (char *buffer,
{
case BABL_FORMAT:
components = format->format.components;
+
+#if 1
+ babl = __atomic_exchange_n (&format->format.image_template, NULL,
+ __ATOMIC_ACQ_REL);
+#else
+ /* todo: add a configure check for the above gcc extension and use
+ a mutex if we do not have it?
+ */
+ babl = NULL;
if (format->format.image_template != NULL) /* single item cache for speeding
up subsequent use of linear buffers
for subsequent accesses
@@ -112,6 +121,10 @@ babl_image_from_linear (char *buffer,
{
babl = format->format.image_template;
format->format.image_template = NULL;
+ }
+#endif
+ if (babl)
+ {
for (i = 0; i < components; i++)
{
babl->image.data[i] = buffer + offset;
diff --git a/babl/babl-palette.c b/babl/babl-palette.c
index 9b232ce..205573f 100644
--- a/babl/babl-palette.c
+++ b/babl/babl-palette.c
@@ -448,7 +448,10 @@ pala_to_rgba (Babl *conversion,
void *src_model_data)
{
BablPalette **palptr = src_model_data;
- BablPalette *pal = *palptr;
+ BablPalette *pal;
+
+ assert(palptr);
+ pal = *palptr;
assert(pal);
while (n--)
diff --git a/babl/babl-version.h b/babl/babl-version.h
index 1b4b369..e135cda 100644
--- a/babl/babl-version.h
+++ b/babl/babl-version.h
@@ -34,7 +34,7 @@
#define BABL_MAJOR_VERSION 0
#define BABL_MINOR_VERSION 1
-#define BABL_MICRO_VERSION 58
+#define BABL_MICRO_VERSION 60
/** Get the version information on the babl library */
void babl_get_version (int *major,
diff --git a/babl/babl.c b/babl/babl.c
index 979cd46..4479f68 100644
--- a/babl/babl.c
+++ b/babl/babl.c
@@ -185,6 +185,6 @@ babl_exit (void)
int babl_model_is (const Babl *babl, const char *model)
{
- return ((babl)==babl_model_with_space(model, babl));
+ return babl && ((babl)==babl_model_with_space(model, babl));
}
diff --git a/babl/babl.h b/babl/babl.h
index 5a7ca7e..943de99 100644
--- a/babl/babl.h
+++ b/babl/babl.h
@@ -542,7 +542,7 @@ void babl_space_get (const Babl *space,
*/
int babl_model_is (const Babl *babl, const char *model_name);
-#define babl_model_is(babl,model) ((babl)==babl_model_with_space(model,babl))
+#define babl_model_is(babl,model) (babl&&(babl)==babl_model_with_space(model,babl))
/**
diff --git a/configure b/configure
index 5376c7b..385c7e6 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for babl 0.1.58.
+# Generated by GNU Autoconf 2.69 for babl 0.1.60.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='babl'
PACKAGE_TARNAME='babl'
-PACKAGE_VERSION='0.1.58'
-PACKAGE_STRING='babl 0.1.58'
+PACKAGE_VERSION='0.1.60'
+PACKAGE_STRING='babl 0.1.60'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1383,7 +1383,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures babl 0.1.58 to adapt to many kinds of systems.
+\`configure' configures babl 0.1.60 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1455,7 +1455,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of babl 0.1.58:";;
+ short | recursive ) echo "Configuration of babl 0.1.60:";;
esac
cat <<\_ACEOF
@@ -1576,7 +1576,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-babl configure 0.1.58
+babl configure 0.1.60
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1941,7 +1941,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by babl $as_me 0.1.58, which was
+It was created by babl $as_me 0.1.60, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2297,11 +2297,11 @@ ac_config_headers="$ac_config_headers config.h"
BABL_MAJOR_VERSION=0
BABL_MINOR_VERSION=1
-BABL_MICRO_VERSION=58
+BABL_MICRO_VERSION=60
BABL_INTERFACE_AGE=1
-BABL_BINARY_AGE=158
-BABL_VERSION=0.1.58
-BABL_REAL_VERSION=0.1.58
+BABL_BINARY_AGE=160
+BABL_VERSION=0.1.60
+BABL_REAL_VERSION=0.1.60
BABL_API_VERSION=0.1
@@ -2336,7 +2336,7 @@ fi
-BABL_LIBRARY_VERSION="157:1:157"
+BABL_LIBRARY_VERSION="159:1:159"
BABL_CURRENT_MINUS_AGE=0
@@ -2968,7 +2968,7 @@ fi
# Define the identity of the package.
PACKAGE='babl'
- VERSION='0.1.58'
+ VERSION='0.1.60'
# Some tools Automake needs.
@@ -6437,11 +6437,8 @@ _LT_EOF
test $ac_status = 0; }; then
# Now try to grab the symbols.
nlist=conftest.nm
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
- (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && test -s "$nlist"; then
+ $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5
+ if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then
# Try sorting and uniquifying the output.
if sort "$nlist" | uniq > "$nlist"T; then
mv -f "$nlist"T "$nlist"
@@ -14950,7 +14947,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by babl $as_me 0.1.58, which was
+This file was extended by babl $as_me 0.1.60, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -15016,7 +15013,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-babl config.status 0.1.58
+babl config.status 0.1.60
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index 1600957..274ea1d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -14,7 +14,7 @@ AC_PREREQ(2.54)
m4_define([babl_major_version], [0])
m4_define([babl_minor_version], [1])
-m4_define([babl_micro_version], [58])
+m4_define([babl_micro_version], [60])
m4_define([babl_real_version],
[babl_major_version.babl_minor_version.babl_micro_version])
m4_define([babl_version], [babl_real_version])
diff --git a/docs/index-static.html.in b/docs/index-static.html.in
index be463ad..16ca612 100644
--- a/docs/index-static.html.in
+++ b/docs/index-static.html.in
@@ -372,7 +372,7 @@ superluminous colors are still supported, it also opens up to GEGL more widely
expect premultiplied data in more operations which will become a speedup when
more filters want to integrate in the layer processing pipeline.</p>
-<p>There is a <a href='https://www.patreon.com/posts/premultiplied-in-21014115'>post on patreon</a> with further details about details of the implementation.</p>
+<p>There is a <a href='https://www.patreon.com/posts/premultiplied-in-21014115'>post on patreon</a> with further details about the implementation.</p>
<a name='TODO'></a>
<!--TODO-->
diff --git a/extensions/cairo.c b/extensions/cairo.c
index 059b07d..9a96fc3 100644
--- a/extensions/cairo.c
+++ b/extensions/cairo.c
@@ -187,12 +187,34 @@ conv_rgba8_cairo32_le (const Babl *conversion,unsigned char *src, unsigned char
uint32_t *dsti = (void*) dst;
while (n--)
{
- unsigned char alpha = src[3];
-#define div_255(a) ((((a)+128)+(((a)+128)>>8))>>8)
- *dsti++ = (alpha << 24) +
- (div_255 (src[0] * alpha) << 16) +
- (div_255 (src[1] * alpha) << 8) +
- (div_255 (src[2] * alpha));
+ unsigned char alpha = src[3];
+#if SIZE_MAX >= UINT64_MAX /* 64-bit */
+ uint64_t rbag = ((uint64_t) src[0] << 48) |
+ ((uint64_t) src[2] << 32) |
+ ((uint64_t) 255 << 16) |
+ ((uint64_t) src[1] << 0);
+ rbag *= alpha;
+ rbag += 0x0080008000800080;
+ rbag += (rbag >> 8) & 0x00ff00ff00ff00ff;
+ rbag &= 0xff00ff00ff00ff00;
+ *dsti++ = (uint32_t) (rbag >> 0) |
+ (uint32_t) (rbag >> 40);
+#else /* 32-bit */
+ uint32_t rb = ((uint32_t) src[0] << 16) |
+ ((uint32_t) src[2] << 0);
+ uint64_t ag = ((uint32_t) 255 << 16) |
+ ((uint32_t) src[1] << 0);
+ rb *= alpha;
+ ag *= alpha;
+ rb += 0x00800080;
+ ag += 0x00800080;
+ rb += (rb >> 8) & 0x00ff00ff;
+ ag += (ag >> 8) & 0x00ff00ff;
+ rb &= 0xff00ff00;
+ ag &= 0xff00ff00;
+ *dsti++ = (uint32_t) (ag >> 0) |
+ (uint32_t) (rb >> 8);
+#endif
src+=4;
}
}
@@ -223,6 +245,8 @@ conv_yA8_cairo32_le (const Babl *conversion,unsigned char *src, unsigned char *d
long n = samples;
while (n--)
{
+#define div_255(a) ((((a)+128)+(((a)+128)>>8))>>8)
+
unsigned char gray = *src++;
unsigned char alpha = *src++;
unsigned char val = div_255 (gray * alpha);
diff --git a/ltmain.sh b/ltmain.sh
index e4eda6d..68fd36c 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -31,7 +31,7 @@
PROGRAM=libtool
PACKAGE=libtool
-VERSION="2.4.6 Debian-2.4.6-2.1"
+VERSION="2.4.6 Debian-2.4.6-6"
package_revision=2.4.6
@@ -64,7 +64,7 @@ package_revision=2.4.6
# libraries, which are installed to $pkgauxdir.
# Set a version string for this script.
-scriptversion=2015-10-12.13; # UTC
+scriptversion=2015-10-04.22; # UTC
# General shell script boiler plate, and helper functions.
# Written by Gary V. Vaughan, 2004
@@ -580,16 +580,16 @@ if test yes = "$_G_HAVE_PLUSEQ_OP"; then
{
$debug_cmd
- func_quote_arg pretty "$2"
- eval "$1+=\\ \$func_quote_arg_result"
+ func_quote_for_eval "$2"
+ eval "$1+=\\ \$func_quote_for_eval_result"
}'
else
func_append_quoted ()
{
$debug_cmd
- func_quote_arg pretty "$2"
- eval "$1=\$$1\\ \$func_quote_arg_result"
+ func_quote_for_eval "$2"
+ eval "$1=\$$1\\ \$func_quote_for_eval_result"
}
fi
@@ -1091,184 +1091,135 @@ func_relative_path ()
}
-# func_quote_portable EVAL ARG
-# ----------------------------
-# Internal function to portably implement func_quote_arg. Note that we still
-# keep attention to performance here so we as much as possible try to avoid
-# calling sed binary (so far O(N) complexity as long as func_append is O(1)).
-func_quote_portable ()
+# func_quote ARG
+# --------------
+# Aesthetically quote one ARG, store the result into $func_quote_result. Note
+# that we keep attention to performance here (so far O(N) complexity as long as
+# func_append is O(1)).
+func_quote ()
{
$debug_cmd
- func_quote_portable_result=$2
-
- # one-time-loop (easy break)
- while true
- do
- if $1; then
- func_quote_portable_result=`$ECHO "$2" | $SED \
- -e "$sed_double_quote_subst" -e "$sed_double_backslash"`
- break
- fi
+ func_quote_result=$1
- # Quote for eval.
- case $func_quote_portable_result in
- *[\\\`\"\$]*)
- case $func_quote_portable_result in
- *[\[\*\?]*)
- func_quote_portable_result=`$ECHO "$func_quote_portable_result" | $SED "$sed_quote_subst"`
- break
- ;;
- esac
+ case $func_quote_result in
+ *[\\\`\"\$]*)
+ case $func_quote_result in
+ *[\[\*\?]*)
+ func_quote_result=`$ECHO "$func_quote_result" | $SED "$sed_quote_subst"`
+ return 0
+ ;;
+ esac
- func_quote_portable_old_IFS=$IFS
- for _G_char in '\' '`' '"' '$'
+ func_quote_old_IFS=$IFS
+ for _G_char in '\' '`' '"' '$'
+ do
+ # STATE($1) PREV($2) SEPARATOR($3)
+ set start "" ""
+ func_quote_result=dummy"$_G_char$func_quote_result$_G_char"dummy
+ IFS=$_G_char
+ for _G_part in $func_quote_result
do
- # STATE($1) PREV($2) SEPARATOR($3)
- set start "" ""
- func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy
- IFS=$_G_char
- for _G_part in $func_quote_portable_result
- do
- case $1 in
- quote)
- func_append func_quote_portable_result "$3$2"
- set quote "$_G_part" "\\$_G_char"
- ;;
- start)
- set first "" ""
- func_quote_portable_result=
- ;;
- first)
- set quote "$_G_part" ""
- ;;
- esac
- done
+ case $1 in
+ quote)
+ func_append func_quote_result "$3$2"
+ set quote "$_G_part" "\\$_G_char"
+ ;;
+ start)
+ set first "" ""
+ func_quote_result=
+ ;;
+ first)
+ set quote "$_G_part" ""
+ ;;
+ esac
done
- IFS=$func_quote_portable_old_IFS
- ;;
- *) ;;
- esac
- break
- done
-
- func_quote_portable_unquoted_result=$func_quote_portable_result
- case $func_quote_portable_result in
- # double-quote args containing shell metacharacters to delay
- # word splitting, command substitution and variable expansion
- # for a subsequent eval.
- # many bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- func_quote_portable_result=\"$func_quote_portable_result\"
+ IFS=$func_quote_old_IFS
+ done
;;
+ *) ;;
esac
}
-# func_quotefast_eval ARG
-# -----------------------
-# Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG',
-# but optimized for speed. Result is stored in $func_quotefast_eval.
-if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then
- func_quotefast_eval ()
- {
- printf -v func_quotefast_eval_result %q "$1"
- }
-else
- func_quotefast_eval ()
- {
- func_quote_portable false "$1"
- func_quotefast_eval_result=$func_quote_portable_result
- }
-fi
-
-
-# func_quote_arg MODEs ARG
-# ------------------------
-# Quote one ARG to be evaled later. MODEs argument may contain zero ore more
-# specifiers listed below separated by ',' character. This function returns two
-# values:
-# i) func_quote_arg_result
-# double-quoted (when needed), suitable for a subsequent eval
-# ii) func_quote_arg_unquoted_result
+# func_quote_for_eval ARG...
+# --------------------------
+# Aesthetically quote ARGs to be evaled later.
+# This function returns two values:
+# i) func_quote_for_eval_result
+# double-quoted, suitable for a subsequent eval
+# ii) func_quote_for_eval_unquoted_result
# has all characters that are still active within double
-# quotes backslashified. Available only if 'unquoted' is specified.
-#
-# Available modes:
-# ----------------
-# 'eval' (default)
-# - escape shell special characters
-# 'expand'
-# - the same as 'eval'; but do not quote variable references
-# 'pretty'
-# - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might
-# later used in func_quote to get output like: 'echo "a b"' instead of
-# 'echo a\ b'. This is slower than default on some shells.
-# 'unquoted'
-# - produce also $func_quote_arg_unquoted_result which does not contain
-# wrapping double-quotes.
-#
-# Examples for 'func_quote_arg pretty,unquoted string':
-#
-# string | *_result | *_unquoted_result
-# ------------+-----------------------+-------------------
-# " | \" | \"
-# a b | "a b" | a b
-# "a b" | "\"a b\"" | \"a b\"
-# * | "*" | *
-# z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\"
-#
-# Examples for 'func_quote_arg pretty,unquoted,expand string':
-#
-# string | *_result | *_unquoted_result
-# --------------+---------------------+--------------------
-# z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\"
-func_quote_arg ()
-{
- _G_quote_expand=false
- case ,$1, in
- *,expand,*)
- _G_quote_expand=:
- ;;
- esac
-
- case ,$1, in
- *,pretty,*|*,expand,*|*,unquoted,*)
- func_quote_portable $_G_quote_expand "$2"
- func_quote_arg_result=$func_quote_portable_result
- func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result
- ;;
- *)
- # Faster quote-for-eval for some shells.
- func_quotefast_eval "$2"
- func_quote_arg_result=$func_quotefast_eval_result
- ;;
- esac
-}
-
-
-# func_quote MODEs ARGs...
-# ------------------------
-# Quote all ARGs to be evaled later and join them into single command. See
-# func_quote_arg's description for more info.
-func_quote ()
+# quotes backslashified.
+func_quote_for_eval ()
{
$debug_cmd
- _G_func_quote_mode=$1 ; shift
- func_quote_result=
+
+ func_quote_for_eval_unquoted_result=
+ func_quote_for_eval_result=
while test 0 -lt $#; do
- func_quote_arg "$_G_func_quote_mode" "$1"
- if test -n "$func_quote_result"; then
- func_append func_quote_result " $func_quote_arg_result"
+ func_quote "$1"
+ _G_unquoted_arg=$func_quote_result
+ if test -n "$func_quote_for_eval_unquoted_result"; then
+ func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
else
- func_append func_quote_result "$func_quote_arg_result"
+ func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
+ fi
+
+ case $_G_unquoted_arg in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting, command substitution and variable expansion
+ # for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ _G_quoted_arg=\"$_G_unquoted_arg\"
+ ;;
+ *)
+ _G_quoted_arg=$_G_unquoted_arg
+ ;;
+ esac
+
+ if test -n "$func_quote_for_eval_result"; then
+ func_append func_quote_for_eval_result " $_G_quoted_arg"
+ else
+ func_append func_quote_for_eval_result "$_G_quoted_arg"
fi
shift
done
}
+# func_quote_for_expand ARG
+# -------------------------
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+ $debug_cmd
+
+ case $1 in
+ *[\\\`\"]*)
+ _G_arg=`$ECHO "$1" | $SED \
+ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
+ *)
+ _G_arg=$1 ;;
+ esac
+
+ case $_G_arg in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting and command substitution for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ _G_arg=\"$_G_arg\"
+ ;;
+ esac
+
+ func_quote_for_expand_result=$_G_arg
+}
+
+
# func_stripname PREFIX SUFFIX NAME
# ---------------------------------
# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
@@ -1311,8 +1262,8 @@ func_show_eval ()
_G_cmd=$1
_G_fail_exp=${2-':'}
- func_quote_arg pretty,expand "$_G_cmd"
- eval "func_notquiet $func_quote_arg_result"
+ func_quote_for_expand "$_G_cmd"
+ eval "func_notquiet $func_quote_for_expand_result"
$opt_dry_run || {
eval "$_G_cmd"
@@ -1337,8 +1288,8 @@ func_show_eval_locale ()
_G_fail_exp=${2-':'}
$opt_quiet || {
- func_quote_arg expand,pretty "$_G_cmd"
- eval "func_echo $func_quote_arg_result"
+ func_quote_for_expand "$_G_cmd"
+ eval "func_echo $func_quote_for_expand_result"
}
$opt_dry_run || {
@@ -1466,7 +1417,7 @@ func_lt_ver ()
#! /bin/sh
# Set a version string for this script.
-scriptversion=2015-10-12.13; # UTC
+scriptversion=2015-10-07.11; # UTC
# A portable, pluggable option parser for Bourne shell.
# Written by Gary V. Vaughan, 2010
@@ -1676,8 +1627,8 @@ func_run_hooks ()
# '
# # No change in '$@' (ignored completely by this hook). There is
# # no need to do the equivalent (but slower) action:
-# # func_quote eval ${1+"$@"}
-# # my_options_prep_result=$func_quote_result
+# # func_quote_for_eval ${1+"$@"}
+# # my_options_prep_result=$func_quote_for_eval_result
# false
# }
# func_add_hook func_options_prep my_options_prep
@@ -1713,8 +1664,8 @@ func_run_hooks ()
# done
#
# if $args_changed; then
-# func_quote eval ${1+"$@"}
-# my_silent_option_result=$func_quote_result
+# func_quote_for_eval ${1+"$@"}
+# my_silent_option_result=$func_quote_for_eval_result
# fi
#
# $args_changed
@@ -1781,8 +1732,8 @@ func_options ()
if $_G_rc_options; then
func_options_result=$_G_res_var
else
- func_quote eval ${1+"$@"}
- func_options_result=$func_quote_result
+ func_quote_for_eval ${1+"$@"}
+ func_options_result=$func_quote_for_eval_result
fi
$_G_rc_options
@@ -1925,8 +1876,8 @@ func_parse_options ()
if $_G_rc_parse_options; then
# save modified positional parameters for caller
- func_quote eval ${1+"$@"}
- func_parse_options_result=$func_quote_result
+ func_quote_for_eval ${1+"$@"}
+ func_parse_options_result=$func_quote_for_eval_result
fi
$_G_rc_parse_options
@@ -2237,7 +2188,7 @@ include the following information:
compiler: $LTCC
compiler flags: $LTCFLAGS
linker: $LD (gnu? $with_gnu_ld)
- version: $progname $scriptversion Debian-2.4.6-2.1
+ version: $progname $scriptversion Debian-2.4.6-6
automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
@@ -2471,8 +2422,8 @@ libtool_options_prep ()
if $_G_rc_lt_options_prep; then
# Pass back the list of options.
- func_quote eval ${1+"$@"}
- libtool_options_prep_result=$func_quote_result
+ func_quote_for_eval ${1+"$@"}
+ libtool_options_prep_result=$func_quote_for_eval_result
fi
$_G_rc_lt_options_prep
@@ -2578,8 +2529,8 @@ libtool_parse_options ()
if $_G_rc_lt_parse_options; then
# save modified positional parameters for caller
- func_quote eval ${1+"$@"}
- libtool_parse_options_result=$func_quote_result
+ func_quote_for_eval ${1+"$@"}
+ libtool_parse_options_result=$func_quote_for_eval_result
fi
$_G_rc_lt_parse_options
@@ -2639,8 +2590,8 @@ libtool_validate_options ()
}
# Pass back the unparsed argument list
- func_quote eval ${1+"$@"}
- libtool_validate_options_result=$func_quote_result
+ func_quote_for_eval ${1+"$@"}
+ libtool_validate_options_result=$func_quote_for_eval_result
}
func_add_hook func_validate_options libtool_validate_options
@@ -3606,8 +3557,8 @@ func_mode_compile ()
esac
done
- func_quote_arg pretty "$libobj"
- test "X$libobj" != "X$func_quote_arg_result" \
+ func_quote_for_eval "$libobj"
+ test "X$libobj" != "X$func_quote_for_eval_result" \
&& $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
&& func_warning "libobj name '$libobj' may not contain shell special characters."
func_dirname_and_basename "$obj" "/" ""
@@ -3680,8 +3631,8 @@ compiler."
func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
srcfile=$func_to_tool_file_result
- func_quote_arg pretty "$srcfile"
- qsrcfile=$func_quote_arg_result
+ func_quote_for_eval "$srcfile"
+ qsrcfile=$func_quote_for_eval_result
# Only build a PIC object if we are building libtool libraries.
if test yes = "$build_libtool_libs"; then
@@ -4284,8 +4235,8 @@ func_mode_install ()
case $nonopt in *shtool*) :;; *) false;; esac
then
# Aesthetically quote it.
- func_quote_arg pretty "$nonopt"
- install_prog="$func_quote_arg_result "
+ func_quote_for_eval "$nonopt"
+ install_prog="$func_quote_for_eval_result "
arg=$1
shift
else
@@ -4295,8 +4246,8 @@ func_mode_install ()
# The real first argument should be the name of the installation program.
# Aesthetically quote it.
- func_quote_arg pretty "$arg"
- func_append install_prog "$func_quote_arg_result"
+ func_quote_for_eval "$arg"
+ func_append install_prog "$func_quote_for_eval_result"
install_shared_prog=$install_prog
case " $install_prog " in
*[\\\ /]cp\ *) install_cp=: ;;
@@ -4353,12 +4304,12 @@ func_mode_install ()
esac
# Aesthetically quote the argument.
- func_quote_arg pretty "$arg"
- func_append install_prog " $func_quote_arg_result"
+ func_quote_for_eval "$arg"
+ func_append install_prog " $func_quote_for_eval_result"
if test -n "$arg2"; then
- func_quote_arg pretty "$arg2"
+ func_quote_for_eval "$arg2"
fi
- func_append install_shared_prog " $func_quote_arg_result"
+ func_append install_shared_prog " $func_quote_for_eval_result"
done
test -z "$install_prog" && \
@@ -4369,8 +4320,8 @@ func_mode_install ()
if test -n "$install_override_mode" && $no_mode; then
if $install_cp; then :; else
- func_quote_arg pretty "$install_override_mode"
- func_append install_shared_prog " -m $func_quote_arg_result"
+ func_quote_for_eval "$install_override_mode"
+ func_append install_shared_prog " -m $func_quote_for_eval_result"
fi
fi
@@ -4666,8 +4617,8 @@ func_mode_install ()
relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
$opt_quiet || {
- func_quote_arg expand,pretty "$relink_command"
- eval "func_echo $func_quote_arg_result"
+ func_quote_for_expand "$relink_command"
+ eval "func_echo $func_quote_for_expand_result"
}
if eval "$relink_command"; then :
else
@@ -5446,8 +5397,8 @@ else
if test \"\$libtool_execute_magic\" != \"$magic\"; then
file=\"\$0\""
- func_quote_arg pretty "$ECHO"
- qECHO=$func_quote_arg_result
+ func_quote "$ECHO"
+ qECHO=$func_quote_result
$ECHO "\
# A function that is used when there is no print builtin or printf.
@@ -5457,7 +5408,7 @@ func_fallback_echo ()
\$1
_LTECHO_EOF'
}
- ECHO=$qECHO
+ ECHO=\"$qECHO\"
fi
# Very basic option parsing. These options are (a) specific to
@@ -6800,9 +6751,9 @@ func_mode_link ()
while test "$#" -gt 0; do
arg=$1
shift
- func_quote_arg pretty,unquoted "$arg"
- qarg=$func_quote_arg_unquoted_result
- func_append libtool_args " $func_quote_arg_result"
+ func_quote_for_eval "$arg"
+ qarg=$func_quote_for_eval_unquoted_result
+ func_append libtool_args " $func_quote_for_eval_result"
# If the previous option needs an argument, assign it.
if test -n "$prev"; then
@@ -7400,9 +7351,9 @@ func_mode_link ()
save_ifs=$IFS; IFS=,
for flag in $args; do
IFS=$save_ifs
- func_quote_arg pretty "$flag"
- func_append arg " $func_quote_arg_result"
- func_append compiler_flags " $func_quote_arg_result"
+ func_quote_for_eval "$flag"
+ func_append arg " $func_quote_for_eval_result"
+ func_append compiler_flags " $func_quote_for_eval_result"
done
IFS=$save_ifs
func_stripname ' ' '' "$arg"
@@ -7416,10 +7367,10 @@ func_mode_link ()
save_ifs=$IFS; IFS=,
for flag in $args; do
IFS=$save_ifs
- func_quote_arg pretty "$flag"
- func_append arg " $wl$func_quote_arg_result"
- func_append compiler_flags " $wl$func_quote_arg_result"
- func_append linker_flags " $func_quote_arg_result"
+ func_quote_for_eval "$flag"
+ func_append arg " $wl$func_quote_for_eval_result"
+ func_append compiler_flags " $wl$func_quote_for_eval_result"
+ func_append linker_flags " $func_quote_for_eval_result"
done
IFS=$save_ifs
func_stripname ' ' '' "$arg"
@@ -7443,8 +7394,8 @@ func_mode_link ()
# -msg_* for osf cc
-msg_*)
- func_quote_arg pretty "$arg"
- arg=$func_quote_arg_result
+ func_quote_for_eval "$arg"
+ arg=$func_quote_for_eval_result
;;
# Flags to be passed through unchanged, with rationale:
@@ -7468,8 +7419,8 @@ func_mode_link ()
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
-specs=*|-fsanitize=*)
- func_quote_arg pretty "$arg"
- arg=$func_quote_arg_result
+ func_quote_for_eval "$arg"
+ arg=$func_quote_for_eval_result
func_append compile_command " $arg"
func_append finalize_command " $arg"
func_append compiler_flags " $arg"
@@ -7490,15 +7441,15 @@ func_mode_link ()
continue
else
# Otherwise treat like 'Some other compiler flag' below
- func_quote_arg pretty "$arg"
- arg=$func_quote_arg_result
+ func_quote_for_eval "$arg"
+ arg=$func_quote_for_eval_result
fi
;;
# Some other compiler flag.
-* | +*)
- func_quote_arg pretty "$arg"
- arg=$func_quote_arg_result
+ func_quote_for_eval "$arg"
+ arg=$func_quote_for_eval_result
;;
*.$objext)
@@ -7618,8 +7569,8 @@ func_mode_link ()
*)
# Unknown arguments in both finalize_command and compile_command need
# to be aesthetically quoted because they are evaled later.
- func_quote_arg pretty "$arg"
- arg=$func_quote_arg_result
+ func_quote_for_eval "$arg"
+ arg=$func_quote_for_eval_result
;;
esac # arg
@@ -10131,8 +10082,8 @@ EOF
for cmd in $concat_cmds; do
IFS=$save_ifs
$opt_quiet || {
- func_quote_arg expand,pretty "$cmd"
- eval "func_echo $func_quote_arg_result"
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
}
$opt_dry_run || eval "$cmd" || {
lt_exit=$?
@@ -10225,8 +10176,8 @@ EOF
eval cmd=\"$cmd\"
IFS=$save_ifs
$opt_quiet || {
- func_quote_arg expand,pretty "$cmd"
- eval "func_echo $func_quote_arg_result"
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
}
$opt_dry_run || eval "$cmd" || {
lt_exit=$?
@@ -10700,12 +10651,12 @@ EOF
elif eval var_value=\$$var; test -z "$var_value"; then
relink_command="$var=; export $var; $relink_command"
else
- func_quote_arg pretty "$var_value"
- relink_command="$var=$func_quote_arg_result; export $var; $relink_command"
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
fi
done
- func_quote_arg pretty,unquoted "(cd `pwd`; $relink_command)"
- relink_command=$func_quote_arg_unquoted_result
+ func_quote "(cd `pwd`; $relink_command)"
+ relink_command=$func_quote_result
fi
# Only actually do things if not in dry run mode.
@@ -10945,14 +10896,14 @@ EOF
elif eval var_value=\$$var; test -z "$var_value"; then
relink_command="$var=; export $var; $relink_command"
else
- func_quote_arg pretty,unquoted "$var_value"
- relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command"
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
fi
done
# Quote the link command for shipping.
relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
- func_quote_arg pretty,unquoted "$relink_command"
- relink_command=$func_quote_arg_unquoted_result
+ func_quote "$relink_command"
+ relink_command=$func_quote_result
if test yes = "$hardcode_automatic"; then
relink_command=
fi
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index ee80844..c81e669 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -4063,7 +4063,8 @@ _LT_EOF
if AC_TRY_EVAL(ac_compile); then
# Now try to grab the symbols.
nlist=conftest.nm
- if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
+ $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD
+ if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then
# Try sorting and uniquifying the output.
if sort "$nlist" | uniq > "$nlist"T; then
mv -f "$nlist"T "$nlist"
@@ -6438,7 +6439,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"'
else
GXX=no
@@ -6813,7 +6814,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
if test yes = "$GXX"; then
@@ -6878,7 +6879,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
if test yes = "$GXX"; then
@@ -7217,7 +7218,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"'
else
# FIXME: insert proper C++ library support
@@ -7301,7 +7302,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"'
else
# g++ 2.7 appears to require '-G' NOT '-shared' on this
# platform.
@@ -7312,7 +7313,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
- output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"'
fi
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'