# 
# Midway Distributed Shared Memory System
# Copyright (c) 1994 Carnegie Mellon University
# All Rights Reserved.
# 
# Permission to use, copy, modify and distribute this software and its
# documentation is hereby granted, provided that both the copyright
# notice and this permission notice appear in all copies of the
# software, derivative works or modified versions, and any portions
# thereof, and that both notices appear in supporting documentation.
# 
# CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
# CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
# ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
#
# 18 Feb 92 (mjz): stolen from grav
# 31 Jul 92 (was): stolen from threat
#  3 Aug 92 (mjz): add MWLIBDIR support
COLON = :
RELEASEDIR = /afs/cs/project/midway/release/@sys

#
# Select flags/libraries for profiling & fast udp access
#
#WAS#PROFILE =
#PROFILE = -pg 
# always use -O for timing.
PROFILE = -O
#PROFILE = -g

#WAS#PROFLIB =
#PROFLIB = -lfast-udp-mach

#WAS#NETLIB =
#NETLIB = -lfast-udp-net-q
#NETLIB = -lsockets

MACHLIB = -lmach

LIBS = -lm -l$(NLIB?n:)midway -lthreads $(NETLIB) $(PROFLIB)
MIDLIB = $(MWLIBDIR?$(MWLIBDIR):$(RELEASEDIR)/lib)/lib$(NLIB?n:)midway.a
OBJDIR = $(MWLIBDIR?$(MWLIBDIR):$(RELEASEDIR)/lib)

#CC=gcc
#CC and LPATH to allow me to compile without this goop in my path --mjz
CC=$(RELEASEDIR)/bin/gcc
LPATH=$(MWLIBDIR?$(MWLIBDIR)$(COLON):)$(RELEASEDIR)/lib:$(LPATH)

# mapped: use mapped timer (mm2 right now 29oct92)
CFLAGS=-v -fmidway  -DMAPPED -I$(RELEASEDIR)/include $(PROFILE)

all: mm4 

#need this to make LPATH above effective
.EXPORT: LPATH

Lint:
	lint -hbac $(CFILES)

clean:
	rm -f mm *.o *.s

mm: mm.o $(MIDLIB)
	$(CC) -v $(PROFILE) -o mm mm.o $(LIBS) $(MACHLIB)
 
mm2: mm2.o $(MIDLIB) timing.o
	$(CC) -v $(PROFILE) -o mm2 mm2.o timing.o $(LIBS) $(MACHLIB)

#atm: need delay 'cause no systemwide barrier right now 28oct92mjz 
mm2a: mm2a.o $(MIDLIB) timing.o
	$(CC) -v -Xlinker -M $(PROFILE) -o mm2a $(OBJDIR)/midway_start.o mm2a.o timing.o $(OBJDIR)/midway_end.o $(LIBS) $(MACHLIB) > mm2a.lmap

STA = $(OBJDIR)/midway_start.o
END = $(OBJDIR)/midway_end.o

mm3a: mm3a.o $(MIDLIB) timing.o
	$(CC) -v $(PROFILE) -o mm3a mm3a.o timing.o $(LIBS) $(MACHLIB)
 
mm3: mm3.o $(MIDLIB) timing.o
	$(CC) -v $(PROFILE) -o mm3 $(STA) mm3.o timing.o $(END) $(LIBS) $(MACHLIB)

#
# mm4 is reblocked to not send all of B matrix.
#
mm4: mm4.o $(MIDLIB) timing.o
	$(CC) -v $(PROFILE) -o mm4 $(STA) mm4.o timing.o $(END) $(LIBS) $(MACHLIB)

mm4.sa: mm4.c timing.o
	$(CC) -DMAPPED -DSTAND_ALONE -O -o mm4.sa mm4.c  timing.o -lmach -lm

rr: rr.o $(MIDLIB) timing.o
	$(CC) -v $(PROFILE) -o rr rr.o timing.o $(LIBS) $(MACHLIB)
 
rra: rra.o $(MIDLIB) timing.o
	$(CC) -v $(PROFILE) -o rra rra.o timing.o $(LIBS) $(MACHLIB)
 
timing.o: timing.c
	cc -O -DMAPPED -c timing.c


