diff options
author | Peter S. Mazinger <ps.m@gmx.net> | 2005-09-28 12:34:41 +0000 |
---|---|---|
committer | Peter S. Mazinger <ps.m@gmx.net> | 2005-09-28 12:34:41 +0000 |
commit | f70602be19ff8042c369ea33b29f90b8c0f5d02e (patch) | |
tree | 146eb1810d44dc99f8bf26ecd71cec4ee5ba5b32 /ldso/libdl | |
parent | e1ac781ed8b4a0f44a696f95618b73d2fa490576 (diff) |
Remove ar-target and shared targets, at build time now we traverse the tree only once. Generalize all toplevel makefiles. Make sure, that libdl.so is built against libc.so and not libc.a
Diffstat (limited to 'ldso/libdl')
-rw-r--r-- | ldso/libdl/Makefile | 77 |
1 files changed, 41 insertions, 36 deletions
diff --git a/ldso/libdl/Makefile b/ldso/libdl/Makefile index 6a8b46ad6..a5b2f6be2 100644 --- a/ldso/libdl/Makefile +++ b/ldso/libdl/Makefile @@ -29,57 +29,62 @@ XXFLAGS+=$(OPTIMIZATION) endif XXFLAGS+= $(XARCH_CFLAGS) $(CPU_CFLAGS) \ -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \ - -fno-builtin -nostdinc -D_LIBC -I$(TOPDIR)ldso/include -I$(TOPDIR)ldso/ldso -I. -I$(TOPDIR)include + -fno-builtin -nostdinc -D_LIBC -I$(TOPDIR)ldso/include -I$(TOPDIR)ldso/ldso -I$(TOPDIR)include XXFLAGS+=-isystem $(shell $(CC) -print-file-name=include) +ifeq ($(strip $(SUPPORT_LD_DEBUG)),y) +XXFLAGS+=-D__SUPPORT_LD_DEBUG__ +endif XXFLAGS_NOPIC:=$(XXFLAGS) ifeq ($(DOPIC),y) XXFLAGS += $(PICFLAG) -D__LIBDL_SHARED__ endif -ifeq ($(strip $(SUPPORT_LD_DEBUG)),y) -XXFLAGS+=-D__SUPPORT_LD_DEBUG__ -endif - -LIBDL=libdl.a -LIBDL_PIC=libdl_pic.a -LIBDL_SHARED=libdl.so -LIBDL_SHARED_FULLNAME=libdl-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so -CSRC=libdl.c -OBJS=libdl.o -PIC_OBJS=libdl_pic.o +LIB_NAME=libdl +AR_LIB_NAME=$(TOPDIR)lib/$(LIB_NAME).a +SO_LIB_NAME=$(TOPDIR)lib/$(LIB_NAME).so +SO_FULL_NAME=$(LIB_NAME)-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so -all: $(LIBDL) $(LIBDL_PIC) +CSRC = libdl.c +OBJS = libdl.o +PIC_OBJS = libdl_pic.o -ar-target: $(LIBDL) $(LIBDL_PIC) +# we do not get here, do we need a libdl.a, if ld.so is not ours? +#ifeq ($(strip $(HAVE_SHARED)),y) +all: $(AR_LIB_NAME) $(SO_LIB_NAME) +#else +#all: $(AR_LIB_NAME) +#endif -$(LIBDL): $(OBJS) - $(AR) $(ARFLAGS) $(LIBDL) ../ldso/$(TARGET_ARCH)/resolve.o $(OBJS) +$(AR_LIB_NAME): $(OBJS) ../ldso/$(TARGET_ARCH)/resolve.o $(INSTALL) -d $(TOPDIR)lib - $(RM) $(TOPDIR)lib/$(LIBDL) - $(INSTALL) -m 644 $(LIBDL) $(TOPDIR)lib + $(RM) $(AR_LIB_NAME) + $(AR) $(ARFLAGS) $(AR_LIB_NAME) $(OBJS) ../ldso/$(TARGET_ARCH)/resolve.o -$(LIBDL_PIC): $(PIC_OBJS) - $(AR) $(ARFLAGS) $(LIBDL_PIC) $(PIC_OBJS) +shared_$(LIB_NAME).a: $(PIC_OBJS) + $(RM) shared_$(LIB_NAME).a + $(AR) $(ARFLAGS) shared_$(LIB_NAME).a $(PIC_OBJS) -libdl.o: libdl.c $(TOPDIR)ldso/include/*.h - $(CC) $(XXFLAGS_NOPIC) -c libdl.c -o libdl.o - $(STRIPTOOL) -x -R .note -R .comment $*.o +# this will be built only on the second round, when libc.so is present, +# else we would link against libc.a +$(SO_LIB_NAME): shared_$(LIB_NAME).a + if [ -f $(TOPDIR)lib/libc.so ] ; then \ + $(RM) $(TOPDIR)lib/$(SO_FULL_NAME) $(SO_LIB_NAME).$(MAJOR_VERSION) $(SO_LIB_NAME) ; \ + $(LD) $(LDFLAGS) -soname=$(LIB_NAME).so.$(MAJOR_VERSION) \ + -o $(TOPDIR)lib/$(SO_FULL_NAME) -fini dl_cleanup --whole-archive shared_$(LIB_NAME).a \ + --no-whole-archive $(TOPDIR)libc/misc/internals/interp.o \ + -L$(TOPDIR)lib -lc $(LDADD_LIBFLOAT) $(TOPDIR)lib/$(UCLIBC_LDSO) $(LIBGCC) ; \ + $(LN) -sf $(SO_FULL_NAME) $(SO_LIB_NAME).$(MAJOR_VERSION) ; \ + $(LN) -sf $(SO_FULL_NAME) $(SO_LIB_NAME) ; \ + fi -libdl_pic.o: libdl.c $(TOPDIR)ldso/include/*.h - $(CC) $(XXFLAGS) -c libdl.c -o libdl_pic.o +$(OBJS): %.o : %.c + $(CC) $(XXFLAGS_NOPIC) -c $< -o $@ $(STRIPTOOL) -x -R .note -R .comment $*.o -shared: $(LIBDL_PIC) - $(LD) $(LDFLAGS) -soname=$(LIBDL_SHARED).$(MAJOR_VERSION) \ - -o $(LIBDL_SHARED_FULLNAME) -fini dl_cleanup --whole-archive $(LIBDL_PIC) \ - --no-whole-archive $(TOPDIR)/libc/misc/internals/interp.o \ - -L$(TOPDIR)/lib -lc $(LDADD_LIBFLOAT) $(TOPDIR)lib/$(UCLIBC_LDSO) $(LIBGCC); - $(INSTALL) -d $(TOPDIR)lib - $(RM) $(TOPDIR)lib/$(LIBDL_SHARED_FULLNAME) $(TOPDIR)lib/$(LIBDL_SHARED).$(MAJOR_VERSION) - $(INSTALL) -m 644 $(LIBDL_SHARED_FULLNAME) $(TOPDIR)lib - $(LN) -sf $(LIBDL_SHARED_FULLNAME) $(TOPDIR)lib/$(LIBDL_SHARED) - $(LN) -sf $(LIBDL_SHARED_FULLNAME) $(TOPDIR)lib/$(LIBDL_SHARED).$(MAJOR_VERSION) +libdl_pic.o: libdl.c + $(CC) $(XXFLAGS) -c $< -o $@ + $(STRIPTOOL) -x -R .note -R .comment $*.o clean: - $(RM) .depend $(LIBDL_SHARED)* $(LIBDL_SHARED_FULLNAME) core *.o *.a *.s *.i tmp_make foo *~ + $(RM) *.o *~ core *.a |