source: trunk/src/mesh/Makefile @ 202

Last change on this file since 202 was 202, checked in by cxsong, 18 years ago

additions to makefile, error codes, changes to element.

File size: 13.1 KB
Line 
1# you need to change this to where your version of python is installed.
2# tell make where to find python header files
3RP_INSTALL_BASE = /opt/rappture
4
5# tell make where to find the expat & libscew sources
6INCL_RP_DEPS    = -I$(RP_INSTALL_BASE)/include
7
8#EXPAT_HEADERS   = $(RP_INSTALL_BASE)/include
9#LIB_EXPAT_INCL  = -I $(EXPAT_HEADERS)
10#SCEW_HEADERS    = $(RP_INSTALL_BASE)/include/scew
11#LIB_SCEW_INCL   = -I $(SCEW_HEADERS) -I $(EXPAT_HEADERS)
12
13LIB_SCEW_FLAG   = -L$(RP_INSTALL_BASE)/lib -lscew
14
15#LIB_SCEW_FLAG   = /opt/rappture/lib/libscew.a
16#LIB_SCEW_FLAG   = -static -L/opt/rappture/lib -lscew
17
18
19# everything below should be ok, but check to make sure
20#
21# define the top of our directory structure
22# replace this with the full path of the directory
23# containing the rappture directory
24TOP_DIR         = /home/cxsong
25
26# define the top of the rappture directory structure
27RP_BASE   = $(TOP_DIR)/rappture
28
29# define which programs can be made
30PROGS           =   librpmesh
31
32# define our compiling environment
33#
34CC              = gcc
35CXX             = g++
36DEBUG           = -g -Wall
37DEBUG_PLUS      = -g -DDEBUG
38PY              = $(RP_INSTALL_BASE)/bin/python
39MEX             = mex
40OCT             = mkoctfile
41LN              = ln
42
43# define our directories
44#
45INCLUDES_DIR    = $(RP_BASE)/include
46BIN_DIR         = $(RP_BASE)/bin
47LIB_DIR         = $(RP_BASE)/src
48SRC_DIR         = $(RP_BASE)/src
49TEST_DIR        = $(RP_BASE)/test
50
51MESH_SRC        = $(SRC_DIR)/mesh
52CORE_SRC        = $(SRC_DIR)/core
53FORT_SRC        = $(SRC_DIR)/fortran
54CEE_SRC         = $(SRC_DIR)/cee
55PY_SRC          = $(SRC_DIR)/python
56MATLAB_SRC      = $(SRC_DIR)/matlab
57OCTAVE_SRC      = $(SRC_DIR)/octave
58
59LIB_INC_PREFIX  = -Wl,-rpath,$(LIB_DIR) -L$(LIB_DIR)
60LIB_RP_OBJECTS  = $(LIB_INC_PREFIX) -lRpObjects
61LIB_RAPPTURE    = -Wl,-rpath,$(LIB_DIR) -L$(LIB_DIR) -lrappture
62LIB_RPMESH      = -Wl,-rpath,$(LIB_DIR) -L/$(LIB_DIR) -lrpmesh
63
64INCL_CORE       = -I$(INCLUDES_DIR)/core
65INCL_CEE        = -I$(INCLUDES_DIR)/cee
66INCL_FORTRAN    = -I$(INCLUDES_DIR)/fortran
67INCL_PY         = -I$(INCLUDES_DIR)/python
68INCL_MATLAB     = -I$(INCLUDES_DIR)/matlab
69INCL_OCTAVE     = -I$(INCLUDES_DIR)/octave
70
71CFLAGS = -fPIC
72
73# default:
74
75all: ${PROGS}
76#install: install_py install_rappture install_rpobjs install_matlab install_octave
77
78RP_IO_DEPS      = RpLibrary.o RpLibraryCInterface.o RpLibraryFInterface.o \
79                  scew_extras.o
80RP_UNITS_DEPS   = RpUnitsStd.o RpUnits.o RpUnitsCInterface.o RpUnitsFInterface.o
81RP_OTHER_DEPS   = RpFortranCommon.o RpBindingsDict.o
82RP_OBJS_DEP     = RpVariable.o RpAbout.o RpNumber.o RpString.o RpBoolean.o \
83                  RpChoice.o RpOption.o RpUnitsStd.o RpUnits.o #RpValue.o\
84                  # RpValueDouble.o RpValueString.o
85RP_MESH_DEPS = element.o util.o grid1d.o grid1d_reg.o grid2d.o node3d.o node2d.o #mesh.o field.o endian.o
86
87LDLIB_MACOSX = -dynamiclib -o $(LIB_DIR)/$@.dylib
88LDLIB_LINUX = -shared -Wl,-rpath,$(LIB_DIR)/ -Wl,-soname,$@.so -o $(LIB_DIR)/$@.so.0.0
89LDLIB_LINUX_MESH = -shared -Wl,-rpath,$(LIB_DIR)/mesh/ -Wl,-soname,$@.so -o $(LIB_DIR)/mesh/$@.so.0.0
90
91# include rappture library definitions
92
93#### librappture shared object ###########################################
94
95librpmesh: $(RP_MESH_DEPS)
96        if test "`uname`" == "Darwin"; then \
97                $(CXX) $(DEGUG) $(LDLIB_MACOSX) $^ $(LIB_SCEW_FLAG) -lm; \
98                ar -r $@.a $^; \
99                ranlib -s $@.a; \
100        else \
101                $(CXX) $(DEGUG) $(LDLIB_LINUX) $^; \
102                /sbin/ldconfig -n $(LIB_DIR); \
103                ar -r $@.a $^; \
104                ranlib $@.a; \
105        fi
106librappture: $(RP_IO_DEPS) $(RP_UNITS_DEPS) $(RP_OTHER_DEPS)
107        if test "`uname`" == "Darwin"; then \
108                $(CXX) $(DEGUG) $(LDLIB_MACOSX) $^ $(LIB_SCEW_FLAG) -lm; \
109                ar -r $@.a $^; \
110                ranlib -s $@.a; \
111        else \
112                $(CXX) $(DEGUG) $(LDLIB_LINUX) $^ $(LIB_SCEW_FLAG) -lm; \
113                /sbin/ldconfig -n $(LIB_DIR); \
114                ar -r $@.a $^; \
115                ranlib $@.a; \
116        fi
117
118install_rappture: librappture
119        if test "`uname`" == "Darwin"; then \
120                cp $<.dylib $(RP_INSTALL_BASE)/lib; \
121                cp $<.a $(RP_INSTALL_BASE)/lib; \
122        else \
123                cp -d $<.so* $(RP_INSTALL_BASE)/lib; \
124                cp -d $<.a $(RP_INSTALL_BASE)/lib; \
125        fi
126
127#### libRpObjects ########################################################
128libRpObjects: $(RP_OBJS_DEP)
129        if test "`uname`" == "Darwin"; then \
130                $(CXX) $(DEGUG) $(LDLIB_MACOSX) $^ -lstdc++; \
131        else \
132                $(CXX) $(DEGUG) $(LDLIB_LINUX) $^ -lstdc++; \
133                /sbin/ldconfig -n $(LIB_DIR); \
134        fi
135
136install_rpobjs: libRpObjects
137        if test "`uname`" == "Darwin"; then \
138                cp $<.dylib $(RP_INSTALL_BASE)/lib; \
139        else \
140                cp -d $<.so* $(RP_INSTALL_BASE)/lib; \
141        fi
142
143#### Python ########################################################
144Rappture.Units: RpUnits.o RpUnitsStd.o
145        $(PY) $(PY_SRC)/setup.py build
146
147install_py: RpUnits.o RpUnitsStd.o
148        $(PY) $(PY_SRC)/setup.py install
149
150
151#### Matlab ########################################################
152install_matlab: librappture RpMatlab
153        if test ! -d $(RP_INSTALL_BASE)/lib/matlab; then \
154                mkdir $(RP_INSTALL_BASE)/lib/matlab; \
155        fi
156        cp -d $(MATLAB_SRC)/*.mex* $(RP_INSTALL_BASE)/lib/matlab
157
158#### Octave ########################################################
159install_octave: librappture RpOctave
160        if test ! -d $(RP_INSTALL_BASE)/lib/octave; then \
161                mkdir $(RP_INSTALL_BASE)/lib/octave; \
162        fi
163        cp -d $(OCTAVE_SRC)/*.oct* $(RP_INSTALL_BASE)/lib/octave
164
165
166###############################################
167# include mesh objects
168#
169grid2d.o: grid2d.cc
170        $(CXX) $(CFLAGS) $(DEBUG) -c $?
171grid1d.o: grid1d.cc
172        $(CXX) $(CFLAGS) $(DEBUG) -c $?
173grid1d_reg.o: grid1d_reg.cc
174        $(CXX) $(CFLAGS) $(DEBUG) -c $?
175util.o: util.cc
176        $(CXX) $(CFLAGS) $(DEBUG) -c $?
177node2d.o: node2d.cc
178        $(CXX) $(CFLAGS) $(DEBUG) -c $?
179node3d.o: node3d.cc
180        $(CXX) $(CFLAGS) $(DEBUG) -c $?
181endian.o: endian.cc
182        $(CXX) $(CFLAGS) $(DEBUG) -c $?
183element.o: element.cc
184        $(CXX) $(CFLAGS) $(DEBUG) -c $?
185
186# include core source files
187
188RpLibrary.o: $(CORE_SRC)/RpLibrary.cc
189        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) $(INCL_RP_DEPS) -o $@ -c $?
190
191scew_extras.o: $(CORE_SRC)/scew_extras.c
192        $(CC) $(CFLAGS) $(DEBUG) $(INCL_CORE) $(INCL_RP_DEPS) -o $@ -c $?
193
194RpVariable.o: $(CORE_SRC)/RpVariable.cc
195        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) -o $@ -c $?
196
197RpAbout.o: $(CORE_SRC)/RpAbout.cc
198        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) -o $@ -c $?
199
200RpNumber.o: $(CORE_SRC)/RpNumber.cc
201        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) -o $@ -c $?
202
203RpString.o: $(CORE_SRC)/RpString.cc
204        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) -o $@ -c $?
205
206RpBoolean.o: $(CORE_SRC)/RpBoolean.cc
207        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) -o $@ -c $?
208
209RpChoice.o: $(CORE_SRC)/RpChoice.cc
210        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) -o $@ -c $?
211
212RpOption.o: $(CORE_SRC)/RpOption.cc
213        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) -o $@ -c $?
214
215RpUnitsStd.o: $(CORE_SRC)/RpUnitsStd.cc
216        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) -o $@ -c $?
217
218RpUnits.o: $(CORE_SRC)/RpUnits.cc
219        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) -o $@ -c $?
220
221RpBindingsDict.o: $(CORE_SRC)/RpBindingsDict.cc
222        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) -o $@ -c $?
223
224RpValue.o: $(CORE_SRC)/RpValue.cc
225        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) -o $@ -c $?
226
227RpValueDouble.o: $(CORE_SRC)/RpValueDouble.cc
228        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) -o $@ -c $?
229
230RpValueString.o: $(CORE_SRC)/RpValueString.cc
231        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) -o $@ -c $?
232
233
234
235# include cee binding definitions
236
237RpUnitsCInterface.o: $(CEE_SRC)/RpUnitsCInterface.cc
238        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) $(INCL_CEE) -o $@ -c $?
239
240RpLibraryCInterface.o: $(CEE_SRC)/RpLibraryCInterface.cc
241        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) $(INCL_CEE) $(INCL_RP_DEPS) -o $@ -c $?
242
243
244
245
246# include fortran binding definitions
247
248RpUnitsFInterface.o: $(FORT_SRC)/RpUnitsFInterface.cc
249        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) $(INCL_FORTRAN) -o $@ -c $?
250
251RpFortranCommon.o: $(FORT_SRC)/RpFortranCommon.c
252        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_FORTRAN) -o $@ -c $<
253
254RpLibraryFInterface.o: $(FORT_SRC)/RpLibraryFInterface.cc
255        $(CXX) $(CFLAGS) $(DEBUG) $(INCL_CORE) $(INCL_FORTRAN) $(INCL_RP_DEPS) -o $@ -c $?
256
257
258# matlab bindings
259MEX_INCLS = $(INCL_MATLAB) $(INCL_CORE) $(INCL_CEE) $(INCL_RP_DEPS)
260MEX_OPTS = -g -outdir $(MATLAB_SRC) -L$(LIB_DIR) -lrappture
261MATLAB_COMP_ARGS = $(MATLAB_SRC)/RpMatlabInterface.cc $(MEX_INCLS) $(MEX_OPTS)
262
263RpMatlab:
264        $(MEX) $(MATLAB_SRC)/rpLib.cc                   $(MATLAB_COMP_ARGS)
265        $(MEX) $(MATLAB_SRC)/rpLibXml.cc                $(MATLAB_COMP_ARGS)
266        $(MEX) $(MATLAB_SRC)/rpLibElement.cc            $(MATLAB_COMP_ARGS)
267        $(MEX) $(MATLAB_SRC)/rpLibElementAsObject.cc    $(MATLAB_COMP_ARGS)
268        $(MEX) $(MATLAB_SRC)/rpLibElementAsType.cc      $(MATLAB_COMP_ARGS)
269        $(MEX) $(MATLAB_SRC)/rpLibElementAsComp.cc      $(MATLAB_COMP_ARGS)
270        $(MEX) $(MATLAB_SRC)/rpLibElementAsId.cc        $(MATLAB_COMP_ARGS)
271        $(MEX) $(MATLAB_SRC)/rpLibChildren.cc           $(MATLAB_COMP_ARGS)
272        $(MEX) $(MATLAB_SRC)/rpLibChildrenByType.cc     $(MATLAB_COMP_ARGS)
273#$(MEX) $(MATLAB_SRC)/rpChildrenAsObject.cc         $(MATLAB_COMP_ARGS)
274#$(MEX) $(MATLAB_SRC)/rpChildrenAsType.cc           $(MATLAB_COMP_ARGS)
275#$(MEX) $(MATLAB_SRC)/rpChildrenAsComp.cc           $(MATLAB_COMP_ARGS)
276#$(MEX) $(MATLAB_SRC)/rpChildrenAsId.cc             $(MATLAB_COMP_ARGS)
277        $(MEX) $(MATLAB_SRC)/rpLibGet.cc                $(MATLAB_COMP_ARGS)
278        $(MEX) $(MATLAB_SRC)/rpLibGetString.cc          $(MATLAB_COMP_ARGS)
279        $(MEX) $(MATLAB_SRC)/rpLibGetDouble.cc          $(MATLAB_COMP_ARGS)
280        $(MEX) $(MATLAB_SRC)/rpLibPut.cc                $(MATLAB_COMP_ARGS)
281        $(MEX) $(MATLAB_SRC)/rpLibPutString.cc          $(MATLAB_COMP_ARGS)
282        $(MEX) $(MATLAB_SRC)/rpLibPutDouble.cc          $(MATLAB_COMP_ARGS)
283        $(MEX) $(MATLAB_SRC)/rpLibNodeComp.cc           $(MATLAB_COMP_ARGS)
284        $(MEX) $(MATLAB_SRC)/rpLibNodeType.cc           $(MATLAB_COMP_ARGS)
285        $(MEX) $(MATLAB_SRC)/rpLibNodeId.cc             $(MATLAB_COMP_ARGS)
286        $(MEX) $(MATLAB_SRC)/rpLibResult.cc             $(MATLAB_COMP_ARGS)
287        $(MEX) $(MATLAB_SRC)/rpUnitsDefineUnit.cc       $(MATLAB_COMP_ARGS)
288#$(MEX) $(MATLAB_SRC)/rpDefineConv.cc               $(MATLAB_COMP_ARGS)
289        $(MEX) $(MATLAB_SRC)/rpUnitsGetUnits.cc         $(MATLAB_COMP_ARGS)
290        $(MEX) $(MATLAB_SRC)/rpUnitsGetUnitsName.cc     $(MATLAB_COMP_ARGS)
291        $(MEX) $(MATLAB_SRC)/rpUnitsGetExponent.cc      $(MATLAB_COMP_ARGS)
292        $(MEX) $(MATLAB_SRC)/rpUnitsGetBasis.cc         $(MATLAB_COMP_ARGS)
293        $(MEX) $(MATLAB_SRC)/rpUnitsFind.cc             $(MATLAB_COMP_ARGS)
294        $(MEX) $(MATLAB_SRC)/rpUnitsMakeMetric.cc       $(MATLAB_COMP_ARGS)
295        $(MEX) $(MATLAB_SRC)/rpUnitsConvert.cc          $(MATLAB_COMP_ARGS)
296        $(MEX) $(MATLAB_SRC)/rpUnitsConvertStr.cc       $(MATLAB_COMP_ARGS)
297        $(MEX) $(MATLAB_SRC)/rpUnitsConvertObjStr.cc    $(MATLAB_COMP_ARGS)
298        $(MEX) $(MATLAB_SRC)/rpUnitsConvertDbl.cc       $(MATLAB_COMP_ARGS)
299        $(MEX) $(MATLAB_SRC)/rpUnitsConvertObjDbl.cc    $(MATLAB_COMP_ARGS)
300        $(MEX) $(MATLAB_SRC)/rpAddPresets.cc            $(MATLAB_COMP_ARGS)
301
302OCT_INCLS = $(INCL_OCTAVE) $(INCL_CORE) $(INCL_RP_DEPS)
303OCTAVE_COMP_ARGS = $(OCT_INCLS) -L$(LIB_DIR) -lrappture
304RpOctave:
305        $(OCT) $(OCTAVE_SRC)/rpAddPresets.cc            $(OCTAVE_COMP_ARGS)
306        $(OCT) $(OCTAVE_SRC)/rpLib.cc                   $(OCTAVE_COMP_ARGS)
307        $(OCT) $(OCTAVE_SRC)/rpLibChildrenByType.cc     $(OCTAVE_COMP_ARGS)
308        $(OCT) $(OCTAVE_SRC)/rpLibChildren.cc           $(OCTAVE_COMP_ARGS)
309        $(OCT) $(OCTAVE_SRC)/rpLibElementAsComp.cc      $(OCTAVE_COMP_ARGS)
310        $(OCT) $(OCTAVE_SRC)/rpLibElementAsId.cc        $(OCTAVE_COMP_ARGS)
311        $(OCT) $(OCTAVE_SRC)/rpLibElementAsObject.cc    $(OCTAVE_COMP_ARGS)
312        $(OCT) $(OCTAVE_SRC)/rpLibElementAsType.cc      $(OCTAVE_COMP_ARGS)
313        $(OCT) $(OCTAVE_SRC)/rpLibElement.cc            $(OCTAVE_COMP_ARGS)
314        $(OCT) $(OCTAVE_SRC)/rpLibGet.cc                $(OCTAVE_COMP_ARGS)
315        $(OCT) $(OCTAVE_SRC)/rpLibGetString.cc          $(OCTAVE_COMP_ARGS)
316        $(OCT) $(OCTAVE_SRC)/rpLibGetDouble.cc          $(OCTAVE_COMP_ARGS)
317        $(OCT) $(OCTAVE_SRC)/rpLibNodeComp.cc           $(OCTAVE_COMP_ARGS)
318        $(OCT) $(OCTAVE_SRC)/rpLibNodeId.cc             $(OCTAVE_COMP_ARGS)
319        $(OCT) $(OCTAVE_SRC)/rpLibNodeType.cc           $(OCTAVE_COMP_ARGS)
320        $(OCT) $(OCTAVE_SRC)/rpLibPut.cc                $(OCTAVE_COMP_ARGS)
321        $(OCT) $(OCTAVE_SRC)/rpLibPutDouble.cc          $(OCTAVE_COMP_ARGS)
322        $(OCT) $(OCTAVE_SRC)/rpLibPutString.cc          $(OCTAVE_COMP_ARGS)
323        $(OCT) $(OCTAVE_SRC)/rpLibResult.cc             $(OCTAVE_COMP_ARGS)
324        $(OCT) $(OCTAVE_SRC)/rpLibXml.cc                $(OCTAVE_COMP_ARGS)
325        $(OCT) $(OCTAVE_SRC)/rpUnitsConvert.cc          $(OCTAVE_COMP_ARGS)
326        $(OCT) $(OCTAVE_SRC)/rpUnitsConvertDbl.cc       $(OCTAVE_COMP_ARGS)
327        $(OCT) $(OCTAVE_SRC)/rpUnitsConvertStr.cc       $(OCTAVE_COMP_ARGS)
328        $(OCT) $(OCTAVE_SRC)/rpUnitsConvertObjDbl.cc    $(OCTAVE_COMP_ARGS)
329        $(OCT) $(OCTAVE_SRC)/rpUnitsConvertObjStr.cc    $(OCTAVE_COMP_ARGS)
330        $(OCT) $(OCTAVE_SRC)/rpUnitsDefineUnit.cc       $(OCTAVE_COMP_ARGS)
331        $(OCT) $(OCTAVE_SRC)/rpUnitsFind.cc             $(OCTAVE_COMP_ARGS)
332        $(OCT) $(OCTAVE_SRC)/rpUnitsGetBasis.cc         $(OCTAVE_COMP_ARGS)
333        $(OCT) $(OCTAVE_SRC)/rpUnitsGetExponent.cc      $(OCTAVE_COMP_ARGS)
334        $(OCT) $(OCTAVE_SRC)/rpUnitsGetUnits.cc         $(OCTAVE_COMP_ARGS)
335        $(OCT) $(OCTAVE_SRC)/rpUnitsGetUnitsName.cc     $(OCTAVE_COMP_ARGS)
336        $(OCT) $(OCTAVE_SRC)/rpUnitsMakeMetric.cc       $(OCTAVE_COMP_ARGS)
337
338docs:
339        if test ! -d docs; then \
340                mkdir docs; \
341        fi
342        if test ! -d docs/doxygen; then \
343                mkdir docs/doxygen; \
344        fi
345        doxygen
346
347#### CLEAN UP ############################################################
348clean:
349        - rm -f *.o librappture.so* librappture.a libRp*.so* rp*.mex* $(OCTAVE_SRC)/rp*.o*
350        - rm -rf build
351
352#################
353
354endiantest: endiantest.o
355        $(CXX) -o $@ $<
356test_node: test_node.o
357        $(CXX) -o $@ $< $(LIB_RPMESH)
Note: See TracBrowser for help on using the repository browser.