#=============================================================================
#
# file :        Makefile
#
# description : Include for the TemplateDevServ class.
#
# project :     Makefile to generate a Tango server
#
# $Author:  $
#
# $Revision: $
#
#
# copyleft :    European Synchrotron Radiation Facility
#               BP 220, Grenoble 38043
#               FRANCE
#
#=============================================================================
#  		This file is generated by POGO
#	(Program Obviously used to Generate tango Object)
#
#         (c) - Software Engineering Group - ESRF
#=============================================================================
#

CLASS      = TemplateDevServ
MAJOR_VERS = 1
MINOR_VERS = 0
RELEASE    = Release_$(MAJOR_VERS)_$(MINOR_VERS)

#-----------------------------------------
#	Set default home directories
#-----------------------------------------

TANGO_HOME   =  /segfs/tango/tmp/Reynald/install/debian7
CPP_SERVERS  =  $(TANGO_HOME)/cppserver

ifdef no_debug
	DEBUG = -O
else
	DEBUG = -g
endif

ifdef _solaris
CC = CC 

AR_SL = $(CC) -mt -G
VERS_OPT = -h
SL_EXT = so
endif

ifdef linux
CC = c++
CC_SHLIB = $(CC)  -fPIC
AR = ar

AR_SL = $(CC) -fPIC -shared 
SL_EXT = so
VERS_OPT = -Wl,-soname,
endif

INCLUDE_DIRS =  -I$(TANGO_HOME)/include/tango \
					 -I/segfs/tango/ORB/omniORB4.2.1_p1/debian7/include \
					 -I.	\
                -I$(CPP_SERVERS)/include

OBJS_DIR    = obj
LIB_DIRS    = -L $(TANGO_HOME)/lib \
				  -L /segfs/tango/ORB/omniORB4.2.1_p1/debian7/lib

TARGET_LIB = $(CPP_SERVERS)/lib/libtgclasses.a


#-----------------------------------------
#	Set  CXXFLAGS and LFLAGS
#-----------------------------------------
ifdef _solaris
CXXFLAGS =  $(DEBUG) -mt -D_PTHREADS $(INCLUDE_DIRS)
LFLAGS =  $(DEBUG) $(LIB_DIRS)  		\
				-ltango			\
				-llog4tango		\
				-lomniORB4 		\
				-lomniDynamic4	\
				-lomnithread	\
				-lCOS4			\
				-lpthread		\
				-lposix4 -lsocket -lnsl
endif

ifdef linux
CXXFLAGS =  $(DEBUG) -D_REENTRANT $(INCLUDE_DIRS)
LFLAGS =  $(DEBUG) $(LIB_DIRS)  		\
				-ltango			\
				-llog4tango		\
				-lomniORB4 		\
				-lomniDynamic4	\
				-lomnithread	\
				-lCOS4			\
				-ldl -lpthread
endif




#-----------------------------------------
#	Set  dependences
#-----------------------------------------

SVC_OBJS = $(OBJS_DIR)/main.o	\
		$(OBJS_DIR)/ClassFactory.o	\
		$(OBJS_DIR)/$(CLASS)Class.o	\
		$(OBJS_DIR)/$(CLASS)StateMachine.o	\
		$(OBJS_DIR)/$(CLASS).o

SHLIB_OBJS = $(OBJS_DIR)/$(CLASS)Class.so.o	\
		$(OBJS_DIR)/$(CLASS)StateMachine.so.o	\
		$(OBJS_DIR)/$(CLASS).so.o


SVC_INC = $(CLASS)Class.h \
		$(CLASS).h


$(OBJS_DIR)/%.o: %.cpp $(SVC_INC)
	$(CC) $(CXXFLAGS) -c $< -o $(OBJS_DIR)/$*.o
			
$(OBJS_DIR)/%.so.o: %.cpp $(SVC_INC)
	$(CC_SHLIB) $(CXXFLAGS) -c $< -o $(OBJS_DIR)/$*.so.o


#-----------------------------------------
#	 Make Entry
#-----------------------------------------
all: $(CLASS)
	
$(CLASS):	make_obj_dir make_bin_dir $(SVC_OBJS)
	$(CC) $(SVC_OBJS) -o $(CLASS) $(LFLAGS)
	@mv $(CLASS) bin/$(CLASS)

shlib:	make_obj_dir make_shlib_dir $(SHLIB_OBJS)
	$(AR_SL) -o \
		shlib/$(CLASS).$(SL_EXT).$(MAJOR_VERS).$(MINOR_VERS) \
		$(VERS_OPT)$(CLASS).$(SL_EXT).$(MAJOR_VERS) \
		$(SHLIB_OBJS) $(LFLAGS)
	@rm -f shlib/$(CLASS).$(SL_EXT)
	@cd  shlib; \
		ln -s $(CLASS).$(SL_EXT).$(MAJOR_VERS).$(MINOR_VERS) $(CLASS).$(SL_EXT)

clean:
	rm -f $(OBJS_DIR)/*.o  \
	$(OBJS_DIR)/*.so.o \
	bin/$(CLASS) \
	core

make_obj_dir:
	@mkdir -p obj

make_bin_dir:
	@mkdir -p bin

make_shlib_dir:
	@mkdir -p shlib
	
#-----------------------------------------
#	 Install binary file
#-----------------------------------------
install:
	cp bin/$(CLASS)  $(TANGO_HOME)/bin

#-----------------------------------------
#	 Update class library and header files
#	recompile without debug mode.
#-----------------------------------------
lib: clean
	@make no_debug=1
	cp *.h $(CPP_SERVERS)/include
	ar ruv $(TARGET_LIB) $(CLASS).o
	ar ruv $(TARGET_LIB) $(CLASS)Class.o
	ar ruv $(TARGET_LIB) $(CLASS)StateMachine.o
	ident  $(TARGET_LIB) | grep $(CLASS)

#----------------------------------------------------
#	Tag the CVS module corresponding to this class
#----------------------------------------------------
tag:
	@cvstag "$(CLASS)-$(RELEASE)"
	@make   $(CLASS)
	@make show_tag

show_tag:
	@cvstag -d 
