#-----------------------------------------------------------------------------
#  Copyright (c) 1991,1992 Southeastern Universities Research Association,
#                          Continuous Electron Beam Accelerator Facility
# 
#  This software was developed under a United States Government license
#  described in the NOTICE file included as part of this distribution.
# 
#  CEBAF Data Acquisition Group, 12000 Jefferson Ave., Newport News, VA 23606
#  Email: coda@cebaf.gov  Tel: (804) 249-7101  Fax: (804) 249-7363
# -----------------------------------------------------------------------------
#  
#  Description:  Makefile for CAMAC RPC libraries and Server
# 	
# 	
#  Author:  David Abbott, TJANF Data Acquisition Group
# 
#  Revision History:
#    $Log: Makefile,v $
#    Revision 1.5  2003/12/24 14:49:52  abbottd
#    changes for new PPC compiler
#
#    Revision 1.4  2000/01/21 19:28:13  abbottd
#    Added Camac library compile/install back for VXWORKS
#
#    Revision 1.3  1999/03/04 16:13:04  abbottd
#    Changed Makefile to compile for all supported Architectures
#
#    Revision 1.1  1998/04/15 13:57:11  abbottd
#    Initial Revision
#
#

ifndef OSTYPE
  OSTYPE := $(subst -,_,$(shell uname))
endif

ifeq ($(OSTYPE),HP_UX)
LIBS = 
EXTRA = -D_HPUX_SOURCE -Dhpux
endif

ifeq ($(OSTYPE),SunOS)
LIBS = -lrpcsvc -lnsl
EXTRA =
endif

ifeq ($(OSTYPE),Linux)
LIBS = -lrpcsvc
EXTRA = -DLinux
endif

ifndef ARCH
  ARCH=$(OSTYPE)
endif

ifeq ($(ARCH),VXWORKS68K51)

VXWORKS_ROOT = $(WIND_BASE)/target

  DEFS   = -m68020 -DCPU=MC68020 -DVXWORKS -DVXWORKS68K51 -O -fvolatile -fstrength-reduce -nostdinc
  INCS   = -I$(VXWORKS_ROOT)/h -I$(VXWORKS_ROOT)/h/rpc -I$(VXWORKS_ROOT)/h/net

  lib_targets      = libcamac.o libvcc2117.o
  bin_targets      = caSrvr
  include_targets  = ca.h
  
  CC     = cc68k $(INCS) $(DEFS)
  LD     = ld68k
  RPCGEN = rpcgen

  sources = caRpc_svc.c caRpc_xdr.c caSrvrLib.c

# explicit targets

all: clean caSrvr $(lib_targets)

install: 
	@echo "installing caSrvr"
	cp caSrvr $(CODA)/VXWORKS68K51/bin/caSrvr
	cp libcamac.o $(CODA)/VXWORKS68K51/lib/libcamac.o
	cp libvcc2117.o $(CODA)/VXWOR68K51/lib/libvcc2117.o

clean:
	rm -f caRpc_svc.o caRpc_xdr.o caSrvrLib.o caSrvr libcamac.o libvcc2117.o

caSrvr: caRpc_svc.o caRpc_xdr.o caSrvrLib.o
	$(LD) -o $@ -r caRpc_svc.o caRpc_xdr.o caSrvrLib.o
	cp caSrvr caSrvr_68k
	rm -f caRpc_xdr.o

libcamac.o: libcamac.c ks2917.h
	$(CC) -c -O -o $@ libcamac.c

libvcc2117.o: libvcc2117.c z8536.h
	$(CC) -c -O -o $@ libvcc2117.c

endif


ifeq ($(ARCH),VXWORKSPPC)

VXWORKS_ROOT = $(WIND_BASE)/target

  DEFS   = -mcpu=604 -DCPU=PPC604 -DVXWORKS -D_GNU_TOOL -mlongcall -fno-for-scope -fno-builtin -fvolatile -DVXWORKSPPC
  INCS   = -I$(VXWORKS_ROOT)/h -I$(VXWORKS_ROOT)/h/rpc -I$(VXWORKS_ROOT)/h/net

  lib_targets      = libcamac.o
  bin_targets      = caSrvr
  include_targets  = ca.h
  
  CC     = ccppc $(INCS) $(DEFS)
  LD     = ldppc
  RPCGEN = rpcgen

  sources = caRpc_svc.c caRpc_xdr.c caSrvrLib.c

