Subversion Repositories OpenSees

Rev

Rev 4212 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3445 fmk 1
############################################################################
2
#
3
#  Program:  OpenSees
4
#
5
#  Purpose:  A Top-level Makefile to create the libraries needed
6
#            to use the OpenSees framework.
7
#
8
#   version created for SDSC datastar sequential
9
#
10
#  Written: fmk
11
#  Created: 01/2003
12
#
13
#
14
############################################################################
15
 
16
# %---------------------------------%
17
# |  SECTION 1: PROGRAM             |
18
# %---------------------------------%
19
#
20
# Specify the location and name of the OpenSees interpreter program
21
# that will be created (if this all works!)
22
 
23
OpenSees_PROGRAM = $(HOME)/bin/OpenSees
24
OpenSees_PROGRAM_MPI = $(HOME)/bin/OpenSeesMPI
25
 
26
# %---------------------------------%
27
# |  SECTION 2: MAKEFILE CONSTANTS  |
28
# %---------------------------------%
29
#
30
# Specify the constants the are used as control structure variables in the Makefiles.
31
 
32
OPERATING_SYSTEM = LINUX
33
#GRAPHICS = UsingOpenGL
34
GRAPHICS =
35
PROGRAMMING_MODE = PARALLEL_INTERPRETERS
36
 
37
#DEBUG_MODE = DEBUG, NO_DEBUG
38
DEBUG_MODE = NO_DEBUG
39
 
40
#RELIABILITY = YES_RELIABILITY, NO_RELIABILITY
41
RELIABILITY = NO_RELIABILITY
42
 
43
 
44
# %---------------------------------%
45
# |  SECTION 3: PATHS               |
46
# %---------------------------------%
47
#
48
# Note: if vendor supplied BLAS and LAPACK libraries or if you have
49
# any of the libraries already leave the directory location blank AND
50
# remove the directory from DIRS.
51
 
52
BASE  =
53
#  PUT YOUR HOME DIRECTOREY HERE
54
HOME  = /u/ac/gpetropo/fmk
55
FE    = $(HOME)/OpenSees/SRC
56
 
57
 
58
BLASdir      = $(HOME)/OpenSees/OTHER/BLAS
59
CBLASdir     = $(HOME)/OpenSees/OTHER/CBLAS
60
LAPACKdir    = $(HOME)/OpenSees/OTHER/LAPACK
61
ARPACKdir    = $(HOME)/OpenSees/OTHER/ARPACK
62
UMFPACKdir   = $(HOME)/OpenSees/OTHER/UMFPACK
63
METISdir     = $(HOME)/OpenSees/OTHER/METIS
64
SRCdir       = $(HOME)/OpenSees/SRC
65
SUPERLUdir   = $(HOME)/OpenSees/OTHER/SuperLU_3.0/SRC
66
SUPERLU_DISTdir   = $(HOME)/OpenSees/OTHER/SuperLU_DIST_2.0/SRC
67
 
68
DIRS        = $(BLASdir) \
69
              $(CBLASdir) \
70
              $(LAPACKdir) \
71
              $(SUPERLUdir) \
72
              $(SUPERLU_DISTdir) \
73
              $(ARPACKdir) \
74
              $(UMFPACKdir) \
75
              $(METISdir) \
76
              $(SRCdir)
77
 
78
# %-------------------------------------------------------%
79
# | SECTION 4: LIBRARIES                                  |
80
# |                                                       |
81
# | The following section defines the libraries that will |
82
# | be created and/or linked with when the libraries are  |
83
# | being created or linked with.                         |
84
# %-------------------------------------------------------%
85
#
86
# Note: if vendor supplied BLAS and LAPACK libraries leave the
87
# libraries blank. You have to get your own copy of the tcl/tk
88
# library!!
89
#
90
# Note: For libraries that will be created (any in DIRS above)
91
# make sure the directory exsists where you want the library to go!
92
 
