#
# $Id: Makefile.aimk,v 1.4 1999/03/11 20:19:33 pvmsrc Exp $
#
# Generic Makefile body to be concatenated to config header.
#
# Imports:
#  PVM_ARCH   = the official pvm-name of your processor
#  ARCHCFLAGS = special cc flags
#  ARCHLIB    = special libs needed for daemon
#  HASRANLIB  = 't' or 'f'
#
# Define:
#  NOSTRCASE       if libc doesn't have strcasecmp, strncasecmp
#  SYSVSIGNAL      for system5 signal handling
#  SYSVSTR         for strchr() instead of index()
#
SHELL		=	/bin/sh
PVMDIR		=	../..
SDIR		=	$(PVMDIR)/shmd
DOBJ		=	pvm_shmd.o block.o sem.o tidinfo.o
LOBJ		=	sendrecv.o block.o sem.o tidinfo.o lpvm.o
PVMIDIR		=	$(PVMDIR)/include
PVMSDIR		=	$(PVMDIR)/src
PVMSLDIR	=	$(PVM_ROOT)/src
PVMBDIR		=	$(PVMDIR)/bin
PVMXDIR		=	$(PVMBDIR)/$(PVM_ARCH)
PVMLDIR		=	$(PVMDIR)/lib/$(PVM_ARCH)
PVMLODIR	=	$(PVM_ROOT)/src/$(PVM_ARCH)
LPOBJ		= \
			$(PVMLODIR)/imalloc.o $(PVMLODIR)/tev.o $(PVMLODIR)/lpvmcat.o $(PVMLODIR)/lpvmgen.o \
			$(PVMLODIR)/lpvmpack.o $(PVMLODIR)/lpvmglob.o $(PVMLODIR)/pmsg.o $(PVMLODIR)/pvmalloc.o \
			$(PVMLODIR)/pvmcruft.o $(PVMLODIR)/pvmerr.o $(PVMLODIR)/pvmfrag.o $(PVMLODIR)/waitc.o \
			$(PVMLODIR)/pvmregex.o $(PVMLODIR)/regex.o $(PVMLODIR)/global.o $(PVMLODIR)/pvmdabuf.o 

PVMLIB		=	pvm3
LIBPREFIX	=	lib
PVMLIBDEP	=	$(PVMLDIR)/$(LIBPREFIX)$(PVMLIB).a
CFLOPTS	       +=	-DUSESTRERROR
CFLAGS		=	$(CFLOPTS) -I$(PVMIDIR) -I$(PVMSDIR) -DIMA_$(PVM_ARCH) \
				$(ARCHCFLAGS) -DSEM
LIBS		=	$(LOPT) -L$(PVMLDIR) -l$(PVMLIB) $(ARCHLIB)


DIRS		=	$(PVMXDIR) $(PVMLDIR)

PROGS		=	$(PVMXDIR)/pvm_shmd_stat$(EXESFX) \
				$(PVMXDIR)/pvm_shmd$(EXESFX) 

LPROGS		=	$(PVMLDIR)/pvm_shmd$(EXESFX)

LIBSHMDPVM	=	$(LIBPREFIX)pvm3shmd.a

install:	all

install-mpp:	all-mpp

all:	$(DIRS) $(PROGS) $(PVMLDIR)/$(LIBSHMDPVM) $(LPROGS)

all-mpp:	$(DIRS) $(PROGS) $(PVMLDIR)/$(LIBSHMDPVM)-mpp $(LPROGS)

$(PVMXDIR):
	- mkdir $(PVMBDIR)
	- mkdir $(PVMXDIR)

$(PVMLDIR):
	- mkdir $(PVMLDIR)

$(PVMXDIR)/pvm_shmd_stat$(EXESFX):  pvm_shmd_stat$(EXESFX)
	cp pvm_shmd_stat$(EXESFX) $(PVMXDIR)

$(PVMXDIR)/pvm_shmd$(EXESFX):  pvm_shmd$(EXESFX)
	cp pvm_shmd$(EXESFX) $(PVMXDIR)


