# Make file for Ian and Mamadou's CS736 Project
#
# $Id: Makefile,v 1.33 2000/12/18 03:47:10 alderman Exp $
#
CC = gcc

CFLAGSALL = -Wall
LDFLAGSALL = -Wall
LIBSALL = -lm

ifeq ($(OSTYPE),FreeBSD)
# FreeBSD
	CFLAGS = $(CFLAGSALL) -D__FREEBSD__
	LDFLAGS = $(LDFLAGSALL) -D__FREEBSD__
	LIBS = $(LIBSALL)
	THREADLIB = -pthread
else
# Solaris
	CFLAGS = $(CFLAGSALL) -D_LARGEFILE64_SOURCE -D__SOLARIS__
	LDFLAGS = $(LDFLAGSALL) -D_LARGEFILE64_SOURCE -D__SOLARIS__
	LIBS = $(LIBSALL) -lrt -lpthread
	AIOLIB = -laio
endif

# -O2
# PTHREADFLAG = -pthread
# LIBS = -lm -pthread

OBJ = .o

SHR_OBJ = \
	options.o \
	timer.o \
	since.o 

OBJECTS = \
	$(SHR_OBJ) \
	bigfile.o \
	manyfiles.o \
	mkbigfile.o \
	synchronous.o \
	mmap2.o \
	rawmmap.o \
	pkthreads.o \
	rawpkthreads.o \
	timetester2.o \
	timetester.o \
	rrfiles.o \
	readdisk.o \
	aioread3.o \
	rawaio.o \
	mkallraw.o

# .c.o:	
# 	$(CC) -c $(CFLAGS) $<
%.o: %.c global.h options.h since.h timer.h
	$(CC) -c $(CFLAGS) -o $@ $<

all:	bigfile mkbigfile manyfiles rrfiles synchronous \
		pkthreads rawpkthreads rawsynchronous mmap2 readdisk \
		mkallraw aioread rawmmap rawaio

bigfile:	bigfile.o
	$(CC) -o bigfile bigfile.o

mkbigfile:	mkbigfile.o
	$(CC) -o mkbigfile mkbigfile.o

mkallraw:	mkallraw.o
	$(CC) -o mkallraw mkallraw.o

synchronous:	synchronous.o $(SHR_OBJ)
	$(CC) -o synchronous synchronous.o $(SHR_OBJ) $(LIBS)

aioread:	aioread3.o $(SHR_OBJ)
	$(CC) -o aioread aioread3.o $(SHR_OBJ) $(LIBS) $(AIOLIB)

mmap2:		mmap2.o $(SHR_OBJ)
	$(CC) -o mmap2 mmap2.o $(SHR_OBJ) $(LIBS)

rawsynchronous:	rawsynchronous.o $(SHR_OBJ)
	$(CC) -o rawsynchronous $(LDFLAGS) rawsynchronous.o $(SHR_OBJ) $(LIBS)

rawmmap:	rawmmap.o $(SHR_OBJ)
	$(CC) -o rawmmap rawmmap.o $(SHR_OBJ) $(LIBS)

rawaio:		rawaio.o $(SHR_OBJ)
	$(CC) -o rawaio rawaio.o $(SHR_OBJ) $(LIBS) $(AIOLIB)

manyfiles:	manyfiles.o
	$(CC) -o manyfiles manyfiles.o $(LIBS) $(THREADLIB)

rrfiles:	rrfiles.o $(SHR_OBJ)
	$(CC) -o rrfiles rrfiles.o $(SHR_OBJ) $(LIBS) $(THREADLIB)

rawpkthreads:	rawpkthreads.o $(SHR_OBJ)
	$(CC) -o rawpkthreads $(LDFLAGS) rawpkthreads.o $(SHR_OBJ) $(LIBS) $(THREADLIB)

pkthreads:	pkthreads.o $(SHR_OBJ)
	$(CC) -o pkthreads pkthreads.o $(SHR_OBJ) $(LIBS) $(THREADLIB)

readdisk:	readdisk.o timer.o
	$(CC) -o readdisk readdisk.o timer.o $(LIBS)

fs_remount:	fs_remount.c fs_unmount.c
	$(CC) -o fs_remount fs_remount.c
	$(CC) -o fs_unmount fs_unmount.c

install_remount:
	install -o root -m 4755 fs_remount /usr/local/sbin
	install -o root -m 4755 fs_unmount /usr/local/sbin

clean:
	rm -f *.o bigfile mkbigfile manyfiles synchronous timetester \
		fs_remount timetester2 rrfiles core pkthreads rawtest \
		rawpkthreads rawsynchronous fs_unmount readdisk  \
		aioread mmap2 mkallraw rawaio