93
FE_LIBRARY          = $(HOME)/lib/libOpenSees.a
94
NDARRAY_LIBRARY     = $(HOME)/lib/libndarray.a  # BJ_UCD jeremic@ucdavis.edu
95
MATMOD_LIBRARY      = $(HOME)/lib/libmatmod.a   # BJ_UCD jeremic@ucdavis.edu
96
BJMISC_LIBRARY      = $(HOME)/lib/libBJmisc.a  # BJ_UCD jeremic@ucdavis.edu
97
LAPACK_LIBRARY      = $(HOME)/lib/libLapack.a
98
BLAS_LIBRARY        = $(HOME)/lib/libBlas.a
99
SUPERLU_LIBRARY     = $(HOME)/lib/libSuperLU.a
100
CBLAS_LIBRARY       = $(HOME)/lib/libCBlas.a
101
ARPACK_LIBRARY      = $(HOME)/lib/libArpack.a
102
UMFPACK_LIBRARY     = $(HOME)/lib/libUmfpack.a
103
METIS_LIBRARY       = $(HOME)/lib/libMetis.a
104
DISTRIBUTED_SUPERLU_LIBRARY     = $(HOME)/lib/libDistributedSuperLU.a
105
 
106
TCL_LIBRARY         = /usr/local/tcl8.4/lib64/libtcl8.4.so \
107
	 	/usr/local/tk8.4/lib64/libtk8.4.so
108
 
109
GRAPHIC_LIBRARY     = -L/usr/include/GL -lGL -lGLU
110
 
111
 
112
#RELIABILITY_LIBRARY = $(HOME)/lib/libReliability.a
113
RELIABILITY_LIBRARY =
114
 
115
 
116
# WATCH OUT .. These libraries are removed when 'make wipe' is invoked.
117
 
118
WIPE_LIBS	= $(FE_LIBRARY) \
119
           $(NDARRAY_LIBRARY) \
120
           $(MATMOD_LIBRARY) \
121
           $(ARPACK_LIBRARY) \
122
           $(DISTRIBUTED_SUPERLU_LIBRARY) \
123
           $(SUPERLU_LIBRARY) \
124
           $(UMFPACK_LIBRARY) \
125
           $(METIS_LIBRARY) \
126
           $(LAPACK_LIBRARY) \
127
           $(BLAS_LIBRARY) \
128
           $(CBLAS_LIBRARY) \
129
	   $(RELIABILITY_LIBRARY)
130
 
131
# %---------------------------------------------------------%
132
# | SECTION 5: COMPILERS                                    |
133
# |                                                         |
134
# | The following macros specify compilers, linker/loaders, |
135
# | the archiver, and their options.  You need to make sure |
136
# | these are correct for your system.                      |
137
# %---------------------------------------------------------%
138
 
139
# ###################################################
140
# # Compilers
141
# ###################################################
142
 
143
#CC++            =  xlC_r
144
#CC              =  xlc_r
145
#FC              =  xlf_r
146
 
147
#F90             =  xlf90_r
148
#LINKER          =  xlC_r
149
 
150
CC++            =  mpicxx
151
CC              =  mpicc
152
FC              =  mpif77
153
 
154
F90             =  mpif90
155
FORTRAN             =  $(FC)
156
 
157
LINKER          =  $(CC++)
158
 
159
AR		= ar
160
ARCH		= ar
161
 
162
ARFLAGS		= -v -q
163
#ARCHFLAGS       = cqls
164
ARCHFLAGS       = -v -q
165
 
166
RANLIB		= ranlib
167
 
168
RANLIBFLAGS     =
169
 
170
 
171
GRAPHIC_FLAG = -D_NOGRAPHICS -D_GLX
172
GRAPHIC_FLAG = -D_NOGRAPHICS
173
PROGRAMMING_FLAG =
174
 
175
PROGRAMMING_FLAG =
176
 
177
ifeq ($(PROGRAMMING_MODE), PARALLEL)
178
PROGRAMMING_FLAG = -D_PARALLEL_PROCESSING
179
endif
180
 
181
ifeq ($(PROGRAMMING_MODE), PARALLEL_INTERPRETERS)
182
PROGRAMMING_FLAG = -D_PARALLEL_INTERPRETERS
183
endif
184
 
185
 
186
#RELIABILITY_FLAG = -D_RELIABILITY
187
RELIABILITY_FLAG =
188
 
