From f066c9607852a9d587e6fb08f74fd0578426eb10 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Wed, 23 Jan 2019 14:21:26 -0800 Subject: [PATCH] appveyor: Add support for meson as well as scons on windows This job uses the vs2017 backend of meson (msbuild) as opposed to the ninja backend used on MacOS and Linux. v7: - rebase on master - remove llvm (we'll add that back later) - remove cygwin (we'll add that back later too) v6: - rebase on master, including the addition of cygwin - consolidate 3 appveyor patches into this one patch v5 - use the new b_vscrt option instead of manually specifying the crt v4: - rebase on python3 generators - cache meson wraps - Build x86 instead of x86_64, since that's what the pre-built LLVM is - update to vs2017 from vs2015 - set the default-library to static - use the new vscrt override - add the /m switch to msbuild to make the build somewhat faster Acked-by: Kristian H. Kristensen --- appveyor.yml | 40 +++++++------------------ scripts/appveyor_msvc.bat | 63 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 30 deletions(-) create mode 100644 scripts/appveyor_msvc.bat diff --git a/appveyor.yml b/appveyor.yml index ccb84fd3403..6c1bd370044 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -49,41 +49,21 @@ init: environment: WINFLEXBISON_VERSION: 2.5.15 LLVM_ARCHIVE: llvm-5.0.1-msvc2017-mtd.7z + matrix: + - compiler: msvc + buildsystem: scons + - compiler: msvc + buildsystem: meson + path: C:\Python37-x64;C:\Python37-x64\Scripts;%path% install: -# Check git config -- git config core.autocrlf -# Check pip -- python --version -- python -m pip --version -# Install Mako -- python -m pip install Mako==1.0.7 -# Install pywin32 extensions, needed by SCons -- python -m pip install pypiwin32 -# Install python wheels, necessary to install SCons via pip -- python -m pip install wheel -# Install SCons -- python -m pip install scons==3.0.1 -- scons --version -# Install flex/bison -- set WINFLEXBISON_ARCHIVE=win_flex_bison-%WINFLEXBISON_VERSION%.zip -- if not exist "%WINFLEXBISON_ARCHIVE%" appveyor DownloadFile "https://github.com/lexxmark/winflexbison/releases/download/v%WINFLEXBISON_VERSION%/%WINFLEXBISON_ARCHIVE%" -- 7z x -y -owinflexbison\ "%WINFLEXBISON_ARCHIVE%" > nul -- set Path=%CD%\winflexbison;%Path% -- win_flex --version -- win_bison --version -# Download and extract LLVM -- if not exist "%LLVM_ARCHIVE%" appveyor DownloadFile "https://people.freedesktop.org/~jrfonseca/llvm/%LLVM_ARCHIVE%" -- 7z x -y "%LLVM_ARCHIVE%" > nul -- mkdir llvm\bin -- set LLVM=%CD%\llvm +- cmd: scripts\appveyor_msvc.bat install build_script: -- scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 - -after_build: -- scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 check +- cmd: scripts\appveyor_msvc.bat build_script +test_script: +- cmd: scripts\appveyor_msvc.bat test_script # It's possible to setup notification here, as described in # http://www.appveyor.com/docs/notifications#appveyor-yml-configuration , but diff --git a/scripts/appveyor_msvc.bat b/scripts/appveyor_msvc.bat new file mode 100644 index 00000000000..5e8bd451d7e --- /dev/null +++ b/scripts/appveyor_msvc.bat @@ -0,0 +1,63 @@ +goto %1 + +:install +rem Check pip +call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" +if "%buildsystem%" == "scons" ( + python --version + python -m pip --version + rem Install Mako + python -m pip install Mako==1.0.7 + rem Install pywin32 extensions, needed by SCons + python -m pip install pypiwin32 + rem Install python wheels, necessary to install SCons via pip + python -m pip install wheel + rem Install SCons + python -m pip install scons==3.0.1 + call scons --version +) else ( + python --version + python -m pip install Mako==1.0.7 meson + meson --version + + rem Install pkg-config, which meson requires even on windows + cinst -y pkgconfiglite +) + +rem Install flex/bison +set WINFLEXBISON_ARCHIVE=win_flex_bison-%WINFLEXBISON_VERSION%.zip +if not exist "%WINFLEXBISON_ARCHIVE%" appveyor DownloadFile "https://github.com/lexxmark/winflexbison/releases/download/v%WINFLEXBISON_VERSION%/%WINFLEXBISON_ARCHIVE%" +7z x -y -owinflexbison\ "%WINFLEXBISON_ARCHIVE%" > nul +set Path=%CD%\winflexbison;%Path% +win_flex --version +win_bison --version +rem Download and extract LLVM +if not exist "%LLVM_ARCHIVE%" appveyor DownloadFile "https://people.freedesktop.org/~jrfonseca/llvm/%LLVM_ARCHIVE%" +7z x -y "%LLVM_ARCHIVE%" > nul +if "%buildsystem%" == "scons" ( + mkdir llvm\bin + set LLVM=%CD%\llvm +) +goto :eof + +:build_script +if "%buildsystem%" == "scons" ( + call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 +) else ( + rem We use default-library as static to affect any wraps (such as expat and zlib) + rem it would be better if we could set subprojects buildtype independently, + rem but I haven't written that patch yet :) + call meson builddir --backend=vs2017 --default-library=static -Dbuild-tests=true -Db_vscrt=mtd --buildtype=release -Dllvm=false + pushd builddir + call msbuild mesa.sln /m + popd +) +goto :eof + +:test_script +if "%buildsystem%" == "scons" ( + call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 check +) else ( + call meson test -C builddir +) +goto :eof -- 2.30.2