# -*- 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/ -e s/parisc.*/parisc/)
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) -nostdlib -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
