# -*- makefile -*- # # Makefile configuration, without explicit rules # # 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 # klibc version information KLIBCVER = -D__KLIBC__=$(shell cut -d. -f1 < $(SRCROOT)/version) \ -D__KLIBC_MINOR__=$(shell cut -d. -f2 < $(SRCROOT)/version) 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 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) $(KLIBCVER) -nostdinc -iwithprefix include \ $(INCLUDE) LDFLAGS = AR = $(CROSS)ar RANLIB = $(CROSS)ranlib NM = $(CROSS)nm PERL = perl OBJCOPY = $(CROSS)objcopy STRIP = $(CROSS)strip STRIPFLAGS = --strip-all -R .comment -R .note STRIPCMD = $(STRIP) $(STRIPFLAGS) HOST_CC = gcc HOST_CFLAGS = -g -O HOST_LDFLAGS = HOST_LIBS = # Static library paths CRT0 = $(KLIBOBJ)/crt0.o KLIBC = $(KLIBOBJ)/libc.a LIBGCC = $(shell $(CC) $(REQFLAGS) $(OPTFLAGS) --print-libgcc) # Shared library paths CRTSHARED = $(KLIBOBJ)/interp.o LIBSHARED = $(KLIBOBJ)/libc.so # # This indicates the location of the final version of the shared library. # THIS MUST BE AN ABSOLUTE PATH WITH NO FINAL SLASH. # Leave this empty to make it the root. # 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