build-clang-windows.sh 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/bin/bash
  2. set -x -e -v
  3. # This script is for building clang-cl on Windows.
  4. # Fetch our toolchain from tooltool.
  5. wget -O tooltool.py ${TOOLTOOL_REPO}/raw/${TOOLTOOL_REV}/tooltool.py
  6. chmod +x tooltool.py
  7. : TOOLTOOL_CACHE ${TOOLTOOL_CACHE:=/home/worker/tooltool-cache}
  8. export TOOLTOOL_CACHE
  9. TOOLTOOL_AUTH_FILE=/c/builds/relengapi.tok
  10. if [ ! -e ${TOOLTOOL_AUTH_FILE} ]; then
  11. echo cannot find ${TOOLTOOL_AUTH_FILE}
  12. exit 1
  13. fi
  14. TOOLTOOL_MANIFEST=build/src/browser/config/tooltool-manifests/win32/build-clang-cl.manifest
  15. ./tooltool.py --authentication-file="${TOOLTOOL_AUTH_FILE}" -m "${TOOLTOOL_MANIFEST}" fetch
  16. # Set up all the Visual Studio paths.
  17. MSVC_DIR=vs2015u3
  18. VSWINPATH="$(cd ${MSVC_DIR} && pwd)"
  19. echo vswinpath ${VSWINPATH}
  20. export WINDOWSSDKDIR="${VSWINPATH}/SDK"
  21. export WIN32_REDIST_DIR="${VSWINPATH}/VC/redist/x86/Microsoft.VC140.CRT"
  22. export WIN_UCRT_REDIST_DIR="${VSWINPATH}/SDK/Redist/ucrt/DLLs/x86"
  23. export PATH="${VSWINPATH}/VC/bin/amd64_x86:${VSWINPATH}/VC/bin/amd64:${VSWINPATH}/VC/bin:${VSWINPATH}/SDK/bin/x86:${VSWINPATH}/SDK/bin/x64:${VSWINPATH}/DIA SDK/bin:${PATH}"
  24. export PATH="${VSWINPATH}/VC/redist/x86/Microsoft.VC140.CRT:${VSWINPATH}/VC/redist/x64/Microsoft.VC140.CRT:${VSWINPATH}/SDK/Redist/ucrt/DLLs/x86:${VSWINPATH}/SDK/Redist/ucrt/DLLs/x64:${PATH}"
  25. export INCLUDE="${VSWINPATH}/VC/include:${VSWINPATH}/VC/atlmfc/include:${VSWINPATH}/SDK/Include/10.0.14393.0/ucrt:${VSWINPATH}/SDK/Include/10.0.14393.0/shared:${VSWINPATH}/SDK/Include/10.0.14393.0/um:${VSWINPATH}/SDK/Include/10.0.14393.0/winrt:${VSWINPATH}/DIA SDK/include"
  26. export LIB="${VSWINPATH}/VC/lib:${VSWINPATH}/VC/atlmfc/lib:${VSWINPATH}/SDK/lib/10.0.14393.0/ucrt/x86:${VSWINPATH}/SDK/lib/10.0.14393.0/um/x86:${VSWINPATH}/DIA SDK/lib"
  27. export PATH="$(cd svn && pwd)/bin:${PATH}"
  28. export PATH="$(cd cmake && pwd)/bin:${PATH}"
  29. export PATH="$(cd ninja && pwd)/bin:${PATH}"
  30. # We use |mach python| to set up a virtualenv automatically for us. We create
  31. # a dummy mozconfig, because the default machinery for config.guess-choosing
  32. # of the objdir doesn't work very well.
  33. MOZCONFIG="$(pwd)/mozconfig"
  34. cat > ${MOZCONFIG} <<EOF
  35. mk_add_options MOZ_OBJDIR=$(pwd)/objdir
  36. EOF
  37. # gets a bit too verbose here
  38. set +x
  39. BUILD_CLANG_DIR=build/src/build/build-clang
  40. MOZCONFIG=${MOZCONFIG} build/src/mach python ${BUILD_CLANG_DIR}/build-clang.py -c ${BUILD_CLANG_DIR}/clang-static-analysis-win32.json
  41. set -x
  42. # Put a tarball in the artifacts dir
  43. UPLOAD_PATH=public/build
  44. mkdir -p ${UPLOAD_PATH}
  45. cp clang.tar.* ${UPLOAD_PATH}