# -*- makefile -*- # # Makefile configuration, without explicit rules # # 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/) CROSS = 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) -nostdinc -iwithprefix include \ -D__KLIBC__ -DBITSIZE=$(BITSIZE) \ $(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 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) --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 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