diff options
author | Mike Frysinger <vapier@gentoo.org> | 2022-02-21 15:42:18 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2022-02-23 20:07:10 -0500 |
commit | 5ad394510bb36aaebd5bb054a5bf4730f666947b (patch) | |
tree | c2d9fc59c752c0231d81c5dcd3de3de73863bfb8 /newlib/Makefile.in | |
parent | 8d758283785042589e95c93d7899cecf28ef00ea (diff) | |
download | newlib-5ad394510bb36aaebd5bb054a5bf4730f666947b.zip newlib-5ad394510bb36aaebd5bb054a5bf4730f666947b.tar.gz newlib-5ad394510bb36aaebd5bb054a5bf4730f666947b.tar.bz2 |
newlib: libm: workaround ar duplicate member behavior
GNU ar has undocumented behavior where it doesn't dedupe its inputs if
they're all on the same command line, so we have to dedupe ourselves.
Diffstat (limited to 'newlib/Makefile.in')
-rw-r--r-- | newlib/Makefile.in | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 2b60ef1..cc7afc7 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -1361,6 +1361,19 @@ toollib_LIBRARIES = libm.a \ @HAVE_MULTISUBDIR_TRUE@BUILD_MULTISUBDIR = $(builddir)$(MULTISUBDIR) toollib_DATA = $(CRT0) $(CRT1) +AWK_UNIQUE_OBJS = $(AWK) '{ \ + for (i = NF; i > 0; --i) { \ + split($$i, parts, "/"); \ + name = parts[length(parts)]; \ + if (!(name in seen)) { \ + objs[i] = $$i; \ + seen[name] = 1; \ + } \ + } \ + for (i in objs) \ + print objs[i]; \ +}' + # The functions ldexp, frexp and modf are traditionally supplied in # both libc.a and libm.a. We build them in libm.a and copy them over, @@ -3248,11 +3261,6 @@ libm/machine/x86_64/libm_a-fetestexcept.$(OBJEXT): \ libm/machine/x86_64/libm_a-feupdateenv.$(OBJEXT): \ libm/machine/x86_64/$(am__dirstamp) -libm.a: $(libm_a_OBJECTS) $(libm_a_DEPENDENCIES) $(EXTRA_libm_a_DEPENDENCIES) - $(AM_V_at)-rm -f libm.a - $(AM_V_AR)$(libm_a_AR) libm.a $(libm_a_OBJECTS) $(libm_a_LIBADD) - $(AM_V_at)$(RANLIB) libm.a - mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f libm/common/*.$(OBJEXT) @@ -8650,6 +8658,12 @@ libg.a: libc.a $(AM_V_GEN)ln libc.a libg.a >/dev/null 2>/dev/null || cp libc.a libg.a $(libm_a_OBJECTS): stmp-targ-include +libm.a: $(libm_a_OBJECTS) $(libm_a_DEPENDENCIES) + $(AM_V_at)rm -f $@ + $(AM_V_AR)objs=`echo $(libm_a_OBJECTS) | $(AWK_UNIQUE_OBJS)` || exit $$?; \ + $(AR) $(ARFLAGS) $@ $$objs + $(AM_V_at)$(RANLIB) $@ + @HAVE_MULTISUBDIR_TRUE@$(BUILD_MULTISUBDIR): @HAVE_MULTISUBDIR_TRUE@ $(MKDIR_P) $@ |