189
#DEBUG_FLAG = -D_G3DEBUG
190
DEBUG_FLAG =
191
 
192
OPT_FLAG = -O3
193
#-qstrict  -q64
194
PROF_FLAG =
195
#-g -pg
196
COMP_FLAG = -D_TCL84 -DMPICH_IGNORE_CXX_SEEK
197
#-qnoipa
198
C++FLAGS         = -D_LINUX -D_UNIX  $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(OPT_FLAG) $(COMP_FLAG)\
199
		$(PROGRAMMING_FLAG) -D_KAI  -cpp $(PROF_FLAG)
200
 
201
CFLAGS          = $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG)  -D_KAI -D_PARALLEL_PROCESSING $(OPT_FLAG) $(COMP_FLAG) $(PROF_FLAG)
202
FFLAGS          = -qextname $(OPT_FLAG) $(COMP_FLAG) $(PROF_FLAG)
203
LINKFLAGS       = $(PROF_FLAG)
204
 
205
#-bnoquiet -bbigtoc
206
 
207
# Misc
208
MAKE            = /usr/bin/gmake
209
CD              = cd
210
ECHO            = echo
211
RM              = rm
212
RMFLAGS         = -f
213
SHELL           = /bin/sh
214
 
215
# %---------------------------------------------------------%
216
# | SECTION 6: COMPILATION                                  |
217
# |                                                         |
218
# | The following macros specify the macros used in         |
219
# | to compile the source code into object code.            |
220
# %---------------------------------------------------------%
221
 
222
.SUFFIXES:
223
.SUFFIXES:	.C .c .f .f90 .cpp .o .cpp
224
 
225
#
226
# %------------------%
227
# | Default command. |
228
# %------------------%
229
#
230
.DEFAULT:
231
	@$(ECHO) "Unknown target $@, try:  make help"
232
#
233
# %-----------------------------------------------%
234
# |  Command to build .o files from source files. |
235
# %-----------------------------------------------%
236
#
237
 
238
 
239
.cpp.o:
240
	@$(ECHO) Making $@ from $< $@ with $(CC++) $(C++FLAGS) $(INCLUDES) -c $<
241
	@$(CC++) $(C++FLAGS) $(INCLUDES) -c $<
242
 
243
 
244
.C.o:
245
	@$(ECHO) Making $@ from $<
246
	$(CC++) $(C++FLAGS) $(INCLUDES) -c $<
247
 
248
.c.o:
249
	@$(ECHO) Making $@ from $<
250
	$(CC) $(CFLAGS) -c  $<
251
 
252
.f.o:
253
	@$(ECHO) Making $@ from $<
254
	$(FC) $(FFLAGS) -c  $<
255
 
256
.f77.o:
257
	@$(ECHO) Making $@ from $<
258
	$(FC) $(FFLAGS) -c $<
259
 
260
.f90.o:
261
	@$(ECHO) Making $@ from $<
262
	$(FC90) $(FFLAGS) -c $<
263
 
264
# %---------------------------------------------------------%
265
# | SECTION 7: OTHER LIBRARIES                              |
266
# |                                                         |
267
# | The following macros specify other libraries that must  |
268
# | be linked with when creating executables. These are     |
269
# | platform specific and typically order does matter!!     |
270
# %---------------------------------------------------------%
271
 
272
 
273
 
274
MACHINE_LINKLIBS  = -L$(BASE)/lib \
275
                    -L$(HOME)/lib
276
 
277
 
278
HAVEPETSC = NO
279
PETSCINC =
280
PETSC_LIB =
281
PETSC_FLAG =
282
 
283
ifeq ($(HAVEPETSC), YES)
284
 
285
PETSC_DIR = /usr/local/apps/petsc-2.2.1-64
286
PETSC_ARCH = rs6000_64
287
BOPT = O
288
 
289
PETSC = YES
290
PETSC_FLAG = -D_PETSC
291
PETSCINC = -I$(PETSC_DIR)/include -I$(PETSC_DIR)/bmake/$(PETSC_ARCH) -D_PETSC -DPETSC_USE_BOPT_g -DPETSC_USE_EXTERN_CXX
292
 
