#  Copyright (c) 1994,1995,1996,1997,1998 NewCode Technology, Inc. 
#  Copyright (c) 1998 Geodesic Systems, Inc.
#  All rights reserved.

# This Makefile is for IBM R6000 (AIX) 64-bit systems.

CC=xlc_r
CCL=xlC_r
CFLAGS=-O -DM_IBM_R6000 -D_THREAD_SAFE -q64
LFLAGS=-bmaxdata:0x80000000 -q64 -b64
PTHREAD_LIBS=

all: demoF demoM demomtF demomtM freeF freeM

clean:
	rm -f demoF demoR demoM demomtF demomtR demomtM freeF freeR freeM

# Single-threaded demo program using MTS Fast library 
demoF: speed_test.c mts_initAIX.o libFmts.a $(H_SRC)
	$(CC) $(CFLAGS) -DMTS_OPTIMIZED=1 -DNC_MALLOC -DMTS_MT 		\
		'-DCOMPILE_ID="MTS fast malloc"' -c speed_test.c
	$(CCL) $(LFLAGS) speed_test.o mts_initAIX.o libFmts.a $(PTHREAD_LIB)
	mv a.out demoF
	rm -f speed_test.o

# Single-threaded demo program using MTS Robust library
demoR: speed_test.c mts_initAIX.o libRmts.a $(H_SRC)
	$(CC) $(CFLAGS) -DMTS_OPTIMIZED=1 -DNC_MALLOC -DMTS_MT 		\
		'-DCOMPILE_ID="MTS robust malloc"' -c speed_test.c
	$(CCL) $(LFLAGS) speed_test.o mts_initAIX.o libRmts.a $(PTHREAD_LIB)
	mv a.out demoR
	rm -f speed_test.o

# Single-threaded demo program using standard malloc
demoM: speed_test.c $(H_SRC)
	$(CC) $(CFLAGS) '-DCOMPILE_ID="standard malloc"' -c speed_test.c
	$(CCL) $(LFLAGS) speed_test.o $(PTHREAD_LIB)
	mv a.out demoM
	rm -f speed_test.o

# Multi-threaded demo program using MTS Fast library 
demomtF: speed_test_mt.c mts_initAIX.o libFmts.a $(H_SRC)
	$(CC) $(CFLAGS) -DMTS_MT -DMTS_OPTIMIZED=1 -DNC_MALLOC 		 \
		'-DCOMPILE_ID="MTS fast malloc"' -c speed_test_mt.c
	$(CCL) $(LFLAGS) speed_test_mt.o mts_initAIX.o libFmts.a $(PTHREAD_LIB)
	mv a.out demomtF
	rm -f speed_test_mt.o

# Multi-threaded demo program using MTS Robust library 
demomtR: speed_test_mt.c mts_initAIX.o libRmts.a $(H_SRC)
	$(CC) $(CFLAGS) -DMTS_MT -DMTS_OPTIMIZED=1 -DNC_MALLOC 		 \
		'-DCOMPILE_ID="MTS robust malloc"' -c speed_test_mt.c
	$(CCL) $(LFLAGS) speed_test_mt.o mts_initAIX.o libRmts.a $(PTHREAD_LIB)
	mv a.out demomtR
	rm -f speed_test_mt.o

# Multi-threaded demo program using standard malloc
demomtM: speed_test_mt.c $(H_SRC)
	$(CC) $(CFLAGS) '-DCOMPILE_ID="standard malloc"' -c speed_test_mt.c
	$(CCL) $(LFLAGS) speed_test_mt.o $(PTHREAD_LIB) 
	mv a.out demomtM
	rm -f speed_test_mt.o

# Program to test frees from different thread than mallocs,
# using MTS Fast library
freeF: free_test.c mts_initAIX.o libFmts.a $(H_SRC)
	$(CC) $(CFLAGS) -DMTS_MT -DMTS_OPTIMIZED=1 -DNC_MALLOC 		 \
		'-DCOMPILE_ID="MTS fast malloc"' -c free_test.c
	$(CCL) $(LFLAGS) free_test.o mts_initAIX.o libFmts.a $(PTHREAD_LIB)
	mv a.out freeF
	rm -f free_test.o

# Program to test frees from different thread than mallocs,
# using MTS Robust library
freeR: free_test.c mts_initAIX.o libRmts.a $(H_SRC)
	$(CC) $(CFLAGS) -DMTS_MT -DMTS_OPTIMIZED=1 -DNC_MALLOC 		 \
		'-DCOMPILE_ID="MTS robust malloc"' -c free_test.c
	$(CCL) $(LFLAGS) free_test.o mts_initAIX.o libRmts.a $(PTHREAD_LIB)
	mv a.out freeR
	rm -f free_test.o

# Program to test frees from different thread than mallocs,
# using standard malloc
freeM: free_test.c $(H_SRC)
	$(CC) $(CFLAGS) '-DCOMPILE_ID="standard malloc"' -c free_test.c
	$(CCL) $(LFLAGS) free_test.o $(PTHREAD_LIB) 
	mv a.out freeM
	rm -f free_test.o
