| # -*- 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 |
| |
| # How to tell the linker main() is the entrypoint |
| EMAIN ?= -e main |