source: trunk/src/Makefile @ 149

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

Replaced -fPIC with CFLAGS, which can be set at compile time.
Added lines to create librappture.a and install in install dir.

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