#Version of SUMA_Makefile with no ifdef statements

MAKE = make
SUMALIB = libSUMA.a
AFNILIB = -lrickr -lmrix -lcoxplot -lf2c -lmri 
MAINCODE = SUMA
SUMALIBLIST = libSUMA.a libglut.a libply.a 

SUMA_SRCS = SUMA_trackball.c SUMA_SVmanip.c SUMA_input.c SUMA_MiscFunc.c SUMA_IV_XYZextract.c	\
		 SUMA_IV_FaceSetsextract.c  SUMA_SurfNorm.c SUMA_DOmanip.c SUMA_StripPath.c 	\
		 SUMA_Load_Surface_Object.c SUMA_CreateDO.c SUMA_help.c SUMA_display.c SUMA_ParseCommands.c	\
		 SUMA_Engine.c SUMA_Surface_IO.c SUMA_VolData.c SUMA_niml.c SUMA_Color.c	\
		 SUMA_GeomComp.c SUMA_SphericalMapping.c SUMA_Algorithms.c SUMA_DataSets.c	\
		 SUMA_Homer.c SUMA_xColBar.c SUMA_SurfClust.c SUMA_IsoSurface.c SUMA_ConvexHull.c SUMA_BrainWrap.c
       
SUMA_gts.o: SUMA_gts.c
	${CC} -DSUMA_COMPILED ${CCOPT} ${WARNOPT} ${SUMA_INCLUDE_PATH} -Igts/src -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include/ -c SUMA_gts.c 

SUMA_SRCS_MAIN = SUMA_suma.c

SUMA_OBJS = ${SUMA_SRCS:.c=.o}
SUMA_GTS_OBJS = SUMA_gts.o

AFNI_OBJS = ../xutil.o ../LiteClue.o
AFOBJS  = ../afni.o ../afni_func.o ../afni_widg.o ../afni_warp.o ../afni_fimmer.o \
				../afni_slice_short.o ../afni_slice_float.o                  		\
				../afni_slice_byte.o  ../afni_slice_complex.o                		\
				../afni_pcor.o ../afni_pcor_float.o ../afni_transforms.o        	\
				../pbar.o ../afni_graph.o ../afni_plugin.o                      	\
				../parser.o ../parser_int.o ../afni_plugout.o ../afni_fimfunc.o 	\
				../afni_setup.o ../afni_receive.o ../mcw_graf.o ../afni_splash.o	\
				../afni_pplug_env.o ../afni_pplug_2dfunc.o ../afni_friends.o    	\
				../afni_ttren.o ../afni_pplug_1dfunc.o ../afni_driver.o         	\
				../afni_niml.o ../afni_sumafunc.o ../afni_slice_rgbyte.o        	\
				../afni_version.o

AFWARPOBJS = ../afni_warp.o ../afni_slice_byte.o ../afni_slice_short.o      \
				../afni_slice_float.o ../afni_slice_complex.o               \
				../afni_slice_rgbyte.o
             
AFNI_3dOBJS = ../parser.o ../parser_int.o
SUMA_SRCS_OBJS = ${SUMA_SRCS_MAIN:.c=.o}

SUMA_HDRS = SUMA_Color.h SUMA_DOmanip.h SUMA_input.h SUMA_MiscFunc.h SUMA_suma.h SUMA_trackball.h	\
		 SUMA_define.h SUMA_gen_include.h SUMA_Macros.h SUMA_prototype.h SUMA_SVmanip.h SUMA_SphericalMapping.h  \
		 SUMA_DataSets.h SUMA_Homer.h

#library only
${SUMALIB} : libply.a libglut.a ${SUMA_OBJS}
	rm -f ${SUMALIB}
	ar q ${SUMALIB} ${SUMA_OBJS}
	echo "library Rebuilt ..."
	$(RANLIB) ${SUMALIB} 

#Main objects, You don't want main functions in libSUMA.a 
mainobj: ${SUMALIB} ${SUMA_SRCS_OBJS}

clean:
	$(RM) *.o

.c.o:
	${CC} -DSUMA_COMPILED ${CCOPT} ${WARNOPT} ${SUMA_INCLUDE_PATH} -c $*.c 

SUMA_glxdino:
	$(RM) $@
	${CC} ${CCOPT} ${WARNOPT} -o $@ SUMA_glxdino.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMA_LINK_LIB}

SUMA_pixmap2eps:
	$(RM) $@
	${CC} ${CCOPT} ${WARNOPT} -o $@ SUMA_pixmap2eps.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMA_LINK_LIB}

