
.. MAGEMin documentation

.. image:: /figs/macOS.png
   :width: 64
   :align: right
   
External libraries		  
==================

The installation details for Mas OS X use ``Homebrew``. However, the libraries can also be installed using ``MacPorts``.

**1. C and fortran compilers**

Using either ``gcc`` or ``clang`` to compile MAGEMin is up to you as the runtime performances are similar. However, in the event you want to modify MAGEMin for your own use, I would advice that you compile MAGEMin with ``clang`` as the error handling system is more strict which will save you from having unexpected segfaults errors...

.. code-block:: shell

	brew install llvm
	brew install gcc

Note that the ``gcc`` package comes with ``gcc``, ``g++`` and ``gfortran``

**2. MPICH** (Message Passing Interface)

.. code-block:: shell

	brew install mpich

Note that ``openmpi`` can equally be used.

**3. lapacke** (``C`` version of the fortran ``lapack`` library, should now be included in the ``lapack`` libraries)

.. code-block:: shell

	brew install lapack
	
If the ``lapacke`` libraries are not included you can download the ``lapack`` package from netlib that includes it.

**4. NLopt** (Non Linear optimization library)

``NLopt`` can be installed using

.. code-block:: shell

	brew install nlopt

.. image:: /figs/macOS.png
   :width: 64
   :align: right
   

MAGEMin
=======
	
Choose the ``C`` compiler in the first line of the ``Makefile`` by commenting out one

.. code-block:: shell

	#CC=gcc
	CC=clang

Make sure the ``MPICH`` paths for libraries and include directory in the ``Makefile`` are correct for instance:

.. code-block:: shell

	LIBS   += (...) /opt/homebrew/lib/libmpich.dylib
	INC     = (...) -I/opt/homebrew/include 

Do the same for ``lapacke``:

.. code-block:: shell

	LIBS   += (...) /opt/homebrew/opt/lapack/lib/liblapacke.dylib
	INC    += (...) -I/opt/homebrew/opt/lapack/include
	
And ``NLopt``:

.. code-block:: shell

	LIBS   += (...) /opt/homebrew/lib/libnlopt.dylib
	
	
Which should give:

.. code-block:: shell

	LIBS    = -lm -framework Accelerate /opt/homebrew/opt/lapack/lib/liblapacke.dylib /opt/homebrew/lib/libnlopt.dylib /opt/homebrew/lib/libmpich.dylib
	INC     = -I/opt/homebrew/opt/lapack/include -I/opt/homebrew/include 
	
Note that this setup is provided by default in the ``Makefile`` for Mac OS X. As long as you installed every package using ``Homebrew`` you should be able to install MAGEMin without modifying these entries.

If you decided to use ``openmpi`` instead of ``mpich`` your ``Makefile`` should look like:

.. code-block:: shell

	LIBS    = -lm -framework Accelerate /opt/homebrew/opt/lapack/lib/liblapacke.dylib /opt/homebrew/opt/nlopt/lib/libnlopt.dylib /opt/homebrew/opt/openmpi/lib/libmpi.dylib  
	INC     = -I/opt/homebrew/opt/openmpi/include/ -I/opt/homebrew/opt/lapack/include -I/usr/local/include -I/opt/homebrew/opt/nlopt/include/

Then simply enter MAGEMin directory and compile MAGEMin as:

.. code-block:: shell
	
	make clean; make all;

Note that by default the optimization flag ``-O3`` and debugging flag ``-g`` are used.

To test if MAGEMin compilation was successful you can for instance check the version of MAGEMin by running:

.. code-block:: shell
	
	./MAGEMin --version

