#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation # \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. # # OpenFOAM is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # OpenFOAM is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # You should have received a copy of the GNU General Public License # along with OpenFOAM. If not, see . # # Script # makeLLVM # # Description # Build script for llvm, clang etc. # # Note # - Ensure that you always use matching versions between llvm and clang. # - The LLVM components reside in the LLVM tools/ subdirectory # # Example, building from svn repository: # 1) Checkout LLVM: # svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm-svn # # 2) Checkout Clang, in the correct location # cd llvm-svn/tools # svn co http://llvm.org/svn/llvm-project/cfe/trunk clang # cd - # # Example, building from tar files (version 3.8.0) # - Unpack LLVM: # tar -Jvf llvm-3.8.0.src.tar.xz # mv llvm-3.8.0.src llvm-3.8.0 # # - Unpack Clang (also know as cfe): # tar -Jvf cfe-3.8.0.src.tar.xz # mv cfe-3.8.0.src llvm-3.8.0/tools/clang # #------------------------------------------------------------------------------ # Get default llvm/clang version WM_COMPILER_TYPE=ThirdParty # ensure we get the correct compiler settings WM_COMPILER=Clang # force values for 'clang' . $WM_PROJECT_DIR/etc/config.sh/functions _foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/compiler) llvmPACKAGE=$clang_version #------------------------------------------------------------------------------ # run from third-party directory only wmakeCheckPwd "$WM_THIRD_PARTY_DIR" || { echo "Error: Current directory is not \$WM_THIRD_PARTY_DIR" echo " The environment variables are inconsistent with the installation." echo " Check the OpenFOAM entries in your dot-files and source them." exit 1 } . etc/tools/ThirdPartyFunctions #------------------------------------------------------------------------------ usage() { exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done 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: $llvmPACKAGE (using configure)" echo ( cd $LLVM_SOURCE_DIR || exit 1 make distclean 2>/dev/null rm -rf $LLVM_BINARY_DIR mkdir -p $LLVM_BINARY_DIR cd $LLVM_BINARY_DIR set -x $LLVM_SOURCE_DIR/configure \ --prefix=$LLVM_ARCH_PATH \ --with-gcc-toolchain=$(which gcc | sed s%/bin/gcc%%) \ --enable-optimized \ --enable-shared \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $llvmPACKAGE" ) || { echo "Error building: $llvmPACKAGE" exit 1 } else # CMake used with 3.9.0 and later echo "Starting build: $llvmPACKAGE (using cmake)" echo ( cd $LLVM_SOURCE_DIR || exit 1 rm -rf $LLVM_BINARY_DIR mkdir -p $LLVM_BINARY_DIR cd $LLVM_BINARY_DIR cmake=$(findCMake) set -x $cmake \ -DCMAKE_INSTALL_PREFIX=$LLVM_ARCH_PATH \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS:BOOL=ON \ $LLVM_SOURCE_DIR \ && make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: $llvmPACKAGE" ) || { echo "Error building: $llvmPACKAGE" exit 1 } fi #------------------------------------------------------------------------------