#
# Makefile to handle programs generated by grp2c.
#

# Set prefix to directory where the grp2c package is installed to.
# When grp2c is invoked, -R option can specify this directory.
# ARCHDIR specifies name of architecture dependent derictory where
# some stuffs can be found. It should be a target independent name.

ARCHDIR		= $$PVM_ARCH
#ARCHDIRNAME	= SUN4SOL2
ARCHDIRNAME	= $(shell echo $(ARCHDIR))

prefix		= /home/lpds/dozsa/grade
bindir		= $(prefix)/bin/$(ARCHDIR)
libdir		= $(prefix)/lib/$(ARCHDIR)
includedir	= $(prefix)/include

# Set datadir to directory where makefile templates can be found.
# When grp2c is invoked, -D option can specify this directory.

datadir		= /home/lpds/dozsa/grade/share

# Include platform specific part of the Makefile rules. Following include
# file should specify at least CC and LIBS macros

include $(datadir)/$(ARCHDIRNAME)/grp2c.pl.mk

# Set installdir to directory where the binaries should be installed to.
# When grp2c is invoked, -I option can specify this directory.

installdir	= $$HOME/pvm3/bin/$$PVM_ARCH

SHELL		= /bin/sh
GRP2C		= $(bindir)/grp2c

TARGET		= pvm

# Include target specific part

include $(datadir)/grp2c.mk.$(TARGET)

# Special libraries and include paths can be specified here:

USERLIBS	=
USERLIBDIRS	=
USERINCLUDES	=

# Debugger facilities and other stuffs

DBGLIBS		= -lslib
DBGLIBDIRS	= -L$$GRADE_ROOT/lib/$(ARCHDIR)
GREDLIBS	= -lgred
GREDLIBDIRS	= -L$$GRADE_ROOT/lib/$(ARCHDIR)

# Libraries for normal compilation. There are common libraries linked
# to everything and special libs linked to server or clients only

LIBS		= -lnsl -lsocket  -lgrp$(TARGET) $(TARGETLIBS) \
		  $(USERLIBS) $(DBGLIBS) $(GREDLIBS)
LIBSSRV		= -lgrp$(TARGET)_srv
LIBSCL		= -lgrp$(TARGET)_cl
LIBDIRS		= $(USERLIBDIRS) $(TARGETLIBDIRS) -L$(libdir) \
		  $(DBGLIBDIRS) $(GREDLIBDIRS)

# Libraries to produce TAPE-PVM version

LIBS_t		= -lnsl -lsocket  -lgrp$(TARGET)_t $(TARGETLIBS_t) \
		  $(USERLIBS) $(DBGLIBS) $(GREDLIBS)
LIBSSRV_t	= -lgrp$(TARGET)_srv_t
LIBSCL_t	= -lgrp$(TARGET)_cl_t
LIBDIRS_t	= $(USERLIBDIRS) $(TARGETLIBDIRS_t) -L$(libdir) \
		  $(DBGLIBDIRS) $(GREDLIBDIRS)

# Libraries to produce PG-PVM version

LIBS_p		= -lnsl -lsocket  -lgrp$(TARGET)_p $(TARGETLIBS_p) \
		  $(USERLIBS) $(DBGLIBS) $(GREDLIBS)
LIBSSRV_p	= -lgrp$(TARGET)_srv_p
LIBSCL_p	= -lgrp$(TARGET)_cl_p
LIBDIRS_p	= $(USERLIBDIRS) $(TARGETLIBDIRS_p) -L$(libdir) \
		  $(DBGLIBDIRS) $(GREDLIBDIRS)

CPPFLAGS	=  $(TARGETINCLUDES) \
		  -I$(includedir) -I$(includedir)/$(ARCHDIR) \
		  -I$$DDBG_ROOT/include $(USERINCLUDES) -I$$GRADE_ROOT/include
CPPFLAGS_t	=  $(TARGETINCLUDES_t) \
		  -I$(includedir) -I$(includedir)/$(ARCHDIR) \
		  -I$$DDBG_ROOT/include $(USERINCLUDES) -I$$GRADE_ROOT/include
CPPFLAGS_p	=  $(TARGETINCLUDES_p) \
		  -I$(includedir) -I$(includedir)/$(ARCHDIR) \
		  -I$$DDBG_ROOT/include $(USERINCLUDES) -I$$GRADE_ROOT/include
CFLAGS		= $(OPT) -DTARGET=$(TARGET)

# Following lines are included by grp2c
# -------------------------------------

all: mkarchdir buffer.app 

all_t: mkinstalldir buffer_t.app 

mkinstalldir: mkarchdir
	test -d $(installdir) || mkdir -p $(installdir)
	test -d $$HOME/pvm3/tapelib || mkdir -p $$HOME/pvm3/tapelib

all_p: mkarchdir buffer_p.app 

mkarchdir:
	test -d $(ARCHDIR) || mkdir -p $(ARCHDIR)

###
### Rules for application buffer
###

buffer.app: $(ARCHDIRNAME)/buffer $(ARCHDIRNAME)/Producer $(ARCHDIRNAME)/Consumer $(ARCHDIRNAME)/Buffer

