	#assumes the existence of the following environment variables and their values
	#ORACLE_LIB
		#Ale School: /lib64/instantclient
		#Ale Home: /usr/lib/oracle/10.2.0.2/client
		#Mark School: /usr/lib64/oracle/10.2.0.1/client/lib/
		#Mark Home: /usr/lib/oracle/10.1.0.5/client/lib/
		#Reasey School: /lib64/instantclient_10_2
		#Reasey Home:
	#ORACLE_SDK
		#Ale School: /lib64/instantclient/sdk/include
		#Ale Home: /usr/lib/oracle/10.2.0.2/client/sdk/include
		#Mark School: /usr/lib64/oracle/10.2.0.1/client/include/
		#Mark Home: /usr/lib/oracle/10.1.0.5/client/include/
		#Reasey School: /lib64/instantclient_10_2/sdk/include
		#Reasey Home:

	# use "gcc" to compile source files.
	CC = g++ -c
	# the linker is also "gcc". It might be something else with other compilers.
	LD = g++
	# Compiler flags go here.
	CFLAGS = -ggdb -fpic -Wall
	#locations maybe not in path to include
	#INCLUDE = -I ../vector -I ../num -I ../rgp -I ../mSLOB -I $(ORACLE_SDK)
	# Linker flags go here. 
	INCLUDE = -I ../vector -I ../num -I ../rgp -I ../mSLOB -I ../spal2D -I $(ORACLE_SDK) -I /usr/include/GL
	# Linker flags go here. 
	LDFLAGS = -L$(ORACLE_LIB) -L$(MYLIBS) -lnums -lrgps -lmslobs -lspal2ds -locci -lclntsh
	LDFLAGS2 =  -L$(ORACLE_LIB) -L$(MYLIBS) -lnums -lrgps -lmslobs -lclntsh
	# use this command to erase files.
	RM = /bin/rm -f
	#sources
	SRCSEXC = #invalidObjectException.cpp
	SRCSVTP = VTP2D.cpp
	SRCSVPOINT = vpoint2D.cpp
	SRCSVLINE = vline2D.cpp
	SRCSVREGION = vregion2D.cpp
	SRCSPRED = TopPred2D.cpp dvector.cpp point2D.cpp block2D.cpp line2D.cpp poly2D.cpp face2D.cpp region2D.cpp
	SRCSLOAD = point2D.cpp block2D.cpp line2D.cpp poly2D.cpp face2D.cpp region2D.cpp
	TSTVPOINT = testvpoints.cpp
	TSTVLINE = testvlines.cpp
	TSTVREGION = testvregions.cpp
	TSTPRED = testpred.cpp
	TSTLOAD = load.cpp
	SRCS = $(SRCSEXC) $(SRCSPOINT) $(SRCSLINE) $(SRCSREGION)
	# list of generated object files.
	OBJSEXC = #invalidObjectException.o
	OBJSVTP = VTP2D.o
	OBJSVPOINT = vpoint2D.o
	OBJSVLINE = vline2D.o
	OBJSVREGION = vregion2D.o
	OBJSPRED = dvector.o TopPred2D.o point2D.o block2D.o line2D.o poly2D.o face2D.o region2D.o
	OBJSLOAD = point2D.o block2D.o line2D.o poly2D.o face2D.o region2D.o
	OTSTVPOINT = testvpoints.o
	OTSTVLINE = testvlines.o
	OTSTVREGION = testvregions.o
	OTSTPRED = testpred.o
	OTSTLOAD = load.o
	OBJS = $(OBJSEXC) $(OBJSPOINT) $(OBJSLINE) $(OBJSREGION)
	# program executable file name.
	PROGVPOINT = tvpoints.out
	PROGLINE = tvlines.out
	PROGREGION = tvregions.out
	PROGPRED = pred.out
	PROGLOAD = load.out
	LIBNAME	= libspal2d.a
	LIBSHARED	= libspal2ds.so
	LIBSHAREDMAC	= libspal2ds.dylib
	ARCHIVE = ar cru
	INDEX	= ranlib

