#####################################################################
#
#       $Id: Makefile,v 1.17 2007/09/14 22:02:55 netos Exp $
#
#    Makefile used to modify C library routines.
#
#####################################################################

# Root directory for netos.
BASEDIR=..

# Cygwin GNU path , we are dependent on the directory structure of
# cygwin.
GNU_PATH=/usr/arm-elf/bin
GNU_UTILITY_PATH=/usr/bin
GNU_LIBPATH=/usr/arm-elf/lib/be

LIBDIR=./../lib/32b/gnu

TRECKINCDIR=$(BASEDIR)/src/treck/include
TRECKSOURCEDIR=$(BASEDIR)/src/treck/source
TRECKOSSUPPORTDIR_NETOS=$(BASEDIR)/src/treck/source/ossupport/netos
TRECKOSSUPPORTDIR=$(BASEDIR)/src/treck/source/ossupport
TRECKSRCDIR=$(BASEDIR)/lib/tcpip/treck/source

#
# Search path for source header files, specific to this library
#

INCDIRS = -I$(TRECKINCDIR)

INCDIRS += -I$(TRECKSOURCEDIR)
INCDIRS += -I$(TRECKOSSUPPORTDIR_NETOS)
INCDIRS += -I$(TRECKOSSUPPORTDIR)


# search path for source header file
INC= -I./../h -I./../h/tcpip $(INCDIRS)


PREFIX=$(GNU_PATH)
CC= $(PREFIX)/gcc
LD= $(PREFIX)/ld
AR= $(PREFIX)/ar
AS= $(PREFIX)/as
NM= $(PREFIX)/nm
RANLIBX= $(PREFIX)/ranlib
STRIP= $(PREFIX)/strip
OBJCOPY= $(GNU_UTILITY_PATH)/arm-elf-objcopy
CP= cp

# Root directory for netos.
BASEDIR=..

# base compiler options

# Need to look at the platform here.....
BASECFLAG=-mbig-endian $(CPU_FLAG) 

# defines/undefines
DEF= -D__GNU__ -DNETOS_GNU_TOOLS -DNET_OS -DNET_WORKS -DHAVE_RENAME

DEBUG_FLAG=-g -O0

# final C compiler options
CCFLAGS=$(DEBUG_FLAG) $(BASECFLAG) $(DEF) $(INC)

# Search path for C files.
vpath %.c . 
vpath %.S . 

DEPEND=depend.mk
LIBC=libc.a
OBJECTS=syscalls.o mlock.o tzset_r.o mktm_r.o mktime.o setenv_r.o tzlock.o rename.o $(LIBDIR)/crt0.o timefn.o
LIBCOBJECTS=syscalls.o mlock.o tzset_r.o mktm_r.o mktime.o setenv_r.o tzlock.o rename.o timefn.o
LIBCOBJECTS_1_5=lib_a-syscalls.o lib_a-mlock.o lib_a-tzset_r.o lib_a-mktm_r.o lib_a-mktime.o lib_a-setenv_r.o lib_a-tzlock.o lib_a-rename.o lib_a-timefn.o lib_a-tzvars.o
CFILES=syscalls.c mlock.c tzset_r.c mktm_r.c mktime.c setenv_r.c tzlock.c rename.c timefn.c

%.o: %.c
	echo CPU_FLAG=$(CPU_FLAG)
	$(CC) -c $(INC) $(CCFLAGS) $< -o $@

# crt0.o resides in the lib directory
$(LIBDIR)/%.o: %.S
	$(CC) -c $(CCFLAGS) $< -o $@

# goal(s)
all: $(LIBC)
	

# Copy a libc from cygwin and update the objects we touch
$(LIBC): $(OBJECTS)
	echo "Copying libc.a from cygwin"
	CP $(GNU_LIBPATH)/$(LIBC) $(LIBDIR)/$(LIBC)
	$(AR) -d $(LIBDIR)/$(LIBC) $(LIBCOBJECTS_1_5)
	$(AR) -r $(LIBDIR)/$(LIBC) $(LIBCOBJECTS)

# generate dependencies
$(DEPEND): $(CFILES) Makefile
	$(CC) $(INC) $(CCFLAGS) -M $(CFILES) > $(DEPEND)

# clean up
clean:
	rm -f $(OBJECTS) $(DEPEND)
	rm -f $(LIBDIR)/crt0.o

#This is called to clean things up.
localclean: clean

component_clobber:
	echo "No library associated with this Makefile" 

# header dep.
-include $(DEPEND)

