X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=klibc%2FMCONFIG;h=7a24b821adf5192d104716754f3fb43e469a21a8;hp=ec8b65c0e4c8a335060e5fa8441f2af5b130f0bc;hb=4272779706c53c635a3fa5431a4e8791402183b4;hpb=73028bc3322c9ec88e046c57e7b297fdd1c02b1a diff --git a/klibc/MCONFIG b/klibc/MCONFIG index ec8b65c0e..7a24b821a 100644 --- a/klibc/MCONFIG +++ b/klibc/MCONFIG @@ -3,22 +3,53 @@ # Makefile configuration, without explicit rules # -ARCH = $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/) +# CROSS is the prefix used for system tools like gcc, ld etc. CROSS = + +# KCROSS is the prefix we use for klibc installations. This is usually +# the same as CROSS, but may be different, e.g. to install an i386 +# cross-compilation suite on an x86-64 system, using the same gcc/binutils. +KCROSS ?= $(CROSS) + +# Location for installation +prefix = /usr +bindir = $(prefix)/bin +libdir = $(prefix)/lib +mandir = $(prefix)/man +INSTALLDIR = $(prefix)/lib/klibc +INSTALLROOT = + +INSTALL_EXEC = install -m 755 +INSTALL_DATA = install -m 644 + +# Eventually support separate compilation, but we don't have it yet... +OBJROOT = $(SRCROOT) + +# Kernel trees (source and obj) - can potentially be different +KRNLSRC = $(SRCROOT)/linux +KRNLOBJ = $(SRCROOT)/linux + +ARCH = $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/) CC = $(CROSS)gcc LD = $(CROSS)ld KLIBSRC = $(SRCROOT)/klibc -REQFLAGS = $(ARCHREQFLAGS) -nostdinc -iwithprefix include -I$(KLIBSRC) \ - -I$(KLIBSRC)/arch/$(ARCH)/include \ - -I$(KLIBSRC)/include/bits$(BITSIZE) \ - -D__KLIBC__ -DBITSIZE=$(BITSIZE) -I$(KLIBSRC)/include \ - -I$(KERNEL_DIR)/include +KLIBOBJ = $(OBJROOT)/klibc +INCLUDE = -I$(SRCROOT)/include/arch/$(ARCH) \ + -I$(SRCROOT)/include/bits$(BITSIZE) \ + -I$(SRCROOT)/include \ + -I$(KRNLOBJ)/include -I$(KRNLOBJ)/include2 -I$(KRNLSRC)/include +REQFLAGS = $(ARCHREQFLAGS) -nostdinc -iwithprefix include -D__KLIBC__ \ + $(INCLUDE) LDFLAGS = AR = $(CROSS)ar RANLIB = $(CROSS)ranlib NM = $(CROSS)nm PERL = perl -STRIP = $(CROSS)strip --strip-all -R .comment -R .note +OBJCOPY = $(CROSS)objcopy + +STRIP = $(CROSS)strip +STRIPFLAGS = --strip-all -R .comment -R .note +STRIPCMD = $(STRIP) $(STRIPFLAGS) HOST_CC = gcc HOST_CFLAGS = -g -O @@ -26,13 +57,13 @@ HOST_LDFLAGS = HOST_LIBS = # Static library paths -CRT0 = $(KLIBSRC)/crt0.o -KLIBC = $(KLIBSRC)/libc.a -LIBGCC = $(shell $(CC) --print-libgcc) +CRT0 = $(KLIBOBJ)/crt0.o +KLIBC = $(KLIBOBJ)/libc.a +LIBGCC = $(shell $(CC) $(REQFLAGS) $(OPTFLAGS) --print-libgcc) # Shared library paths -CRTSHARED = $(KLIBSRC)/interp.o -LIBSHARED = $(KLIBSRC)/libc.so +CRTSHARED = $(KLIBOBJ)/interp.o +LIBSHARED = $(KLIBOBJ)/libc.so # # This indicates the location of the final version of the shared library. @@ -41,7 +72,23 @@ LIBSHARED = $(KLIBSRC)/libc.so # SHLIBDIR = /lib +# Enable this to make perror/strerror return real error messages +# This makes klibc.so and any static binary which uses these functions +# about 4K bigger. +ERRLIST = 1 + +# Include zlib in klibc. This roughly triples the size of klibc! +ZLIB = 0 + # # Include arch-specific rule fragments # include $(KLIBSRC)/arch/$(ARCH)/MCONFIG + +ifeq ($(DEBUG),y) +STRIP = /bin/true -Since_we_are_debugging +OPTFLAGS += -O1 -g +endif + +# How to tell the linker main() is the entrypoint +EMAIN ?= -e main