/*! \page install Installation/Linkage libMASA uses the GNU autotools suite (autoconf, automake, and libtool) for its development build system. This system is popular among the Linux development community and provides a familiar build environment for end users. To build libMASA starting from a release distribution, untar the distribution and enter the top-level directory.
 > tar xvfz masa-$(VERSION).tar.gz
 > cd masa-$(VERSION)/            

Configuration Requirements

Since libMASA provides a Fortran interface, a valid Fortran90 compiler is also required. To date, libMASA has been successfully tested with \e gfortran and the Intel \e ifort compilers. The configuration step will look for available compilers in the user environment but as with any \e autoconf based configuration, these can be overridden with command line arguments (by setting \c CXX, \c FC, and \c F77 appropriately). Installation Directory: Use the --prefix option to specify your desired top-level installation directory for MASA. The examples below all configure libMASA to be installed in the user's ~/bin/masa directory. Once configured, issue a make to build the software. If successful, this will build the libMASA library (static and dynamic versions) and several examples. \code > make \endcode Verifying the build: To verify that the software is working properly, a test option is provided to run a short suite of functionality tests against the local build. To run, issue a make check to run the tests. If successful, output similar to the following will be generated. \code > make check ------------------------------------------------------- Initializing MASA Tests ------------------------------------------------------- PASS: init.sh PASS: misc PASS: fail_cond PASS: catch_exception PASS: register PASS: poly PASS: uninit PASS: pass_func PASS: purge PASS: heat_const_steady PASS: heat_var_steady PASS: heat_const_unsteady PASS: heat_var_unsteady PASS: euler1d PASS: euler2d PASS: euler3d PASS: euler_transient_1d PASS: euler_chem_1d PASS: ns2d PASS: ns3d PASS: ns3d_phys PASS: n2d3d PASS: axi_euler PASS: axi_cns PASS: rans_sa PASS: sod ------------------------------------------------------- Initializing CMASA Tests ------------------------------------------------------- PASS: c_init.sh PASS: c_misc PASS: c_purge PASS: c_heat1dsc PASS: c_heat2dsc PASS: c_heat3dsc PASS: c_euler1d PASS: c_euler2d PASS: c_euler3d PASS: c_euler_chem_1d PASS: c_navierstokes2d PASS: c_navierstokes3d ------------------------------------------------------- Initializing FortMASA Tests ------------------------------------------------------- PASS: f_init.sh MASA :: selected mytest PASS: f_misc PASS: f_purge PASS: f_heat PASS: f_euler1d PASS: f_euler2d PASS: f_euler3d PASS: f_euler_chem_1d PASS: f_cns2d PASS: f_cns3d ------------------------------------------------------- Initializing MASA Examples Tests ------------------------------------------------------- PASS: example_test.sh ------------------------------------------------------- Finalizing MASA Tests, have a well verified day ------------------------------------------------------- PASS: finalize.sh =================== All 50 tests passed =================== \endcode

Installation

After the build is complete, issue a make install to install the library. The installation will consist of three top-level directories housing the library, include files, and example files. An example of the top-level directories after installation is shown below: \code > make install \endcode Top-level libMASA installation directory: \code > ls $HOME/bin/masa/ examples/ include/ lib/ \endcode

Library Linkage

To link an external C/C++ or Fortran application with the library, the \c include directory must be added to the compilers include search path in order to access the masa.h header file (or for Fortran, the \c lib directory should be added to access the pre-compiled masa F90 module). The \c lib directory should also be added to the linker search path along with a request to link against the libMASA library. Several example link steps are provided below. These examples assume that the libMASA library has been successfully built and installed previously in the users's ~/bin/masa directory:

C/C++ Example

\code > $(CC) -I$HOME/bin/masa/include app.c -L$HOME/bin/masa/lib -lmasa \endcode If you set your PKG_CONFIG_PATH environment variable to contain $HOME/lib/pkgconfig you can use pkg-config to lookup the relevant linking information automatically: \code > $(CC) `pkg-config --cflags masa` app.c `pkg-config --libs masa` \endcode

Fortran Example

Fortran applications also require linking against the fmasa library: \code > $(FC) -I$HOME/bin/masa/lib app.f90 -L$HOME/bin/masa/lib -lfmasa -lmasa \endcode As with C/C++, users can use make use of pkg-config: \code > $(FC) `pkg-config --variable=fflags masa` app.f90 `pkg-config --variable=flibs masa` \endcode To embed the dynamic library search path for the libMASA library directly into the application executable, use an additional linker option as follows:

C/C++ Example

\code > $(CC) -I$HOME/bin/masa/include app.c -L$HOME/bin/masa/lib \ -Wl,-rpath,$HOME/bin/masa/lib -lmasa \endcode Important Note: F90 module file formats are not consistent across multiple compilers. Therefore, a Fortran application and the libMASA F90 interface \em must be built with the same Fortran compiler family to ensure compatibility. */