buffer_t.app: $(ARCHDIRNAME)/buffer_t $(ARCHDIRNAME)/Producer_t $(ARCHDIRNAME)/Consumer_t $(ARCHDIRNAME)/Buffer_t

buffer_p.app: $(ARCHDIRNAME)/buffer_p $(ARCHDIRNAME)/Producer_p $(ARCHDIRNAME)/Consumer_p $(ARCHDIRNAME)/Buffer_p

#
# Server process (normal version)
#

$(ARCHDIRNAME)/buffer: buffer.c
	$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ buffer.c $(LIBDIRS) $(LIBSSRV) $(LIBS) 2>&1

#
# Server process (tape version)
#

buffer_t.c: buffer.c
	tapepp buffer.c
	$(bindir)/tapepppost buffer_t.c

$(ARCHDIRNAME)/buffer_t: buffer_t.c
	$(CC) $(CFLAGS) $(CPPFLAGS_t) -DMUTANT_t -o $@ buffer_t.c $(LIBDIRS_t) $(LIBSSRV_t) $(LIBS_t) 2>&1

#
# Server process (pg version)
#

buffer_p.c: buffer.c
	$(bindir)/inst-for-pg buffer

$(ARCHDIRNAME)/buffer_p: buffer_p.c
	$(CC) $(CFLAGS) $(CPPFLAGS_p) -DMUTANT_p -o $@ buffer_p.c $(LIBDIRS_p) $(LIBSSRV_p) $(LIBS_p) 2>&1
	cp $(ARCHDIR)/buffer_p $(ARCHDIR)/buffer

# CompilerOptions defined in the Editor section of the GRP file

INCDIRS_buffer = 
LIBDIRS_buffer = 
LIBS_buffer    = 
OBJ_buffer     = 

PATHCSRC_buffer= .
CSRC_buffer    =
COBJ_buffer    =
#
# Process Producer (normal version)
#

$(ARCHDIRNAME)/Producer: Producer.c
	$(CC) $(CFLAGS) $(CPPFLAGS) $(INCDIRS_buffer) -o $@ Producer.c $(LIBDIRS) $(LIBDIRS_buffer) $(LIBSCL) $(LIBS) $(LIBS_buffer) $(OBJ_buffer) $(COBJ_buffer) 2>&1

#
# Process Producer (tape version)
#

Producer_t.c: Producer.c
	tapepp Producer.c
	$(bindir)/tapepppost Producer_t.c

$(ARCHDIRNAME)/Producer_t: Producer_t.c
	$(CC) $(CFLAGS) $(CPPFLAGS_t) $(INCDIRS_buffer) -DMUTANT_t -o $@ Producer_t.c $(LIBDIRS_t) $(LIBDIRS_buffer) $(LIBSCL_t) $(LIBS_t) $(LIBS_buffer) $(OBJ_buffer) $(COBJ_buffer) 2>&1

#
# Process Producer (pg version)
#

Producer_p.c: Producer.c
	$(bindir)/inst-for-pg Producer

$(ARCHDIRNAME)/Producer_p: Producer_p.c
	$(CC) $(CFLAGS) $(CPPFLAGS_p) $(INCDIRS_buffer) -DMUTANT_p -o $@ Producer_p.c $(LIBDIRS_p) $(LIBDIRS_buffer) $(LIBSCL_p) $(LIBS_p) $(LIBS_buffer) $(OBJ_buffer) $(COBJ_buffer) 2>&1
	cp $(ARCHDIR)/Producer_p $(ARCHDIR)/Producer

#
# Process Consumer (normal version)
#

$(ARCHDIRNAME)/Consumer: Consumer.c
	$(CC) $(CFLAGS) $(CPPFLAGS) $(INCDIRS_buffer) -o $@ Consumer.c $(LIBDIRS) $(LIBDIRS_buffer) $(LIBSCL) $(LIBS) $(LIBS_buffer) $(OBJ_buffer) $(COBJ_buffer) 2>&1

#
# Process Consumer (tape version)
#

Consumer_t.c: Consumer.c
	tapepp Consumer.c
	$(bindir)/tapepppost Consumer_t.c

$(ARCHDIRNAME)/Consumer_t: Consumer_t.c
	$(CC) $(CFLAGS) $(CPPFLAGS_t) $(INCDIRS_buffer) -DMUTANT_t -o $@ Consumer_t.c $(LIBDIRS_t) $(LIBDIRS_buffer) $(LIBSCL_t) $(LIBS_t) $(LIBS_buffer) $(OBJ_buffer) $(COBJ_buffer) 2>&1

#
# Process Consumer (pg version)
#

Consumer_p.c: Consumer.c
	$(bindir)/inst-for-pg Consumer

$(ARCHDIRNAME)/Consumer_p: Consumer_p.c
	$(CC) $(CFLAGS) $(CPPFLAGS_p) $(INCDIRS_buffer) -DMUTANT_p -o $@ Consumer_p.c $(LIBDIRS_p) $(LIBDIRS_buffer) $(LIBSCL_p) $(LIBS_p) $(LIBS_buffer) $(OBJ_buffer) $(COBJ_buffer) 2>&1
	cp $(ARCHDIR)/Consumer_p $(ARCHDIR)/Consumer

