#
#		Makefile to generate a Tango DataBase device server
#

TANGO_BASE = /segfs/tango/tmp/tango2
MYSQL_BASE = /usr
TACO_BASE  = $(DSHOME)

ifdef solaris
CC = c++
BIN_DIR = solaris
ORBACUS_BASE = /segfs/tango/ORB/ORBacus/solaris_gcc
JTC_BASE = /segfs/tango/JTC/solaris_gcc
TANGO_LIB = $(TANGO_BASE)/lib/solaris7
MYSQL_BASE = /segfs/tango/database/solaris7
#MYSQL_BASE = /users/goetz/tango/database/solaris
endif

ifdef linux
CC = c++
BIN_DIR = suse64
ORBACUS_BASE = /segfs/tango/ORB/ORBacus4.0.3/suse64
#ORBACUS_BASE = /segfs/tango/ORB/ORBacus/linux-6.4
JTC_BASE = /segfs/tango/JTC/linux-1.0.12
#JTC_BASE = /segfs/tango/JTC/linux-6.4
TANGO_LIB = $(TANGO_BASE)/lib/$(BIN_DIR)
#TANGO_LIB = $(TANGO_BASE)/lib/suse61
endif

ifdef hpux10
CC = aCC
BIN_DIR = hpux102
ORBACUS_BASE = /segfs/tango/ORB/ORBacus/hpux102
JTC_BASE = /segfs/tango/JTC/hpux102
TANGO_LIB = $(TANGO_BASE)/lib/hpux102
endif

INCLUDE_DIRS = -I $(TANGO_BASE)/include/$(BIN_DIR) \
               -I $(MYSQL_BASE)/include/mysql \
	       -I .


LIB_DIRS = -L $(MYSQL_BASE)/lib/mysql \
	   -L $(TANGO_LIB)

ifdef solaris
CFLAGS = $(INCLUDE_DIRS)
LFLAGS_SERVER = $(LIB_DIRS) -lOB -lJTC -lmysqlclient -ltango \
		-lposix4 -lsocket -lnsl -lpthread
LFLAGS_CLIENT = $(LIB_DIRS) -lOB -lJTC -ltango -lposix4 \
		-lsocket -lnsl -lpthread 
LFLAGS_TACO = -L$(TACO_BASE)/lib/solaris -ltacog++ 
#		-ldcapi -ldbapi -ldsxdr 
endif

ifdef linux
#CFLAGS = -O $(INCLUDE_DIRS) -DDEBUG
CFLAGS = -g $(INCLUDE_DIRS) -DDEBUG -D_REENTRANT
#LFLAGS_SERVER = $(LIB_DIRS) /segfs/tango/tmp/tango2/lib/suse64/libtango.a
LFLAGS_SERVER = $(LIB_DIRS) -ltango -lOB -lJTC -lmysqlclient -lpthread 
LFLAGS_CLIENT = -g $(LIB_DIRS) -lOB -lJTC -ltango  -lpthread 
LFLAGS_TACO = -L$(TACO_BASE)/lib/linux/x86 -ltacog++
#		-ldsapig++ -ldcapi -ldbapi -ldsxdr 
endif

ifdef hpux10
CFLAGS = $(INCLUDE_DIRS) -D_REENTRANT -D_CMA_NOWRAPPERS -DDEBUG \
	-g -Dunix +W302,749 -D_HPUX_SOURCE -D_XOPEN_SOURCE_EXTENDED
LFLAGS_SERVER = -Wl,-a,archive -O $(LIB_DIRS) -lOB -lJTC -lmysqlclient -ltango
LFLAGS_CLIENT = -O $(LIB_DIRS) -lOB -lJTC -ltango -lcma
#LFLAGS_TACO = -L$(TACO_BASE)/lib/hpux102 -Wl,-a,archive -ltaco++ 
LFLAGS_TACO = -L$(TACO_BASE)/lib/hpux10.2 -ltaco++
endif

