Index: llvm/utils/release/build_llvm_release.bat =================================================================== --- llvm/utils/release/build_llvm_release.bat +++ llvm/utils/release/build_llvm_release.bat @@ -60,7 +60,7 @@ set revision=llvmorg-%1 set package_version=%1 -set build_dir=llvm_package_%package_version% +set build_dir=%cd%\llvm_package_%package_version% echo Revision: %revision% echo Package version: %package_version% @@ -68,16 +68,18 @@ echo. pause +if exist %build_dir% rd /s /q %build_dir% mkdir %build_dir% cd %build_dir% echo Checking out %revision% curl -L https://github.com/llvm/llvm-project/archive/%revision%.zip -o src.zip || exit /b -7z x src.zip || exit /b +7z x -y src.zip || exit /b mv llvm-project-* llvm-project || exit /b REM Setting CMAKE_CL_SHOWINCLUDES_PREFIX to work around PR27226. -set cmake_flags=^ +REM Common flags for both 32/64 builds. +set common_cmake_flags=^ -DCMAKE_BUILD_TYPE=Release ^ -DLLVM_ENABLE_ASSERTIONS=OFF ^ -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON ^ @@ -87,22 +89,45 @@ -DPACKAGE_VERSION=%package_version% ^ -DLLDB_RELOCATABLE_PYTHON=1 ^ -DLLDB_EMBED_PYTHON_HOME=OFF ^ - -DLLDB_TEST_COMPILER=%cd%\build32_stage0\bin\clang.exe ^ -DCMAKE_CL_SHOWINCLUDES_PREFIX="Note: including file: " ^ -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;compiler-rt;lldb;openmp" +REM Preserve original path +set OLDPATH=%PATH% + +REM Build the 32-bits and/or 64-bits binaries. +call :do_build_32 +call :do_build_64 +goto :eof + +::============================================================================== +:: Build 32-bits binaries. +::============================================================================== +:do_build_32 +REM Restore original path +set PATH=%OLDPATH% + REM TODO: Run the "check-all" tests. -set OLDPATH=%PATH% +REM Set Python environment +set PYTHONHOME=%python32_dir% +set PYTHONPATH=%PYTHONHOME%\lib +set PATH=%PYTHONHOME%;%PATH% -set "VSCMD_START_DIR=%CD%" +REM Stage0 binaries directory; used in stage1. +set "stage0_bin_dir=%build_dir%/build32_stage0/bin" +set cmake_flags=^ + %common_cmake_flags% ^ + -DLLDB_TEST_COMPILER=%stage0_bin_dir%/clang.exe ^ + -DPYTHON_HOME=%PYTHONHOME% ^ + -DPython3_ROOT_DIR=%PYTHONHOME% ^ + -DPYTHON_EXECUTABLE=%PYTHONHOME%\python.exe + +set "VSCMD_START_DIR=%build_dir%" call "%vsdevcmd%" -arch=x86 -set PATH=%python32_dir%;%PATH% -set CC= -set CXX= mkdir build32_stage0 cd build32_stage0 -cmake -GNinja %cmake_flags% -DPYTHON_HOME=%python32_dir% -DPython3_ROOT_DIR=%python32_dir% ..\llvm-project\llvm || exit /b +cmake -GNinja %cmake_flags% ..\llvm-project\llvm || exit /b ninja || ninja || ninja || exit /b REM ninja check-llvm || ninja check-llvm || ninja check-llvm || exit /b REM ninja check-clang || ninja check-clang || ninja check-clang || exit /b @@ -111,11 +136,22 @@ REM ninja check-clang-tools || ninja check-clang-tools || ninja check-clang-tools || exit /b cd.. +REM CMake expects the paths that specifies the compiler and linker to be +REM with forward slash. +set all_cmake_flags=^ + %cmake_flags% ^ + -DCMAKE_C_FLAGS="-Wno-nonportable-include-path" ^ + -DCMAKE_CXX_FLAGS="-Wno-nonportable-include-path" ^ + -DCMAKE_C_COMPILER=%stage0_bin_dir%/clang-cl.exe ^ + -DCMAKE_CXX_COMPILER=%stage0_bin_dir%/clang-cl.exe ^ + -DCMAKE_LINKER=%stage0_bin_dir%/lld-link.exe ^ + -DCMAKE_AR=%stage0_bin_dir%/llvm-lib ^ + -DCMAKE_RC=%stage0_bin_dir%/llvm-windres +set cmake_flags=%all_cmake_flags:\=/% + mkdir build32 cd build32 -set CC=..\build32_stage0\bin\clang-cl -set CXX=..\build32_stage0\bin\clang-cl -cmake -GNinja %cmake_flags% -DPYTHON_HOME=%python32_dir% -DPython3_ROOT_DIR=%python32_dir% ..\llvm-project\llvm || exit /b +cmake -GNinja %cmake_flags% ..\llvm-project\llvm || exit /b ninja || ninja || ninja || exit /b REM ninja check-llvm || ninja check-llvm || ninja check-llvm || exit /b REM ninja check-clang || ninja check-clang || ninja check-clang || exit /b @@ -125,15 +161,35 @@ ninja package || exit /b cd .. -set "VSCMD_START_DIR=%CD%" +exit /b +::============================================================================== + +::============================================================================== +:: Build 64-bits binaries. +::============================================================================== +:do_build_64 +REM Restore original path set PATH=%OLDPATH% + +REM Set Python environment +set PYTHONHOME=%python64_dir% +set PYTHONPATH=%PYTHONHOME%\lib +set PATH=%PYTHONHOME%;%PATH% + +REM Stage0 binaries directory; used in stage1. +set "stage0_bin_dir=%build_dir%/build64_stage0/bin" +set cmake_flags=^ + %common_cmake_flags% ^ + -DLLDB_TEST_COMPILER=%stage0_bin_dir%/clang.exe ^ + -DPYTHON_HOME=%PYTHONHOME% ^ + -DPython3_ROOT_DIR=%PYTHONHOME% ^ + -DPYTHON_EXECUTABLE=%PYTHONHOME%\python.exe + +set "VSCMD_START_DIR=%build_dir%" call "%vsdevcmd%" -arch=amd64 -set PATH=%python64_dir%;%PATH% -set CC= -set CXX= mkdir build64_stage0 cd build64_stage0 -cmake -GNinja %cmake_flags% -DPYTHON_HOME=%python64_dir% -DPython3_ROOT_DIR=%python64_dir% ..\llvm-project\llvm || exit /b +cmake -GNinja %cmake_flags% ..\llvm-project\llvm || exit /b ninja || ninja || ninja || exit /b ninja check-llvm || ninja check-llvm || ninja check-llvm || exit /b ninja check-clang || ninja check-clang || ninja check-clang || exit /b @@ -143,11 +199,22 @@ ninja check-clangd || ninja check-clangd || ninja check-clangd || exit /b cd.. +REM CMake expects the paths that specifies the compiler and linker to be +REM with forward slash. +set all_cmake_flags=^ + %cmake_flags% ^ + -DCMAKE_C_FLAGS="-Wno-nonportable-include-path" ^ + -DCMAKE_CXX_FLAGS="-Wno-nonportable-include-path" ^ + -DCMAKE_C_COMPILER=%stage0_bin_dir%/clang-cl.exe ^ + -DCMAKE_CXX_COMPILER=%stage0_bin_dir%/clang-cl.exe ^ + -DCMAKE_LINKER=%stage0_bin_dir%/lld-link.exe ^ + -DCMAKE_AR=%stage0_bin_dir%/llvm-lib ^ + -DCMAKE_RC=%stage0_bin_dir%/llvm-windres +set cmake_flags=%all_cmake_flags:\=/% + mkdir build64 cd build64 -set CC=..\build64_stage0\bin\clang-cl -set CXX=..\build64_stage0\bin\clang-cl -cmake -GNinja %cmake_flags% -DPYTHON_HOME=%python64_dir% -DPython3_ROOT_DIR=%python64_dir% ..\llvm-project\llvm || exit /b +cmake -GNinja %cmake_flags% ..\llvm-project\llvm || exit /b ninja || ninja || ninja || exit /b ninja check-llvm || ninja check-llvm || ninja check-llvm || exit /b ninja check-clang || ninja check-clang || ninja check-clang || exit /b @@ -157,3 +224,6 @@ ninja check-clangd || ninja check-clangd || ninja check-clangd || exit /b ninja package || exit /b cd .. + +exit /b +::==============================================================================