1#*************************************************************************** 2# Makefile 3# ------------------- 4# 5# _________________________________________________________________________ 6# Build for the Graphics Utilities 7# _________________________________________________________________________ 8# 9# begin : Thu June 9 2005 10# copyright : (C) 2003 by W. Michael Brown 11# email : wmbrown@sandia.gov 12# ***************************************************************************/ 13 14#Compiler type 15#COMPILER = intel 16COMPILER = gnu 17#COMPILER = mpi 18#COMPILER = mingw 19 20#Locations of outside objects relative to a source directory 21HOBJ_DIR = ../obj 22 23BIN_DIR = ../bin 24 25ALL_DIR = . 26ALL_LIB = $(HOBJ_DIR)/liball.a 27 28GRPHICS_DIR = . 29GRPHICS_LIB = $(HOBJ_DIR)/libgraphics.a 30 31GRID_DIR = . 32GRID_LIB = $(HOBJ_DIR)/libgrid.a 33 34MOL_DIR = . 35MOL_LIB = $(HOBJ_DIR)/libmol.a 36 37MATH_DIR = . 38MATH_LIB = $(HOBJ_DIR)/libmath.a 39 40EVERY_LIB = $(MOL_LIB) $(GRID_LIB) $(GRPHICS_LIB) $(MATH_LIB) $(ALL_LIB) 41 42MOLSIM_DIR = . 43MOLSIM_LIB = $(HOBJ_DIR)/molsim.o $(HOBJ_DIR)/dynmif.o $(HOBJ_DIR)/dynmifq.o 44 45# Include directories 46INC = -I$(ALL_DIR) -I$(MOLSIM_DIR) -I$(MOL_DIR) -I$(MATH_DIR) -I$(GRID_DIR) -I$(GRPHICS_DIR) 47 48ifeq ($(COMPILER),intel) 49 CPP = icpc # C++ Compiler 50 CC = icc # C compiler 51 AR = xiar #ar 52 DBUG = -g -DDEBUG -DNANCHECK #-Wall #-ansi 53 OPT = -O2 -xP -ipo -no-prec-div -static 54endif 55 56ifeq ($(COMPILER),gnu) 57 CPP = g++ # C++ Compiler 58 CC = gcc # C compiler 59 AR = ar 60 DBUG = -O2 -g -Wall #-DDEBUG -DNANCHECK -Wall -pedantic #-ansi 61 OPT = #-O3 -g -Wall 62endif 63 64ifeq ($(COMPILER),mpi) 65 CPP = mpic++ -DMUSE_MPI # C++ Compiler 66 CC = mpicc -DMUSE_MPI # C compiler 67 AR = ar 68 DBUG = -g -DDEBUG -DNANCHECK #-Wall #-pedantic #-ansi 69 OPT = #-xN -O3 #-ipo -no-prec-div -static #-O3 70endif 71 72ifeq ($(COMPILER),mingw) 73 CPP = /cygdrive/c/MINGW/bin/g++ # C++ Compiler 74 CC = /cygdrive/c/MINGW/bin/gcc # C compiler 75 AR = /cygdrive/c/MINGW/bin/ar 76 DBUG = #-g -DDEBUG -DNANCHECK -Wall -pedantic #-ansi 77 OPT = -O3 -static 78endif 79 80# Large file support? 81LFSC = #-D_LARGEFILE_SOURCE `getconf LFS_CFLAGS` 82LFSL = #`getconf LFS_LDFLAGS` `getconf LFS_LIBS` 83 84# GNU Scientific Library? 85GSLC = #-DUSEGSL -I/usr/local/include/ 86GSLL = #-lgsl -lgslcblas 87 88# GA Library? 89LIBGAC = #-DLIBGA -I/usr/local/include/ 90LIBGAL = #-lga -L/usr/local/lib/ -Wl,--allow-multiple-definition 91 92# Movie frame support? 93MOVIE = #-DMOVIE 94 95# VTK ? 96VTKH = #-DUSEVTK -I/usr/local/include/vtk-5.0 97VTKL = #-lvtkWidgets -lvtkHybrid -lvtkVolumeRendering -lvtkRendering -lvtkIO -lvtkGenericFiltering -lvtkGraphics -lvtkImaging -l vtkFiltering -lvtkCommon -L/usr/X11R6/lib/ -lGL -lXt -lSM -lICE -lX11 -lXext -lpthread -ldl 98 99CFLAGS = $(OPT) $(MOVIE) $(DBUG) $(INC) $(GSLC) $(LIBGAC) $(VTKH) -c 100LFLAGS = $(OPT) 101LLIBS = $(GSLL) $(LIBGAL) $(LFSL) $(VTKL) 102 103# Distribution Directories 104DIST_BIN = /home/wmbrown/distbin/ 105DIST_MAN = /home/wmbrown/cpp/manpages/man1/ 106DIST_DOC = /home/wmbrown/cpp/doc/ 107 108OBJ_DIR = $(HOBJ_DIR) 109 110# Objects for this project 111THIS_OBJ = $(OBJ_DIR)/asphere_vis.o $(GRPHICS_LIB) $(MATH_LIB) $(ALL_LIB) 112EXECS = $(BIN_DIR)/asphere_vis 113 114all: paths $(EXECS) 115 116paths: $(HOBJ_DIR) $(BIN_DIR) 117 118$(HOBJ_DIR) $(BIN_DIR): 119 mkdir $@ 120 121libraries: 122 cd $(ALL_DIR); make; cd $(MATH_DIR); make; cd $(GRID_DIR); make; \ 123 cd $(GRPHICS_DIR); make; 124 125ALL_OBJS = $(OBJ_DIR)/error.o $(OBJ_DIR)/commandline.o \ 126 $(OBJ_DIR)/misc.o 127 128$(OBJ_DIR)/error.o: error.h error.cpp 129 $(CPP) $(CFLAGS) -o $@ error.cpp 130 131$(OBJ_DIR)/commandline.o: commandline.h commandline.cpp 132 $(CPP) $(CFLAGS) -o $@ commandline.cpp 133 134$(OBJ_DIR)/misc.o: misc.h misc.cpp 135 $(CPP) $(CFLAGS) -o $@ misc.cpp 136 137$(ALL_LIB): $(ALL_OBJS) 138 $(AR) -crusv $(ALL_LIB) $(ALL_OBJS) 139 140GRPHICS_O = $(OBJ_DIR)/colors.o $(OBJ_DIR)/glsurface.o 141 142$(OBJ_DIR)/colors.o: colors.h colors.cpp 143 $(CPP) $(CFLAGS) -o $@ colors.cpp 144 145$(OBJ_DIR)/glsurface.o: glsurface.h glsurface.cpp 146 $(CPP) $(CFLAGS) -o $@ glsurface.cpp 147 148$(GRPHICS_LIB): $(GRPHICS_O) 149 $(AR) -crusv $(GRPHICS_LIB) $(GRPHICS_O) 150 151MATH_OBJS = $(OBJ_DIR)/cartesian.o $(OBJ_DIR)/miscm.o \ 152 $(OBJ_DIR)/spherical.o 153 154$(OBJ_DIR)/miscm.o: miscm.h miscm.cpp 155 $(CPP) $(CFLAGS) -o $@ miscm.cpp 156 157$(OBJ_DIR)/cartesian.o: cartesian.h cartesian.cpp 158 $(CPP) $(CFLAGS) -o $@ cartesian.cpp 159 160$(OBJ_DIR)/spherical.o: spherical.h spherical.cpp 161 $(CPP) $(CFLAGS) -o $@ spherical.cpp 162 163$(MATH_LIB): $(MATH_OBJS) 164 $(AR) -crusv $(MATH_LIB) $(MATH_OBJS) 165 166$(OBJ_DIR)/asphere_vis.o: asphere_vis.cpp 167 $(CPP) $(CFLAGS) -o $@ asphere_vis.cpp 168 169$(BIN_DIR)/asphere_vis: $(THIS_OBJ) 170 $(CPP) $(LFLAGS) -o $@ $(THIS_OBJ) $(LLIBS) 171# 172# Documentation 173# 174manpages: all 175 /bin/tcsh make_manpages.sh 176 177# 178# Create a .tar distribution file 179# 180dist: all manpages 181 /bin/tcsh makedistribution.sh 182 183 184# 185# INSTALL to Mike's Directories 186install: all manpages 187 /bin/cp $(EXECS) $(DIST_BIN); \ 188 /bin/cp ./manpages/*.1 $(DIST_MAN); \ 189 /bin/cp ./manpages/*.pdf $(DIST_DOC) 190 191 192# 193# Remove objects, cores, etc. 194# 195 196clean: 197 rm -rf $(EXECS) $(THIS_OBJ) $(ALL_OBJ) $(MATH_OBJ) $(GRPHICS_O) 198 cd $(OBJ_DIR); rm -f *.o 199 200veryclean: clean 201 rm -rf *~ ./api ./manpages 202 203cleanproject: clean 204 cd $(ALL_DIR); make clean; cd $(MATH_DIR); make clean; \ 205 cd $(GRPHICS_DIR); make clean; 206