################################################################################
#																			   #
#  Makefile for WAMM	1.1													   #
#																			   #
################################################################################

#
#          		  WAMM: Wide Area Metacomputer Manager
#     CNUCE - Institute of the Italian National Research Council
#      Authors:  R. Baraglia, M. Cosso, G. Faieta, M. Formica, 
#                   D. Laforenza, M. Nicosia
#                   (C) 1997 All Rights Reserved
#
#                              NOTICE
#
#
# Permission is hereby granted, without written agreement and without license
# or royalty fees, to use, copy, modify, and distribute this software and
# its documentation for educational and research purpose only, provided that
# the above copyright notice and the following two paragraphs appear in all
# copies of this software and in the supporting documentation. No charge,
# other than an "at-cost" distribution fee, may be charged for copies,
# derivations, or distributions of this material without the express written
# consent of the copyright holder.
# 
# IN NO EVENT SHALL THE INSTITUTION (CNUCE-CNR) AND THE AUTHORS BE LIABLE TO
# ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
# DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
# IF THEINSTITUTION OR THE AUTHORS HAS BEEN ADVISED OF THE POSSIBILITY OF 
# SUCH DAMAGE.
#
# THE INSTITUTION (CNUCE-CNR) AND THE AUTHORS SPECIFICALLY DISCLAIMS ANY 
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
# ON AN "AS IS" BASIS, AND THE AUTHORS HAS NO OBLIGATION TO
# PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
#
#### Change these according to your system: ####

INCLUDE_MOTIF = -I/usr/include/Motif1.2			# Motif header files path
INCLUDE_X     = -I/usr/include/X11R5/		# X11 header files path
INCLUDE_XPM   = -I/disc2/users/meta/sgherri/lib/xpm	# xpm header files path
INCLUDE_PVM   = -I$(PVM_ROOT)/include			# pvm header files path

LIB_MOTIF     = -L/usr/lib/Motif1.2						# Motif library path
LIB_X         = -L/usr/lib/X11R5				# X11 library path
LIB_XPM       = -L/disc2/users/meta/sgherri/lib/xpm	# xpm library path
LIB_PVM       = -L$(PVM_ROOT)/lib/$(PVM_ARCH)	# pvm library path

#### "ping" path: (reverse comments if you don't have ping) ####

PING	  = -DPINGPATH=\"/etc/ping\"
#PING     =

#### "traceroute" path: (reverse comments if you don't have traceroute) ####

TROUTE    = -DTROUTEPATH=\"/disc2/users/meta/bin/traceroute\"
#TROUTE   =

#### remote shell path: ####

RSH		  = -DRSHPATH=\"/bin/rsh\"

#### Compiler: ####

CC  = gcc 

#### Compiler flags: ####

SOURCEFLAGS	  = -O
LINKFLAGS	  = -s

#### Destination directory for main program: ####

MASTERDIR	= $(HOME)/bin

#### Destination directory for slave programs: ####

SLAVEDIR	= $(PVM_ROOT)/bin/$(PVM_ARCH)

#### Program used to install executable files: ####

#INSTALL = install -M 755
INSTALL = cp

###############################################################################
#### Don't touch anything below! ##############################################
###############################################################################

INCLUDES    = $(INCLUDE_MOTIF) $(INCLUDE_X) $(INCLUDE_XPM) $(INCLUDE_PVM)
LIBS        = $(LIB_MOTIF) $(LIB_X) $(LIB_XPM) $(LIB_PVM)

all: master slaves
master: bin/wamm converter dualsync makepg postproc
slaves: bin/PVMTasker bin/PVMHoster bin/PVMMaker olslave wammtracelib.a

OBJS	 =	src/main.o \
			src/modNetworkObj.o \
			src/modParser.o \
			src/modPVM.o \
			src/modInternet.o \
			src/modWAN.o \
			src/modMAN.o \
			src/modLAN.o \
			src/modTasks.o \
			src/modSpawn.o \
			src/modMake.o \
			src/motifutil.o \
			src/util.o \
			src/modRedraw.o \
			src/modMONITOR.o

