Version 3 (modified by heisenbug, 6 years ago) (diff)

broken link

Idiom: platform names

There are three platforms of interest when building GHC:

  • $(BUILDPLATFORM): The build platform.
    The platform on which we are doing this build.
  • $(HOSTPLATFORM): The host platform.
    The platform on which these binaries will run.
  • $(TARGETPLATFORM): The target platform.
    The platform for which this compiler will generate code.

These platforms are set when running the configure script, using the --build, --host, and --target options. The mk/ file, which is generated by configure from, defines several symbols related to the platform settings.

We don't currently support build and host being different, because the build process creates binaries that are both run during the build, and also installed.

If host and target are different, then we are building a cross-compiler. For GHC, this means a compiler which will generate intermediate .hc files to port to the target architecture for bootstrapping. The libraries and stage 2 compiler will be built as HC files for the target system (see Porting GHC for details).

More details on when to use BUILD, HOST or TARGET can be found in the comments in