testvpoints:
	$(CC) $(CFLAGS) $(INCLUDE) $(SRCSEXC) $(SRCSVPOINT) $(SRCSVLINE) $(SRCSVREGION) $(SRCSVTP) $(TSTVPOINT)
	$(LD) -o $(PROGVPOINT) $(OBJSEXC) $(OBJSVPOINT) $(OBJSVLINE) $(OBJSVREGION) $(OBJSVTP) $(OTSTVPOINT) $(LDFLAGS)

testvlines:
	$(CC) $(CFLAGS) $(INCLUDE) $(SRCSEXC) $(SRCSVLINE) $(TSTVLINE)
	$(LD) -o $(PROGLINE) $(OBJSEXC) $(OBJSVLINE) $(OTSTVLINE) $(LDFLAGS)

testvregions:
	$(CC) $(CFLAGS) $(INCLUDE) $(SRCSEXC) $(SRCSVLINE) $(SRCSVREGION) $(TSTVREGION)
	$(LD) -o $(PROGREGION) $(OBJSEXC) $(OBJSVLINE) $(OBJSVREGION) $(OTSTVREGION) $(LDFLAGS)

testpred:
	$(CC) $(CFLAGS) $(INCLUDE) $(SRCSEXC) $(SRCSPRED) $(TSTPRED)
	$(LD) -o $(PROGPRED) $(OBJSEXC) $(OBJSPRED) $(OTSTPRED) $(LDFLAGS2)

load:
	$(CC) $(CFLAGS) $(INCLUDE) $(SRCSEXC) $(SRCSLOAD) $(TSTLOAD)
	$(LD) -o $(PROGLOAD) $(OBJSEXC) $(OBJSLOAD) $(OTSTLOAD) $(LDFLAGS2)
	
libpoints:
	@echo .
	@echo "Use 'make libs' to build shared library."
	@echo .
# 	$(CC) $(CFLAGS) $(INCLUDE) $(SRCSEXC) $(SRCSPOINT)
# 	$(ARCHIVE) $(LIBNAME) $(OBJSPOINT) $(OBJSEXC)
# 	$(INDEX) $(LIBNAME)	

libspoints:
	$(CC) $(CFLAGS) $(INCLUDE) $(SRCSEXC) $(SRCSPOINT)
	$(LD) -shared -o $(LIBSHARED) $(OBJSPOINT) $(OBJSEXC) $(LDFLAGS2)
	cp $(LIBSHARED) $(MYLIBS)
	
libs:
	$(CC) $(CFLAGS) $(INCLUDE) $(SRCSEXC) $(SRCSPOINT) $(SRCSLINE) $(SRCSREGION)
	$(LD) -shared -o $(LIBSHARED) $(OBJSPOINT) $(OBJSLINE) $(OBJSREGION) $(OBJSEXC) $(LDFLAGS2)
	cp $(LIBSHARED) $(MYLIBS)
	
maclibs:
	$(CC) $(CFLAGS) $(INCLUDE) $(SRCSEXC) $(SRCSPOINT) $(SRCSLINE) $(SRCSREGION)
	$(LD) -dynamiclib -o $(LIBSHAREDMAC) $(OBJSPOINT) $(OBJSLINE) $(OBJSREGION) $(OBJSEXC) $(LDFLAGS2)
	cp $(LIBSHAREDMAC) $(MYLIBS)
	
oracleshared:
	g++ -fpic -c $(CFLAGS) $(INCLUDE) vpointslib.c
	g++ -shared -o tvpoints.so $(LDFLAGS2) vpointslib.o
	echo "Remember to copy tvpoints.so into the library path accessible by the Oracle Server."

clean:	
	-rm *.o
	-rm *.out
	-rm *.a

###################ITEMS BELOW SHOULD BE PHASED OUT!####################