CFLAGS_TACO = -I$(TACO_BASE)/include -I$(TACO_BASE)/include++ \
	-I$(TACO_BASE)/include/private

all: DataBaseds db_client

DataBaseds: main.o DataBaseClass.o DataBase.o ClassFactory.o
	$(CC) main.o DataBaseClass.o DataBase.o \
	ClassFactory.o $(LFLAGS_SERVER) \
	-o DataBaseds
			
DataBaseClass.o: DataBaseClass.cpp
	$(CC) DataBaseClass.cpp $(CFLAGS) -c -o DataBaseClass.o
	
DataBase.o: DataBase.cpp
	$(CC) DataBase.cpp $(CFLAGS) -c -o DataBase.o
	
main.o: main.cpp
	$(CC) main.cpp $(CFLAGS) -c -o main.o
	
ClassFactory.o: ClassFactory.cpp
	$(CC) ClassFactory.cpp $(CFLAGS) -c -o ClassFactory.o
	
db_client: db_client.o 
	$(CC) db_client.o $(LFLAGS_CLIENT) -o db_client 

db_client.o: db_client.cpp
	$(CC) db_client.cpp $(CFLAGS) -c -o db_client.o

db_ping: db_ping.o 
	$(CC) db_ping.o $(LFLAGS_CLIENT) -o db_ping 

db_ping.o: db_ping.cpp
	$(CC) db_ping.cpp $(CFLAGS) -c -o db_ping.o

taco_tango: taco_tango.o 
	$(CC) taco_tango.o $(LFLAGS_TACO) $(LFLAGS_CLIENT)  \
	-o taco_tango
#	$(CC) taco_tango.o $(LFLAGS_TACO) 

ct_client: ct_client.o 
	$(CC) ct_client.o $(LFLAGS_CLIENT) \
	$(LFLAGS_TACO) $(LFLAGS_TACO) -o ct_client

tango_fluids: tango_fluids.o 
	$(CC) tango_fluids.o $(LFLAGS_TACO) $(LFLAGS_CLIENT) \
	-o tango_fluids

taco_tango.o: taco_tango.cpp
	$(CC) taco_tango.cpp $(CFLAGS) $(CFLAGS_TACO) -c

ct_client.o: ct_client.cpp
	$(CC) ct_client.cpp $(CFLAGS) $(CFLAGS_TACO) -c

tango_fluids.o: tango_fluids.cpp
	$(CC) tango_fluids.cpp $(CFLAGS) $(CFLAGS_TACO) -c

clean:
	rm -f *.o core

clobber: clean
	rm -f DataBaseds
	rm -f db_client
	rm -f db_ping
	rm -f taco_tango
#
# source code version control (RCS)
#
RCSLOCK  =      co -l 
#               RCS check out options
RCSCO    =      co 
#               RCS check in options
RCSCI    =      ci -u -f -s"Rel" -m"$(LOCKMSG)"
#               RCS unlock options
RCSUNLOCK  =    rcs 
#               RCS diff options
RCSDIFF    =    rcsdiff 


DBASE_SRC = main.cpp \
	  DataBaseClass.cpp \
	  DataBase.cpp \
	  ClassFactory.cpp \
	  db_client.cpp
	  
DBASE_INCL = DataBaseClass.h \
	     DataBase.h
	  
lock:
		$(RCSLOCK) $(DBASE_SRC)
		$(RCSLOCK) $(DBASE_INCL)

co:
		$(RCSCO) $(DBASE_SRC)
		$(RCSCO) $(DBASE_INCL)

ci:
		$(RCSCI) $(DBASE_SRC)
		$(RCSCI) $(DBASE_INCL)

unlock:
		$(RCSUNLOCK) $(DBASE_SRC)
		$(RCSUNLOCK) $(DBASE_INCL)

diff:
		$(RCSDIFF) $(DBASE_SRC)
		$(RCSDIFF) $(DBASE_INCL)
