.. _build_osx: Build for OSX ============= Prerequisites ------------- - CMake (>= 3.12.0) - GCC >= 5.0 or Clang >= 3.4 - Optional: MATLAB R2009a or greater - Optional: Git Assumed directory structure: .. raw:: html
   <ROOT>
      |-libs
      |   |- sundials
      |   |- hdf5
      |   |- superlu
      |   |- suitesparse
      |-code
      |-cadet
      |-build
   
Note that the version numbers of the files and packages below are subject to change and will not always reflect the most recent version. Also note that you have to use the same compiler for all packages. This is especially important if some of the packages are installed via a package manager such as `Homebrew `__ which uses the system compiler (Clang). Build dependencies ------------------ HDF5 ~~~~ You can either build HDF5 yourself or rely on the ``hdf5`` package of `Homebrew `__. Obtain HDF5 from Homebrew: \* Open a terminal and execute ``brew install hdf5`` \* Homebrew has installed HDF5 to ``/usr/local`` Build HDF5 yourself: \* Download CMake-enabled source from https://www.hdfgroup.org/downloads/hdf5/source-code/ \* Unzip and make sure that the directory path does not contain blank spaces \* Open a terminal and change to the unzipped directory \* Execute ``ctest -S HDF5config.cmake,BUILD_GENERATOR=Unix,INSTALLDIR="/Libs/hdf5" -C Release -V`` \* Extract the created ``HDF5-1.10.0-patch1-Darwin.tar.gz`` file to ``/Libs/hdf5`` such that you have ``/Libs/hdf5/lib`` SUNDIALS ~~~~~~~~ You can either build SUNDIALS yourself or rely on the ``sundials`` package of `Homebrew `__. Note that a version <= 3.2.1 is required whereas the current version provided by Homebrew is >= 5.1.0. Obtain SUNDIALS from Homebrew: \* Open a terminal and execute ``brew install sundials`` \* Homebrew has installed SUNDIALS to ``/usr/local`` Build SUNDIALS yourself: \* Download SUNDIALS source from http://computation.llnl.gov/projects/sundials/sundials-software \* Unzip \* Open a terminal and change to the parent directory of the unzipped directory \* Create a new folder ``sundialsbuild`` and change to it \* Execute ``cmake -DCMAKE_INSTALL_PREFIX="/Libs/sundials" -DEXAMPLES_ENABLE=OFF -DOPENMP_ENABLE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS=-fPIC -DCMAKE_BUILD_TYPE=Release ../sundials-3.2.1/`` \* Execute ``make install`` \* Delete the folder ``sundialsbuild`` (e.g., execute ``rm -rf sundialsbuild`` in the parent directory of ``sundialsbuild``) LAPACK ~~~~~~ You can either use the native LAPACK implementation provided by Mac OS X (vecLib, Accelerate) or install the freely available `Intel MKL `__ which is very fast and probably faster than Accelerate. SuperLU ~~~~~~~ - Download SuperLU source from https://github.com/xiaoyeli/superlu - Unzip - Open a terminal and change to the parent directory of the unzipped directory - Create a new folder ``superlubuild`` and change to it - Execute ``cmake -DCMAKE_INSTALL_PREFIX="/Libs/superlu" -Denable_complex=OFF -Denable_complex16=OFF -Denable_blaslib=OFF -DCMAKE_C_FLAGS=-fPIC -DCMAKE_BUILD_TYPE=Release ../SuperLU_5.2.1/`` - Execute ``make install`` - Delete the folder ``superlubuild`` (e.g., execute ``rm -rf superlubuild`` in the parent directory of ``superlubuild``) UMFPACK ~~~~~~~ - Download SuiteSparse source from http://faculty.cse.tamu.edu/davis/suitesparse.html - Unzip - Open a terminal and change to the unzipped directory - Execute ``make install INSTALL="/Libs/suitesparse" CHOLMOD_CONFIG=-DNPARTITION`` or ``make install INSTALL="/Libs/suitesparse" CHOLMOD_CONFIG=-DNPARTITION AUTOCC=no CC= CXX=`` if you want to manually select the compiler Build CADET ----------- - Download release of CADET or checkout from git - Place the source in ``/code`` and create the directory ``/build`` - Open a terminal and change to ``/build`` - If you have built HDF5 yourself, execute ``export HDF5_ROOT=/Libs/hdf5`` - If you have built SUNDIALS yourself, execute ``export SUNDIALS_ROOT=/Libs/sundials`` - Execute ``export SUPERLU_ROOT=/Libs/superlu`` - Execute ``export UMFPACK_ROOT=/Libs/suitesparse`` - If using MKL, execute ``export MKLROOT=/opt/intel/mkl`` - Using standard LAPACK: Execute ``cmake -DCMAKE_INSTALL_PREFIX="/cadet" ../code/`` Using MKL (sequential): Execute ``cmake -DCMAKE_INSTALL_PREFIX="/cadet" -DBLA_VENDOR=Intel10_64lp_seq ../code/`` Using MKL (parallel): Execute ``cmake -DCMAKE_INSTALL_PREFIX="/cadet" -DBLA_VENDOR=Intel10_64lp ../code/`` - Execute ``make`` - Execute ``make install``