suma: libSUMA.a SUMA_suma.o 
	$(RM) $@
	${CC} -DSUMA_COMPILED ${CCOPT} ${WARNOPT} -o suma ${AFNI_OBJS} SUMA_suma.o ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} \
		${AFNI_3dOBJS} MarchingCubes/debug/MarchingCubes.o			\
		${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

MakeColorMap: SUMA_Color.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_MakeColorMap_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_Color.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

ScaleToMap: SUMA_Color.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_ScaleToMap_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_Color.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SUMA_FreeSurfer: SUMA_Surface_IO.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_FreeSurfer_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_Surface_IO.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SUMA_Read_SpecFile: SUMA_Load_Surface_Object.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_Read_SpecFile_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_Load_Surface_Object.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SUMA_Load_Surface_Object: SUMA_Load_Surface_Object.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_Load_Surface_Object_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_Load_Surface_Object.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SUMA_SureFit: SUMA_Surface_IO.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_SureFit_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_Surface_IO.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

CompareSurfaces: SUMA_compare_surfaces.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_compare_surfaces_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_compare_surfaces.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SUMA_inflate_compare: SUMA_inflate_compare.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_inflate_compare_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_inflate_compare.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

CreateIcosahedron: SUMA_SphericalMapping.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_CreateIcosahedron_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_SphericalMapping.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SUMA_Map_SurfacetoSurface: SUMA_SphericalMapping.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_Map_SurfacetoSurface_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_SphericalMapping.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

MapIcosahedron: SUMA_SphericalMapping.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_MapIcosahedron_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_SphericalMapping.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SUMA_SurfNorm: SUMA_SurfNorm.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_SurfNorm_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_SurfNorm.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SUMA_Ply_Read: SUMA_Surface_IO.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_Ply_Read_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_Surface_IO.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SUMA_ParseName: SUMA_StripPath.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_ParseName_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_StripPath.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}
 
ConvertSurface: SUMA_Surface_IO.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_ConvertSurface_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_Surface_IO.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SurfaceMetrics: SUMA_Load_Surface_Object.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_SurfaceMetrics_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_Load_Surface_Object.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

inspec: SUMA_Load_Surface_Object.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_inspec_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_Load_Surface_Object.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

quickspec: SUMA_Load_Surface_Object.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_quickspec_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_Load_Surface_Object.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SUMA_TestDataSets: SUMA_DataSets.c
	$(RM) $@
	${CC} -DSUMA_TEST_DATA_SETS_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_DataSets.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SUMA_TestDsetIO: SUMA_DataSets.c
	$(RM) $@
	${CC} -DSUMA_Test_DSET_IO_STANDALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_DataSets.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

ConvertDset: SUMA_DataSets.c
	$(RM) $@
	${CC} -DSUMA_ConvertDset_STANDALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_DataSets.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

ROI2dataset: SUMA_Surface_IO.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_ROI2dataset_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_Surface_IO.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SurfSmooth: SUMA_GeomComp.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_SurfSmooth_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_GeomComp.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SurfPatch: SUMA_GeomComp.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_getPatch_STANDALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_GeomComp.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SurfQual: SUMA_GeomComp.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_SurfQual_STANDALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_GeomComp.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SUMA_Homer: SUMA_Homer.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_Homer_STAND_ALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_Homer.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

SurfClust: SUMA_SurfClust.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_SurfClust_STANDALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_SurfClust.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} ${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

IsoSurface: SUMA_IsoSurface.c MarchingCubes.o
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_IsoSurface_STANDALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_IsoSurface.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} 	\
		${AFNI_3dOBJS} MarchingCubes/debug/MarchingCubes.o			\
		${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

ConvexHull: SUMA_ConvexHull.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_ConvexHull_STANDALONE ${CCOPT} ${WARNOPT} -o $@ ${AFNI_OBJS} SUMA_ConvexHull.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} 	\
		${AFNI_3dOBJS} MarchingCubes/debug/MarchingCubes.o			\
		${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}

3dSkullStrip: SUMA_3dSkullStrip.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_BrainWrap_STANDALONE ${CCOPT} ${WARNOPT} -o $@ $(AFWARPOBJS) ${AFNI_OBJS} SUMA_3dSkullStrip.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} 	\
		${AFNI_3dOBJS} MarchingCubes/debug/MarchingCubes.o			\
		${SUMALIBLIST} ${AFNILIB} ${ZLIB} ${SUMA_LINK_LIB}
       
