# Top level Makefile for the NESL distribution. Recursively calls Makefiles # in the cvl, vcode and utils subdirectories # Choose which compiler and flags you want for each architecture. serialCC = gcc -O2 # linux gcc breaks on cvl/serial/elwise.c linuxCvlCC = gcc crayCC = cc -O -hinline3,scalar3,vector3,task0 cm2CC = gcc -O2 -DCM2 cm5CC = gcc -O2 -DCM5 masparCC = mpl_cc # For MPI, you also need to supply the location of your MPICH installation cm5_mpiCC = gcc -O2 -DMPI -DMPI_cm5 -DNOSPAWN cm5_mpidir = /u/ac/jch/mpi paragon_mpiCC = icc -O3 -nx -DMPI -DMPI_paragon -DNOSPAWN paragon_mpidir = /usr/paragon/local/mpi sp1_mpiCC = mpcc -O2 -DMPI -DMPI_rs6000 sp1_mpidir = /usr/local/mpi serial: $(MAKE) ARCH='serial' CC="$(serialCC)" cvlmake $(MAKE) ARCH='serial' CC="$(serialCC)" vcodemake $(MAKE) ARCH='serial' CC="$(serialCC)" utilsmake $(MAKE) lispsetup linux: $(MAKE) ARCH='serial' CC="$(linuxCvlCC)" cvlmake $(MAKE) MAKE="$(MAKE) -f Makefile.linux" ARCH='serial' CC="$(serialCC)" vcodemake $(MAKE) ARCH='serial' CC="$(serialCC)" XLIBPATH='/usr/X11/lib/' utilsmake $(MAKE) lispsetup cvlmake: (cd cvl/$(ARCH); \ $(MAKE) TOPCC='$(CC)'; \ mv libcvl.a ../../lib/libcvl-$(ARCH).a \ ) vcodemake: (cd vcode; \ $(MAKE) TOPCC='$(CC)' EXTRALIB='' CVLLIB='-lcvl-$(ARCH)'; \ mv vinterp ../bin/vinterp.$(ARCH) \ ) utilsmake: (cd utils; \ $(MAKE) TOPCC='$(CC)' EXTRALIB=''; \ mv xneslplot ../bin/xneslplot.$(ARCH) \ ) lispsetup: @echo '' @echo '**************************************************************' @echo ' Start up Common Lisp and type: (load "neslsrc/build.lisp")' @echo '**************************************************************' @echo '' # This is an example of how you could make a second serial version for a # different serial architecture. The result will be called "vinterp.sun4" sun4CC = acc -O2 sun4: $(MAKE) ARCH='sun4' CC="$(sun4CC)" cvlmake $(MAKE) ARCH='sun4' CC="$(sun4CC)" vcodemake $(MAKE) ARCH='sun4' CC="$(sun4CC)" utilsmake $(MAKE) lispsetup # Now for the specialized supercomputer versions of CVL cray: $(MAKE) ARCH='cray' CC='$(crayCC)' cvlmake $(MAKE) ARCH='cray' CC='$(crayCC)' vcodemake $(MAKE) ARCH='cray' CC='$(crayCC)' utilsmake cm2: $(MAKE) ARCH='cm2' CC='$(cm2CC)' cvlmake (cd vcode; \ $(MAKE) TOPCC='$(cm2CC)' EXTRALIB='-lparis' CVLLIB='-lcvl-cm2'; \ mv vinterp ../bin/vinterp.cm2 \ ) $(MAKE) ARCH='cm2' CC='$(cm2CC)' utilsmake cm5: $(MAKE) ARCH='cm5' CC='$(cm5CC)' cvlmake (cd vcode; \ $(MAKE) TOPCC='$(cm5CC)' cm5; \ mv vinterp ../bin/vinterp.cm5 \ ) $(MAKE) ARCH='cm5' CC='$(cm5CC)' utilsmake maspar: $(MAKE) ARCH='maspar' CC='$(masparCC)' cvlmake cp cvl/maspar/unc_wrap.h include cp cvl/maspar/unc_globals.h include (cd vcode; \ $(MAKE) TOPCC='$(masparCC) -DMASPAR' CVLLIB='-lcvl-maspar'; \ mv vinterp ../bin/vinterp.maspar \ ) $(MAKE) ARCH='maspar' CC='$(masparCC)' utilsmake cm5_mpi: (cd cvl/mpi; \ $(MAKE) TOPCC='$(cm5_mpiCC)' MPI_DIR='$(cm5_mpidir)' cm5mpi; \ mv libcvl.a ../../lib/libcvl-cm5-mpi.a \ ) (cd vcode; \ $(MAKE) TOPCC='$(cm5_mpiCC)' \ EXTRALIB='-lmpi' \ EXTRADIR='-L$(cm5_mpidir)/lib/cm5/ch_cmmd' \ cm5mpi; \ mv vinterp ../bin/vinterp.cm5.mpi \ ) paragon_mpi: (cd cvl/mpi; \ $(MAKE) TOPCC='$(paragon_mpiCC)' MPI_DIR='$(paragon_mpidir)' \ AR=ar860 ; \ mv libcvl.a ../../lib/libcvl-paragon-mpi.a \ ) (cd vcode; \ $(MAKE) TOPCC='$(paragon_mpiCC)' \ CVLLIB='-lcvl-paragon-mpi' \ EXTRALIB='-lmpi -lnx' \ EXTRADIR='-L$(paragon_mpidir)/lib/paragon/ch_nx'; \ mv vinterp ../bin/vinterp.mpi.paragon \ ) sp1_mpi: (cd cvl/mpi; \ $(MAKE) TOPCC='$(sp1_mpiCC)' MPI_DIR='$(sp1_mpidir)'; \ mv libcvl.a ../../lib/libcvl-sp1-mpi.a \ ) (cd vcode; \ $(MAKE) TOPCC='$(sp1_mpiCC)' \ CVLLIB='-lcvl-sp1-mpi' \ EXTRALIB='-lmpi' \ EXTRADIR='-L$(sp1_mpidir)/lib/rs6000/ch_eui'; \ mv vinterp ../bin/vinterp.mpi.sp1 \ ) clean: @echo 'Use one of:' @echo 'make serialclean, make cm2clean, make cm5clean, make crayclean, make mpiclean' vcodeutilsclean: (cd vcode; make clean) (cd utils; make clean) serialclean: (cd cvl/serial; make clean) $(MAKE) vcodeutilsclean -rm lib/libcvl-serial.a -rm bin/vinterp.serial cm2clean: (cd cvl/cm2; make clean) $(MAKE) vcodeutilsclean -rm lib/libcvl-cm2.a -rm bin/vinterp.cm2 cm5clean: (cd cvl/cm5; make clean) $(MAKE) vcodeutilsclean -rm lib/libcvl-cm5.a -rm bin/vinterp.cm5 crayclean: (cd cvl/cray; make clean) $(MAKE) vcodeutilsclean -rm lib/libcvl-cray.a -rm bin/vinterp.cray mpiclean: (cd cvl/mpi; make clean) $(MAKE) vcodeutilsclean @echo 'Remove lib/libcvl-mpi-arch.a and bin/vinterp.mpi.arch by hand' @echo '(or modify this Makefile to do it for you)' # -rm lib/libcvl-cm5-mpi.a # -rm bin/vinterp.cm5.mpi