chiark / gitweb /
[PATCH] klibc: version 0.214
[elogind.git] / klibc / MCONFIG
index ec8b65c0e4c8a335060e5fa8441f2af5b130f0bc..7a24b821adf5192d104716754f3fb43e469a21a8 100644 (file)
@@ -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