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,6 +68,11 @@ echo. pause +if exist %build_dir% ( + REM Exit if the build directory already exists. + echo Build directory already exists: %build_dir% + exit /b +) mkdir %build_dir% cd %build_dir% @@ -76,8 +81,12 @@ 7z x src.zip || exit /b mv llvm-project-* llvm-project || exit /b +curl -O https://gitlab.gnome.org/GNOME/libxml2/-/archive/v2.9.12/libxml2-v2.9.12.tar.gz || exit /b +tar zxf libxml2-v2.9.12.tar.gz + 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,7 +96,6 @@ -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_LIBXML2=FORCE_ON ^ -DLLDB_ENABLE_LIBXML2=OFF ^ @@ -95,18 +103,29 @@ -DCMAKE_CXX_FLAGS="-DLIBXML_STATIC" ^ -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;compiler-rt;lldb;openmp" -REM TODO: Run the "check-all" tests. - +REM Preserve original path set OLDPATH=%PATH% -curl -O https://gitlab.gnome.org/GNOME/libxml2/-/archive/v2.9.12/libxml2-v2.9.12.tar.gz || exit /b -tar zxf libxml2-v2.9.12.tar.gz +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 "VSCMD_START_DIR=%CD%" +REM Set Python environment +set PYTHONHOME=%python32_dir% +set PATH=%PYTHONHOME%;%PATH% + +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 @@ -118,8 +137,18 @@ set "libxmldir=%libxmldir:\=/%" cd .. -cmake -GNinja %cmake_flags% -DPYTHON_HOME=%python32_dir% -DPython3_ROOT_DIR=%python32_dir% -DLIBXML2_INCLUDE_DIR=%libxmldir%/include/libxml2 -DLIBXML2_LIBRARIES=%libxmldir%/lib/libxml2s.lib ..\llvm-project\llvm || exit /b - +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 ^ + -DLIBXML2_INCLUDE_DIRS=%libxmldir%/include/libxml2 ^ + -DLIBXML2_LIBRARIES=%libxmldir%/lib/libxml2s.lib + +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 @@ -128,11 +157,17 @@ 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_COMPILER=%stage0_bin_dir%/clang-cl.exe ^ + -DCMAKE_CXX_COMPILER=%stage0_bin_dir%/clang-cl.exe +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% -DLIBXML2_INCLUDE_DIR=%libxmldir%/include/libxml2 -DLIBXML2_LIBRARIES=%libxmldir%/lib/libxml2s.lib ..\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 @@ -142,12 +177,22 @@ 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 PATH=%PYTHONHOME%;%PATH% + +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 @@ -159,7 +204,18 @@ set "libxmldir=%libxmldir:\=/%" cd .. -cmake -GNinja %cmake_flags% -DPYTHON_HOME=%python64_dir% -DPython3_ROOT_DIR=%python64_dir% -DLIBXML2_INCLUDE_DIR=%libxmldir%/include/libxml2 -DLIBXML2_LIBRARIES=%libxmldir%/lib/libxml2s.lib ..\llvm-project\llvm || exit /b +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 ^ + -DLIBXML2_INCLUDE_DIRS=%libxmldir%/include/libxml2 ^ + -DLIBXML2_LIBRARIES=%libxmldir%/lib/libxml2s.lib + +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 @@ -169,11 +225,17 @@ 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_COMPILER=%stage0_bin_dir%/clang-cl.exe ^ + -DCMAKE_CXX_COMPILER=%stage0_bin_dir%/clang-cl.exe +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% -DLIBXML2_INCLUDE_DIR=%libxmldir%/include/libxml2 -DLIBXML2_LIBRARIES=%libxmldir%/lib/libxml2s.lib ..\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 @@ -183,3 +245,6 @@ ninja check-clangd || ninja check-clangd || ninja check-clangd || exit /b ninja package || exit /b cd .. + +exit /b +::==============================================================================