build.sh 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/bin/bash
  2. #-------------------------------------------------------------------------------------------------------
  3. # Copyright (C) Microsoft. All rights reserved.
  4. # Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  5. #-------------------------------------------------------------------------------------------------------
  6. PRINT_USAGE() {
  7. echo "Build RecyclerChecker clang plugin"
  8. echo ""
  9. echo "build.sh [options]"
  10. echo ""
  11. echo "options:"
  12. echo " -h, --help Show help"
  13. echo " --clang-inc=PATH clang development include path"
  14. echo " --cxx=PATH Path to c++ compiler"
  15. echo " --llvm-config=PATH llvm-config executable"
  16. echo ""
  17. }
  18. pushd `dirname $0` > /dev/null
  19. SCRIPT_DIR=`pwd -P`
  20. popd > /dev/null
  21. CLANG_INC=
  22. CXX_COMPILER=
  23. LLVM_CONFIG=
  24. while [[ $# -gt 0 ]]; do
  25. case "$1" in
  26. --clang-inc=*)
  27. CLANG_INC=$1
  28. CLANG_INC="${CLANG_INC:12}"
  29. ;;
  30. --cxx=*)
  31. CXX_COMPILER=$1
  32. CXX_COMPILER=${CXX_COMPILER:6}
  33. ;;
  34. -h | --help)
  35. PRINT_USAGE && exit
  36. ;;
  37. --llvm-config=*)
  38. LLVM_CONFIG=$1
  39. LLVM_CONFIG="${LLVM_CONFIG:14}"
  40. ;;
  41. *)
  42. echo "Unknown option $1"
  43. PRINT_USAGE
  44. exit -1
  45. ;;
  46. esac
  47. shift
  48. done
  49. if [[ $CLANG_INC ]]; then
  50. echo "CLANG_INCLUDE_DIRS: $CLANG_INC"
  51. CLANG_INC="-DCLANG_INCLUDE_DIRS:STRING=$CLANG_INC"
  52. fi
  53. if [[ $CXX_COMPILER ]]; then
  54. echo "CXX_COMPILER: $CXX_COMPILER"
  55. CXX_COMPILER="-DCMAKE_CXX_COMPILER=$CXX_COMPILER"
  56. fi
  57. if [[ $LLVM_CONFIG ]]; then
  58. echo "LLVM_CONFIG: $LLVM_CONFIG"
  59. LLVM_CONFIG="-DLLVM_CONFIG_EXECUTABLE:STRING=$LLVM_CONFIG"
  60. fi
  61. BUILD_DIR="$SCRIPT_DIR/Build"
  62. mkdir -p $BUILD_DIR
  63. pushd $BUILD_DIR > /dev/null
  64. cmake \
  65. $CLANG_INC \
  66. $CXX_COMPILER \
  67. $LLVM_CONFIG \
  68. .. \
  69. && make
  70. _RET=$?
  71. popd > /dev/null
  72. exit $_RET