# -*- 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
