You've already forked linux-packaging-mono
Imported Upstream version 6.4.0.137
Former-commit-id: 943baa9f16a098c33e129777827f3a9d20da00d6
This commit is contained in:
parent
e9207cf623
commit
ef583813eb
3
external/llvm/scripts/ci/.gitattributes
vendored
Normal file
3
external/llvm/scripts/ci/.gitattributes
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# Windows line ending
|
||||
*.sh text eol=lf
|
||||
*.bat text eol=crlf
|
3
external/llvm/scripts/ci/.gitignore
vendored
Normal file
3
external/llvm/scripts/ci/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
builds
|
||||
out
|
||||
*.tar.gz
|
429
external/llvm/scripts/ci/build-external-llvm.bat
vendored
Normal file
429
external/llvm/scripts/ci/build-external-llvm.bat
vendored
Normal file
@@ -0,0 +1,429 @@
|
||||
:: --------------------------------------------------
|
||||
:: Run full LLVM build using msvc toolchain and available cmake generator.
|
||||
:: Script needs to be run from within a matching build environment, x86|x64.
|
||||
:: When executed from withing Visual Studio build environment current
|
||||
:: build environment will be inherited by script.
|
||||
::
|
||||
:: %1 LLVM source root directory.
|
||||
:: %2 LLVM build root directory.
|
||||
:: %3 LLVM install root directory.
|
||||
:: %4 Mono distribution root directory.
|
||||
:: %5 VS CFLAGS.
|
||||
:: %6 Additional CMake arguments.
|
||||
:: %7 VS platform (Win32/x64).
|
||||
:: %8 VS configuration (Debug/Release).
|
||||
:: %9 VS target.
|
||||
:: %10 MsBuild bin path, if used.
|
||||
:: %11 Force MSBuild (true/false), if used.
|
||||
:: --------------------------------------------------
|
||||
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
set TEMP_PATH=%PATH%
|
||||
set BUILD_RESULT=1
|
||||
|
||||
set CL_BIN_NAME=cl.exe
|
||||
set LINK_BIN_NAME=link.exe
|
||||
set GIT_BIN_NAME=git.exe
|
||||
set CMAKE_BIN_NAME=cmake.exe
|
||||
set NINJA_BIN_NAME=ninja.exe
|
||||
set PYTHON_BIN_NAME=python.exe
|
||||
|
||||
set LLVM_DIR=%~1
|
||||
shift
|
||||
set LLVM_BUILD_DIR=%~1
|
||||
shift
|
||||
set LLVM_INSTALL_DIR=%~1
|
||||
shift
|
||||
set MONO_DIST_DIR=%~1
|
||||
shift
|
||||
set VS_CFLAGS=%~1
|
||||
shift
|
||||
set LLVM_ADDITIONAL_CMAKE_ARGS=%~1
|
||||
shift
|
||||
set VS_PLATFORM=%~1
|
||||
shift
|
||||
set VS_CONFIGURATION=%~1
|
||||
shift
|
||||
set VS_TARGET=%~1
|
||||
shift
|
||||
set MSBUILD_BIN_PATH=%~1
|
||||
shift
|
||||
set FORCE_MSBUILD=%~1
|
||||
|
||||
:: Setup toolchain.
|
||||
:: set GIT=
|
||||
:: set CMAKE=
|
||||
:: set NINJA=
|
||||
set MSBUILD=%MSBUILD_BIN_PATH%msbuild.exe
|
||||
|
||||
if "%LLVM_DIR%" == "" (
|
||||
echo Missing LLVM source directory argument.
|
||||
goto ECHO_USAGE
|
||||
)
|
||||
|
||||
if "%LLVM_BUILD_DIR%" == "" (
|
||||
echo Missing LLVM build directory argument.
|
||||
goto ECHO_USAGE
|
||||
)
|
||||
|
||||
if "%LLVM_INSTALL_DIR%" == "" (
|
||||
echo Missing LLVM install directory argument.
|
||||
goto ECHO_USAGE
|
||||
)
|
||||
|
||||
if "%MONO_DIST_DIR%" == "" (
|
||||
echo Missing Mono dist directory argument.
|
||||
goto ECHO_USAGE
|
||||
)
|
||||
|
||||
if "%VS_CFLAGS%" == "" (
|
||||
echo Missing CFLAGS argument.
|
||||
goto ECHO_USAGE
|
||||
)
|
||||
|
||||
if "%VS_PLATFORM%" == "" (
|
||||
set VS_PLATFORM=x64
|
||||
)
|
||||
|
||||
if "%VS_CONFIGURATION%" == "" (
|
||||
set VS_CONFIGURATION=Release
|
||||
)
|
||||
|
||||
if "%VS_TARGET%" == "" (
|
||||
set VS_TARGET=Build
|
||||
)
|
||||
|
||||
if "%FORCE_MSBUILD%" == "" (
|
||||
set FORCE_MSBUILD=false
|
||||
)
|
||||
|
||||
if not exist "%LLVM_DIR%" (
|
||||
echo Could not find "%LLVM_DIR%".
|
||||
goto ON_ERROR
|
||||
)
|
||||
|
||||
set LLVM_CFLAGS=%VS_CFLAGS%
|
||||
set LLVM_ARCH=x86_64
|
||||
if /i "%VS_PLATFORM%" == "win32" (
|
||||
set LLVM_ARCH=i386
|
||||
)
|
||||
|
||||
:: Check if executed from VS2015/VS2017 build environment.
|
||||
if "%VisualStudioVersion%" == "14.0" (
|
||||
goto ON_ENV_OK
|
||||
)
|
||||
|
||||
if "%VisualStudioVersion%" == "15.0" (
|
||||
goto ON_ENV_OK
|
||||
)
|
||||
|
||||
:: Executed outside VS2015/VS2017 build environment, try to locate Visual Studio C/C++ compiler and linker.
|
||||
call :FIND_PROGRAM "" "%CL_BIN_NAME%" CL_PATH
|
||||
if "%CL_PATH%" == "" (
|
||||
goto ON_ENV_WARNING
|
||||
)
|
||||
|
||||
call :FIND_PROGRAM "" "%LINK_BIN_NAME%" LINK_PATH
|
||||
if "%LINK_PATH%" == "" (
|
||||
goto ON_ENV_WARNING
|
||||
)
|
||||
|
||||
goto ON_ENV_OK
|
||||
|
||||
:ON_ENV_WARNING
|
||||
|
||||
:: VS 2015.
|
||||
set VC_VARS_ALL_FILE=%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
|
||||
IF EXIST "%VC_VARS_ALL_FILE%" (
|
||||
echo For VS2015 builds, make sure to run this from within Visual Studio build or using "VS2015 x86|x64 Native Tools Command Prompt" command prompt.
|
||||
echo Setup a "VS2015 x86|x64 Native Tools Command Prompt" command prompt by using "%VC_VARS_ALL_FILE% x86|amd64".
|
||||
)
|
||||
|
||||
:: VS 2017.
|
||||
set VSWHERE_TOOLS_BIN=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe
|
||||
if exist "%VSWHERE_TOOLS_BIN%" (
|
||||
echo For VS2017 builds, make sure to run this from within Visual Studio build or using "x86|x64 Native Tools Command Prompt for VS2017" command prompt.
|
||||
for /f "tokens=*" %%a IN ('"%VSWHERE_TOOLS_BIN%" -latest -property installationPath') do (
|
||||
echo Setup a "x86|x64 Native Tools Command Prompt for VS2017" command prompt by using "%%a\VC\Auxiliary\Build\vcvars32.bat|vcvars64.bat".
|
||||
)
|
||||
)
|
||||
|
||||
echo Could not detect Visual Studio build environment. You may experience build problems if wrong toolchain is auto detected.
|
||||
|
||||
:ON_ENV_OK
|
||||
|
||||
:: Setup all cmake related generator, tools and variables.
|
||||
call :SETUP_CMAKE_ENVIRONMENT
|
||||
if "%CMAKE%" == "" (
|
||||
echo Failed to located working %CMAKE_BIN_NAME%, needs to be accessible in PATH or set using CMAKE environment variable.
|
||||
goto ON_ERROR
|
||||
)
|
||||
|
||||
if "%CMAKE_GENERATOR%" == "" (
|
||||
echo Failed to setup cmake generator.
|
||||
goto ON_ERROR
|
||||
)
|
||||
|
||||
:: Check target.
|
||||
if /i "%VS_TARGET%" == "build" (
|
||||
goto ON_BUILD_LLVM
|
||||
)
|
||||
|
||||
if /i "%VS_TARGET%" == "install" (
|
||||
goto ON_INSTALL_LLVM
|
||||
)
|
||||
|
||||
if /i "%VS_TARGET%" == "clean" (
|
||||
goto ON_CLEAN_LLVM
|
||||
)
|
||||
|
||||
:ON_BUILD_LLVM
|
||||
|
||||
:: If not set by caller, check environment for working git.exe.
|
||||
call :FIND_PROGRAM "%GIT%" "%GIT_BIN_NAME%" GIT
|
||||
if "%GIT%" == "" (
|
||||
echo Failed to located working %GIT_BIN_NAME%, needs to be accessible in PATH or set using GIT environment variable.
|
||||
goto ON_ERROR
|
||||
)
|
||||
|
||||
:: Make sure llvm submodule is up to date.
|
||||
pushd
|
||||
cd "%LLVM_DIR%"
|
||||
"%GIT%" submodule update --init
|
||||
if not ERRORLEVEL == 0 (
|
||||
"%GIT%" submodule init
|
||||
"%GIT%" submodule update
|
||||
if not ERRORLEVEL == 0 (
|
||||
echo Git llvm submodules failed to updated. You may experience compilation problems if some submodules are out of date.
|
||||
)
|
||||
)
|
||||
popd
|
||||
|
||||
if not exist "%LLVM_BUILD_DIR%" (
|
||||
mkdir "%LLVM_BUILD_DIR%"
|
||||
)
|
||||
|
||||
cd "%LLVM_BUILD_DIR%"
|
||||
|
||||
:: Make sure cmake pick up msvc toolchain regardless of selected generator (Visual Studio|Ninja)
|
||||
set CC=%CL_BIN_NAME%
|
||||
set CXX=%CL_BIN_NAME%
|
||||
|
||||
set CMAKE_GENERATOR_ARGS=
|
||||
if /i "%CMAKE_GENERATOR%" == "ninja" (
|
||||
set CMAKE_GENERATOR_ARGS=-DCMAKE_BUILD_TYPE=%VS_CONFIGURATION%
|
||||
) else (
|
||||
set CMAKE_GENERATOR_ARGS=-Thost=x64
|
||||
)
|
||||
|
||||
:: Run cmake.
|
||||
"%CMAKE%" ^
|
||||
-DCMAKE_INSTALL_PREFIX="%LLVM_INSTALL_DIR%" ^
|
||||
-DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" ^
|
||||
-DLLVM_BUILD_TESTS=Off ^
|
||||
-DLLVM_INCLUDE_TESTS=Off ^
|
||||
-DLLVM_BUILD_EXAMPLES=Off ^
|
||||
-DLLVM_INCLUDE_EXAMPLES=Off ^
|
||||
-DLLVM_TOOLS_TO_BUILD="opt;llc;llvm-config;llvm-dis;llvm-mc;llvm-as" ^
|
||||
-DLLVM_ENABLE_LIBXML2=Off ^
|
||||
-DCMAKE_SYSTEM_PROCESSOR="%LLVM_ARCH%" ^
|
||||
%LLVM_ADDITIONAL_CMAKE_ARGS% ^
|
||||
%CMAKE_GENERATOR_ARGS% ^
|
||||
-G "%CMAKE_GENERATOR%" ^
|
||||
"%LLVM_DIR%"
|
||||
|
||||
if not ERRORLEVEL == 0 (
|
||||
goto ON_ERROR
|
||||
)
|
||||
|
||||
if /i "%CMAKE_GENERATOR%" == "ninja" (
|
||||
:: Build LLVM using ninja build system.
|
||||
call "%NINJA%" -j4 || (
|
||||
goto ON_ERROR
|
||||
)
|
||||
) else (
|
||||
:: Build LLVM using msbuild build system.
|
||||
call "%MSBUILD%" llvm.sln /p:Configuration=%VS_CONFIGURATION% /p:Platform=%VS_PLATFORM% /t:%VS_TARGET% /v:m /nologo || (
|
||||
goto ON_ERROR
|
||||
)
|
||||
)
|
||||
|
||||
:ON_INSTALL_LLVM
|
||||
|
||||
:: Make sure build install folder exists.
|
||||
if not exist "%LLVM_INSTALL_DIR%" (
|
||||
echo Could not find "%LLVM_INSTALL_DIR%", creating folder for build output.
|
||||
mkdir "%LLVM_INSTALL_DIR%"
|
||||
)
|
||||
|
||||
:: Make sure Mono dist folder exists.
|
||||
if not exist "%MONO_DIST_DIR%" (
|
||||
echo Could not find "%MONO_DIST_DIR%", creating folder for build output.
|
||||
mkdir "%MONO_DIST_DIR%"
|
||||
)
|
||||
|
||||
if exist "%LLVM_BUILD_DIR%\build.ninja" (
|
||||
pushd
|
||||
cd "%LLVM_BUILD_DIR%"
|
||||
call "%NINJA%" install
|
||||
popd
|
||||
)
|
||||
|
||||
if exist "%LLVM_BUILD_DIR%\install.vcxproj" (
|
||||
"%MSBUILD%" "%LLVM_BUILD_DIR%\install.vcxproj" /p:Configuration=%VS_CONFIGURATION% /p:Platform=%VS_PLATFORM% /v:m /nologo
|
||||
)
|
||||
|
||||
if not exist "%LLVM_INSTALL_DIR%\bin\opt.exe" (
|
||||
echo Missing LLVM build output, "%LLVM_INSTALL_DIR%\bin\opt.exe"
|
||||
goto ON_ERROR
|
||||
)
|
||||
|
||||
if not exist "%LLVM_INSTALL_DIR%\bin\llc.exe" (
|
||||
echo Missing LLVM build output, "%LLVM_INSTALL_DIR%\bin\llc.exe"
|
||||
goto ON_ERROR
|
||||
)
|
||||
|
||||
if not exist "%LLVM_INSTALL_DIR%\bin\llvm-dis.exe" (
|
||||
echo Missing LLVM build output, "%LLVM_INSTALL_DIR%\bin\llvm-dis.exe"
|
||||
goto ON_ERROR
|
||||
)
|
||||
|
||||
if not exist "%LLVM_INSTALL_DIR%\bin\llvm-mc.exe" (
|
||||
echo Missing LLVM build output, "%LLVM_INSTALL_DIR%\bin\llvm-mc.exe"
|
||||
goto ON_ERROR
|
||||
)
|
||||
|
||||
if not exist "%LLVM_INSTALL_DIR%\bin\llvm-as.exe" (
|
||||
echo Missing LLVM build output, "%LLVM_INSTALL_DIR%\bin\llvm-as.exe"
|
||||
goto ON_ERROR
|
||||
)
|
||||
|
||||
copy /Y "%LLVM_INSTALL_DIR%\bin\opt.exe" "%MONO_DIST_DIR%" >nul 2>&1
|
||||
copy /Y "%LLVM_INSTALL_DIR%\bin\llc.exe" "%MONO_DIST_DIR%" >nul 2>&1
|
||||
copy /Y "%LLVM_INSTALL_DIR%\bin\llvm-dis.exe" "%MONO_DIST_DIR%" >nul 2>&1
|
||||
copy /Y "%LLVM_INSTALL_DIR%\bin\llvm-mc.exe" "%MONO_DIST_DIR%" >nul 2>&1
|
||||
copy /Y "%LLVM_INSTALL_DIR%\bin\llvm-as.exe" "%MONO_DIST_DIR%" >nul 2>&1
|
||||
|
||||
goto ON_SUCCESS
|
||||
|
||||
:ON_CLEAN_LLVM
|
||||
|
||||
if exist "%LLVM_BUILD_DIR%\build.ninja" (
|
||||
pushd
|
||||
cd "%LLVM_BUILD_DIR%"
|
||||
call "%NINJA%" clean
|
||||
popd
|
||||
)
|
||||
|
||||
if exist "%LLVM_BUILD_DIR%\llvm.sln" (
|
||||
"%MSBUILD%" "%LLVM_BUILD_DIR%\llvm.sln" /p:Configuration=%VS_CONFIGURATION% /p:Platform=%VS_PLATFORM% /t:Clean /v:m /nologo
|
||||
)
|
||||
|
||||
goto ON_SUCCESS
|
||||
|
||||
:ON_SUCCESS
|
||||
|
||||
set BUILD_RESULT=0
|
||||
goto ON_EXIT
|
||||
|
||||
:ECHO_USAGE:
|
||||
ECHO Usage: build-external-llvm.bat [llvm_src_dir] [llvm_build_dir] [llvm_install_dir] [mono_dist_dir] [vs_cflags] [vs_plaform] [vs_configuration].
|
||||
|
||||
:ON_ERROR
|
||||
echo Failed to build LLVM.
|
||||
goto ON_EXIT
|
||||
|
||||
:ON_EXIT
|
||||
set PATH=%TEMP_PATH%
|
||||
exit /b %BUILD_RESULT%
|
||||
|
||||
:: ##############################################################################################################################
|
||||
:: Functions
|
||||
|
||||
:: --------------------------------------------------
|
||||
:: Finds a program using environment.
|
||||
::
|
||||
:: %1 Existing program to check for.
|
||||
:: %2 Name of binary to locate.
|
||||
:: %3 Output, variable to set if found requested program.
|
||||
:: --------------------------------------------------
|
||||
:FIND_PROGRAM
|
||||
|
||||
:: If not set by caller, check environment for program.
|
||||
if exist "%~1" (
|
||||
goto :EOF
|
||||
)
|
||||
|
||||
call where /q "%~2" && (
|
||||
for /f "delims=" %%a in ('where "%~2"') do (
|
||||
set "%~3=%%a"
|
||||
)
|
||||
) || (
|
||||
set "%~3="
|
||||
)
|
||||
|
||||
goto :EOF
|
||||
|
||||
:: --------------------------------------------------
|
||||
:: Setup up cmake build environment, including generator, build tools and variables.
|
||||
:: --------------------------------------------------
|
||||
:SETUP_CMAKE_ENVIRONMENT
|
||||
|
||||
:: If not set by caller, check environment for working cmake.exe.
|
||||
call :FIND_PROGRAM "%CMAKE%" "%CMAKE_BIN_NAME%" CMAKE
|
||||
if "%CMAKE%" == "" (
|
||||
goto _SETUP_CMAKE_ENVIRONMENT_EXIT
|
||||
)
|
||||
|
||||
if /i "%VS_TARGET%" == "build" (
|
||||
echo Found CMake: "%CMAKE%"
|
||||
)
|
||||
|
||||
if /i "%FORCE_MSBUILD%" == "true" (
|
||||
goto _SETUP_CMAKE_ENVIRONMENT_VS_GENERATOR
|
||||
)
|
||||
|
||||
:: Check for optional cmake generate and build tools.
|
||||
call :FIND_PROGRAM "%NINJA%" "%NINJA_BIN_NAME%" NINJA
|
||||
|
||||
if not "%NINJA%" == "" (
|
||||
goto _SETUP_CMAKE_ENVIRONMENT_NINJA_GENERATOR
|
||||
)
|
||||
|
||||
:_SETUP_CMAKE_ENVIRONMENT_VS_GENERATOR
|
||||
|
||||
if /i "%VS_TARGET%" == "build" (
|
||||
echo Using Visual Studio build generator.
|
||||
)
|
||||
|
||||
:: Detect VS version to use right cmake generator.
|
||||
set CMAKE_GENERATOR=Visual Studio 14 2015
|
||||
if "%VisualStudioVersion%" == "15.0" (
|
||||
set CMAKE_GENERATOR=Visual Studio 15 2017
|
||||
)
|
||||
|
||||
if /i "%VS_PLATFORM%" == "x64" (
|
||||
set CMAKE_GENERATOR=%CMAKE_GENERATOR% Win64
|
||||
)
|
||||
|
||||
set LLVM_BUILD_OUTPUT_DIR=%LLVM_BUILD_DIR%\%VS_CONFIGURATION%
|
||||
|
||||
goto _SETUP_CMAKE_ENVIRONMENT_EXIT
|
||||
|
||||
:_SETUP_CMAKE_ENVIRONMENT_NINJA_GENERATOR
|
||||
|
||||
if /i "%VS_TARGET%" == "build" (
|
||||
echo Found Ninja: "%NINJA%"
|
||||
echo Using Ninja build generator.
|
||||
)
|
||||
|
||||
set CMAKE_GENERATOR=Ninja
|
||||
set LLVM_BUILD_OUTPUT_DIR=%LLVM_BUILD_DIR%
|
||||
|
||||
:_SETUP_CMAKE_ENVIRONMENT_EXIT
|
||||
|
||||
goto :EOF
|
||||
|
||||
@echo on
|
8
external/llvm/scripts/ci/run-jenkins-linux.sh
vendored
Executable file
8
external/llvm/scripts/ci/run-jenkins-linux.sh
vendored
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
RUN_JENKINS_LINUX_SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
echo "ENVIRONMENT:"
|
||||
env
|
||||
|
||||
$RUN_JENKINS_LINUX_SCRIPT_DIR/package.sh
|
39
external/llvm/scripts/ci/run-jenkins-osx.sh
vendored
Executable file
39
external/llvm/scripts/ci/run-jenkins-osx.sh
vendored
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
echo "ENVIRONMENT:"
|
||||
env
|
||||
|
||||
llvm_base_CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=X86;ARM;AArch64 -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly -DLLVM_BUILD_TESTS=Off -DLLVM_INCLUDE_TESTS=Off -DLLVM_TOOLS_TO_BUILD=opt;llc;llvm-config;llvm-dis -G Ninja"
|
||||
|
||||
llvm64_CMAKE_FLAGS="$llvm_base_CMAKE_FLAGS"
|
||||
llvm32_CMAKE_FLAGS="$llvm_base_CMAKE_FLAGS -DLLVM_BUILD_32_BITS=On"
|
||||
|
||||
rm -rf build
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake $llvm64_CMAKE_FLAGS -DCMAKE_INSTALL_PREFIX=$PWD/../usr64 ../
|
||||
ninja
|
||||
ninja install
|
||||
cd ..
|
||||
rm -rf build32
|
||||
mkdir -p build32
|
||||
cd build32
|
||||
cmake $llvm32_CMAKE_FLAGS -DCMAKE_INSTALL_PREFIX=$PWD/../usr32 ../
|
||||
ninja
|
||||
ninja install
|
||||
cd ..
|
||||
|
||||
rm -rf tmp-bin
|
||||
mkdir tmp-bin
|
||||
cp usr64/bin/{llc,opt,llvm-dis,llvm-config} tmp-bin/
|
||||
rm usr64/bin/*
|
||||
cp tmp-bin/* usr64/bin/
|
||||
|
||||
rm -rf tmp-bin2
|
||||
mkdir tmp-bin2
|
||||
cp usr32/bin/{llc,opt,llvm-dis,llvm-config} tmp-bin2
|
||||
rm usr32/bin/*
|
||||
cp tmp-bin2/* usr32/bin/
|
||||
# Don't need 32 bit binaries
|
||||
rm -f usr64/lib/libLTO.* usr64/lib/*.dylib usr32/lib/libLTO.* usr32/lib/*.dylib
|
||||
tar cvzf llvm-osx64-$GIT_COMMIT.tar.gz usr64 usr32
|
47
external/llvm/scripts/ci/run-jenkins-windows.bat
vendored
Executable file
47
external/llvm/scripts/ci/run-jenkins-windows.bat
vendored
Executable file
@@ -0,0 +1,47 @@
|
||||
:: Set up build environment and build LLVM using build-external-llvm.bat.
|
||||
|
||||
:: Arguments:
|
||||
:: -------------------------------------------------------
|
||||
:: -------------------------------------------------------
|
||||
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
set BUILD_RESULT=1
|
||||
|
||||
:: Get path for current running script.
|
||||
set RUN_JENKINS_WINDOWS_SCRIPT_PATH=%~dp0
|
||||
set MONO_LLVM_SRC_DIR=%RUN_JENKINS_WINDOWS_SCRIPT_PATH%..\..
|
||||
set MONO_LLVM_BUILD_DIR=%RUN_JENKINS_WINDOWS_SCRIPT_PATH%builds\llvm-llvmwin64-msvc
|
||||
set MONO_LLVM_INSTALL_DIR=%RUN_JENKINS_WINDOWS_SCRIPT_PATH%out\llvm-llvmwin64-msvc
|
||||
|
||||
if exist "%MONO_LLVM_BUILD_DIR%" (
|
||||
rmdir /S /Q "%MONO_LLVM_BUILD_DIR%"
|
||||
)
|
||||
|
||||
if exist "%MONO_LLVM_INSTALL_DIR%" (
|
||||
rmdir /S /Q "%MONO_LLVM_INSTALL_DIR%"
|
||||
)
|
||||
|
||||
mkdir "%MONO_LLVM_BUILD_DIR%"
|
||||
mkdir "%MONO_LLVM_INSTALL_DIR%"
|
||||
|
||||
:: Setup Windows environment.
|
||||
call %RUN_JENKINS_WINDOWS_SCRIPT_PATH%setup-windows-env.bat
|
||||
|
||||
:: Setup VS msvc build environment.
|
||||
call %RUN_JENKINS_WINDOWS_SCRIPT_PATH%setup-vs-msvcbuild-env.bat
|
||||
|
||||
:: Run LLVM builds using default argument (similar to how its build from mono.sln)
|
||||
call %RUN_JENKINS_WINDOWS_SCRIPT_PATH%build-external-llvm.bat "%MONO_LLVM_SRC_DIR%" "%MONO_LLVM_BUILD_DIR%" "%MONO_LLVM_INSTALL_DIR%" "%MONO_LLVM_BUILD_DIR%" "-D__default_codegen__ -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -DHAVE_CONFIG_H -DGC_NOT_DLL -DWIN32_THREADS -DWINVER=0x0601 -D_WIN32_WINNT=0x0601 -D_WIN32_IE=0x0501 -D_UNICODE -DUNICODE -DFD_SETSIZE=1024 -DNVALGRIND" "-DLLVM_ENABLE_ASSERTIONS=Off" "x64" "Release" "Build" "" "false" && (
|
||||
set BUILD_RESULT=0
|
||||
) || (
|
||||
set BUILD_RESULT=1
|
||||
if not %ERRORLEVEL% == 0 (
|
||||
set BUILD_RESULT=%ERRORLEVEL%
|
||||
)
|
||||
)
|
||||
|
||||
exit /b %BUILD_RESULT%
|
||||
|
||||
@echo on
|
41
external/llvm/scripts/ci/run-jenkins-windows.sh
vendored
Executable file
41
external/llvm/scripts/ci/run-jenkins-windows.sh
vendored
Executable file
@@ -0,0 +1,41 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
function win32_format_path {
|
||||
local formatted_path=$1
|
||||
local host_win32_wsl=0
|
||||
local host_win32_cygwin=0
|
||||
|
||||
host_uname="$(uname -a)"
|
||||
case "$host_uname" in
|
||||
*Microsoft*)
|
||||
host_win32_wsl=1
|
||||
;;
|
||||
CYGWIN*)
|
||||
host_win32_cygwin=1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ $host_win32_wsl = 1 ]] && [[ $1 == "/mnt/"* ]]; then
|
||||
formatted_path="$(wslpath -a -w "$1")"
|
||||
elif [[ $host_win32_cygwin = 1 ]] && [[ $1 == "/cygdrive/"* ]]; then
|
||||
formatted_path="$(cygpath -a -w "$1")"
|
||||
fi
|
||||
|
||||
echo "$formatted_path"
|
||||
}
|
||||
|
||||
echo "ENVIRONMENT:"
|
||||
env
|
||||
|
||||
RUN_JENKINS_WINDOWS_SCRIPT_PATH=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
RUN_JENKINS_WINDOWS_SCRIPT_PATH_WINDOWS=$(win32_format_path "$RUN_JENKINS_WINDOWS_SCRIPT_PATH/run-jenkins-windows.bat")
|
||||
|
||||
WINDOWS_CMD=$(which cmd.exe)
|
||||
if [ ! -f $WINDOWS_CMD ]; then
|
||||
WINDOWS_CMD=$WINDIR/System32/cmd.exe
|
||||
fi
|
||||
|
||||
"$WINDOWS_CMD" /c "$RUN_JENKINS_WINDOWS_SCRIPT_PATH_WINDOWS"
|
||||
|
||||
GIT_COMMIT=$(git rev-parse HEAD)
|
||||
tar cvzf llvm-llvmwin64-msvc-$GIT_COMMIT-Windows.tar.gz -C $RUN_JENKINS_WINDOWS_SCRIPT_PATH/out/llvm-llvmwin64-msvc .
|
57
external/llvm/scripts/ci/run-jenkins.sh
vendored
57
external/llvm/scripts/ci/run-jenkins.sh
vendored
@@ -1,39 +1,24 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
echo "ENVIRONMENT:"
|
||||
env
|
||||
RUN_JENKINS_SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
llvm_base_CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=X86;ARM;AArch64 -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly -DLLVM_BUILD_TESTS=Off -DLLVM_INCLUDE_TESTS=Off -DLLVM_TOOLS_TO_BUILD=opt;llc;llvm-config;llvm-dis -G Ninja"
|
||||
|
||||
llvm64_CMAKE_FLAGS="$llvm_base_CMAKE_FLAGS"
|
||||
llvm32_CMAKE_FLAGS="$llvm_base_CMAKE_FLAGS -DLLVM_BUILD_32_BITS=On"
|
||||
|
||||
rm -rf build
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake $llvm64_CMAKE_FLAGS -DCMAKE_INSTALL_PREFIX=$PWD/../usr64 ../
|
||||
ninja
|
||||
ninja install
|
||||
cd ..
|
||||
rm -rf build32
|
||||
mkdir -p build32
|
||||
cd build32
|
||||
cmake $llvm32_CMAKE_FLAGS -DCMAKE_INSTALL_PREFIX=$PWD/../usr32 ../
|
||||
ninja
|
||||
ninja install
|
||||
cd ..
|
||||
|
||||
rm -rf tmp-bin
|
||||
mkdir tmp-bin
|
||||
cp usr64/bin/{llc,opt,llvm-dis,llvm-config} tmp-bin/
|
||||
rm usr64/bin/*
|
||||
cp tmp-bin/* usr64/bin/
|
||||
|
||||
rm -rf tmp-bin2
|
||||
mkdir tmp-bin2
|
||||
cp usr32/bin/{llc,opt,llvm-dis,llvm-config} tmp-bin2
|
||||
rm usr32/bin/*
|
||||
cp tmp-bin2/* usr32/bin/
|
||||
# Don't need 32 bit binaries
|
||||
rm -f usr64/lib/libLTO.* usr64/lib/*.dylib usr32/lib/libLTO.* usr32/lib/*.dylib
|
||||
tar cvzf llvm-osx64-$GIT_COMMIT.tar.gz usr64 usr32
|
||||
host_uname="$(uname)"
|
||||
case "$host_uname" in
|
||||
CYGWIN*)
|
||||
$RUN_JENKINS_SCRIPT_DIR/run-jenkins-windows.sh
|
||||
;;
|
||||
Linux)
|
||||
host_uname="$(uname -a)"
|
||||
case "$host_uname" in
|
||||
*Microsoft*)
|
||||
$RUN_JENKINS_SCRIPT_DIR/run-jenkins-windows.sh
|
||||
;;
|
||||
*)
|
||||
$RUN_JENKINS_SCRIPT_DIR/run-jenkins-linux.sh
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
Darwin)
|
||||
$RUN_JENKINS_SCRIPT_DIR/run-jenkins-osx.sh
|
||||
;;
|
||||
esac
|
||||
|
155
external/llvm/scripts/ci/setup-vs-msvcbuild-env.bat
vendored
Executable file
155
external/llvm/scripts/ci/setup-vs-msvcbuild-env.bat
vendored
Executable file
@@ -0,0 +1,155 @@
|
||||
:: Set up VS MSVC environment depending on installed VS versions.
|
||||
:: Script will setup environment variables directly in callers environment.
|
||||
|
||||
:: Make sure we can restore current working directory after setting up environment.
|
||||
:: Some of the VS scripts can change the current working directory.
|
||||
set CALLER_WD=%CD%
|
||||
|
||||
:: Get path for current running script.
|
||||
set RUN_SETUP_VS_MSVCBUILD_ENV_SCRIPT_PATH=%~dp0
|
||||
|
||||
:: NOTE, MSVC build Mono full AOT tooling currently support 64-bit AMD codegen. Below will only setup
|
||||
:: amd64 versions of VS MSVC build environment and corresponding ClangC2 compiler.
|
||||
set VS_2015_TOOLCHAIN_ARCH=amd64
|
||||
set VS_2015_VCVARS_ARCH=%VS_2015_TOOLCHAIN_ARCH%\vcvars64.bat
|
||||
set VS_2015_CLANGC2_ARCH=%VS_2015_TOOLCHAIN_ARCH%
|
||||
set VS_2017_VCVARS_ARCH=vcvars64.bat
|
||||
set VS_2017_CLANGC2_ARCH=HostX64
|
||||
|
||||
:: 32-bit AOT toolchains for MSVC build mono-sgen.exe is currently not supported.
|
||||
:: set VS_2015_TOOLCHAIN_ARCH=x86
|
||||
:: set VS_2015_VCVARS_ARCH=vcvars32.bat
|
||||
:: set VS_2015_CLANGC2_ARCH=%VS_2015_TOOLCHAIN_ARCH%
|
||||
:: set VS_2017_VCVARS_ARCH=vcvars32.bat
|
||||
:: set VS_2017_CLANGC2_ARCH=HostX86
|
||||
|
||||
set VS_CLANGC2_TOOLS_BIN_PATH=
|
||||
|
||||
:: Visual Studio 2015 == 14.0
|
||||
if "%VisualStudioVersion%" == "14.0" (
|
||||
goto SETUP_VS_2015
|
||||
)
|
||||
|
||||
:: Visual Studio 2017 == 15.0
|
||||
if "%VisualStudioVersion%" == "15.0" (
|
||||
goto SETUP_VS_2017
|
||||
)
|
||||
|
||||
:SETUP_VS_2015
|
||||
|
||||
set VS_2015_VCINSTALL_DIR=%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\
|
||||
|
||||
:: Try to locate installed VS2015 Clang/C2.
|
||||
SET VS_2015_CLANGC2_TOOLS_BIN_PATH=%VS_2015_VCINSTALL_DIR%ClangC2\bin\%VS_2015_CLANGC2_ARCH%\
|
||||
SET VS_2015_CLANGC2_TOOLS_BIN=%VS_2015_CLANGC2_TOOLS_BIN_PATH%clang.exe
|
||||
|
||||
if not exist "%VS_2015_CLANGC2_TOOLS_BIN%" (
|
||||
goto SETUP_VS_2017
|
||||
)
|
||||
|
||||
:SETUP_VS_2015_BUILD_TOOLS
|
||||
|
||||
:: Try to locate VS2015 build tools installation.
|
||||
set VS_2015_BUILD_TOOLS_INSTALL_DIR=%ProgramFiles(x86)%\Microsoft Visual C++ Build Tools\
|
||||
set VS_2015_BUILD_TOOLS_CMD=%VS_2015_BUILD_TOOLS_INSTALL_DIR%vcbuildtools.bat
|
||||
|
||||
:: Setup VS2015 VC development environment using build tools installation.
|
||||
call :setup_build_env "%VS_2015_BUILD_TOOLS_CMD%" "%VS_2015_TOOLCHAIN_ARCH%" "%CALLER_WD%" && (
|
||||
set "VS_CLANGC2_TOOLS_BIN_PATH=%VS_2015_CLANGC2_TOOLS_BIN_PATH%"
|
||||
goto ON_EXIT
|
||||
)
|
||||
|
||||
:SETUP_VS_2015_VC
|
||||
|
||||
:: Try to locate installed VS2015 VC environment.
|
||||
set VS_2015_DEV_CMD=%VS_2015_VCINSTALL_DIR%bin\%VS_2015_VCVARS_ARCH%
|
||||
|
||||
call :setup_build_env "%VS_2015_DEV_CMD%" "" "%CALLER_WD%" && (
|
||||
set "VS_CLANGC2_TOOLS_BIN_PATH=%VS_2015_CLANGC2_TOOLS_BIN_PATH%"
|
||||
goto ON_EXIT
|
||||
)
|
||||
|
||||
:SETUP_VS_2017
|
||||
|
||||
:: VS2017 includes vswhere.exe that can be used to locate current VS2017 installation.
|
||||
set VSWHERE_TOOLS_BIN=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe
|
||||
set VS_2017_VCINSTALL_DIR=
|
||||
|
||||
:: Try to locate installed VS2017 VC environment.
|
||||
if exist "%VSWHERE_TOOLS_BIN%" (
|
||||
for /f "tokens=*" %%a in ('"%VSWHERE_TOOLS_BIN%" -latest -property installationPath') do (
|
||||
set VS_2017_VCINSTALL_DIR=%%a\VC\
|
||||
)
|
||||
)
|
||||
|
||||
:: Try to locate installed VS2017 Clang/C2.
|
||||
SET VS_2017_CLANGC2_VERSION_FILE=%VS_2017_VCINSTALL_DIR%Auxiliary/Build/Microsoft.ClangC2Version.default.txt
|
||||
if not exist "%VS_2017_CLANGC2_VERSION_FILE%" (
|
||||
goto ON_ENV_ERROR
|
||||
)
|
||||
|
||||
set /p VS_2017_CLANGC2_VERSION=<"%VS_2017_CLANGC2_VERSION_FILE%"
|
||||
set VS_2017_CLANGC2_TOOLS_BIN_PATH=%VS_2017_VCINSTALL_DIR%Tools\ClangC2\%VS_2017_CLANGC2_VERSION%\bin\%VS_2017_CLANGC2_ARCH%\
|
||||
set VS_2017_CLANGC2_TOOLS_BIN=%VS_2017_CLANGC2_TOOLS_BIN_PATH%clang.exe
|
||||
if not exist "%VS_2017_CLANGC2_TOOLS_BIN%" (
|
||||
goto ON_ENV_ERROR
|
||||
)
|
||||
|
||||
:SETUP_VS_2017_BUILD_TOOLS
|
||||
|
||||
:: Try to locate VS2017 build tools installation.
|
||||
set VS_2017_BUILD_TOOLS_INSTALL_DIR=%ProgramFiles(x86)%\Microsoft Visual Studio\2017\BuildTools\
|
||||
set VS_2017_BUILD_TOOLS_CMD=%VS_2017_BUILD_TOOLS_INSTALL_DIR%VC\Auxiliary\Build\%VS_2017_VCVARS_ARCH%
|
||||
|
||||
:: Setup VS2017 VC development environment using build tools installation.
|
||||
call :setup_build_env "%VS_2017_BUILD_TOOLS_CMD%" "" "%CALLER_WD%" && (
|
||||
set "VS_CLANGC2_TOOLS_BIN_PATH=%VS_2017_CLANGC2_TOOLS_BIN_PATH%"
|
||||
goto ON_EXIT
|
||||
)
|
||||
|
||||
:SETUP_VS_2017_VC
|
||||
|
||||
:: Try to locate installed VS2017 VC environment.
|
||||
set VS_2017_DEV_CMD=%VS_2017_VCINSTALL_DIR%Auxiliary\Build\%VS_2017_VCVARS_ARCH%
|
||||
|
||||
:: Setup VS2017 VC development environment using VS installation.
|
||||
call :setup_build_env "%VS_2017_DEV_CMD%" "" "%CALLER_WD%" && (
|
||||
set "VS_CLANGC2_TOOLS_BIN_PATH=%VS_2017_CLANGC2_TOOLS_BIN_PATH%"
|
||||
goto ON_EXIT
|
||||
)
|
||||
|
||||
:ON_ENV_ERROR
|
||||
|
||||
echo Warning, failed to setup VS build environment needed by VS tooling.
|
||||
echo Incomplete build environment can cause build error's due to missing compiler,
|
||||
echo linker and platform libraries.
|
||||
|
||||
exit /b 1
|
||||
|
||||
:ON_EXIT
|
||||
|
||||
:: Add ClangC2 folders to PATH
|
||||
set "PATH=%VS_CLANGC2_TOOLS_BIN_PATH%;%PATH%"
|
||||
|
||||
exit /b 0
|
||||
|
||||
:setup_build_env
|
||||
|
||||
:: Check if VS build environment script exists.
|
||||
if not exist "%~1" (
|
||||
goto setup_build_env_error
|
||||
)
|
||||
|
||||
:: Run VS build environment script.
|
||||
call "%~1" %~2 > NUL
|
||||
|
||||
:: Restore callers working directory in case it has been changed by VS scripts.
|
||||
cd /d "%~3"
|
||||
|
||||
goto setup_build_env_exit
|
||||
|
||||
:setup_build_env_error
|
||||
exit /b 1
|
||||
|
||||
:setup_build_env_exit
|
||||
goto :EOF
|
64
external/llvm/scripts/ci/setup-windows-env.bat
vendored
Executable file
64
external/llvm/scripts/ci/setup-windows-env.bat
vendored
Executable file
@@ -0,0 +1,64 @@
|
||||
:: Script will setup environment variables directly in callers environment.
|
||||
|
||||
:: If we are running from none Windows shell we will need to restore a clean PATH
|
||||
:: before setting up VS MSVC build environment. If not there is a risk we will pick up
|
||||
:: for example cygwin binaries when running toolchain commands not explicitly setup by
|
||||
:: VS MSVC build environment.
|
||||
set HKCU_ENV_PATH=
|
||||
set HKLM_ENV_PATH=
|
||||
if "%SHELL%" == "/bin/bash" (
|
||||
for /f "tokens=2,*" %%a in ('%WINDIR%\System32\reg.exe query "HKCU\Environment" /v "Path" ^| %WINDIR%\System32\find.exe /i "REG_"') do (
|
||||
SET HKCU_ENV_PATH=%%b
|
||||
)
|
||||
for /f "tokens=2,*" %%a in ('%WINDIR%\System32\reg.exe query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "Path" ^| %WINDIR%\System32\find.exe /i "REG_"') do (
|
||||
SET HKLM_ENV_PATH=%%b
|
||||
)
|
||||
)
|
||||
|
||||
:: Restore default path, if we are running from none Windows shell.
|
||||
if "%SHELL%" == "/bin/bash" (
|
||||
call :restore_default_path "%HKCU_ENV_PATH%" "%HKLM_ENV_PATH%"
|
||||
)
|
||||
|
||||
:: There is still a scenario where the default path can include cygwin\bin folder. If that's the case
|
||||
:: there is still a big risk that build tools will be incorrectly resolved towards cygwin bin folder.
|
||||
:: Make sure to adjust path and drop all cygwin paths.
|
||||
set NEW_PATH=
|
||||
call where /Q "cygpath.exe" && (
|
||||
echo Warning, PATH includes cygwin bin folders. This can cause build errors due to incorrectly
|
||||
echo located build tools. Build script will drop all cygwin folders from used PATH.
|
||||
for %%a in ("%PATH:;=";"%") do (
|
||||
if not exist "%%~a\cygpath.exe" (
|
||||
call :add_to_new_path "%%~a"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
if not "%NEW_PATH%" == "" (
|
||||
set "PATH=%NEW_PATH%"
|
||||
)
|
||||
|
||||
exit /b 0
|
||||
|
||||
:restore_default_path
|
||||
|
||||
:: Restore default PATH.
|
||||
if not "%~2" == "" (
|
||||
if not "%~1" == "" (
|
||||
set "PATH=%~2;%~1"
|
||||
) else (
|
||||
set "PATH=%~2"
|
||||
)
|
||||
)
|
||||
|
||||
goto :EOF
|
||||
|
||||
:add_to_new_path
|
||||
|
||||
if "%NEW_PATH%" == "" (
|
||||
set "NEW_PATH=%~1"
|
||||
) else (
|
||||
SET "NEW_PATH=%NEW_PATH%;%~1"
|
||||
)
|
||||
|
||||
goto :EOF
|
Reference in New Issue
Block a user