summaryrefslogtreecommitdiff
path: root/Makefile.libs
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile.libs')
-rw-r--r--Makefile.libs108
1 files changed, 108 insertions, 0 deletions
diff --git a/Makefile.libs b/Makefile.libs
new file mode 100644
index 000000000..6a3eb1fec
--- /dev/null
+++ b/Makefile.libs
@@ -0,0 +1,108 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2002-2003 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under LGPL v2.1, see the file COPYING.LIB in this tarball for details.
+#
+
+#LIB_NAME:=libsome
+
+ifneq ($(strip $(LIB_NAME)),)
+ifeq ($(strip $(srcdir)),)
+srcdir=$(top_srcdir)$(LIB_NAME)
+endif
+ifeq ($(strip $($(LIB_NAME)_DIR)),)
+$(LIB_NAME)_DIR:=$(top_builddir)$(LIB_NAME)
+endif
+ifeq ($(strip $($(LIB_NAME)_FULL_NAME)),)
+$(LIB_NAME)_FULL_NAME:=$(LIB_NAME)-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
+endif
+
+ifeq ($(strip $($(LIB_NAME)_SRC)),)
+ifeq ($(strip $($(LIB_NAME)_MSRC)),)
+$(LIB_NAME)_SRC:=$(wildcard $(srcdir)/*.c)
+endif
+else
+ifeq ($(strip $($(LIB_NAME)_OBJ)),)
+$(LIB_NAME)_OBJ:=$(patsubst $(srcdir)/%.c,$($(LIB_NAME)_DIR)/%.o,$($(LIB_NAME)_SRC))
+endif
+endif
+$(LIB_NAME)_OBJ_PIC:=$(patsubst %.o,%.os,$($(LIB_NAME)_OBJ))
+
+$(LIB_NAME)_MOBJ_PIC:=$(patsubst %.o,%.os,$($(LIB_NAME)_MOBJ))
+
+$(LIB_NAME)_ARCH_OBJ_PIC:=$(patsubst %.o,%.os,$($(LIB_NAME)_ARCH_OBJ))
+
+libso-y+=$(top_builddir)lib/$(LIB_NAME).so
+liba-y+=$(top_builddir)lib/$(LIB_NAME).a
+libclean-y+=$(LIB_NAME)_clean
+
+$($(LIB_NAME)_OBJ): %.o : %.c
+ $(compile.c)
+
+$($(LIB_NAME)_OBJ_PIC): %.os : %.c
+ $(compile.c) $(PICFLAG)
+
+$($(LIB_NAME)_MOBJ): $($(LIB_NAME)_MSRC)
+ $(compile.m)
+
+$($(LIB_NAME)_MOBJ_PIC): $($(LIB_NAME)_MSRC)
+ $(compile.m) $(PICFLAG)
+
+$($(LIB_NAME)_ARCH_OBJ): %.o : %.c
+ $(compile.c)
+
+$($(LIB_NAME)_ARCH_OBJ_PIC): %.os : %.c
+ $(compile.c) $(PICFLAG)
+
+# this should be changed to .os after libc/misc/internals/ is done
+interp:=$(top_builddir)libc/misc/internals/interp.o
+ifeq ($(strip $(EXTRA_LINK_LIBS)),)
+EXTRA_LINK_LIBS=$(interp) -L$(top_builddir)lib -lc $(LDADD_LIBFLOAT) $(LIBGCC)
+endif
+
+$(top_builddir)lib/$(LIB_NAME).so: $($(LIB_NAME)_DIR)/$(LIB_NAME)_pic.a $(interp)
+ $(INSTALL) -d $(top_builddir)lib
+ $(RM) $@ $@.$(MAJOR_VERSION) $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME)
+ $(LD) $(LDFLAGS) -soname=$(notdir $@).$(MAJOR_VERSION) -o $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME) \
+ $(EXTRA_LINK_OPTS) $(SHARED_START_FILES) --whole-archive $(firstword $^) \
+ --no-whole-archive $(EXTRA_LINK_LIBS) $(SHARED_END_FILES)
+ $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@.$(MAJOR_VERSION)
+ $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@
+
+$(top_builddir)lib/$(LIB_NAME).so1: $($(LIB_NAME)_OBJ_PIC) $($(LIB_NAME)_MOBJ_PIC) $($(LIB_NAME)_ARCH_OBJ_PIC)
+ $(INSTALL) -d $(top_builddir)lib
+ $(RM) $@ $@.$(MAJOR_VERSION) $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME)
+ $(LD) $(LDFLAGS) -soname=$(notdir $@).$(MAJOR_VERSION) -o $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME) \
+ $(EXTRA_LINK_OPTS) $(SHARED_START_FILES) $^ \
+ $(EXTRA_LINK_LIBS) $(SHARED_END_FILES)
+ $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@.$(MAJOR_VERSION)
+ $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@
+
+$($(LIB_NAME)_DIR)/$(LIB_NAME)_pic.a: $($(LIB_NAME)_OBJ_PIC) $($(LIB_NAME)_MOBJ_PIC) $($(LIB_NAME)_ARCH_OBJ_PIC)
+ifneq ($(strip $(STRIP_FLAGS)),)
+ $(STRIPTOOL) $(STRIP_FLAGS) $^
+else
+ $(STRIPTOOL) -x -R .note -R .comment $^
+endif
+ $(AR) $(ARFLAGS) $@ $^
+ #(AR) $(ARFLAGS) $@ $($(LIB_NAME)_OBJ_PIC) $($(LIB_NAME)_MOBJ_PIC)
+ #(AR) $(ARFLAGS) $@ $($(LIB_NAME)_ARCH_OBJ_PIC)
+
+ifeq ($(DOPIC),y)
+$(top_builddir)lib/$(LIB_NAME).a: $($(LIB_NAME)_DIR)/$(LIB_NAME)_pic.a
+ $(RM) $@
+ cp $< $@
+else
+$(top_builddir)lib/$(LIB_NAME).a: $($(LIB_NAME)_OBJ) $($(LIB_NAME)_MOBJ) $($(LIB_NAME)_ARCH_OBJ)
+ $(RM) $@
+ $(STRIPTOOL) -x -R .note -R .comment $^
+ $(AR) $(ARFLAGS) $@ $^
+ #(AR) $(ARFLAGS) $@ $($(LIB_NAME)_OBJ) $($(LIB_NAME)_MOBJ)
+ #(AR) $(ARFLAGS) $@ $($(LIB_NAME)_ARCH_OBJ)
+endif
+
+$(LIB_NAME)_clean:
+ rm -f $($(LIB_NAME)_DIR)/*.{o,os,a}
+
+endif