3dVol2Surf: SUMA_3dVol2Surf.c 
	$(RM) $@
	${CC} -DSUMA_COMPILED ${CCOPT} ${WARNOPT} -o $@ SUMA_3dVol2Surf.c ${SUMA_INCLUDE_PATH}	${SUMA_LINK_PATH} 	\
		${AFNI_3dOBJS} ${AFNI_OBJS} -lf2c			\
		${SUMALIBLIST} ${AFNILIB} ${ZLIB}			\
		${SUMA_LINK_LIB}

3dSurf2Vol: SUMA_3dSurf2Vol.c 
	$(RM) $@
	${CC} -DSUMA_COMPILED ${CCOPT} ${WARNOPT} -o $@ SUMA_3dSurf2Vol.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} \
		${AFNI_3dOBJS} ${AFNI_OBJS} -lf2c			\
		${SUMALIBLIST} ${AFNILIB} ${ZLIB}			\
		${SUMA_LINK_LIB}

SurfMeasures: SUMA_SurfMeasures.c 
	$(RM) $@
	${CC} -DSUMA_COMPILED ${CCOPT} ${WARNOPT} -o $@ SUMA_SurfMeasures.c		\
		${SUMA_INCLUDE_PATH}	${SUMA_LINK_PATH} 				\
		${AFNI_3dOBJS} ${AFNI_OBJS} -lf2c			\
		${SUMALIBLIST} ${AFNILIB} ${ZLIB}			\
		${SUMA_LINK_LIB}

FScurv_to_1D: SUMA_Surface_IO.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_FScurv_to_1D_STAND_ALONE	\
   	${CCOPT} ${WARNOPT} -o $@ SUMA_Surface_IO.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} 	\
		${AFNI_3dOBJS} ${AFNI_OBJS} -lf2c			\
		${SUMALIBLIST} ${AFNILIB} ${ZLIB}			\
		${SUMA_LINK_LIB}

FSread_annot: SUMA_Surface_IO.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_FSread_annot_STAND_ALONE	\
   	${CCOPT} ${WARNOPT} -o $@ SUMA_Surface_IO.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} 		\
		${AFNI_3dOBJS} ${AFNI_OBJS} -lf2c			\
		${SUMALIBLIST} ${AFNILIB} ${ZLIB}			\
		${SUMA_LINK_LIB}
      
ShowCmap: SUMA_xColBar.c
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_SHOW_CMAP_STAND_ALONE	\
   	${CCOPT} ${WARNOPT} -o $@ SUMA_xColBar.c ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} 		\
		${AFNI_3dOBJS} ${AFNI_OBJS} -lf2c			\
		${SUMALIBLIST} ${AFNILIB} ${ZLIB}			\
		${SUMA_LINK_LIB}


SampBias: SUMA_SampBias.c ${SUMALIB} 
	$(RM) $@
	${CC} -DSUMA_COMPILED -DSUMA_SampBias_STAND_ALONE \
		${CCOPT} ${WARNOPT} -o $@ SUMA_SampBias.c ${SUMA_INCLUDE_PATH}	${SUMA_LINK_PATH}		\
		${AFNI_3dOBJS} ${AFNI_OBJS} -lf2c			\
		${SUMALIBLIST} ${AFNILIB} ${ZLIB}			\
		${SUMA_LINK_LIB} 

resolvitivity: SUMA_resolvitivity.c ${SUMALIB} 
	$(RM) $@
	${CC} -DSUMA_COMPILED \
		${CCOPT} ${WARNOPT} -o $@ SUMA_resolvitivity.c ${SUMA_INCLUDE_PATH}		\
		${AFNI_3dOBJS} ${AFNI_OBJS} -lf2c			\
		${SUMALIBLIST}  ${AFNILIB} ${ZLIB}			\
		${SUMA_LINK_PATH} ${SUMA_LINK_LIB} 

growingsphere: SUMA_growingsphere.c ${SUMALIB} 
	$(RM) $@
	${CC} -DSUMA_COMPILED \
		${CCOPT} ${WARNOPT} -o $@ SUMA_growingsphere.c ${SUMA_INCLUDE_PATH}		\
		${AFNI_3dOBJS} ${AFNI_OBJS} -lf2c			\
		${SUMALIBLIST}  ${AFNILIB} ${ZLIB}			\
		${SUMA_LINK_PATH} ${SUMA_LINK_LIB} 

