
CC = g++
CFLAGS = -g -Wall #-O
BIN = viewer 

MACHTYPE = $(shell uname -s)

# must compile in SunOS 5.6 or lower, otherwise hertz will complain
# about pthread (federation, qos)
# if compiled in forrest, ccms, hocus, maraca complain about librt.so.1
ifeq (${MACHTYPE}, SunOS)
DFLAGS = -DSOLARIS
BINDIR = ../bin/SunOS
LIBS += -lposix4 -lnsl -lsocket -lpthread
# CFLAGS += -static
endif

ifeq (${MACHTYPE}, Linux)
DFLAGS = -DLINUX
BINDIR = ../bin/Linux
# otherwise voodoo complains about socket calls
#CFLAGS += -static
LIBS += -lpthread 
endif

ifeq (${MACHTYPE}, FreeBSD)
DFLAGS = -DFreeBSD
BINDIR = ../bin/FreeBSD
# otherwise voodoo complains about socket calls
#CFLAGS += -static
LIBS += -pthread 
endif


all: mkdir Util TimeSyn AddrMap VRTable SpanningTreeTableEntry SpanningTreeTable Parser Network BufferQueue TransmissionTable Viewer
	$(CC) $(CFLAGS) $(DFLAGS) -o $(BINDIR)/$(BIN) Viewer.o Parser.o Network.o TimeSyn.o AddrMap.o VRTable.o SpanningTreeTable.o SpanningTreeTableEntry.o Util.o BufferQueue.o TransmissionTable.o $(LIBS) 

Viewer: BufferQueue.h TransmissionTable.h Parser.h Network.h TimeSyn.h Util.h Viewer.cc
	$(CC) $(CFLAGS) $(DFLAGS) -c Viewer.cc

Parser: BufferQueue.h Network.h AddrMap.h VRTable.h Parser.h Parser.cc
	$(CC) $(CFLAGS) $(DFLAGS) -c Parser.cc

Network: Network.h Network.cc
	$(CC) $(CFLAGS) $(DFLAGS) -c Network.cc

TimeSyn: TimeSyn.h TimeSyn.cc
	$(CC) $(CFLAGS) $(DFLAGS) -c TimeSyn.cc

AddrMap: AddrMap.h AddrMap.cc
	$(CC) $(CFLAGS) $(DFLAGS) -c AddrMap.cc

VRTable: VRTable.h VRTable.cc
	$(CC) $(CFLAGS) $(DFLAGS) -c VRTable.cc

SpanningTreeTableEntry: SpanningTreeTableEntry.h SpanningTreeTableEntry.cc
	$(CC) $(CFLAGS) $(DFLAGS) -c SpanningTreeTableEntry.cc

SpanningTreeTable: SpanningTreeTable.h SpanningTreeTable.cc
	$(CC) $(CFLAGS) $(DFLAGS) -c SpanningTreeTable.cc

Util: Util.h Util.cc
	$(CC) $(CFLAGS) $(DFLAGS) -c Util.cc

TransmissionTable: TransmissionTable.h TransmissionTable.cc
	$(CC) $(CFLAGS) $(DFLAGS) -c TransmissionTable.cc

BufferQueue: BufferQueue.h BufferQueue.cc Packet.h
	$(CC) $(CFLAGS) $(DFLAGS) -c BufferQueue.cc

clean:
	/bin/rm -rf *.o $(BINDIR)/$(BIN) 

mkdir:
	mkdir -p ../bin/SunOS ../bin/Linux
