Total Pageviews

Saturday, March 5, 2011

Makefile.def.CentOS

############################################################################
#
#  Program:  OpenSees
#
#  Purpose:  A Top-level Makefile to create the libraries needed
#            to use the OpenSees framework.
#
#   version created for Redhat Enterprise LINUX distribution
#
#  Written: fmk
#  Created: 01/2003
#
#
############################################################################

# %---------------------------------%
# | NOTE:       WARNING             |
# %---------------------------------%

# on my installation tcl/tk header files were not installed
# by default. IN FACT THEY ARE NOT ON RedHat CD's. They use 3.3.5 anyway,
# kinda obsolete. Suggest you download tcl/tk8.4.6 from
# http://www.tcl.tk/software/tcltk/downloadnow84.tml
# gunzip and untar it, cd into the unix directory and issue the following 3
# commands for (with minor mod tk for tcl in first) in the unix directory:
#  ./configure --prefix=/usr/local/tcl  (./configure --prefix=/usr/local/tk)
#  ./make
#  ./make install

# If you use 3.3.5 REMOVE -D_TCL84 from the C++_FLAGS lower down in this file.

# also no MySQL!!!!! .. i got 4.0.20 from
#http://dev.mysql.com/get/Downloads/MySQL-4.0/mysql-standard-4.0.20-pc-linux-i686.tar.gz/from/pick#mirrors

# gunzip, untar and follow instructions in INSTALL-BINARY file.

# %---------------------------------%
# |  SECTION 1: PROGRAM             |
# %---------------------------------%


#
# Specify the location and name of the OpenSees interpreter program
# that will be created (if this all works!)

OpenSees_PROGRAM = $(HOME)/bin/OpenSees

# %---------------------------------%
# |  SECTION 2: MAKEFILE CONSTANTS  |
# %---------------------------------%
#
# Specify the constants the are used as control structure variables in the Makefiles.

OPERATING_SYSTEM = LINUX
GRAPHICS = UsingOpenGL

#RELIABILITY = YES_RELIABILITY, NO_RELIABILITY
RELIABILITY = NO_RELIABILITY


# %---------------------------------%
# |  SECTION 3: PATHS               |
# %---------------------------------%
#
# Note: if vendor supplied BLAS and LAPACK libraries or if you have
# any of the libraries already leave the directory location blank AND
# remove the directory from DIRS.

#  PUT YOUR HOME DIRECTOREY HERE
HOME  = /home/GL
FE    = $(HOME)/OpenSees/SRC
BASE  =

BLASdir      = $(HOME)/OpenSees/OTHER/BLAS
CBLASdir     = $(HOME)/OpenSees/OTHER/CBLAS
LAPACKdir    = $(HOME)/OpenSees/OTHER/LAPACK
ARPACKdir    = $(HOME)/OpenSees/OTHER/ARPACK
UMFPACKdir   = $(HOME)/OpenSees/OTHER/UMFPACK
METISdir     = $(HOME)/OpenSees/OTHER/METIS
SRCdir       = $(HOME)/OpenSees/SRC
#SUPERLUdir   = $(HOME)/OpenSees/OTHER/SuperLU
SUPERLUdir   = $(HOME)/OpenSees/OTHER/SuperLU_3.0/SRC
AMDdir = $(HOME)/OpenSees/OTHER/AMD

DIRS        = $(BLASdir) \
              $(CBLASdir) \
              $(SUPERLUdir) \
              $(LAPACKdir) \
              $(ARPACKdir) \
              $(UMFPACKdir) \
              $(METISdir) \
              $(SRCdir)\
              $(AMDdir)

# %-------------------------------------------------------%
# | SECTION 4: 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.a
NDARRAY_LIBRARY     = $(HOME)/lib/libndarray.a  # BJ_UCD jeremic@ucdavis.edu
MATMOD_LIBRARY      = $(HOME)/lib/libmatmod.a   # BJ_UCD jeremic@ucdavis.edu
BJMISC_LIBRARY      = $(HOME)/lib/libBJmisc.a  # BJ_UCD jeremic@ucdavis.edu
LAPACK_LIBRARY      = $(HOME)/lib/libLapack.a
BLAS_LIBRARY        = $(HOME)/lib/libBlas.a
SUPERLU_LIBRARY     = $(HOME)/lib/libSuperLU.a
CBLAS_LIBRARY       = $(HOME)/lib/libCBlas.a
ARPACK_LIBRARY      = $(HOME)/lib/libArpack.a
UMFPACK_LIBRARY     = $(HOME)/lib/libUmfpack.a
METIS_LIBRARY       = $(HOME)/lib/libMetis.a
AMD_LIBRARY = $(HOME)/lib/libAMD.a

