#
# Makfile for CRAM under Linux
#	stp@create.ucsb.edu -- August 2003
#

OBJECTS = Program.o ProgramUtils.o Server.o Node.o NodeUtils.o Options.o Logger.o

CSR = ../Source/

HEADERS = ../Doc/CRAM.idl ${CSR}CRAM.h ${CSR}Program.h ${CSR}Server.h ${CSR}Node.h \
	${CSR}Logger.h ${CSR}Options.h ${CSR}ClockService.h 

SOURCES = ${CSR}Program.cpp ${CSR}ProgramUtils.cpp ${CSR}Server.cpp \
	${CSR}Node.cpp ${CSR}NodeUtils.cpp \
	${CSR}Logger.cpp ${CSR}Options.cpp \
	${CSR}Node_main.cpp ${CSR}ClockService.cpp

CFLAGS = -O -I../Source 

LIBS = -L. -lCRAM -lstdc++

all: Library NodeManager ClockService NodeTest

# Library

Library: $(OBJECTS)
	ar -cr libCRAM.a $(OBJECTS)
	ranlib libCRAM.a

# Node manager target

NodeManager: $(OBJECTS) Node_main.o
	cc -o NodeManager Node_main.o $(LIBS)

# Clock server example

ClockService: $(OBJECTS) ClockService.o
	cc -o ClockService ClockService.o $(LIBS)

# Node Tester example

NodeTest: $(OBJECTS) NodeTest.o
	cc -o NodeTest NodeTest.o $(LIBS)

clean:
	rm -f $(OBJECTS) libCRAM.a NodeManager ClockService NodeTest NodeTest.o \
		Node_main.o ClockService.o

# Print all

cat:
	cat $(HEADERS) > CRAM_headers.txt
	cat $(SOURCES) > CRAM_source.txt

# Objects

Program.o:	${CSR}Program.cpp
	gcc -c $(CFLAGS) ${CSR}Program.cpp

ProgramUtils.o:	${CSR}ProgramUtils.cpp
	gcc -c $(CFLAGS) ${CSR}ProgramUtils.cpp

Server.o:	${CSR}Server.cpp
	gcc -c $(CFLAGS) ${CSR}Server.cpp

Node.o: 	${CSR}Node.cpp
	gcc -c $(CFLAGS) ${CSR}Node.cpp

NodeUtils.o: 	${CSR}NodeUtils.cpp
	gcc -c $(CFLAGS) ${CSR}NodeUtils.cpp

Logger.o: 	${CSR}Logger.cpp
	gcc -c $(CFLAGS) ${CSR}Logger.cpp

Options.o: 	${CSR}Options.cpp
	gcc -c $(CFLAGS) ${CSR}Options.cpp

Node_main.o: 	${CSR}Node_main.cpp
	gcc -c $(CFLAGS) ${CSR}Node_main.cpp

NodeTest.o: 	${CSR}NodeTest.cpp
	gcc -c $(CFLAGS) ${CSR}NodeTest.cpp

ClockService.o: 	${CSR}ClockService.cpp
	gcc -c $(CFLAGS) ${CSR}ClockService.cpp

