diff options
-rw-r--r-- | Makefile | 5 | ||||
-rwxr-xr-x | configure | 10 |
2 files changed, 13 insertions, 2 deletions
@@ -25,6 +25,7 @@ REPLACED_OBJS = $(sort $(subst /$(ARCH)/,/,$(ARCH_OBJS))) LDSO_SRCS = $(sort $(wildcard $(srcdir)/ldso/*.c)) LDSO_OBJS = $(patsubst $(srcdir)/%,obj/%.lo,$(basename $(LDSO_SRCS))) OBJS = $(addprefix obj/, $(filter-out $(REPLACED_OBJS), $(sort $(BASE_OBJS) $(ARCH_OBJS)))) +AOBJS = $(OBJS) LOBJS = $(OBJS:.o=.lo) GENH = obj/include/bits/alltypes.h GENH_INT = obj/src/internal/version.h @@ -158,9 +159,9 @@ lib/libc.so: $(LOBJS) $(LDSO_OBJS) -Wl,-e,_dlstart -Wl,-Bsymbolic-functions \ -o $@ $(LOBJS) $(LDSO_OBJS) $(LIBCC) -lib/libc.a: $(OBJS) +lib/libc.a: $(AOBJS) rm -f $@ - $(AR) rc $@ $(OBJS) + $(AR) rc $@ $(AOBJS) $(RANLIB) $@ $(EMPTY_LIBS): @@ -532,6 +532,15 @@ CFLAGS_AUTO="$CFLAGS_AUTO -include vis.h" CFLAGS_AUTO="${CFLAGS_AUTO# }" fi +# Determine if the compiler produces position-independent code (PIC) +# by default. If so, we don't need to compile separate object files +# for libc.a and libc.so. +if trycppif __PIC__ "$CFLAGS_C99FSE $CPPFLAGS $CFLAGS" ; then +pic_default=yes +else +pic_default=no +fi + # Reduce space lost to padding for alignment purposes by sorting data # objects according to their alignment reqirements. This approximates # optimal packing. @@ -692,6 +701,7 @@ test "x$static" = xno && echo "STATIC_LIBS =" test "x$shared" = xno && echo "SHARED_LIBS =" test "x$cc_family" = xgcc && echo 'WRAPCC_GCC = $(CC)' test "x$cc_family" = xclang && echo 'WRAPCC_CLANG = $(CC)' +test "x$pic_default" = xyes && echo 'AOBJS = $(LOBJS)' exec 1>&3 3>&- test "$srcdir" = "." || ln -sf $srcdir/Makefile . |