compilemark:
	g++ -ggdb -c  -I ../vector -I ../num -I ../rgp -I ../mSLOB -I /usr/lib64/oracle/10.2.0.1/client/include/  point2D.cpp unfinalizedObjectException.cpp unrepairableObjectException.cpp testpoints.cpp
	
linkmark:
	g++ -ggdb   -I ../vector  -L../num -L../rgp -L ../mSLOB -I ../num -I ../rgp -I ../mSLOB -I /usr/lib64/oracle/10.2.0.1/client/include/ -L /usr/lib64/oracle/10.2.0.1/client/lib/ point2D.o unrepairableObjectException.o testpoints.o  -o tpoints.out -lnum -lrgp -lmslob -locci -lclntsh
		
libmark:
	g++ -ggdb -c -I ../vector -I ../num -I ../rgp -I ../mSLOB -I /usr/lib64/oracle/10.2.0.1/client/include/  point2D.cpp unfinalizedObjectException.cpp unrepairableObjectException.cpp
	ar cru libspal2d.a point2D.o unfinalizedObjectException.o unrepairableObjectException.o
	ranlib libspal2d.a

compilemarkhome:
	g++ -ggdb -c  -I ../vector -I ../num -I ../rgp -I ../mSLOB -I /usr/lib/oracle/10.1.0.5/client/include/  point2D.cpp unfinalizedObjectException.cpp unrepairableObjectException.cpp testpoints.cpp
	
linkmarkhome:
	g++ -ggdb   -I ../vector  -L../num -L../rgp -L ../mSLOB -I ../num -I ../rgp -I ../mSLOB -I /usr/lib/oracle/10.1.0.5/client/include/ -L /usr/lib/oracle/10.1.0.5/client/lib/ point2D.o unrepairableObjectException.o testpoints.o  -o tpoints.out -lnum -lrgp -lmslob -locci -lclntsh
	
libmarkhome:
	g++ -ggdb -c -I ../vector -I ../num -I ../rgp -I ../mSLOB -I /usr/lib/oracle/10.1.0.5/client/include/  point2D.cpp unfinalizedObjectException.cpp unrepairableObjectException.cpp
	ar cru libspal2d.a point2D.o unfinalizedObjectException.o unrepairableObjectException.o
	ranlib libspal2d.a

ctop:
	g++ -g -c  -I ../vector -I ../num -I ../rgp  block2D.cpp block2DImpl.cpp face2D.cpp face2DImpl.cpp finalizedObjectException.cpp  hseg2D.cpp hseg2DImpl.cpp line2D.cpp  line2DImpl.cpp point2D.cpp point2DImpl.cpp poly2D.cpp poly2DImpl.cpp  region2D.cpp region2DImpl.cpp unfinalizedObjectException.cpp unrepairableObjectException.cpp scene.cpp TopPred2DImpl.cpp TopPred2D.cpp TopPred2DCluster.cpp test.cpp

fctop:
	g++ -g -c  -I ../vector -I ../num -I ../rgp  TopPred2DImpl.cpp TopPred2D.cpp TopPred2DCluster.cpp test.cpp

ltop:
	g++ -g -L../num -L. -I ../num -I ../rgp  block2D.o block2DImpl.o face2D.o face2DImpl.o finalizedObjectException.o  hseg2D.o hseg2DImpl.o line2D.o  line2DImpl.o point2D.o point2DImpl.o poly2D.o poly2DImpl.o  region2D.o region2DImpl.o unfinalizedObjectException.o unrepairableObjectException.o scene.o TopPred2DImpl.o TopPred2D.o TopPred2DCluster.o test.o  -o top.out -lnum -lrgp

librgp:
	g++ -c -I ../num -I ../vector -L ../num ../rgp/mbb2D.cpp ../rgp/poi2D.cpp ../rgp/seg2D.cpp ../rgp/undefinedSpatialObjectException.cpp
	ar cru librgp.a mbb2D.o poi2D.o seg2D.o undefinedSpatialObjectException.o
	ranlib librgp.a

