ACE_DIR = $(ACE_ROOT)
TAO_DIR = $(ACE_DIR)/TAO/
TAO_IDL = $(TAO_DIR)/TAO_IDL
ACE_INCLUDE = -I$(ACE_DIR)/
TAO_INCLUDE = -I$(TAO_DIR) -I$(TAO_DIR)/orbsvcs
TAO_LIB = $(TAO_DIR)/libs
TAO_DEFINES = -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -D_REENTRANT -DACE_HAS_AIO_CALLS -DACE_HAS_EXCEPTIONS
TAO_LIBRARIES = \
	-L$(ACE_DIR)/ace \
	-L$(TAO_DIR)/tao \
	-lTAO_PortableServer$(ACE_DEBUG) \
	-LTAO$(ACE_DEBUG) \
	-lTAO_CosNaming$(ACE_DEBUG) \
	-lACE$(ACE_DEBUG) \
	-ldl \
	-lpthread \
	-lrt

all: TimeClientTAO TimeServerTAO TimeClient2TAO TimeServer2TAO TimeClient3TAO TimeServer3TAO

TimeClientTAO: TimeC.o TimeClient.o
	g++ -g -o TimeClientTAO TimeClient.o TimeC.o $(TAO_LIBRARIES) -ldl

TimeServerTAO: TimeC.o TimeS.o TimeS_T.o TimeServer.o
	g++ -g -o TimeServerTAO TimeServer.o TimeC.o TimeS.o TimeS_T.o $(TAO_LIBRARIES)

TimeClient2TAO: TimeC.o TimeClient2.o
	g++ -g -o TimeClient2TAO TimeClient2.o TimeC.o $(TAO_LIBRARIES)

TimeServer2TAO: TimeC.o TimeS.o TimeS_T.o TimeServer2.o
	g++ -g -o TimeServer2TAO TimeServer2.o TimeC.o TimeS.o TimeS_T.o $(TAO_LIBRARIES)

TimeClient3TAO: TimeC.o TimeClient3.o MulticastSocket.o
	g++ -g -o TimeClient3TAO TimeClient3.o MulticastSocket.o TimeC.o $(TAO_LIBRARIES)

TimeServer3TAO: TimeC.o TimeS.o TimeS_T.o TimeServer3.o MulticastSocket.o
	g++ -g -o TimeServer3TAO TimeServer3.o MulticastSocket.o TimeC.o TimeS.o TimeS_T.o $(TAO_LIBRARIES)

TimeC.cpp: ../../Time.idl
	$(TAO_IDL)/tao_idl ../../Time.idl

TimeC.o: TimeC.cpp TimeC.h
	g++ -c -g $(TAO_DEFINES) $(ACE_INCLUDE) $(TAO_INCLUDE) TimeC.cpp

TimeS.o: TimeS.cpp TimeS.h
	g++ -c -g $(TAO_DEFINES) $(ACE_INCLUDE) $(TAO_INCLUDE) TimeS.cpp

TimeS_T.o: TimeS_T.cpp TimeS_T.h
	g++ -c -g $(TAO_DEFINES) $(ACE_INCLUDE) $(TAO_INCLUDE) TimeS_T.cpp

TimeClient.o: ../TimeClient.cpp
	g++ -c -g $(TAO_DEFINES) $(ACE_INCLUDE) $(TAO_INCLUDE) -DEYT_TAO ../TimeClient.cpp

TimeServer.o: ../TimeServer.cpp
	g++ -c -g $(TAO_DEFINES) $(ACE_INCLUDE) $(TAO_INCLUDE) -DEYT_TAO ../TimeServer.cpp

TimeClient2.o: ../TimeClient2.cpp
	g++ -c -g $(TAO_DEFINES) $(ACE_INCLUDE) $(TAO_INCLUDE) -DEYT_TAO ../TimeClient2.cpp

TimeServer2.o: ../TimeServer2.cpp
	g++ -c -g $(TAO_DEFINES) $(ACE_INCLUDE) $(TAO_INCLUDE) -DEYT_TAO ../TimeServer2.cpp

TimeClient3.o: ../TimeClient3.cpp
	g++ -c -g $(TAO_DEFINES) $(ACE_INCLUDE) $(TAO_INCLUDE) -DEYT_TAO ../TimeClient3.cpp

TimeServer3.o: ../TimeServer3.cpp
	g++ -c -g $(TAO_DEFINES) $(ACE_INCLUDE) $(TAO_INCLUDE) -DEYT_TAO ../TimeServer3.cpp

MulticastSocket.o: ../MulticastSocket.cpp
	g++ -c -g $(TAO_DEFINES) $(ACE_INCLUDE) $(TAO_INCLUDE) -DEYT_TAO ../MulticastSocket.cpp

clean:
	rm *.o TimeClientTAO TimeServerTAO TimeS.h TimeS.cpp TimeS.i TimeC.cpp TimeC.h TimeC.i TimeS_T.cpp TimeS_T.h TimeS_T.i TimeClient2TAO TimeServer2TAO TimeClient3TAO TimeServer3TAO
