• trixirt's avatar
    cmake: Add CK_PARALLEL_LINK_JOBS and CK_PARALLEL_COMPILE_JOBS options (#1063) · efaf3106
    trixirt authored
    
    
    Copied from the llvm-project LLVM_PARALLEL_*_JOBS
    
    Concurrent linking can break the build as well as having too many
    compile jobs for the avaiable memory.  These options allow the user
    to fine tune the build to fit within their machines memory
    constraints.
    
    An example use on linux is
    COMPILE_JOBS=`cat /proc/cpuinfo | grep -m 1 'cpu cores' | awk '{ print $4 }'`
    if [ ${COMPILE_JOBS}x = x ]; then
      COMPILE_JOBS=1
    fi
    BUILD_MEM=4
    MEM_KB=0
    MEM_KB=`cat /proc/meminfo | grep MemTotal | awk '{ print $2 }'`
    MEM_MB=`eval "expr ${MEM_KB} / 1024"`
    MEM_GB=`eval "expr ${MEM_MB} / 1024"`
    COMPILE_JOBS_MEM=`eval "expr 1 + ${MEM_GB} / ${BUILD_MEM}"`
    if [ "$COMPILE_JOBS_MEM" -lt "$COMPILE_JOBS" ]; then
      COMPILE_JOBS=$COMPILE_JOBS_MEM
    fi
    LINK_MEM=32
    LINK_JOBS=`eval "expr 1 + ${MEM_GB} / ${LINK_MEM}"`
    
    cmake -G Ninja -DCK_PARALLEL_LINK_JOBS=$LINK_JOBS
                   -DCK_PARALLEL_COMPILE_JOBS=$COMPILE_JOBS
    Signed-off-by: default avatarTom Rix <trix@redhat.com>
    efaf3106
CMakeLists.txt 18.2 KB