# EPOS Makefile Definitions
#
# Author: Guto
# Last updated: 26 Apr 2001

# Directories
INCLUDE		= $(EPOS)/include
SRC		= $(EPOS)/src
BIN		= $(EPOS)/bin
IMG		= $(EPOS)/img
LIB		= $(EPOS)/lib
LIBSYS		= $(LIB)/libsystem.a
LIBDATA		= $(LIB)/libsystem_data.a
LIBINIT		= $(LIB)/libsystem_init.a


# Configuration
#DEBUG		= -DDBLEV=0x1f -DDBMOD=0x3f7
#DEBUG		= -DDBLEV=-1 -g
#DEBUG		= -DDBLEV=-1
DEBUG		= -DDEBUG
SETUP_ADDR	= 0x01f00000
#SETUP_ADDR	= 0x00f80000
INIT_ADDR	= 0x81fe0000
#INIT_ADDR	= 0x80f60000
SYS_CODE_ADDR	= 0xfff00000
SYS_DATA_ADDR	= 0xfff40000

# Tools and flags to compile system tools
UNIX_CC		= gcc3 -ansi -c
UNIX_CC_FLAGS	= -Wall -O -I$(INCLUDE) $(DEBUG)

UNIX_CCC	= g++3 -c -ansi -fno-exceptions
UNIX_CCC_FLAGS	= -Wall -O -I$(INCLUDE) $(DEBUG)

UNIX_LD		= gcc3
UNIX_LD_FLAGS	= 

# Tools and flags to compile applications
APP_CC		= eposcc -c -ansi -O $(DEBUG)
APP_CCC		= eposcc -c -ansi -O $(DEBUG)
APP_F77		= eposcc -c -ansi -O $(DEBUG)
APP_LD		= eposcc --guest
ACC		= eposcc -c -ansi -O $(DEBUG)
ACXX		= eposcc -c -ansi -O $(DEBUG)
AF77		= eposcc -c -ansi -O $(DEBUG)
ALD		= eposcc --guest
GUEST_ALD	= eposcc --guest

# Tools and flags to compile the boot strap (ix86 real mode)
AS86		= as86
AS86_FLAGS	= -0

LD86		= ld86
LD86_FLAGS	= -0 -s

# Tools and flags to compile the system
TOOLS_PREFIX	= 

AR		= $(TOOLS_PREFIX)ar
AR_FLAGS	= -rcs
ARFLAGS		= -rcs

AS		= $(TOOLS_PREFIX)as
AS_FLAGS	= 

AWK	  	= awk
AWK_FLAGS	= -f

CC		= $(TOOLS_PREFIX)gcc3 -ansi -c
CCFLAGS		= -O -nostdinc -Wall -I$(INCLUDE) $(DEBUG) -DSYSTEM
CC_FLAGS	= $(CCFLAGS)

CPP		= $(TOOLS_PREFIX)gcc3 -E
CPP_FLAGS	= -I$(INCLUDE) $(DEBUG)

CXX		= $(TOOLS_PREFIX)g++3 -c
CXXFLAGS	= -O --no-exceptions --no-rtti -Wall -Winline -I$(INCLUDE) $(DEBUG) -DSYSTEM
CCC		= $(CXX)
CCC_FLAGS	= $(CXXFLAGS)

LD		= $(TOOLS_PREFIX)ld
LDFLAGS		= -L$(LIB) -Bstatic
LD_FLAGS	= $(LDFLAGS)

MAKE		= make
#MAKEFLAGS	= -r --no-print-directory -s
MAKEFLAGS	= -r 

MKBOOT		= sys
MKBOOT_FLAGS	= /tftpboot/epos.x

DD		= dd

STRIP		= $(TOOLS_PREFIX)strip -R .note -R .comment

INSTALL		= cp

SHELL		= tcsh

PRINT1		= apl
PRINT2		= | lpr

CLEAN		= rm -f
#CLEAN		= rm -f *_test.key

RET2IRET	= sed -e 's/ret/iret/'


# Rules
lib%.o:		lib%.cc
		$(CXX) $(CXXFLAGS) -USYSTEM $<

%_test.o:	%_test.cc
		$(ACXX) $(ACXXFLAGS) $<

%_test:		%_test.o
		$(ALD) $(ALDFLAGS) $< -o $@

%.o:		%.cc
		$(CXX) $(CXXFLAGS) $<

%.o:		%.c
		$(CC) $(CCFLAGS) $<

%:		%.c
		$(CC) $(CCFLAGS) $<
		$(LD) $(LDFLAGS) %@.o -o $@
