diff options
Diffstat (limited to 'Makefile.libs')
-rw-r--r-- | Makefile.libs | 108 |
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 |