mirror of
git://git.savannah.gnu.org/libtool.git
synced 2024-11-27 06:09:57 +08:00
ARFLAGS: use 'cr' instead of 'cru' by default
In some GNU/Linux distributions people started to compile 'ar' binary with --enable-deterministic-archives (binutils project). That, however, in combination with our previous long time working default AR_FLAGS=cru causes warnings on such installations: ar: `u' modifier ignored since `D' is the default (see `U') The 'u' option (at least with GNU binutils) did small optimization during repeated builds because it instructed 'ar' to not open/close unchanged *.o files and to rather read their contents from old archive file. However, its removal should not cause a big performance hit for usual workflows. Distributions started using --enable-deterministic-archives knowing that it would disable the 'u', just to rather have a bit more deterministic builds. Also, to justify this change a bit more, keeping 'u' in ARFLAGS could only result in many per-project changes to override Libtool's ARFLAGS default, just to silent such warnings. Fixes bug#19967. Reported by Eric Blake. * m4/libtool.m4 (_LT_PROG_AR): Default AR_FLAGS to 'cr'. (_LT_REQUIRED_DARWIN_CHECKS): Use $AR_FLAGS instead 'cru' string. * doc/libtool.texi: Do 's/ar cru/ar cr/' in whole documentation. * NEWS: Document.
This commit is contained in:
parent
4335de1dfb
commit
418129bc63
4
NEWS
4
NEWS
@ -8,6 +8,10 @@ NEWS - list of user-visible changes between releases of GNU Libtool
|
||||
variable, which obsoletes AR_FLAGS. This is due to naming conventions
|
||||
among other *FLAGS and to be consistent with Automake's ARFLAGS.
|
||||
|
||||
** Important incompatible changes:
|
||||
|
||||
- Libtool changed ARFLAGS/AR_FLAGS default from 'cru' to 'cr'.
|
||||
|
||||
** Bug fixes:
|
||||
|
||||
- Fix significant slowdown of libtoolize for certain projects (regression
|
||||
|
@ -602,7 +602,7 @@ Without libtool, the programmer would invoke the @command{ar} command to
|
||||
create a static library:
|
||||
|
||||
@example
|
||||
burger$ @kbd{ar cru libhello.a hello.o foo.o}
|
||||
burger$ @kbd{ar cr libhello.a hello.o foo.o}
|
||||
burger$
|
||||
@end example
|
||||
|
||||
@ -632,7 +632,7 @@ libtool are the same ones you would use to produce an executable named
|
||||
a23$ @kbd{libtool --mode=link gcc -g -O -o libhello.la foo.o hello.o}
|
||||
*** Warning: Linking the shared library libhello.la against the
|
||||
*** non-libtool objects foo.o hello.o is not portable!
|
||||
ar cru .libs/libhello.a
|
||||
ar cr .libs/libhello.a
|
||||
ranlib .libs/libhello.a
|
||||
creating libhello.la
|
||||
(cd .libs && rm -f libhello.la && ln -s ../libhello.la libhello.la)
|
||||
@ -662,7 +662,7 @@ archive, not a shared library (@pxref{Static libraries}).}:
|
||||
@example
|
||||
a23$ @kbd{libtool --mode=link gcc -g -O -o libhello.la foo.lo hello.lo \
|
||||
-rpath /usr/local/lib -lm}
|
||||
ar cru @value{objdir}/libhello.a foo.o hello.o
|
||||
ar cr @value{objdir}/libhello.a foo.o hello.o
|
||||
ranlib @value{objdir}/libhello.a
|
||||
creating libhello.la
|
||||
(cd @value{objdir} && rm -f libhello.la && ln -s ../libhello.la libhello.la)
|
||||
@ -676,7 +676,7 @@ burger$ @kbd{libtool --mode=link gcc -g -O -o libhello.la foo.lo hello.lo \
|
||||
-rpath /usr/local/lib -lm}
|
||||
rm -fr @value{objdir}/libhello.a @value{objdir}/libhello.la
|
||||
ld -Bshareable -o @value{objdir}/libhello.so.0.0 @value{objdir}/foo.o @value{objdir}/hello.o -lm
|
||||
ar cru @value{objdir}/libhello.a foo.o hello.o
|
||||
ar cr @value{objdir}/libhello.a foo.o hello.o
|
||||
ranlib @value{objdir}/libhello.a
|
||||
creating libhello.la
|
||||
(cd @value{objdir} && rm -f libhello.la && ln -s ../libhello.la libhello.la)
|
||||
@ -6001,7 +6001,7 @@ in cases where it is necessary.
|
||||
@subsection Archivers
|
||||
|
||||
On all known systems, building a static library can be accomplished by
|
||||
running @kbd{ar cru lib@var{name}.a @var{obj1}.o @var{obj2}.o @dots{}},
|
||||
running @kbd{ar cr lib@var{name}.a @var{obj1}.o @var{obj2}.o @dots{}},
|
||||
where the @file{.a} file is the output library, and each @file{.o} file is an
|
||||
object file.
|
||||
|
||||
|
6
m4/libtool.m4
vendored
6
m4/libtool.m4
vendored
@ -1042,8 +1042,8 @@ int forced_loaded() { return 2;}
|
||||
_LT_EOF
|
||||
echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
|
||||
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
|
||||
echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
|
||||
$AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
|
||||
echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
|
||||
$AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
|
||||
echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
|
||||
$RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
|
||||
cat > conftest.c << _LT_EOF
|
||||
@ -1501,7 +1501,7 @@ _LT_DECL([], [AR], [1], [The archiver])
|
||||
# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS
|
||||
# variable obsoleted/removed.
|
||||
|
||||
test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cru}
|
||||
test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr}
|
||||
lt_ar_flags=$AR_FLAGS
|
||||
_LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)])
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user