293
 
294
PETSC_LIB =  -L$(PETSC_DIR)/lib/libg/$(PETSC_ARCH) \
295
	-lpetscsnes -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc \
296
	$(FE)/system_of_eqn/linearSOE/petsc/PetscSOE.o \
297
	$(FE)/system_of_eqn/linearSOE/petsc/PetscSolver.o \
298
	$(FE)/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o
299
 
300
endif
301
 
302
HAVEMUMPS = NO
303
MUMPS_INCLUDE =
304
MUMPS_LIB =
305
 
306
ifeq ($(HAVEMUMPS), YES)
307
 
308
MUMPS_DIR = /users/ucb/ux455280/MUMPS_4.7.3
309
MUMPS = YES
310
MUMPS_FLAG = -D_MUMPS
311
MUMPS_LIB = -L$(MUMPS_DIR)/lib \
312
	-ldmumps -lpord  -lpesslsmp -lblacssmp \
313
	$(FE)/system_of_eqn/linearSOE/mumps/MumpsSOE.o \
314
	$(FE)/system_of_eqn/linearSOE/mumps/MumpsSolver.o \
315
	$(FE)/system_of_eqn/linearSOE/mumps/MumpsParallelSOE.o \
316
	$(FE)/system_of_eqn/linearSOE/mumps/MumpsParallelSolver.o
317
 
318
MUMPS_INCLUDE = -I$(MUMPS_DIR)/include
319
 
320
endif
321
 
322
#PARALLEL_LIB = 	$(FE)/system_of_eqn/linearSOE/diagonal/DistributedDiagonalSOE.o \
323
#	$(FE)/system_of_eqn/linearSOE/diagonal/DistributedDiagonalSolver.o \
324
#	$(FE)/system_of_eqn/linearSOE/diagonal/DistributedDiagonalSolver.o \
325
#	$(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSparseGenColLinSOE.o \
326
#	$(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o
327
 
328
 
329
HPM_LIB =
330
 
331
MACHINE_NUMERICAL_LIBS  = -lm \
332
  $(ARPACK_LIBRARY) \
333
  $(SUPERLU_LIBRARY) \
334
  $(UMFPACK_LIBRARY) \
335
  $(LAPACK_LIBRARY)  \
336
  $(BLAS_LIBRARY) \
337
  $(CBLAS_LIBRARY) \
338
  $(GRAPHIC_LIBRARY)\
339
  $(RELIABILITY_LIBRARY) \
340
  $(DISTRIBUTED_SUPERLU_LIBRARY) \
341
  $(METIS_LIBRARY) $(PARALLEL_LIB) $(PETSC_LIB) $(HPM_LIB)
342
 
343
 
344
MACHINE_SPECIFIC_LIBS = -L${MKL_HOME}/lib/em64t -lmkl -lguide -lpthread -lmkl_gfortran -lmkl_lapack \
345
	-L${INTEL_HOME}/lib -lifport -lifcore -lsvml -lipgo -lirc -lirc_s -ldl
346
 
347
 
348
 
349
# %---------------------------------------------------------%
350
# | SECTION 8: INCLUDE FILES                                |
351
# |                                                         |
352
# | The following macros specify include files needed for   |
353
# | compilation.                                            |
354
# %---------------------------------------------------------%
355
 
356
 
357
 
358
MACHINE_INCLUDES        = -I/usr/local/BerkeleyDB.4.0/include \
359
	-I/usr/include/mysql \
360
	-I/usr/local/apps/hpm/include \
361
	-I$(HOME)/include   \
362
	-I$(UMFPACKdir) \
363
	-I$(SUPERLUdir) \
364
	-I$(SUPERLU_DISTdir) \
365
	-I/usr/lpp/ppe.poe/include \
366
	$(PETSCINC)
367
 
368
 
369
 
370
# this file contains all the OpenSees/SRC includes
371
include $(FE)/Makefile.incl
372
 
373
#TCL_INCLUDES = -I/home/fmk/tcl8.3.3/generic
374
 
375
INCLUDES =  $(MACHINE_INCLUDES)   $(TCL_INCLUDES) $(FE_INCLUDES)