#!/bin/sh
#
#######################################################################
#
#           Cantera Configuration File
#
#  Edit this file to control how Cantera is built. Parameters can be set
#  here, or alternatively environment variables may be set before calling
#  this script.
#
#  The default configuration uses GNU compilers (gcc/g++/g77) and
#  builds as much of Cantera and its language interfaces as it can
#  (e.g. if MATLAB is installed on your system, the MATLAB toolbox
#  will be built automatically, otherwise it will be skipped. On linux
#  or Mac OS X, this default configuration should work, and most
#  likely you don't need to edit this file at all - just run it.
#  
#  NOTE: if you DO make changes to this file, save it with another name
#  so that it will not be overwritten if you update the source
#  distribution. 

#######################################################################


# If you define this to be <prefix>, then instead of running this
# script as ./configure --prefix=<prefix> you can just run it as
# ./configure
CANTERA_CONFIG_PREFIX=${CANTERA_CONFIG_PREFIX:=""}


#----------------------------------------------------------------------
#         Language Interfaces
#----------------------------------------------------------------------
#
# Cantera has several programming language interfaces. Select the ones
# you want to build. The default is to try to build all language
# interfaces.
#
#
#----------------- Python --------------------------------------------
# 
# In addition to being one of the supported language interfaces,
# Python is used internally by Cantera, both in the build process and
# at run time (to process .cti input files). Therefore, you need to
# have Python on your system; if you don't, first install it from
# http://www.python.org before proceeding with the installation of
# Cantera.
#
# If you plan to work in Python, or you want to use the graphical
# MixMaster application, then you need the full Cantera Python
# Package. If, on the other hand, you will only use Cantera from some
# other language (e.g. MATLAB or Fortran 90/95) and only need Python
# to process .cti files, then you only need a minimal subset of the
# package (actually, only one file).

# Set PYTHON_PACKAGE to one of these three strings:
#    full      install everything needed to use Cantera from Python
#    minimal   install only enough to process .cti files
#    default   try to do a full installation, but fall back to a minimal
#              one in case of errors

PYTHON_PACKAGE=${PYTHON_PACKAGE:="default"}


# Cantera needs to know where to find the Python interpreter.  If
# PYTHON_CMD is set to "default", then the configuration process will
# look for the Python Interpreter somewhere on your PATH, either as
# 'python2' or as 'python'.  If it is not on the PATH, or has a
# different name, set this to the full path to the Python interpreter.
PYTHON_CMD=${PYTHON_CMD:="default"}

# The Cantera Python interface can be built with either the numarray
# or Numeric packages. Set this to "y" to use Numeric, or anything
# else to use numarray. Using numarray is preferred.
USE_NUMERIC=${USE_NUMERIC:="default"}

# If numarray was installed using the --home option, set this to the
# home directory for numarray.
# NUMARRAY_HOME=${NUMARRAY_HOME:="$HOME/python_modules"}

# If you want to install the Cantera Python package somewhere other
# than the default 'site-packages' directory within the Python library
# directory, then set this to the desired directory. This is useful when
# you do not have write access to the Python library directory. 
# CANTERA_PYTHON_HOME=${CANTERA_PYTHON_HOME:="$HOME/python_modules"}
  
# Set this to 'y' when site packages must be put in system directories
# but Cantera tutorials must be put in user space.  An alternative to
# doing this is to put everything in user space by running this script
# with the 'prefix' option, and defining environment variable PYTHONPATH
# to tell Python where to find the Cantera package.
#
SET_PYTHON_SITE_PACKAGE_TOPDIR=${SET_PYTHON_SITE_PACKAGE_TOPDIR:="n"}

PYTHON_SITE_PACKAGE_TOPDIR=${PYTHON_SITE_PACKAGE_TOPDIR:="/usr/local"} 



#----------- MATLAB --------------------------------------------------

