Skip to content
  • David E DeMarle's avatar
    Add cross compilation to produce paraview builds for supercomputers. · e01d7362
    David E DeMarle authored
    Cross compilation does a few things differently.
    1) We specify a toolchain which tells cmake what compiler to
    use to cross compile code that will run on the back end nodes.
    2) We have to supply a TryRunResults file filled with all the cmake
    introspection answers we would get, if cmake could run directly on the
    back end nodes.
    3) We build the compilation executables that cmake needs to compile paraview
    first in a tools stage then use them to build the cross compiled paraview
    in a cross stage.
    4) We build only what we have to for HPC settings.
    5) We build everything statically.
    6) We always use offscreen mesa.
    7) We build a cmakeified python that allows us to build python statically,
    with a chosen few extension modules compiled directly into it so that we
    don't need to dyld anything at runtime.
    8) Lastly we always use the system MPI.
    
    We do all of that by adding two new passes.
    The CROSS_BUILD_STAGE cmake setting lets you pick if you are building normally
    (HOST), or just the compilation tools that you need to cross compile
    (TOOLS), or are actually doing the cross compilation build (CROSS)
    In the cross pass we generally have to apply target specific patches and
    settings to build successfully.
    
    The specific target platform you are cross compiling for
    is specific with the CROSS_TARGET cmake setting. Depending on that setting
    different sets of patches and default configurations are applied to
    paraview and its dependencies. The patch and optons files are found in
    like named files in the CMake/crosscompile/${CROSS_TARGET} subdirectories.
    
    Change-Id: Ib44ba62cb0a51c9d0c61cfb518124adacc1a4823
    e01d7362