TCL_LIBRARY         = /usr/lib64/libtcl8.4.so /usr/lib64/libtk8.4.so

GRAPHIC_LIBRARY     = -L/usr/X11/R6/lib -lGL -lGLU

RELIABILITY_LIBRARY =


# WATCH OUT .. These libraries are removed when 'make wipe' is invoked.

WIPE_LIBS = $(FE_LIBRARY) \
           $(NDARRAY_LIBRARY) \
           $(MATMOD_LIBRARY) \
           $(SUPERLU_LIBRARY) \
           $(ARPACK_LIBRARY) \
           $(UMFPACK_LIBRARY) \
           $(METIS_LIBRARY) \
           $(LAPACK_LIBRARY) \
           $(BLAS_LIBRARY) \
           $(CBLAS_LIBRARY) \
  $(RELIABILITY_LIBRARY)

# %---------------------------------------------------------%
# | SECTION 5: COMPILERS                                    |
# |                                                         |
# | The following macros specify compilers, linker/loaders, |
# | the archiver, and their options.  You need to make sure |
# | these are correct for your system.                      |
# %---------------------------------------------------------%

# ###################################################
# # Compilers
# ###################################################

CC++            =  g++
CC              =  gcc
FC              =  g77
F90             =
LINKER          =  g++

AR = ar
ARFLAGS = cqls
RANLIB = ranlib
RANLIBFLAGS     =

GRAPHIC_FLAG = -D_GLX
PROGRAMMING_FLAG =
RELIABILITY_FLAG =

C++FLAGS        = -Wall -D_LINUX -D_UNIX -D_MYSQL -D_TCL84 $(GRAPHIC_FLAG) $(RELIABILITY_FLAG)\
 $(DEBUG_FLAG) $(PROGRAMMING_FLAG) -O3 -ffloat-store -D_HTTPS

CFLAGS          = -O2 $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG)
FFLAGS          = -Wall
LINKFLAGS       = -rdynamic


# Misc
MAKE            = make
CD              = cd
ECHO            = echo
RM              = rm
RMFLAGS         = -f
SHELL           = /bin/sh

# %---------------------------------------------------------%
# | SECTION 6: 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 source files. |
# %-----------------------------------------------%
#

.cpp.o:
@$(ECHO) Making $@ from $<
$(CC++) $(C++FLAGS) $(INCLUDES) -c $<

.C.o:
@$(ECHO) Making $@ from $<
$(CC++) $(C++FLAGS) $(INCLUDES) -c $<

.c.o:
@$(ECHO) Making $@ from $<
$(CC) $(CFLAGS) -c $< -o $@

.f.o:    
@$(ECHO) Making $@ from $<
$(FC) $(FFLAGS) -c $< -o $@

.f77.o:    
@$(ECHO) Making $@ from $<
$(FC) $(FFLAGS) -c $< -o $@

.f90.o:    
@$(ECHO) Making $@ from $<
$(FC90) $(FFLAGS) -c $< -o $@

# %---------------------------------------------------------%
# | SECTION 7: 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!!     |
# %---------------------------------------------------------%
MACHINE_LINKLIBS  = -L$(BASE)/lib \
                    -L$(HOME)/lib \

MACHINE_NUMERICAL_LIBS  = -lm \
  $(ARPACK_LIBRARY) \
  $(SUPERLU_LIBRARY) \
  $(UMFPACK_LIBRARY) \
  $(LAPACK_LIBRARY)  \
  $(BLAS_LIBRARY) \
  $(CBLAS_LIBRARY) \
  $(GRAPHIC_LIBRARY)\
  $(RELIABILITY_LIBRARY)\
  $(AMD_LIBRARY) -lg2c -ldl -lpng

MACHINE_SPECIFIC_LIBS = -lssl -ldl  -lieee -lm -lc -lg2c -Wl,-rpath,/usr/local/lib \
/usr/local/mysql/lib/libmysqlclient.a

# %---------------------------------------------------------%
# | SECTION 8: INCLUDE FILES                                |
# |                                                         |
# | The following macros specify include files needed for   |
# | compilation.                                            |
# %---------------------------------------------------------%


MACHINE_INCLUDES        = -I/usr/local/BerkeleyDB.4.0/include \
                          -I/usr/local/mysql/include \
                          -I$(HOME)/include   \
                 -I$(UMFPACKdir) \
                          -I$(SUPERLUdir)

# this file contains all the OpenSees/SRC includes
include $(FE)/Makefile.incl

TCL_INCLUDES = -I/usr/local/tcl/include

INCLUDES =  $(MACHINE_INCLUDES) $(TCL_INCLUDES) $(FE_INCLUDES)

No comments:

Post a Comment