LOBJ	=	wammtracelib.o

bin/wamm: $(OBJS)
	$(CC) -o $@ $(LINKFLAGS) $(OBJS) $(LIBS) -lXpm -lXm -lXt -lXmu -lXext -lX11 -lm -lpvm3

bin/PVMTasker: src/PVMTasker.c src/util.c
	$(CC) -o $@ $(SOURCEFLAGS) $(LINKFLAGS) $(INCLUDE_PVM) src/PVMTasker.c src/util.c $(LIB_PVM) -lpvm3

bin/PVMHoster: src/PVMHoster.c
	$(CC) -o $@ $(SOURCEFLAGS) $(LINKFLAGS) $(RSH) $(INCLUDE_PVM) src/PVMHoster.c $(LIB_PVM) -lpvm3

bin/PVMMaker: src/PVMMaker.c
	$(CC) -o $@ $(SOURCEFLAGS) $(LINKFLAGS) $(INCLUDE_PVM) src/PVMMaker.c $(LIB_PVM) -lpvm3

############## NUOVI #################

converter: src/converter.c
	$(CC) -o $@ $(SOURCEFLAGS) $(LINKFLAGS) src/converter.c 
	mv converter $(PVM_ROOT)/bin/$(PVM_ARCH)
 	
dualsync: src/dualsync.c
	$(CC) -o $@ $(SOURCEFLAGS) $(LINKFLAGS) src/dualsync.c 
	mv dualsync $(PVM_ROOT)/bin/$(PVM_ARCH)
	
makepg: src/makepg.c
	$(CC) -o $@ $(SOURCEFLAGS) $(LINKFLAGS) src/makepg.c 
	mv makepg $(PVM_ROOT)/bin/$(PVM_ARCH)	
	
olslave: src/olslave.c
	$(CC) -o $@ $(SOURCEFLAGS) $(LINKFLAGS) src/olslave.c 
	mv olslave $(PVM_ROOT)/bin/$(PVM_ARCH)
	
postproc: src/postproc.c
	$(CC) -o $@ $(SOURCEFLAGS) $(LINKFLAGS) src/postproc.c 
	mv postproc $(PVM_ROOT)/bin/$(PVM_ARCH)
	
wammtracelib.a:	$(LOBJ) 
	
	ar cr wammtracelib.a $(LOBJ)
	case x$(HASRANLIB) in xt ) echo ranlib; ranlib wammtracelib.a ;; esac
	mv wammtracelib.a $(PVM_ROOT)/lib/$(PVM_ARCH)/
	rm -f wammtracelib.o
	
wammtracelib.o: src/wammtracelib.c 
	$(CC) -c src/wammtracelib.c 
	cp  src/wammOL.h $(PVM_ROOT)/include

.c.o:
	$(CC) $(SOURCEFLAGS) $(INCLUDES) $(PING) $(TROUTE) -c $< -o $@
	
clean:
	rm -f src/*.o bin/wamm bin/PVMTasker bin/PVMHoster bin/PVMMaker

install: install-master install-slaves

install-master: bin/wamm 
	$(INSTALL) $? $(MASTERDIR)
	
install-slaves: bin/PVMTasker bin/PVMMaker bin/PVMHoster bin/PVMKill \
				bin/PVANIMSORT bin/PVANIM2PG 
	$(INSTALL) $? $(SLAVEDIR)
	
package:
	mkdir /tmp/wamm101
	cp -R * /tmp/wamm101
	rm -f /tmp/wamm101/src/*.o
	rm -rf /tmp/wamm101/src/RCS
	rm -f /tmp/wamm101/bin/PVMTasker
	rm -f /tmp/wamm101/bin/PVMHoster
	rm -f /tmp/wamm101/bin/PVMMaker
	rm -f /tmp/wamm101/bin/wamm
	tar cvf /tmp/wamm101.tar -C /tmp wamm101
	gzip -best /tmp/wamm101.tar
	mv /tmp/wamm101.tar.gz .
	rm -Rf /tmp/wamm101
	
