lkml.org 
[lkml]   [2006]   [Jun]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[klibc 02/31] Main Makefile changes for klibc
    Date
    klibc requires that the main Makefile exports RANLIB, KLIBCARCH and
    KLIBCARCHDIR. KLIBCARCH and KLIBCARCHDIR are usually the same as
    ARCH, but there are a few exceptions:

    powerpc: KLIBCARCH is ppc or ppc64, KLIBCARCHDIR is powerpc
    s390: KLIBCARCH is s390 or s390x, KLIBCARCHDIR is s390
    um: KLIBCARCH is the underlying architecture,
    KLIBCARCHDIR is set by that architecture.

    s390 support by Heiko Carstens <heiko.carstens@de.ibm.com>.

    Additionally, add support for building single files that have to be
    built with klibc rules. Support by Sam Ravnborg <sam@ravnborg.org>.

    Signed-off-by: H. Peter Anvin <hpa@zytor.com>

    ---
    commit 6af9454fcd8dc22f657feff4f31923e3aa73c475
    tree abf579fa4cca8e409474e9cd2a65201f8691bbb1
    parent 9371ae0abc260d3f87f243b364e86d837a3a23fd
    author H. Peter Anvin <hpa@zytor.com> Tue, 27 Jun 2006 20:50:21 -0700
    committer H. Peter Anvin <hpa@zytor.com> Tue, 27 Jun 2006 20:50:21 -0700

    Makefile | 32 +++++++++++++++++++++++---------
    arch/powerpc/Makefile | 1 +
    arch/s390/Makefile | 4 ++++
    arch/um/Makefile | 2 ++
    4 files changed, 30 insertions(+), 9 deletions(-)

    diff --git a/Makefile b/Makefile
    index e9560c6..6a4c559 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -176,7 +176,16 @@ ARCH ?= $(SUBARCH)
    CROSS_COMPILE ?=

    # Architecture as present in compile.h
    -UTS_MACHINE := $(ARCH)
    +UTS_MACHINE := $(ARCH)
    +
    +# Architecture used to compile user-space code
    +KLIBCARCH ?= $(ARCH)
    +KLIBCARCHDIR ?= $(KLIBCARCH)
    +
    +# klibc definitions
    +export KLIBCINC := usr/include
    +export KLIBCSRC := $(srctree)/usr/klibc
    +export KLIBCOBJ := $(objtree)/usr/klibc

    KCONFIG_CONFIG ?= .config

    @@ -278,6 +287,7 @@ LD = $(CROSS_COMPILE)ld
    CC = $(CROSS_COMPILE)gcc
    CPP = $(CC) -E
    AR = $(CROSS_COMPILE)ar
    +RANLIB = $(CROSS_COMPILE)ranlib
    NM = $(CROSS_COMPILE)nm
    STRIP = $(CROSS_COMPILE)strip
    OBJCOPY = $(CROSS_COMPILE)objcopy
    @@ -318,6 +328,7 @@ export VERSION PATCHLEVEL SUBLEVEL KERNE
    export ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
    export CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE
    export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
    +export RANLIB KLIBCARCH KLIBCARCHDIR

    export CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
    export CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
    @@ -1303,41 +1314,44 @@ # Single targets are compatible with:
    # - build whith mixed source and output
    # - build with separate output dir 'make O=...'
    # - external modules
    +# - klibc library and klibc programs (everything under usr/)
    #
    # target-dir => where to store outputfile
    # build-dir => directory in kernel source tree to use

    ifeq ($(KBUILD_EXTMOD),)
    + singlebld = $(if $(filter usr/%,$(dir $@)),$(klibc),$(build))
    build-dir = $(patsubst %/,%,$(dir $@))
    target-dir = $(dir $@)
    else
    + singlebld = $(build)
    zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
    build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
    target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
    endif

    %.s: %.c prepare scripts FORCE
    - $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
    + $(Q)$(MAKE) $(singlebld)=$(build-dir) $(target-dir)$(notdir $@)
    %.i: %.c prepare scripts FORCE
    - $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
    + $(Q)$(MAKE) $(singlebld)=$(build-dir) $(target-dir)$(notdir $@)
    %.o: %.c prepare scripts FORCE
    - $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
    + $(Q)$(MAKE) $(singlebld)=$(build-dir) $(target-dir)$(notdir $@)
    %.lst: %.c prepare scripts FORCE
    - $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
    + $(Q)$(MAKE) $(singlebld)=$(build-dir) $(target-dir)$(notdir $@)
    %.s: %.S prepare scripts FORCE
    - $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
    + $(Q)$(MAKE) $(singlebld)=$(build-dir) $(target-dir)$(notdir $@)
    %.o: %.S prepare scripts FORCE
    - $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
    + $(Q)$(MAKE) $(singlebld)=$(build-dir) $(target-dir)$(notdir $@)
    %.symtypes: %.c prepare scripts FORCE
    $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)

    # Modules
    / %/: prepare scripts FORCE
    $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
    - $(build)=$(build-dir)
    + $(singlebld)=$(build-dir)
    %.ko: prepare scripts FORCE
    $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
    - $(build)=$(build-dir) $(@:.ko=.o)
    + $(singlebld)=$(build-dir) $(@:.ko=.o)
    $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost

    # FIXME Should go into a make.lib or something
    diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
    index 01667d1..db9e79c 100644
    --- a/arch/powerpc/Makefile
    +++ b/arch/powerpc/Makefile
    @@ -51,6 +51,7 @@ SZ := 32
    endif

    UTS_MACHINE := $(OLDARCH)
    +KLIBCARCH := $(OLDARCH)

    ifeq ($(HAS_BIARCH),y)
    override AS += -a$(SZ)
    diff --git a/arch/s390/Makefile b/arch/s390/Makefile
    index b3791fb..30832b3 100644
    --- a/arch/s390/Makefile
    +++ b/arch/s390/Makefile
    @@ -20,6 +20,7 @@ AFLAGS += -m31
    UTS_MACHINE := s390
    STACK_SIZE := 8192
    CHECKFLAGS += -D__s390__
    +KLIBCARCH := s390
    else
    LDFLAGS := -m elf64_s390
    MODFLAGS += -fpic -D__PIC__
    @@ -28,8 +29,11 @@ AFLAGS += -m64
    UTS_MACHINE := s390x
    STACK_SIZE := 16384
    CHECKFLAGS += -D__s390__ -D__s390x__
    +KLIBCARCH := s390x
    endif

    +KLIBCARCHDIR := s390
    +
    cflags-$(CONFIG_MARCH_G5) += $(call cc-option,-march=g5)
    cflags-$(CONFIG_MARCH_Z900) += $(call cc-option,-march=z900)
    cflags-$(CONFIG_MARCH_Z990) += $(call cc-option,-march=z990)
    diff --git a/arch/um/Makefile b/arch/um/Makefile
    index f6ad832..f8e96f2 100644
    --- a/arch/um/Makefile
    +++ b/arch/um/Makefile
    @@ -50,6 +50,8 @@ ARCH_INCLUDE += -I$(srctree)/$(ARCH_DIR)
    endif
    SYS_DIR := $(ARCH_DIR)/include/sysdep-$(SUBARCH)

    +KLIBCARCH := $(SUBARCH)
    +
    # -Dvmap=kernel_vmap prevents anything from referencing the libpcap.o symbol so
    # named - it's a common symbol in libpcap, so we get a binary which crashes.
    #
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2006-06-28 07:21    [W:0.029 / U:1.708 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site