OSDN Git Service

Use DL_RELOC_ADDR when dealing with DL_LOADADDR_TYPE types. Fixes gnu-hash
[uclinux-h8/uClibc.git] / ldso / libdl / Makefile.in
index e804b34..baacf76 100644 (file)
@@ -1,46 +1,59 @@
 # Makefile.in for uClibc
 #
-# Copyright (C) 2000 by Lineo, inc.
-# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+# Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
 #
 # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
 #
 
-# psm: I do not know if the order of includes is relevant
-# to be sure I added them first, Jocke please cleanup if needed
-CFLAGS:=-I$(top_builddir)ldso/include -I$(top_builddir)ldso/ldso $(CFLAGS) $(SSP_ALL_CFLAGS)
+CFLAGS-libdl := -DNOT_IN_libc -DIS_IN_libdl $(SSP_ALL_CFLAGS)
 
-CFLAGS+=-DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\"
+CFLAGS-libdl += -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) -I$(top_srcdir)ldso/include -I$(top_srcdir)ldso/ldso
+
+CFLAGS-libdl += -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\"
 
 ifeq ($(SUPPORT_LD_DEBUG),y)
-CFLAGS+=-D__SUPPORT_LD_DEBUG__
+CFLAGS-libdl += -D__SUPPORT_LD_DEBUG__
 endif
 
-# can't combine .c w/ .S
-DOMULTI=n
+CFLAGS-libdl.c := -DLDSO_ELFINTERP=\"$(TARGET_ARCH)/elfinterp.c\"
+
+LDFLAGS-libdl.so := $(LDFLAGS) -Wl,-fini,dl_cleanup
+
+LIBS-libdl.so := $(LIBS) $(ldso)
 
-LIB_NAME:=libdl
+libdl_FULL_NAME := libdl-$(VERSION).so
 
-EXTRA_LINK_OPTS:=-fini dl_cleanup
-# keep in sync w/ Makerules
-EXTRA_LINK_LIBS:=$(top_builddir)libc/misc/internals/interp.os -L$(top_builddir)lib $(top_builddir)lib/libc.so $(LIBGCC) $(top_builddir)lib/$(UCLIBC_LDSO)
+libdl_DIR := $(top_srcdir)ldso/libdl
+libdl_OUT := $(top_builddir)ldso/libdl
 
-libdl_DIR:=$(top_srcdir)ldso/libdl
-libdl_OUT:=$(top_builddir)ldso/libdl
+libdl_SRC := $(libdl_DIR)/libdl.c
+libdl_OBJ := $(patsubst $(libdl_DIR)/%.c,$(libdl_OUT)/%.o,$(libdl_SRC))
 
-libdl_SRC:=$(libdl_DIR)/libdl.c
-libdl_OBJ:=$(patsubst $(libdl_DIR)/%.c,$(libdl_OUT)/%.o,$(libdl_SRC))
+resolve := $(top_builddir)ldso/ldso/$(TARGET_ARCH)/resolve.o
+
+libdl-a-y := $(libdl_OBJ) $(resolve)
+ifeq ($(DOPIC),y)
+libdl-a-y := $(libdl-a-y:.o=.os)
+endif
+libdl-so-y := $(libdl_OUT)/libdl.oS
 
-resolve:=$(top_builddir)ldso/ldso/$(TARGET_ARCH)/resolve.o
+lib-a-$(HAVE_SHARED) += $(top_builddir)lib/libdl.a
+lib-so-y += $(top_builddir)lib/libdl.so
+objclean-y += libdl_clean
 
-libdl-a-$(HAVE_SHARED):=$(libdl_OBJ)
-libdl-static-$(HAVE_SHARED):=$(resolve)
-libdl-shared-$(HAVE_SHARED):=$(libdl_OUT)/libdl.oS
+$(top_builddir)lib/libdl.so: $(libdl_OUT)/libdl_so.a $(libc)
+       $(call link.so,$(libdl_FULL_NAME),$(MAJOR_VERSION))
 
-objclean-y+=libdl_clean libdl_extra_clean
+$(libdl_OUT)/libdl_so.a: $(libdl-so-y)
+       $(Q)$(RM) $@
+       $(do_strip)
+       $(do_ar)
 
-libdl_extra_clean:
-       $(RM) $(libdl_OUT)/*.oS
+$(top_builddir)lib/libdl.a: $(libdl-a-y)
+       $(Q)$(INSTALL) -d $(dir $@)
+       $(Q)$(RM) $@
+       $(do_strip)
+       $(do_ar)
 
-lib-a-$(HAVE_SHARED)+=$(top_builddir)lib/libdl.a
-lib-so-$(HAVE_SHARED)+=$(top_builddir)lib/libdl.so
+libdl_clean:
+       $(RM) $(libdl_OUT)/*.{o,os,a,oS}