# explicit targets

all: clean caSrvr $(lib_targets)

install: 
	@echo "installing caSrvr"
	cp caSrvr $(CODA)/VXWORKSPPC/bin/caSrvr
	cp libcamac.o $(CODA)/VXWORKSPPC/lib/libcamac.o

clean:
	rm -f caRpc_svc.o caRpc_xdr.o caSrvrLib.o caSrvr libcamac.o

caSrvr: caRpc_svc.o caRpc_xdr.o caSrvrLib.o
	$(LD) -o $@ -r caRpc_svc.o caRpc_xdr.o caSrvrLib.o
	cp caSrvr caSrvr_ppc
	rm -f caRpc_xdr.o

libcamac.o: libcamac.c ks2917.h
	$(CC) -c -O -o $@ libcamac.c

endif


ifeq ($(ARCH),SunOS)

  DEFS   =
  INCS   =

  lib_targets      = libca.a
  bin_targets      = cnaf
  include_targets  = ca.h
  
  CC     = cc
  CCOPTS = -O
  LD     = ld
  RPCGEN = rpcgen -b

  sources = cnaf.c caRpc_clnt.c caRpc_xdr.c caSrvrLib.c

# explicit targets

all: clean libca.a cnaf

install:
	@echo "installing libca.a, ca.h, and cnaf"
	cp libca.a $(CODA_LIB)/libca.a
	cp ca.h $(CODA)/common/include/ca.h
	cp cnaf $(CODA_BIN)/cnaf

libca.a: caRpc.h caRpc_clnt.o caClientLib.o caRpc_xdr.o
	rm -f $@
	ar cr $@ caClientLib.o caRpc_clnt.o caRpc_xdr.o
	rm -f caRpc_xdr.o
	ranlib $@

cnaf: cnaf.c libca.a
	$(CC) $(CCOPTS) -o $@ cnaf.c -L. -lca $(LIBS)

clean:
	rm -f  caRpc_clnt.o caRpc_xdr.o caClientLib.o cnaf.o cnaf libca.a

endif

ifeq ($(ARCH),Linux)

  DEFS   =
  INCS   =

  lib_targets      = libca.a
  bin_targets      = cnaf
  include_targets  = ca.h
  
  CC     = gcc
  CCOPTS = -O
  LD     = ld
  RPCGEN = rpcgen

  sources = cnaf.c caRpc_clnt.c caRpc_xdr.c caSrvrLib.c

# explicit targets

all: clean libca.a cnaf

install:
	@echo "installing libca.a, ca.h, and cnaf"
	cp libca.a $(CODA_LIB)/libca.a
	cp ca.h $(CODA)/common/include/ca.h
	cp cnaf $(CODA_BIN)/cnaf

libca.a: caRpc.h caRpc_clnt.o caClientLib.o caRpc_xdr.o
	rm -f $@
	ar cr $@ caClientLib.o caRpc_clnt.o caRpc_xdr.o
	rm -f caRpc_xdr.o
	ranlib $@

cnaf: cnaf.c libca.a
	$(CC) $(CCOPTS) -o $@ cnaf.c -L. -lca $(LIBS)

clean:
	rm -f  caRpc_clnt.o caRpc_xdr.o caClientLib.o cnaf.o cnaf libca.a

endif



caRpc_xdr.o: caRpc_xdr.c
	$(CC) -c $(CCOPTS) caRpc_xdr.c

caRpc_svc.c: caRpc.x
	$(RPCGEN) -o caRpc_svc1.c -s tcp caRpc.x
	awk -f modify_server_code.awk caRpc_svc1.c > $@

caRpc_xdr.c: caRpc.x
	$(RPCGEN) -o $@ -c caRpc.x

caRpc_clnt.c: caRpc.x
	$(RPCGEN) -o $@ -l caRpc.x

caRpc.h: caRpc.x
	$(RPCGEN) -o $@ -h caRpc.x

cleanall:
	rm -f *.o *~ cnaf libca.a caSrvr caRpc.h caRpc_clnt.c caRpc_xdr.c  caRpc_svc.c