3dfilter: SUMA_3dfilter.c ${SUMALIB} 
	$(RM) $@
	${CC} -DSUMA_COMPILED \
		${CCOPT} ${WARNOPT} -o $@ SUMA_3dfilter.c ${SUMA_INCLUDE_PATH}		\
		${AFNI_3dOBJS} ${AFNI_OBJS} -lf2c			\
		${SUMALIBLIST} ${AFNILIB} ${ZLIB}			\
		${SUMA_LINK_PATH} ${SUMA_LINK_LIB} 

SurfMesh: SUMA_coarsen.c libgts.a
	$(RM) $@
	${CC} -DSUMA_COMPILED \
   	${CCOPT} ${WARNOPT} -o $@ SUMA_coarsen.c 	\
      -Igts/src -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include/  \
      ${SUMA_INCLUDE_PATH} ${SUMA_LINK_PATH} 		\
		${AFNI_3dOBJS} ${AFNI_OBJS} -lf2c			\
		${SUMALIBLIST} -lglib ${AFNILIB} ${ZLIB}			\
		${SUMA_LINK_LIB} libgts.a 

MarchingCubes.o: MarchingCubes/MarchingCubes.c
	( cd MarchingCubes ;	\
	  $(RM) mc	debug/*.o;	\
	  $(MAKE)  mc	;	\
	  $(CP) -p debug/$@ .. ; )
     	
libply.a: 
	( cd PLY ;	\
	  $(MAKE) clean $@ 'CC=$(CC)' 'RM=$(RM)' 'RANLIB=$(RANLIB)' 'CCOPT=$(CCOPT)' 'WARNOPT=$(WARNOPT)' ; \
	  $(RANLIB) $@ ;	\
	  $(CP) -p $@ .. ; )

libgts.a:
	( cd gts ;	\
	  aclocal ;	\
	  autoheader ;	\
	  automake -a ;	\
	  autoconf ;	\
	  ./configure	;	\
	  $(MAKE) ; \
	  $(RANLIB) src/.libs/$@ ;	\
	  $(CP) -p src/.libs/$@ .. ; )

AddGTS: ${SUMA_GTS_OBJS}
	( echo "Adding SUMA's GTS functions to libSUMA.a";	\
		ar q libSUMA.a ${SUMA_GTS_OBJS} ; \
	  	$(RANLIB) ${SUMALIB} ;  )

libglut.a:
	( cd GLUT/libglut ;	\
	  $(MAKE) clean $@ 'SUMA_INCLUDE_PATH=$(SUMA_INCLUDE_PATH)' 'CC=$(CC)' 'RM=$(RM)' 'RANLIB=$(RANLIB)' 'CCOPT=$(CCOPT)' 'WARNOPT=$(WARNOPT)' ; \
	  $(RANLIB) $@ ;	\
     $(CP) -p $@ ../.. ; )
     
install:
	@echo Installing Binaries...
	@if [ ! -d $(INSTALLDIR_SUMA) ]; then $(MKDIR) -p $(INSTALLDIR_SUMA); echo WARNING: directory $(INSTALLDIR_SUMA) has been created from SUMA directory. ; fi
	@if [ -f suma ]; then mv suma ${INSTALLDIR_SUMA}; fi;
	@if [ -f CreateIcosahedron ]; then mv CreateIcosahedron ${INSTALLDIR_SUMA}; fi;
	@if [ -f SUMA_Map_SurfacetoSurface ]; then mv SUMA_Map_SurfacetoSurface ${INSTALLDIR_SUMA}; fi;
	@if [ -f MapIcosahedron ]; then mv MapIcosahedron ${INSTALLDIR_SUMA}; fi;
	@if [ -f SUMA_SureFit ]; then mv SUMA_SureFit ${INSTALLDIR_SUMA}; fi;
	@if [ -f SUMA_Load_Surface_Object ]; then mv SUMA_Load_Surface_Object ${INSTALLDIR_SUMA}; fi;
	@if [ -f SUMA_Read_SpecFile ]; then mv SUMA_Read_SpecFile ${INSTALLDIR_SUMA}; fi;
	@if [ -f SUMA_FreeSurfer ]; then mv SUMA_FreeSurfer ${INSTALLDIR_SUMA}; fi;
	@if [ -f ScaleToMap ]; then mv ScaleToMap ${INSTALLDIR_SUMA}; fi;
	@if [ -f MakeColorMap ]; then mv MakeColorMap ${INSTALLDIR_SUMA}; fi;
	@if [ -f ROI2dataset ]; then mv ROI2dataset ${INSTALLDIR_SUMA}; fi;
	@if [ -f SurfSmooth ]; then mv SurfSmooth ${INSTALLDIR_SUMA}; fi;
	@if [ -f SurfClust ]; then mv SurfClust ${INSTALLDIR_SUMA}; fi;
	@if [ -f IsoSurface ]; then mv IsoSurface ${INSTALLDIR_SUMA}; fi;
	@if [ -f SurfPatch ]; then mv SurfPatch ${INSTALLDIR_SUMA}; fi;
	@if [ -f SurfQual ]; then mv SurfQual ${INSTALLDIR_SUMA}; fi;
	@if [ -f CompareSurfaces ]; then mv CompareSurfaces ${INSTALLDIR_SUMA}; fi;
	@if [ -f SUMA_inflate_compare ]; then mv SUMA_inflate_compare ${INSTALLDIR_SUMA}; fi;
	@if [ -f SUMA_Ply_Read ]; then mv SUMA_Ply_Read ${INSTALLDIR_SUMA}; fi;
	@if [ -f SUMA_ParseName ]; then mv SUMA_ParseName ${INSTALLDIR_SUMA}; fi;
	@if [ -f 3dVol2Surf ]; then mv 3dVol2Surf ${INSTALLDIR_SUMA}; fi;
	@if [ -f 3dSurf2Vol ]; then mv 3dSurf2Vol ${INSTALLDIR_SUMA}; fi;
	@if [ -f SurfMeasures ]; then mv SurfMeasures ${INSTALLDIR_SUMA}; fi;
	@if [ -f SUMA_glxdino ]; then mv SUMA_glxdino ${INSTALLDIR_SUMA}; fi;
	@if [ -f SUMA_pixmap2eps ]; then mv SUMA_pixmap2eps ${INSTALLDIR_SUMA}; fi;
	@if [ -f ConvertSurface ]; then mv ConvertSurface ${INSTALLDIR_SUMA}; fi;
	@if [ -f ConvertDset ]; then mv ConvertDset ${INSTALLDIR_SUMA}; fi;
	@if [ -f SurfaceMetrics ]; then mv SurfaceMetrics ${INSTALLDIR_SUMA}; fi;
	@if [ -f inspec ]; then mv inspec ${INSTALLDIR_SUMA}; fi;
	@if [ -f quickspec ]; then mv quickspec ${INSTALLDIR_SUMA}; fi;
	@if [ -f FScurv_to_1D ]; then mv FScurv_to_1D ${INSTALLDIR_SUMA}; fi;
	@if [ -f FSread_annot ]; then mv FSread_annot ${INSTALLDIR_SUMA}; fi;
	@if [ -f ShowCmap ]; then mv ShowCmap ${INSTALLDIR_SUMA}; fi;
	@if [ -f SurfMesh ]; then mv SurfMesh ${INSTALLDIR_SUMA}; fi;
	@if [ -f SampBias ]; then mv SampBias ${INSTALLDIR_SUMA}; fi;
	@if [ -f 3dSkullStrip ]; then mv 3dSkullStrip ${INSTALLDIR_SUMA}; fi;

packbins:
	if [ ! -d SUMA_bin	]; then $(MKDIR) SUMA_bin; fi
	chmod u+x ./@SUMA_CreateCompileStamp
	./@SUMA_CreateCompileStamp SUMA_bin/@SUMA_CompileStamp
	@if [ -f suma ]; then $(CP) -p suma SUMA_bin/; fi;
	@if [ -f CreateIcosahedron ]; then $(CP) -p CreateIcosahedron SUMA_bin/; fi;
	@if [ -f SUMA_Map_SurfacetoSurface ]; then $(CP) -p SUMA_Map_SurfacetoSurface SUMA_bin/; fi;
	@if [ -f MapIcosahedron ]; then $(CP) -p MapIcosahedron SUMA_bin/; fi;
	@if [ -f SUMA_SureFit ]; then $(CP) -p SUMA_SureFit SUMA_bin/; fi;
	@if [ -f SUMA_Load_Surface_Object ]; then $(CP) -p SUMA_Load_Surface_Object SUMA_bin/; fi;
	@if [ -f SUMA_Read_SpecFile ]; then $(CP) -p SUMA_Read_SpecFile SUMA_bin/; fi;
	@if [ -f SUMA_FreeSurfer ]; then $(CP) -p SUMA_FreeSurfer SUMA_bin/; fi;
	@if [ -f ScaleToMap ]; then $(CP) -p ScaleToMap SUMA_bin/; fi;
	@if [ -f MakeColorMap ]; then $(CP) -p MakeColorMap SUMA_bin/; fi;
	@if [ -f ROI2dataset ]; then $(CP) -p ROI2dataset SUMA_bin/; fi;
	@if [ -f SurfSmooth ]; then $(CP) -p SurfSmooth SUMA_bin/; fi;
	@if [ -f SurfClust ]; then $(CP) -p SurfClust SUMA_bin/; fi;
	@if [ -f IsoSurface ]; then $(CP) -p IsoSurface SUMA_bin/; fi;
	@if [ -f SurfPatch ]; then $(CP) -p SurfPatch SUMA_bin/; fi;
	@if [ -f SurfQual ]; then $(CP) -p SurfQual SUMA_bin/; fi;
	@if [ -f CompareSurfaces ]; then $(CP) -p CompareSurfaces SUMA_bin/; fi;
	@if [ -f SUMA_inflate_compare ]; then $(CP) -p SUMA_inflate_compare SUMA_bin/; fi;
	@if [ -f SUMA_Ply_Read ]; then $(CP) -p SUMA_Ply_Read SUMA_bin/; fi;
	@if [ -f SUMA_ParseName ]; then $(CP) -p SUMA_ParseName SUMA_bin/; fi;
	@if [ -f 3dVol2Surf ]; then $(CP) -p 3dVol2Surf SUMA_bin/; fi;
	@if [ -f 3dSurf2Vol ]; then $(CP) -p 3dSurf2Vol SUMA_bin/; fi;
	@if [ -f SurfMeasures ]; then $(CP) -p SurfMeasures SUMA_bin/; fi;
	@if [ -f SUMA_glxdino ]; then $(CP) -p SUMA_glxdino SUMA_bin/; fi;
	@if [ -f SUMA_pixmap2eps ]; then $(CP) -p SUMA_pixmap2eps SUMA_bin/; fi;	
	@if [ -f ConvertSurface ]; then $(CP) -p ConvertSurface SUMA_bin/; fi;	
	@if [ -f ConvertDset ]; then $(CP) -p ConvertDset SUMA_bin/; fi;	
	@if [ -f SurfaceMetrics ]; then $(CP) -p SurfaceMetrics SUMA_bin/; fi;	
	@if [ -f inspec ]; then $(CP) -p inspec SUMA_bin/; fi;	
	@if [ -f quickspec ]; then $(CP) -p quickspec SUMA_bin/; fi;	
	@if [ -f FScurv_to_1D ]; then $(CP) -p FScurv_to_1D SUMA_bin/; fi;	
	@if [ -f FSread_annot ]; then $(CP) -p FSread_annot SUMA_bin/; fi;	
	@if [ -f ShowCmap ]; then $(CP) -p ShowCmap SUMA_bin/; fi;	
	@if [ -f SampBias ]; then $(CP) -p SampBias SUMA_bin/; fi;	
	@if [ -f SurfMesh ]; then $(CP) -p SurfMesh SUMA_bin/; fi;	
	@if [ -f 3dSkullStrip ]; then $(CP) -p 3dSkullStrip SUMA_bin/; fi;

	$(TAR) -cf $(SUMA_BIN_ARCHIVE) SUMA_bin
	${RM} -r SUMA_bin
	
all: libSUMA.a mainobj suma install 
allgts: libSUMA.a libgts.a mainobj AddGTS suma SurfMesh install 

standalones: CreateIcosahedron SUMA_Map_SurfacetoSurface MapIcosahedron       \
	SUMA_SureFit SUMA_Load_Surface_Object SUMA_Read_SpecFile	      \
	SUMA_FreeSurfer ScaleToMap MakeColorMap CompareSurfaces		      \
	SUMA_inflate_compare SUMA_Ply_Read SUMA_ParseName ConvertSurface      \
	3dVol2Surf 3dSurf2Vol SurfMeasures SurfaceMetrics    \
	ROI2dataset SurfSmooth SurfPatch SurfQual inspec quickspec FScurv_to_1D FSread_annot	\
   SUMA_TestDsetIO ConvertDset ShowCmap SurfClust IsoSurface 3dSkullStrip
   
#SUMA_TestDataSets
 
anew: clean libSUMA.a mainobj suma standalones packbins install 

testGL: SUMA_glxdino SUMA_pixmap2eps