#
# Process Buffer (normal version)
#

$(ARCHDIRNAME)/Buffer: Buffer.c
	$(CC) $(CFLAGS) $(CPPFLAGS) $(INCDIRS_buffer) -o $@ Buffer.c $(LIBDIRS) $(LIBDIRS_buffer) $(LIBSCL) $(LIBS) $(LIBS_buffer) $(OBJ_buffer) $(COBJ_buffer) 2>&1

#
# Process Buffer (tape version)
#

Buffer_t.c: Buffer.c
	tapepp Buffer.c
	$(bindir)/tapepppost Buffer_t.c

$(ARCHDIRNAME)/Buffer_t: Buffer_t.c
	$(CC) $(CFLAGS) $(CPPFLAGS_t) $(INCDIRS_buffer) -DMUTANT_t -o $@ Buffer_t.c $(LIBDIRS_t) $(LIBDIRS_buffer) $(LIBSCL_t) $(LIBS_t) $(LIBS_buffer) $(OBJ_buffer) $(COBJ_buffer) 2>&1

#
# Process Buffer (pg version)
#

Buffer_p.c: Buffer.c
	$(bindir)/inst-for-pg Buffer

$(ARCHDIRNAME)/Buffer_p: Buffer_p.c
	$(CC) $(CFLAGS) $(CPPFLAGS_p) $(INCDIRS_buffer) -DMUTANT_p -o $@ Buffer_p.c $(LIBDIRS_p) $(LIBDIRS_buffer) $(LIBSCL_p) $(LIBS_p) $(LIBS_buffer) $(OBJ_buffer) $(COBJ_buffer) 2>&1
	cp $(ARCHDIR)/Buffer_p $(ARCHDIR)/Buffer

#
# End of rules of application buffer
#

###
### Rules that are cleaning up the project directory
###

clean:
	rm -f $(ARCHDIR)/buffer $(ARCHDIR)/buffer_t $(ARCHDIR)/buffer_p
	rm -f $(installdir)/buffer
	rm -f $(installdir)/buffer_t
	rm -f $(installdir)/buffer_p
	rm -f $(ARCHDIR)/Producer $(ARCHDIR)/Producer_t $(ARCHDIR)/Producer_p
	rm -f $(installdir)/Producer
	rm -f $(installdir)/Producer_t
	rm -f $(installdir)/Producer_p
	rm -f $(ARCHDIR)/Consumer $(ARCHDIR)/Consumer_t $(ARCHDIR)/Consumer_p
	rm -f $(installdir)/Consumer
	rm -f $(installdir)/Consumer_t
	rm -f $(installdir)/Consumer_p
	rm -f $(ARCHDIR)/Buffer $(ARCHDIR)/Buffer_t $(ARCHDIR)/Buffer_p
	rm -f $(installdir)/Buffer
	rm -f $(installdir)/Buffer_t
	rm -f $(installdir)/Buffer_p


realclean: clean
	rm -f buffer.[hc]*
	rm -f buffer_t.[hc]*
	rm -f buffer_p.[hc]*
	rm -f Producer.[hc]* Producer_t.[hc]* Producer_p.[hc]*
	rm -f Consumer.[hc]* Consumer_t.[hc]* Consumer_p.[hc]*
	rm -f Buffer.[hc]* Buffer_t.[hc]* Buffer_p.[hc]*

###
### Rules to install binaries
###

install: all
	test -d $(installdir) || mkdir -p $(installdir)
	@if $(bindir)/samefile . $(installdir); then \
	echo "Installing to the actual directory is unnecessary."; \
	else \
	echo "Copying binaries into $(installdir)"; \
	cp $(ARCHDIR)/buffer $(installdir); \
	cp $(ARCHDIR)/Producer $(installdir); \
	cp $(ARCHDIR)/Consumer $(installdir); \
	cp $(ARCHDIR)/Buffer $(installdir); \
	fi

install_t: all_t
	test -d $(installdir) || mkdir -p $(installdir)
	@if $(bindir)/samefile . $(installdir); then \
	echo "Installing to the actual directory is unnecessary."; \
	else \
	echo "Copying binaries into $(installdir)"; \
	cp $(ARCHDIR)/buffer_t $(installdir); \
	cp $(ARCHDIR)/Producer_t $(installdir); \
	cp $(ARCHDIR)/Consumer_t $(installdir); \
	cp $(ARCHDIR)/Buffer_t $(installdir); \
	fi

install_p: all_p
	test -d $(installdir) || mkdir -p $(installdir)
	@if $(bindir)/samefile . $(installdir); then \
	echo "Installing to the actual directory is unnecessary."; \
	else \
	echo "Copying binaries into $(installdir)"; \
	cp $(ARCHDIR)/buffer $(installdir); \
	cp $(ARCHDIR)/Producer $(installdir); \
	cp $(ARCHDIR)/Consumer $(installdir); \
	cp $(ARCHDIR)/Buffer $(installdir); \
	fi

#.c.o:
#	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< 2>&1

###
### End of Makefile generated by grp2c
###