# This variable controls whether the MATLAB toolbox will be built. It
# should be set to one of these strings:
#
#      "default"     the 'configure' script will try to build a simple 
#                    MATLAB MEX file. If this succeeds, BUILD_MATLAB_TOOLBOX
#                    will be set to "y", otherwise it will be set to "n".
#                    
#      "y"           build the MATLAB toolbox.
#      "n"           do not build the MATLAB toolbox, even if MATLAB is 
#                    installed.
#
# Note that you may need to run 'mex -setup' within MATLAB to
# configure it for your C++ compiler before running this script.
BUILD_MATLAB_TOOLBOX=${BUILD_MATLAB_TOOLBOX:="default"}

                                                                  
                             
#----------- Fortran 90/95 --------------------------------------------------

# This variable controls whether the Fortran 90/95 interface will be
# built. It should be set to one of these strings:
#
#      "default"    The 'configure' script will attempt to compile a small
#                   Fortran 90/05 program; if this succeeds, 
#                   BUILD_F90_INTERFACE will be set to "y", and otherwise to "n".
#      "y"          Build the Fortran 90/95 interface.
#      "n"          Do not build the Fortran 90/95 interface, even if a 
#                   Fortran 90/95 compiler is installed.

BUILD_F90_INTERFACE=${BUILD_F90_INTERFACE:="default"}

# The Fortran 90/95 compiler. If set to "default", the script will
# look for a Fortran 90/95 compiler on your system by the name of
# "f95", "gfortran", or "g95".
F90=${F90:="default"}

# Compiler option flags for the Fortran 90/95 compiler. If you are
# using the Absoft or the NAG compiler, additional options specific to
# these compilers will be added automatically, and you do not need to
# specify them here.  Otherwise, add any required compiler-specific
# flags here.
F90FLAGS=${F90FLAGS:='-O3 -g'}


#----------------------------------------------------------------------
#         Customizations / Extensions
#----------------------------------------------------------------------
#
# You can build your own libraries as part of the Cantera build process.
# This allows you to derive your own classes from those provided by 
# Cantera and build them automatically along with the rest of Cantera.
# All you need to do is specify the directory where your source code is
# located. This capability is not yet fully functional, but should work
# for C++ applications.
USER_SRC_DIR="Cantera/user"  # don't change this



#----------------------------------------------------------------------
#         Kernel Configuration
#----------------------------------------------------------------------

# If you are only planning to use a portion of Cantera, you may only
# need a stripped-down kernel. Set those features you want enabled to
# 'y', and set those you want to skip to 'n' (actually anything but
# 'y') or comment them out. Some features are dependent on others; for
# example, enabling 'CK' automatically enables KINETICS and THERMO.

# If you only need to use Cantera to evaluate thermodynamic, kinetic,
# and transport properties, it is sufficient to enable only KINETICS
# and TRANSPORT.

# Note: if you are building the full Python interface or the MATLAB
# interface, it is necessary to build the full kernel.

# thermodynamic properties 
ENABLE_THERMO='y'

# optional phase types. These 
WITH_LATTICE_SOLID='y'
WITH_METAL='y'
WITH_STOICH_SUBSTANCE='y'
WITH_PURE_FLUIDS='y'

# if set to 'y', the ck2cti program that converts Chemkin input files
# to Cantera format will be built. If you don't use Chemkin format
# files, or if you run ck2cti on some other machine, you can set this to 'n'. 
ENABLE_CK='y'

# homogeneous and heterogeneous kinetics
ENABLE_KINETICS='y'

# transport properties
ENABLE_TRANSPORT='y'  

# chemical equilibrium
ENABLE_EQUIL='y'      
     
# stirred reactor models
ENABLE_REACTORS='y'     

# One-dimensional flows
ENABLE_FLOW1D='y'

# ODE integrators and DAE solvers
ENABLE_SOLVERS='y'

# reaction path analysis
ENABLE_RXNPATH='y'         

