Porting deal.II to new systems

deal.II uses very few POSIX specific system features and is otherwise fairly ISO (1998) C++ Standard compliant. Consequently, there is a good chance that deal.II will run on a reasonably well behaved system besides the ones listed in the ReadMe. Nevertheless, there are cases where some adjustments are necessary.

Unknown compiler

Currently, the deal.II CMake build system recognizes gcc, clang, as well as icc, and sets up reasonable default compiler flags.

Porting to a new platform

deal.II should support almost all reasonably POSIX compliant platforms out of the box. Nevertheless, the following bits of information might help:

Cross compiling

It is possible to use CMake to cross compile deal.II for a foreign platform. Further information on that topic can be found at the CMake wiki.

You have to set up a native deal.II build directory first and run make expand_instantiations_exe in it. The executable is needed for the build system (and obviously the cross compiled version cannot be used). Locate the expand_instantiations executable (it usually resides under ${CMAKE_BINARY_DIR}/bin and export its location with the PATH environment variable.

Assuming you have a working cross compilation toolchain, the next step is to set up a toolchain file (or for for Windows64 using MinGW). After that invoke cmake with something like:

$ cmake -DCMAKE_TOOLCHAIN_FILE=<...>/Toolchain.sample \
where CMAKE_TOOLCHAIN_FILE points to the toolchain file. The remaining configuration can be adjusted at will, see the documentation.

Valid HTML 4.01! Valid CSS!