| # -*- 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 |
| |
| 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) -nostdinc -iwithprefix include -D__KLIBC__ \ |
| $(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 |
| # Don't use libgcc for now, to see if anything breaks... |
| 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 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 |