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