diff options
Diffstat (limited to 'libc/sysdeps/linux/Makefile.commonarch')
| -rw-r--r-- | libc/sysdeps/linux/Makefile.commonarch | 63 |
1 files changed, 42 insertions, 21 deletions
diff --git a/libc/sysdeps/linux/Makefile.commonarch b/libc/sysdeps/linux/Makefile.commonarch index 1c616ec4a..f8dc17d8f 100644 --- a/libc/sysdeps/linux/Makefile.commonarch +++ b/libc/sysdeps/linux/Makefile.commonarch @@ -1,6 +1,6 @@ # Makefile template to be included by sysdeps/linux/<ARCH>/Makefile.arch # -# Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org> +# Copyright (C) 2000-2008 Erik Andersen <andersen@uclibc.org> # # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # @@ -8,35 +8,56 @@ ARCH_DIR := $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH) ARCH_OUT := $(top_builddir)libc/sysdeps/linux/$(TARGET_ARCH) -ARCH_CSRC := $(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC)) -ARCH_COBJ := $(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC)) -ARCH_SSRC := $(patsubst %.s,$(ARCH_DIR)/%.s,$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC))) -ARCH_SOBJ := $(patsubst %.s,$(ARCH_OUT)/%.o,$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC))) +ARCH_CSRC := $(addprefix $(ARCH_DIR)/,$(CSRC-y)) +ARCH_COBJ := $(addprefix $(ARCH_OUT)/,$(CSRC-y:.c=.o)) +ARCH_SSRC = $(addprefix $(ARCH_DIR)/,$(SSRC-y)) +ARCH_SOBJ = $(patsubst %.s,%.o,$(patsubst %.S,%.o,$(addprefix $(ARCH_OUT)/,$(SSRC-y)))) -ARCH_OBJS := $(ARCH_COBJ) $(ARCH_SOBJ) +ARCH_OBJS-y = $(ARCH_COBJ) $(ARCH_SOBJ) -crt-y := FORCE -libc-y += $(ARCH_OBJS) +libc-y += $(ARCH_OBJS-y) libc-nomulti-y += $(ARCH_SOBJ) -objclean-y += arch_objclean - -CFLAGS-crti.S+=$(PICFLAG) -CFLAGS-crtn.S+=$(PICFLAG) - -arch_objclean: - $(RM) $(ARCH_OUT)/*.{o,os} $(CTOR_TARGETS) $(CRTS) +objclean-y += CLEAN_$(subst $(top_builddir),,$(ARCH_OUT)) + +CFLAGS-OMIT-crt1.S := -D_LIBC_REENTRANT +CFLAGS-OMIT-crti.S := -D_LIBC_REENTRANT +CFLAGS-OMIT-crtn.S := -D_LIBC_REENTRANT +CFLAGS-OMIT-crtreloc.c := -D_LIBC_REENTRANT +CFLAGS-crti.S += $(PICFLAG) +CFLAGS-crtn.S += $(PICFLAG) +# Due to a "bug" in make these order_only prereqs inherit per-target flags. +# Attempt to workaround this inconvenient behaviour: +CFLAGS-OMIT-crt1.S += $(CFLAGS-rtld) -DIN_LIB=% +CFLAGS-OMIT-crtreloc.c += $(CFLAGS-rtld) -DIN_LIB=% + +CLEAN_$(subst $(top_builddir),,$(ARCH_OUT)): + $(do_rm) $(addprefix $(ARCH_OUT)/*., o os oS) $(CTOR_TARGETS) $(CRTS) ifneq ($(ARCH_HEADERS),) -ARCH_HEADERS_IN := $(patsubst %,../libc/sysdeps/linux/$(TARGET_ARCH)/%,$(ARCH_HEADERS)) ARCH_HEADERS_OUT := $(patsubst %,$(top_builddir)include/%,$(ARCH_HEADERS)) $(ARCH_HEADERS_OUT): - $(do_ln) -fs ../libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) $@ + $(do_ln) $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) $@ headers-y += $(ARCH_HEADERS_OUT) -headers_clean-y += arch_headers_clean -arch_headers_clean: - $(RM) $(ARCH_HEADERS_OUT) - +headers_clean-y += HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)) +HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)): + $(do_rm) $(ARCH_HEADERS_OUT) endif + +$(ARCH_OUT)/ucontext_i.h: $(top_srcdir)extra/scripts/gen-as-const.awk +$(ARCH_OUT)/ucontext_i.h: $(ARCH_OUT)/ucontext_i.sym + @$(disp_gen) + $(do_awk) $(top_srcdir)extra/scripts/gen-as-const.awk $< \ + | $(CC) $(CFLAGS) -x c - -S -o - \ + | $(SED) $(PTHREAD_GENERATE_MANGLE) > $@ + @if test ! -s $@ ; then rm -f $@ ; false ; fi + +pregen-headers-$(UCLIBC_HAS_CONTEXT_FUNCS) += $(ARCH_OUT)/ucontext_i.h + +headers_clean-$(UCLIBC_HAS_CONTEXT_FUNCS) += \ + HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)/ucontext_i) + +HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)/ucontext_i): + $(do_rm) $(addprefix $(ARCH_OUT)/ucontext_i., c h s) |
