.SUFFIXES: .cxx .c .o
.PRECIOUS: clean clobber

#  p l a t f o r m   s p e c i f i c s

#  - -  d e f a u l t s  - -

LD		= ld
CC		= gcc
CXX		= g++
RM 		= rm -f
ABIISA		= $(NULL)
WARNOPTS	= -Wall
OPTIMIZER	= -g
TIMEPATH	= ../../util/timer/
JUNK		= $(NULL)

#  - -  I R I X  - - 
ifeq "$(shell uname -s | cut -b1,2,3,4)" "IRIX"
CC		= cc
CXX		= CC
WARNOPTS	= -fullwarn
ABIISA		= -n32 -mips4
JUNK		+= ii_files so_locations
endif

#  - -  W I N D O W S  - - 
ifeq "$(shell uname -s | cut -b1-6)" "CYGWIN"
endif

#  - -  L i n u x  - - 
ifeq "$(shell uname -s)" "Linux"
endif

#   c o m p i l e   d e f s / o p t s

CPPFLAGS	= \
		$(NULL)

CCFLAGS		= \
		-I./ \
		-I$(TIMEPATH) \
		$(WARNOPTS) \
		$(OPTIMIZER) \
		$(ABIISA) \
		$(NULL)

LDOPTS		= \
		-L$(TIMEPATH) \
		$(ABIISA) \
		$(NULL)

LDLIBS		= \
		-ltimeit \
		-lc \
		$(NULL)

LIBOBJECTS = \
	$(NULL)

OBJECTS = \
	main.o \
	$(NULL)

TARGETS = \
	go.exe \
	$(NULL)

#   r u l e s

default: $(TARGETS)

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

%.o : %.cxx
	$(CXX) -c $(CCFLAGS) $(CPPFLAGS) $< -o $@

go.exe: $(OBJECTS)
	$(CXX) $(LDOPTS) $(OBJECTS) $(LDLIBS) -o $@

libwhatever.so: $(LIBOBJECTS)
	$(LD) -shared -all $(LDOPTS) $(LIBOBJECTS) -o $@

clean:
	$(RM) -r $(OBJECTS) $(LIBOBJECTS) $(JUNK)

clobber: clean
	$(RM) $(TARGETS)
	$(RM) core