# non-ideal pure substance models for a few fluids imported from the
# 'TPX' package. (http://adam.caltech.edu/software/tpx)
ENABLE_TPX='y'     
		

    
#----------------------------------------------------------------- 
#         BLAS and LAPACK
#-----------------------------------------------------------------
#
# Cantera comes with Fortran versions of those parts of BLAS and
# LAPACK it requires. But performance *may* be better if you use a
# version of these libraries optimized for your machine hardware. If
# you want to use your own libraries, set BLAS_LAPACK_LIBS to the
# string that should be passed to the linker to link to these
# libraries, and set BLAS_LAPACK_DIR to the directory where these
# libraries are located. Otherwise, leave these lines commented out.
#
# (The settings shown here are appropriate if you are using the ATLAS
# libraries.)
#
#BLAS_LAPACK_LIBS='-llapack -lblas'
#'-llapack -lf77blas -lcblas -latlas'
#BLAS_LAPACK_DIR='/usr/lib'
#
#
# The options below do not need to be set if you are using the default
# libraries.
#
# Set to 'lower' or 'upper', depending on whether the procedure names
# in the libraries are lowercase or uppercase. If you don't know, run
# 'nm' on the library file (e.g. 'nm libblas.a') Note that the these options
# apply to both the BLAS and LAPACK libraries. 
LAPACK_NAMES='lower'
LAPACK_FTN_TRAILING_UNDERSCORE='y'

# Currently this must be set to 'y'.
LAPACK_FTN_STRING_LEN_AT_END='y'


#------------------------------------------------------------------
#       C++ compiler options
#------------------------------------------------------------------

# the C++ compiler to use.
#
CXX=${CXX:=g++}

# the C compiler to use. This is only used to compile CVODE and
# the Python extension module.
CC=${CC:=gcc}

# C++ compiler flags
CXXFLAGS=${CXXFLAGS:="-O3 -Wall"}

# the C++ flags required for linking. Uncomment if additional flags
# need to be passed to the linker.
#LCXX_FLAGS="-framework Accelerate"   

# Ending libraries to tack onto the linking of all C++ programs
LCXX_END_LIBS=${LCXX_END_LIBS:="-lm"}

# the compiler flag to use to compile code that will be inserted into shared 
# libraries. 
PIC=${PIC:=-fPIC}

# the compiler option to create a shared library from object files
SHARED=${SHARED:="-shared"}
 

#-------------------------------------------------------------------
#      External procedures
#-------------------------------------------------------------------

# Cantera uses several external software packages, which are all in
# the 'ext' directory.. These options control how these packages are
# built.

# For external procedures written in Fortran 77, both the original F77
# source code and C souce code generated by the 'f2c' program are
# included.  Set this to "y" if you want to build Cantera using the
# f2c-generated C sources instead of using the F77 sources in the ext
# directory.

# The default is not to do this on all platforms except vc++.
# Set this to "n" to never do this on any platform.
# Note, if set to "y", Cantera does not need a fortran compiler, and 
# all fortran compiler parameters below are irrelevant.

BUILD_WITH_F2C=${BUILD_WITH_F2C:="y"}

# if you are building the external Fortran 77 procedures from the Fortran 
# source code, enter the compiler here. 
F77=${F77:=g77}

# Fortran 77 compiler flags. Note that the Fortran compiler flags must be set
# to produce object code compatible with the C/C++ compiler you are using.
FFLAGS=${FFLAGS:='-O3 -g'}

# the additional Fortran flags required for linking, if any. Leave commented
# out if no additional flags are required.
LFORT_FLAGS="-lcc_dynamic"


#------------------------------------------------------
#        other programs
#------------------------------------------------------

# the command to create a static library.
ARCHIVE=${ARCHIVE:="ar ruv"}   # linux
# ARCHIVE=${ARCHIVE:="libtool -static -o"}  # Mac OSX

# the command to run 'ranlib' if it is needed. 
RANLIB=${RANLIB:="ranlib"}

# the command to run the 'make' utility. The Cantera Makefiles are
# compatible with the GNU make utility, so if your make utility
# doesn't work, try GNU make.
MAKE=${MAKE:=make}


# file extensions
CXX_EXT=${CXX_EXT:=cpp}
F77_EXT=${F77_EXT:=f}
F90_EXT=${F90_EXT:=f90}


CT_SHARED_LIB=${CT_SHARED_LIB:=clib}

# The font to use in reaction path diagrams. This must be a font name
# recognized by the 'dot' program. On linux systems, this should be
# lowercase 'helvetica'.
RPFONT=${RPFONT:="Helvetica"}

 
CANTERA_VERSION=${CANTERA_VERSION:="1.6.0"}

