Porting Code

Porting to another platform Porting is the task of taking a program that works on one platform and making it work on another. This involves compiler changes, but also potentially adding new code to make up for missing features, or using new libraries available on the new platform, etc.!

Conditional Code

In porting we often have to add code that is included differently depending on the platform we are building on. A recommended approach is to place

#include "config.h"

at the top of C/C++ files, or include Fortran modules, etc. This can then include complex compile-time definitions.

When placing conditional code for different systems, name the conditional after the feature, not the platform. e.g., if building for a Cray, with a missing function srch() that is present on other platforms, then do:

#if !defined(HAS_DSRCH) ! Add dummy subroutine
subroutine d_srch
end
#endif

When building the code, configure can test to see if srch() exists or not. If it does exist then the variable HAS_SRCH can be defined as a compile option i.e. -DHAS_SRCH.