#*********************************************************************
#
# File:          Makefile
#
# Project:       Device Servers in C++
#
# Description:   GNU Makefile for the Fitem class implemented in C++
#
# Author(s):     Andy Gotz
#
# Original:	 August 2001
#
#
# $Revision: 1.1 $
# $Date: 2001/01/30 13:48:46 $
#
# $Author: goetz $
#
# $Log: Makefile,v $
# Revision 1.1  2001/01/30 13:48:46  goetz
# Initial revision
#
#
# README :	To use this Fitem GNU Makefile use your favourite editor
#		to replace all occurrences of "Fitem" and "Fitem" 
#		with the name of you device class (e.g. "MyClass").
#		Then call GNU make (gmake) with the appropiate flags
#		defined depending on your system e.g. gmake unix=1 linux=1.
#		The following flags are used in this Makefile :
#
#			unix 		- for Unix (i.e. HPUX, Solaris, Linux)
#			__hpux		- for HPUX
#			_hp9000s700 	- for HPUX on HP9000/700
#			_UCC		- for OS9 Ultra-C++
#			_solaris	- for Solaris
#			linux		- for Linux
# 
# Copyright (c) 1997 by European Synchrotron Radiation Facility,
#                       Grenoble, France
#
#                       All Rights Reserved
#
#**********************************************************************

#---------------------------------------------------------------------
# Home Directories
#
#
#       The variables DSHOME is passed to the Makefile
#       as input arguments or via the environment.
#
# external variable DSHOME
DS_HOME   =   	$(DSHOME)
LOHOME    =	`pwd`


ifdef linux
CXX	=	g++
CC	=	cc
endif # unix

#               ... and his Flags
#
#                Includes
#

INCLDIRS=       -I../include \
		-I$(DS_HOME)/include \
		-I$(DS_HOME)/include++ \
		-I$(DS_HOME)/include/private

#                       Libraries
#               No link phase - ergo no libraries to include

NAME    =       -o

#                       ANSI standard
ifdef linux
#CFLAGS	=	-g -Dunix -D__STDC__ -c -DDEBUG -DREENTRANT
CFLAGS	=	-g -Dunix -D__STDC__ -c -DREENTRANT
endif # linux

ifdef solaris
CFLAGS	=	-g -Dunix -D__STDC__ -c -DDEBUG 
endif # solaris

CXXFLAGS =	$(CFLAGS) $(INCLDIRS)


ifdef linux
LIBS	=	-ldsapig++ -ldbapi -ldsxdr -lm -lpthread -lsps
#LFLAGS	=	-static -L$(DSHOME)/lib/linux/x86 
LFLAGS	=	-L$(DSHOME)/lib/linux/x86 \
		-L/segfs/bliss/source/spec_utils/sps/linux
endif # linux

ifdef solaris
LIBS	=	-ldsclass -ldsapig++ -ldbapi -ldsxdr -lm -lnsl -lsocket \
		-lposix4
LFLAGS	=	-L$(DSHOME)/lib/solaris
endif # solaris

ifdef linux
INSTALL_HOME =	$(DSHOME)/lib/linux/x86
endif # linux

#---------------------------------------------------------------------
# RCS options
#
#               RCS lock options
RCSLOCK  =      co -l -r$(VERSION)
#               RCS check out options
RCSCO    =      co -r$(VERSION)
#               RCS check in options
RCSCI    =      ci -u -f -s"Rel" -r$(VERSION) -m"$(LOCKMSG)"


#---------------------------------------------------------------------
# All files needed for the library
#
#	File list for RCS control
#               all include files
CLASS_INCL =	Fitem.h

#               source files
CLASS_SRC =	Fitem.cpp \
		startup.cpp

#--------------------------------------------------------------------
# What has to be made
#
#               Names of the include files in the 
#		installation directories
#
INCL_INST  = 	../include/Fitem.h

SERVER = Fitemds

CLIENT = Fitem_menu

LIBNAME	=	libdsclassg++.a

#---------------------------------------------------------------------
# Build server
#

all:	$(SERVER)

$(SERVER) : 	startup.o Fitem.o ../include/Fitem.h
	$(CXX) startup.o Fitem.o $(LFLAGS) $(LIBS) -o $(SERVER)

startup.o : startup.cpp ../include/Fitem.h
	$(CXX) $(CXXFLAGS) startup.cpp

Fitem.o : Fitem.cpp ../include/Fitem.h
	$(CXX) $(CXXFLAGS) Fitem.cpp

impac_log.o : impac_log.cpp ../include/Fitem.h
	$(CXX) $(CXXFLAGS) impac_log.cpp

impac_log : 	impac_log.o 
	$(CXX) impac_log.o $(LFLAGS) $(LIBS) -o impac_log

#---------------------------------------------------------------------
# Build client
#

$(CLIENT) : 	Fitem_menu.o
	$(CXX) Fitem_menu.o $(LFLAGS) $(LIBS) -o $(CLIENT)

Fitem_menu.o : Fitem_menu.C
	$(CXX) $(CXXFLAGS) Fitem_menu.C

#---------------------------------------------------------------------
# Build library
#

$(LIBNAME): Fitem.o
	cp $(INSTALL_HOME)/$(LIBNAME) .
	ar rv $(LIBNAME) Fitem.o

install : $(LIBNAME)
	cp -f ../include/Fitem.h $(DSHOME)/include++
	chmod 664 $(DSHOME)/include++/Fitem.h
	cp $(LIBNAME) $(INSTALL_HOME)

clean :
		rm -rf Fitem.o startup.o


clobber:	clean
		rm -rf	$(LIBNAME)


lock:
		$(RCSLOCK) $(CLASS_SRC)
		cd ../include; $(RCSLOCK) $(CLASS_INCL)
		cd $(LOHOME)

co:
		$(RCSCO) $(CLASS_SRC)
		cd ../include; $(RCSCO) $(CLASS_INCL)
		cd $(LOHOME)

ci:
		$(RCSCI) $(CLASS_SRC)
		cd ../include; $(RCSCI) $(CLASS_INCL)
		cd $(LOHOME)
	