$(PVMLDIR)/$(LIBSHMDPVM):  $(LIBSHMDPVM)
	cp $(LIBSHMDPVM) $(PVMLDIR)
	case x$(HASRANLIB) in xt ) echo ranlib; ranlib $(PVMLDIR)/$(LIBSHMDPVM) ;; esac

$(PVMLDIR)/$(LIBSHMDPVM)-mpp:  $(LIBSHMDPVM)-mpp
	cp $(LIBSHMDPVM) $(PVMLDIR)
	case x$(HASRANLIB) in xt ) echo ranlib; ranlib $(PVMLDIR)/$(LIBSHMDPVM) ;; esac
	touch $(PVMLDIR)/$(LIBSHMDPVM)-mpp

$(PVMLDIR)/pvm_shmd$(EXESFX):  pvm_shmd$(EXESFX)
	cp pvm_shmd $(PVMLDIR)

pvm_shmd$(EXESFX):	$(DOBJ) $(PVMLIBDEP)
	$(CC) $(CFLAGS) -o $@ $(DOBJ) $(LIBS)

pbwtest.shmd:  ../../examples/bwtest.c $(XDIR)
	$(CC) $(CFLAGS) -o $@ ../../examples/bwtest.c -L$(PVMLDIR) \
					-lpvm3shmd -lgpvm3
	mv $@ $(PVMXDIR)


$(LIBSHMDPVM):	$(LOBJ) $(LPOBJ)
	rm -f $(LIBSHMDPVM)
	$(AR) cr $(LIBSHMDPVM) $(LOBJ) $(LPOBJ)
	case x$(HASRANLIB) in xt ) echo ranlib; ranlib $(LIBSHMDPVM) ;; esac

$(LIBSHMDPVM)-mpp:	$(LOBJ)
	rm -f $(LIBSHMDPVM)
	$(AR_FRONT) cr $(LIBSHMDPVM) $(LOBJ)
	case x$(HASRANLIB) in xt ) echo ranlib; ranlib $(LIBSHMDPVM) ;; esac
	touch $(LIBSHMDPVM)-mpp

pvm_shmd_stat$(EXESFX): pvm_shmd_stat.o $(LIBSHMDPVM) $(PVMLIBDEP)
	$(CC) $(CFLAGS) -o $@ pvm_shmd_stat.o $(LIBSHMDPVM) $(LIBS)

clean:
	rm -f $(DOBJ) $(LOBJ) pvm_shmd$(EXESFX) $(LIBSHMDPVM) \
		pvm_shmd_stat.o pvm_shmd_stat$(EXESFX) 

tidy:
	rm -f $(DOBJ) $(LOBJ)

lint:
	lint -DARCHCLASS=\"$(PVM_ARCH)\" pvm_shmd.c > Ld
	lint -DARCHCLASS=\"$(PVM_ARCH)\" sendrecv.c > Ll

#
block.o:	$(SDIR)/block.c
	$(CC) $(CFLAGS) -c $(SDIR)/block.c
sem.o:	$(SDIR)/sem.c
	$(CC) $(CFLAGS) -c $(SDIR)/sem.c
tidinfo.o:	$(SDIR)/tidinfo.c
	$(CC) $(CFLAGS) -c $(SDIR)/tidinfo.c
pvm_shmd.o:	$(SDIR)/pvm_shmd.c
	$(CC) $(CFLAGS) -c $(SDIR)/pvm_shmd.c
pvm_shmd_stat.o:	$(SDIR)/pvm_shmd_stat.c
	$(CC) $(CFLAGS) -c $(SDIR)/pvm_shmd_stat.c
sendrecv.o:	$(SDIR)/sendrecv.c
	$(CC) $(CFLAGS) -c $(SDIR)/sendrecv.c

#
# OK to build a complete user lib we need to recompile the lpvm file
#
lpvm.o:		$(PVMSLDIR)/lpvm.c
	$(CC) $(CFLAGS) -DPVM_SHMD -c $(PVMSLDIR)/lpvm.c

#
# Source File Dependencies
#

include $(PVMDEPPATH)$(SDIR)/pvmdep

