#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2011-2016 OpenFOAM Foundation # Copyright (C) 2016-2021 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # Script # makeLLVM # # Description # Build script for llvm, clang etc. # # Note # - Ensure that you always use matching versions between llvm and clang. # - LLVM components such as clang reside in the LLVM tools/ subdirectory # # For example, when building from tar files (version 4.0.0) # # 1) Unpack LLVM: # tar -xJf llvm-4.0.1.src.tar.xz # mv llvm-4.0.1.src llvm-4.0.1 # # 2) Unpack Clang (also know as cfe): # tar -xJf cfe-4.0.1.src.tar.xz # mv cfe-4.0.1.src llvm-4.0.1/tools/clang # # 3) Unpack openmp (optional): # tar -xJf openmp-4.0.1.src.tar.xz # mv openmp-4.0.1.src llvm-4.0.1/tools/openmp # # ---------------------------------------------- # NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ if : # Run from third-party directory then cd "${0%/*}" || exit wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" echo " Check your OpenFOAM environment and installation" exit 1 } fi . "${WM_THIRD_PARTY_DIR:?}"/etc/tools/ThirdPartyFunctions #------------------------------------------------------------------------------ [ "${WM_COMPILER#Clang}" = "$WM_COMPILER" ] && WM_COMPILER=Clang # Force clang WM_COMPILER_TYPE=ThirdParty # Ensure we get the correct settings # LLVM/Clang version from OpenFOAM etc/config.sh file: _foamConfig compiler PACKAGE="$clang_version" #------------------------------------------------------------------------------ printVersions() { listPackageVersions llvm; exit 0; } printHelp() { cat</dev/null 2>&1 then # configure can be used prior to 3.9.0 # but use cmake if someone explicitly mentioned -cmake on the command-line echo "Starting build: $PACKAGE (using configure)" echo ( PKG_BUILD="$buildBASE/$PACKAGE" cd "$PKG_SOURCE" || exit make distclean 2>/dev/null || true rm -rf "$PKG_BUILD" mkdir -p "$PKG_BUILD" cd "$PKG_BUILD" && set -x && \ "$PKG_SOURCE"/configure \ --prefix="$PKG_PREFIX" \ --with-gcc-toolchain="$(command -v gcc | sed 's%/bin/gcc%%')" \ --enable-optimized \ --enable-shared \ && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $PACKAGE" ) || { echo "Error building: $PACKAGE" exit 1 } else # CMake used with 3.9.0 and later echo "Starting build: $PACKAGE (using cmake)" echo ( PKG_BUILD="$buildBASE/$PACKAGE" cd "$PKG_SOURCE" || exit # Configuration options: unset configOpt if [ -f tools/openmp/CMakeLists.txt ] then configOpt="$configOpt -DLLVM_TOOL_OPENMP_BUILD=ON" fi rm -rf "$PKG_BUILD" mkdir -p "$PKG_BUILD" cmake=$(findCMake) cd "$PKG_BUILD" && set -x && \ ${cmake:?} \ -DCMAKE_INSTALL_PREFIX="$PKG_PREFIX" \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=ON \ $configOpt \ "$PKG_SOURCE" \ && set +x \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $PACKAGE" ) || { echo "Error building: $PACKAGE" exit 1 } fi #------------------------------------------------------------------------------