#-----------------------------------------------------------------------
#------------------- don't change anything below!! ---------------------
#-----------------------------------------------------------------------

export CANTERA_VERSION
export USER_SRC_DIR
export ARCHIVE
export RANLIB
export BLAS_LAPACK_LIBS
export BLAS_LAPACK_DIR
export BUILD_WITH_F2C
export BUILD_F90
export BUILD_F90_INTERFACE
export PYTHON_PACKAGE
export BUILD_MATLAB_TOOLBOX
#export MATLAB_CMD
export CANTERA_ROOT
export CT_SHARED_LIB
export CXX
export CXX_EXT
export CXXFLAGS
export CXX_INCLUDES
export ENABLE_THERMO
export ENABLE_KINETICS
export ENABLE_TRANSPORT
export ENABLE_CK
export ENABLE_EQUIL
export ENABLE_REACTORS
export ENABLE_SOLVERS
export ENABLE_RXNPATH
export ENABLE_TPX
export ENABLE_FLOW1D
export EXE_EXT
export F77
export F77_EXT
export F90
export F90_EXT
export FFLAGS
export F77FLAGS
export F90FLAGS
export LAPACK_NAMES
export LCXX_FLAGS
export LCXX_END_LIBS
export LFORT_FLAGS
export LAPACK_FTN_STRING_LEN_AT_END
export LAPACK_FTN_TRAILING_UNDERSCORE
export LIB_DIR
export FORT_MODULE_DIRECTORY
export FORT_MODULE_PATH_COMMAND
export OBJ_EXT
export PYTHON_CMD
export SET_PYTHON_SITE_PACKAGE_DIR
export PYTHON_SITE_PACKAGE_TOPDIR
export PIC
export SHARED
export SOEXT
export MAKE
export RPFONT
export USE_VISUAL_STUDIO
export FORTRAN_LIB_DIR
export CANTERA_INSTALL_DIR
export USE_NUMERIC
export NUMARRAY_HOME
export CANTERA_PYTHON_HOME

export WITH_LATTICE_SOLID
export WITH_METAL
export WITH_STOICH_SUBSTANCE
export WITH_PURE_FLUIDS

cd config
chmod +x ./configure 
chmod +x ./config.guess
chmod +x ./config.sub
chmod +x ./install-sh

#
# Decide whether to add a prefix variable to the configure line
#
if (test "x$CANTERA_CONFIG_PREFIX" = "x")
then
   CCPREFIX=""
else 
   CCPREFIX="--prefix="$CANTERA_CONFIG_PREFIX
fi
#
# run the configure command in the config directory
#
./configure $CCPREFIX $1 $2 $3 $4

#-------------- deprecated options ------------------------------------
#
#----------------------------------------------------------------------
#         MS-Windows Options
#----------------------------------------------------------------------
#
#  These options only need to be set if you are building Cantera on 
#  a Windows PC. 
#
#  NOTE: These options are now deprecated. You should build Cantera
#  using Visual Studio .NET on Windows PCs, and not use this script
#  unless you are doing a unix-like build using cygwin.
#
#  Cantera will be installed by default in c:\cantera. Change this to
#  install it somewhere else. Use forward slashes in the path name.
#CANTERA_INSTALL_DIR=${CANTERA_INSTALL_DIR:="c:/cantera"}
 
#  On a PC running MS-Windows, Cantera can be built either using
#  Microsoft Visual Studio, with the Visual C++ and (optionally)
#  Visual Fortran compilers, or using the linux-like cygwin
#  environment with the g++ and g77 compilers. Set this to "y" to use
#  Visual Studio.
#USE_VISUAL_STUDIO=${USE_VISUAL_STUDIO:="y"}

#  If you are using Visual Studio, set this to the location of the
# directory containing the Fortran libraries. This is only needed to
# build the Matlab interface. 
#FORTRAN_LIB_DIR="D:\Program Files\Microsoft Visual Studio\DF98\LIB"

#
# If you are using Visual Studio, set this variable to indicates 
# whether you want to use DLL's. Note you need this for MSVCv7.0
# but this is turned off for MSVCv6.0
# USE_DLL=yes


