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