seycpoint:
	g++ -ggdb -c  -I ../vector -I ../num -I ../rgp -I ../mSLOB -I ../ -I /lib64/instantclient_10_2/sdk/include point2D.cpp dvector.cpp unfinalizedObjectException.cpp unrepairableObjectException.cpp testpoints.cpp

seylpoint:
	g++ -ggdb  -L../num -L../rgp -L ../mSLOB -I ../num -I ../rgp -I ../mSLOB  -I /lib64/instantclient_10_2/sdk/include -L /lib64/instantclient_10_2  point2D.o dvector.o unrepairableObjectException.o testpoints.o  -o tpoints.out -lnum -lrgp -lmslob -locci -lclntsh -ggdb
	
cpointberlin:
	g++ -ggdb  -c  -I ../vector -I ../num -I ../rgp -I ../mSLOB -I ../ -I /usr/lib64/oracle/10.2.0.2/client/include point2D.cpp unfinalizedObjectException.cpp unrepairableObjectException.cpp testpoints.cpp
	
lpointberlin:
	g++ -ggdb  -L../num -L../rgp -L ../mSLOB -I ../num -I ../rgp -I ../mSLOB  -I /usr/lib64/oracle/10.2.0.2/client/include -L /usr/lib64/oracle/10.2.0.2/client/lib point2D.o unrepairableObjectException.o testpoints.o  -o tpoints.out -lnum -lrgp -lmslob -locci -lclntsh -ggdb	
	
sharedpoints:
	g++ -fpic -c  -I ../vector -I ../num -I ../rgp -I ../mSLOB -I ../ -I /usr/lib/oracle/10.2.0.2/client/include pointslib.c
#	g++ -fpic -shared -L. -L../num -L../rgp -L ../mSLOB -I ../num -I ../rgp -I ../mSLOB  -I /usr/lib/oracle/10.2.0.2/client/include -L /usr/lib/oracle/10.2.0.2/client/lib pointslib.o -o tpoints.so -lnum -lrgp -lmslob -lclntsh -lspal2d
#	g++ -fpic -shared -L. -L../num -L../rgp -L ../mSLOB -L /usr/lib/oracle/10.2.0.2/client/lib pointslib.o -o tpoints.so -lnum -lrgp -lmslob -lclntsh -lspal2d
	g++ -fpic -shared -L. -L../num -L../rgp -L ../mSLOB -L /usr/lib/oracle/10.2.0.2/client/lib pointslib.o -o tpoints.so -lnums -lrgps -lmslobs -lclntsh -lspal2ds

testshared:
	#gcc -fpic -c -I ../vector -I ../num -I ../rgp -I ../mSLOB -I ../ -I /usr/lib/oracle/10.2.0.2/client/include pointslib.c
	g++ -o testit.out  -I ../vector -I ../num -I ../rgp -I ../mSLOB -I ../ -I /usr/lib/oracle/10.2.0.2/client/include testpoints.cpp tpoints.so
	#g++ -o testit.o testpoints.c tpoints.so
	#g++ -ggdb -shared  -L../num -L../rgp -L ../mSLOB -I ../num -I ../rgp -I ../mSLOB  -I /usr/lib/oracle/10.2.0.2/client/include -L /usr/lib/oracle/10.2.0.2/client/lib pointslib.o -o tpoints.so -lnum -lrgp -lmslob -locci -lclntsh -ggdb	

sharedpoints2:
	g++ -fpic -ggdb  -c  -I ../vector -I ../num -I ../rgp -I ../mSLOB -I ../ -I /lib64/instantclient/sdk/include pointslib.c point2D.cpp unfinalizedObjectException.cpp unrepairableObjectException.cpp
	g++ -ggdb -shared  -L../num -L../rgp -L ../mSLOB -I ../num -I ../rgp -I ../mSLOB  -I /lib64/instantclient/sdk/include -L /lib64/instantclient pointslib.o point2D.o unrepairableObjectException.o -o tpoints.so -lnum -lrgp -lmslob -locci -lclntsh -ggdb	
