Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
############################################################################## Program: OpenSees## Purpose: A Top-level Makefile to create the libraries needed# to use the OpenSees framework.# and below.## Written: fmk# Created: 10/99## Send bug reports, comments or suggestions to fmckenna@ce.berkeley.edu############################################################################## Works on intel machine running Mac OS X.4.10 with XCode 2.4.1 with# need to install gFortran from# http://www.macresearch.org/xcode_gfortran_plugin_update# Now USING hpc.sourceforge.net# FOR PARALLEL#1. install openmpi (i used openmpi-v1.2.6.tar.gz, configured with:# configure --prefix=/usr/local/openmpi-1.2.6#2. use scalapack installer to install BLAS, BLACS, lapack & scalapack#3. http://netlib.org/scalapack/scalapack_installer.tgz# tar xvfz scalapack_installer.tgz# cd scalapack_installer_0.91# ./setup.py --downblas --downblacs --downlapack --mpibindir=/usr/local/openmpi-1.2.6/bin --mpicc=/usr/local/openmpi-1.2.6/bin/mpicc --mp#if77=/usr/local/openmpi-1.2.6/bin/mpif77 --mpiincdir=/usr/local/openmpi-1.2.6/include# mv scalapack_0.9.1 /usr/local (if not already there)#4. get MUMPS# create a Makefile.inc (either take and modify one in Make.inc) or use mine (and modify):# OpenSees/SRC/systemof_eqn/linearSOE/mumps/Makefile.inc.MacOSx#?. install blas (i used goto blas from tacc v1.17)# make F_COMPILER=gfortran BINARY32=1 SMP=1# ATLAS ~/Desktop/ATLAS/configure -b 32 -t 0# make; make install (installed in /usr/local/atlas)## And of Course Tcl from ActiveState - i used 8.5.5 version# %---------------------------------%# | SECTION 1: PROGRAM |# %---------------------------------%## Specify the location and name of the OpenSees interpreter program# that will be created (if this all works!)PROGRAMMING_MODE = SEQUENTIAL#PROGRAMMING_MODE = PARALLEL#PROGRAMMING_MODE = PARALLEL_INTERPRETERSOpenSees_PROGRAM = $(HOME)/bin/OpenSeesifeq ($(PROGRAMMING_MODE), PARALLEL)OpenSees_PROGRAM = $(HOME)/bin/OpenSeesSPendififeq ($(PROGRAMMING_MODE), PARALLEL_INTERPRETERS)OpenSees_PROGRAM = $(HOME)/bin/OpenSeesMPendifOPERATING_SYSTEM = LINUXDEBUG_MODE = NO_DEBUG#DEBUG_MODE = DEBUGRELIABILITY = NO_RELIABILITYBASE = /usr/localHOME = /Users/dimitrioslignos/research/opensees_srcFE = $(HOME)/OpenSees/SRCGRAPHICS = NONEGRAPHIC_FLAG = -D_NOGRAPHICS#GRAPHIC_LIBRARY = -framework AGL -framework OpenGL -framework Carbon#AGL_OBJS = $(FE)/renderer/AGL_Device.o#GRAPHIC_FLAG = -D_GLX#GRAPHIC_LIBRARY = -framework AGL -framework OpenGL -framework Carbon#AGL_OBJS = $(FE)/renderer/AGL_Device.o#HAVE_BLAS = YESifeq ($(PROGRAMMING_MODE), SEQUENTIAL)HAVE_BLAS = NOendifBLASdir = $(HOME)/OpenSees/OTHER/BLASCBLASdir = $(HOME)/OpenSees/OTHER/CBLASBLAS_LIBRARY = $(HOME)/lib/libBlas.aCBLAS_LIBRARY = $(HOME)/lib/libCBlas.aifeq ($(HAVE_BLAS), YES)BLASdir =BLAS_LIBRARY =CBLAS_LIBRARY =endifAMDdir = $(HOME)/OpenSees/OTHER/AMDLAPACKdir = $(HOME)/OpenSees/OTHER/LAPACKSUPERLUdir = $(HOME)/OpenSees/OTHER/SuperLU_3.0/SRCSUPERLU_DISTdir = $(HOME)/OpenSees/OTHER/SuperLU_DIST_2.0/SRCARPACKdir = $(HOME)/OpenSees/OTHER/ARPACKUMFPACKdir = $(HOME)/OpenSees/OTHER/UMFPACKMETISdir = $(HOME)/OpenSees/OTHER/METISSRCdir = $(HOME)/OpenSees/SRCDIRS = $(BLASdir) \$(CBLASdir) \$(LAPACKdir) \$(AMDdir) \$(SUPERLUdir) \$(SUPERLU_DISTdir) \$(ARPACKdir) \$(UMFPACKdir) \$(SRCdir) \$(METISdir)DISTRIBUTED_SUPERLU_LIBRARY = $(HOME)/lib/libDistributedSuperLU.aifeq ($(PROGRAMMING_MODE), SEQUENTIAL)DIRS = $(BLASdir) \$(CBLASdir) \$(LAPACKdir) \$(SUPERLUdir) \$(ARPACKdir) \$(AMDdir) \$(UMFPACKdir) \$(SRCdir) \$(METISdir)DISTRIBUTED_SUPERLU_LIBRARY =endififeq ($(PROGRAMMING_MODE), PARALLEL)GRAPHICS = NONEGRAPHIC_FLAG = -D_NOGRAPHICSGRAPHIC_LIBRARY =AGL_OBJS =PROGRAMMING_FLAG = -D_PARALLEL_PROCESSINGDIRS = $(SUPERLUdir) \$(SUPERLU_DISTdir) \$(ARPACKdir) \$(AMDdir) \$(LAPACKdir) \$(UMFPACKdir) \$(METISdir) \$(BLASdir) $(CBLASdir) \$(SRCdir)endififeq ($(PROGRAMMING_MODE), PARALLEL_INTERPRETERS)PROGRAMMING_FLAG = -D_PARALLEL_INTERPRETERSGRAPHICS = NONEGRAPHIC_FLAG = -D_NOGRAPHICSGRAPHIC_LIBRARY =AGL_OBJS =DIRS = $(SUPERLUdir) \$(SUPERLU_DISTdir) \$(LAPACKdir) \$(ARPACKdir) \$(AMDdir) \$(UMFPACKdir) \$(METISdir) \$(BLASdir) $(CBLASdir) \$(SRCdir)endif# %-------------------------------------------------------%# | SECTION 3: LIBRARIES |# | |# | The following section defines the libraries that will |# | be created and/or linked with when the libraries are |# | being created or linked with. |# %-------------------------------------------------------%## Note: if vendor supplied BLAS and LAPACK libraries leave the# libraries blank. You have to get your own copy of the tcl/tk# library!!## Note: For libraries that will be created (any in DIRS above)# make sure the directory exsists where you want the library to go!FE_LIBRARY = $(HOME)/lib/libOpenSees.aNDARRAY_LIBRARY = $(HOME)/lib/libndarray.a # BJ_UCD jeremic@ucdavis.eduMATMOD_LIBRARY = $(HOME)/lib/libmatmod.a # BJ_UCD jeremic@ucdavis.eduBJMISC_LIBRARY = $(HOME)/lib/libBJmisc.a # BJ_UCD jeremic@ucdavis.eduLAPACK_LIBRARY = $(HOME)/lib/libLapack.a#CLAPACK_LIBRARY = $(HOME)/OpenSees/OTHER/CLAPACK-3.1.1/lapack_MAC.aCLAPACK_LIBRARY =#CLBLAS_LIBRARY = $(HOME)/OpenSees/OTHER/CLAPACK-3.1.1/blas_MAC.aCLBLAS_LIBRARY =#LIBF2C_LIBRARY = $(HOME)/OpenSees/OTHER/CLAPACK-3.1.1/blas_MAC.aLIBF2C_LIBRARY =SUPERLU_LIBRARY = $(HOME)/lib/libSuperLU.aARPACK_LIBRARY = $(HOME)/lib/libArpack.aAMD_LIBRARY = $(HOME)/lib/libAMD.aUMFPACK_LIBRARY = $(HOME)/lib/libUmfpack.aMETIS_LIBRARY = $(HOME)/lib/libMetis.aTCL_LIBRARY = -framework Tcl -framework Tk# WATCH OUT .. These libraries are removed when 'make wipe' is invoked.WIPE_LIBS = $(FE_LIBRARY) \$(NDARRAY_LIBRARY) \$(MATMOD_LIBRARY) \$(LAPACK_LIBRARY) \$(AMD_LIBRARY) \$(BLAS_LIBRARY) \$(CLBLAS_LIBRARY) \$(SUPERLU_LIBRARY) \$(ARPACK_LIBRARY) \$(UMFPACK_LIBRARY) \$(METIS_LIBRARY)# %---------------------------------------------------------%# | SECTION 4: COMPILERS |# | |# | The following macros specify compilers, linker/loaders, |# | the archiver, and their options. You need to make sure |# | these are correct for your system. |# %---------------------------------------------------------%# Compilersifeq ($(PROGRAMMING_MODE), SEQUENTIAL)CC++ = g++CC = gccFC = /usr/local/bin/gfortranLINKER = $(CC++)LINKFLAGS = -Wl#LINKFLAGS = -WlelseCC++ = /usr/local/openmpi-1.2.6/bin/mpic++CC = /usr/local/openmpi-1.2.6/bin/mpiccFC = /usr/local/openmpi-1.2.6/bin/mpif77LINKER = $(CC++)LINKFLAGS = -L/usr/local/openmpi-1.2.6/lib /usr/local/openmpi-1.2.6/lib/libmpi.a#LINKFLAGS = -Wl,-u,_munmap -Wl,-multiply_defined,suppress -Wl,-u,_mmap -Wl,-multiply_defined,suppressendifAR = arARFLAGS = cqlsRANLIB = ranlibRANLIBFLAGS =# Compiler Flags## NOTES:# C++ FLAGS TAKE need _UNIX or _WIN32 for preprocessor dircetives# - the _WIN32 for the Windows95/98 or NT operating system.# C FLAGS used -DUSE_VENDOR_BLAS (needed in SuperLU) if UNIX in C++ FLAGS#OS_FLAG = -D_MACOSX# modified as optimizaton currently causing problems with Steeln01 codeifeq ($(DEBUG_MODE), DEBUG)C++FLAGS = -Wall -D_LINUX -D_UNIX -D_TCL85 -D_AMDn $(OS_FLAG) -D_HTTPS \$(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(MUMPS_FLAG) \$(PROGRAMMING_FLAG) -g -O0 -ffloat-store -arch x86_64CFLAGS = -Wall -O0 -g -arch x86_64FFLAGS = -Wall -O -DCUBLAS -x f77-cpp-input --no-second-underscore# LinkerLINKER = $(CC++)LINKFLAGS = -g -pgelseC++FLAGS = -Wall -D_LINUX -D_UNIX -D_TCL85 -D_AMDn -D_MACOSX -D_HTTPS \$(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(MUMPS_FLAG) \$(PROGRAMMING_FLAG) -O3 -ffloat-store -D_NO_PARALLEL_FILESYSTEM -arch x86_64CFLAGS = -Wall -O2 -arch x86_64FFLAGS = -Wall -O -DCUBLAS -x f77-cpp-input --no-second-underscore -m64# LinkerLINKFLAGS = -arch x86_64endif# MiscMAKE = makeCD = cdECHO = echoRM = rmRMFLAGS = -fSHELL = /bin/sh# %---------------------------------------------------------%# | SECTION 5: COMPILATION |# | |# | The following macros specify the macros used in |# | to compile the source code into object code. |# %---------------------------------------------------------%.SUFFIXES:.SUFFIXES: .C .c .f .f90 .cpp .o .cpp## %------------------%# | Default command. |# %------------------%#.DEFAULT:@$(ECHO) "Unknown target $@, try: make help"## %-------------------------------------------%# | Command to build .o files from .f files. |# %-------------------------------------------%#.cpp.o:@$(ECHO) Making $@ from $<$(CC++) $(C++FLAGS) $(INCLUDES) -c $< -o $@.C.o:@$(ECHO) Making $@ from $<$(CC++) $(C++FLAGS) $(INCLUDES) -c $< -o $@.c.o:@$(ECHO) Making $@ from $<$(CC) $(CFLAGS) -c $< -o $@.f.o:@$(ECHO) Making $@ from $<$(FC) $(FFLAGS) -c $< -o $@# %---------------------------------------------------------%# | SECTION 6: OTHER LIBRARIES |# | |# | The following macros specify other libraries that must |# | be linked with when creating executables. These are |# | platform specific and typically order does matter!! |# %---------------------------------------------------------%HAVE_SCALAPACK = YESSCALAPACK_INCLUDE =SCALAPACK_LIB =ifeq ($(PROGRAMMING_MODE), SEQUENTIAL)HAVE_SCALAPACK = NOendififeq ($(HAVE_SCALAPACK), YES)SCALAP_DIR = /usr/local/scalapack_installer_0.91SCALAP = YESSCALAP_FLAG = -D_SCALAPSCALAP_LIB_DIR = $(SCALAP_DIR)/libSCALAP_LIB = -L$(SCALAP_LIB_DIR) \-lscalapack -lreflapack -lrefblas \$(SCALAP_LIB_DIR)/blacs.a \$(SCALAP_LIB_DIR)/blacsf77.a \$(SCALAP_LIB_DIR)/blacs.aendifHAVE_MUMPS = YESMUMPS_INCLUDE =MUMPS_LIB =ifeq ($(PROGRAMMING_MODE), SEQUENTIAL)HAVE_MUMPS = NOendififeq ($(HAVE_MUMPS), YES)MUMPS_DIR = /usr/local/MUMPS_4.7.3MUMPS = YESMUMPS_FLAG = -D_MUMPS -D_OPENMPIMUMPS_LIB = -L$(MUMPS_DIR)/lib \$(FE)/system_of_eqn/linearSOE/mumps/MumpsSOE.o \$(FE)/system_of_eqn/linearSOE/mumps/MumpsSolver.o \$(FE)/system_of_eqn/linearSOE/mumps/MumpsParallelSOE.o \$(FE)/system_of_eqn/linearSOE/mumps/MumpsParallelSolver.o \-ldmumps -lpord \MUMPS_INCLUDE = -I$(MUMPS_DIR)/includeendifMACHINE_LINKLIBS = -L$(BASE)/lib \-L$(HOME)/libHAVE_CUDA = NOCUDA_DIR =CUDA_FLAG =CUDA_LIB =ifeq ($(HAVE_CUDA),YES)CUDA_DIR = /usr/local/cudaCUDA_FLAG = -D_CUDA#CUDA_LIB = -L$(CUDA_DIR)/lib -lcublasCUDA_LIB = $(FE)/system_of_eqn/linearSOE/bandGEN/BandGenLinSOE_Single.o \$(FE)/system_of_eqn/linearSOE/bandGEN/BandGenLinLapackSolver_Single.o \$(FE)/system_of_eqn/linearSOE/bandGEN/sgbsv.o \$(FE)/system_of_eqn/linearSOE/bandGEN/sgbtrs.o \$(FE)/system_of_eqn/linearSOE/bandGEN/sgbtrf.o \$(FE)/system_of_eqn/linearSOE/bandGEN/sgbtf2.o \$(FE)/system_of_eqn/linearSOE/bandGEN/slaswp.o \-L$(CUDA_DIR)/lib -cublas -lcuda \-L/usr/local/scalapack_installer_0.91/lib \-lrefblasCUDA_INCLUDE = -I$(CUDA_DIR)/includeendif#FORTO = $(LAPACKdir)/fortran.oFORTO =MACHINE_NUMERICAL_LIBS = \$(ARPACK_LIBRARY) \$(SUPERLU_LIBRARY) \$(UMFPACK_LIBRARY) \$(AMD_LIBRARY) \$(LAPACK_LIBRARY) \$(CLAPACK_LIBRARY) \$(CLBLAS_LIBRARY) \$(BLAS_LIBRARY) \$(CBLAS_LIBRARY) \$(GRAPHIC_LIBRARY)\$(FORTO) \$(CUDA_LIB) \-ldl -L/usr/local/lib /usr/local/lib/x86_64/libgfortran.aMACHINE_SPECIFIC_LIBS = $(AGL_OBJS) -lsslPARALLEL_LIB = $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o \$(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSparseGenColLinSOE.o \$(FE)/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.o \$(LAPACK_LIB) $(DISTRIBUTED_SUPERLU_LIBRARY) $(MUMPS_LIB) $(SCALAP_LIB) $(METIS_LIBRARY) \-L/usr/local/openmpi-1.2.6/lib -lmpi_cxx -lmpi_f77 -lmpi -lopen-rte -lopen-palifeq ($(PROGRAMMING_MODE), PARALLEL_INTERPRETERS)PARALLEL_LIB = $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o \$(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSparseGenColLinSOE.o \$(DISTRIBUTED_SUPERLU_LIBRARY) $(MUMPS_LIB) $(SCALAP_LIB) $(METIS_LIBRARY) \-L/usr/local/openmpi-1.2.6/lib -lmpi_cxx -lmpi_f77 -lmpi -lopen-rte -lopen-palendif# %---------------------------------------------------------%# | SECTION 7: INCLUDE FILES |# | |# | The following macros specify include files needed for |# | compilation. |# %---------------------------------------------------------%ifeq ($(PROGRAMMING_MODE), SEQUENTIAL)MACHINE_INCLUDES = -I/usr/include \-I/usr/local/include \-I$(BASE)/include \-I/usr/include/cxx \-I$(HOME)/include -I$(HOME)/blitz \-I$(CUDA_DIR)/includeelseMACHINE_INCLUDES = -I/usr/include \-I/usr/local/include \-I$(BASE)/include \-I/usr/include/cxx \-I$(FE)/../OTHER/SuperLU_DIST_2.0/SRC \-I$(HOME)/include -I$(HOME)/blitz $(MUMPS_INCLUDE) -I$(CUDA_DIR)/includeendif# this file contains all the OpenSees/SRC includesinclude $(FE)/Makefile.inclTCL_INCLUDES = -I/Library/Frameworks/Tcl.framework/Headers -I/Library/Frameworks/Tk.framework/HeadersINCLUDES = $(TCL_INCLUDES) $(FE_INCLUDES) $(MACHINE_INCLUDES)