diff options
author | James E. King III <jking@apache.org> | 2018-03-06 14:23:23 -0500 |
---|---|---|
committer | James E. King III <jking@apache.org> | 2018-03-06 18:17:41 -0500 |
commit | 860a5f1ff828d395397c643a1f694e7bdd9729b0 (patch) | |
tree | 66248020366b5de6156f6164bbb5fcacd531fcf0 /build/appveyor | |
parent | a37feafd42543b9a4b3192a4a9478b93e7308a24 (diff) | |
download | thrift-860a5f1ff828d395397c643a1f694e7bdd9729b0.tar.gz |
THRIFT-4508: change windows CI builds to use current MSVC, one cygwin and one mingw build
Diffstat (limited to 'build/appveyor')
-rw-r--r-- | build/appveyor/CYGW-appveyor-build.bat | 36 | ||||
-rw-r--r-- | build/appveyor/CYGW-appveyor-install.bat | 34 | ||||
-rw-r--r-- | build/appveyor/CYGW-appveyor-test.bat | 21 | ||||
-rw-r--r-- | build/appveyor/MING-appveyor-build.bat | 11 | ||||
-rw-r--r-- | build/appveyor/MING-appveyor-install.bat | 42 | ||||
-rw-r--r-- | build/appveyor/MING-appveyor-test.bat | 10 | ||||
-rw-r--r-- | build/appveyor/MSVC-appveyor-install.bat | 46 | ||||
-rw-r--r-- | build/appveyor/MSVC-appveyor-test.bat | 13 | ||||
-rw-r--r-- | build/appveyor/MSYS-appveyor-build.bat | 3 | ||||
-rw-r--r-- | build/appveyor/MSYS-appveyor-install.bat | 21 | ||||
-rw-r--r-- | build/appveyor/build-libevent.bat | 17 | ||||
-rw-r--r-- | build/appveyor/build-zlib.bat | 15 | ||||
-rw-r--r-- | build/appveyor/cl_setcompiler.bat | 10 | ||||
-rw-r--r-- | build/appveyor/cl_setenv.bat | 125 | ||||
-rw-r--r-- | build/appveyor/cl_setgenerator.bat | 11 | ||||
-rw-r--r-- | build/appveyor/cl_showenv.bat | 15 | ||||
-rw-r--r-- | build/appveyor/simulate-appveyor.bat | 2 |
17 files changed, 309 insertions, 123 deletions
diff --git a/build/appveyor/CYGW-appveyor-build.bat b/build/appveyor/CYGW-appveyor-build.bat new file mode 100644 index 000000000..c22622294 --- /dev/null +++ b/build/appveyor/CYGW-appveyor-build.bat @@ -0,0 +1,36 @@ +:: +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_build.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B + +SET CMAKEARGS=^ + -G'%GENERATOR%' ^ + -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^ + -DCMAKE_INSTALL_PREFIX=%INSTDIR% ^ + -DCMAKE_CXX_EXTENSIONS=ON ^ + -DCMAKE_CXX_FLAGS="-D_GNU_SOURCE" ^ + -DCMAKE_CXX_STANDARD=11 ^ + -DWITH_PYTHON=OFF ^ + -DWITH_SHARED_LIB=OFF ^ + -DWITH_STATIC_LIB=ON ^ + -DWITH_STDTHREADS=ON + +@ECHO ON +%BASH% -lc "mkdir -p %BUILDDIR% && cd %BUILDDIR% && cmake.exe %SRCDIR% %CMAKEARGS% && cmake --build . --config %CONFIGURATION% --target install" || EXIT /B +@ECHO OFF diff --git a/build/appveyor/CYGW-appveyor-install.bat b/build/appveyor/CYGW-appveyor-install.bat new file mode 100644 index 000000000..77db7d40a --- /dev/null +++ b/build/appveyor/CYGW-appveyor-install.bat @@ -0,0 +1,34 @@ +:: +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. +:: + +:: +:: Appveyor install script for CYGWIN +:: Installs third party packages we need for a cmake build +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_install.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B +CALL cl_showenv.bat || EXIT /B + +:: +:: Install apt-cyg for package management +:: + +%BASH% -lc "wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg && install apt-cyg /bin && rm -f apt-cyg" || EXIT /B +%BASH% -lc "apt-cyg update" || EXIT /B +%BASH% -lc "apt-cyg install bison cmake flex gcc-g++ libboost-devel libevent-devel make openssl-devel zlib-devel" diff --git a/build/appveyor/CYGW-appveyor-test.bat b/build/appveyor/CYGW-appveyor-test.bat new file mode 100644 index 000000000..b667f9bb1 --- /dev/null +++ b/build/appveyor/CYGW-appveyor-test.bat @@ -0,0 +1,21 @@ +:: +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion +CD build\appveyor || EXIT /B +CALL cl_banner_test.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B + +%BASH% -lc "cd %BUILDDIR% && ctest.exe -C %CONFIGURATION% --timeout 300 -VV -E '%DISABLED_TESTS%'" || EXIT /B diff --git a/build/appveyor/MING-appveyor-build.bat b/build/appveyor/MING-appveyor-build.bat index 838e42880..6ebdb906e 100644 --- a/build/appveyor/MING-appveyor-build.bat +++ b/build/appveyor/MING-appveyor-build.bat @@ -22,15 +22,14 @@ CALL cl_setenv.bat || EXIT /B SET CMAKEARGS=^ -G'%GENERATOR%' ^ -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^ - -DCMAKE_INSTALL_PREFIX=%INSTDIR_MSYS% ^ - -DCMAKE_MAKE_PROGRAM=/mingw64/bin/mingw32-make ^ - -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc.exe ^ - -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++.exe ^ - -DWITH_LIBEVENT=OFF ^ + -DCMAKE_INSTALL_PREFIX=%INSTDIR% ^ + -DCMAKE_MAKE_PROGRAM=/mingw%NORM_PLATFORM%/bin/mingw32-make ^ + -DCMAKE_C_COMPILER=/mingw%NORM_PLATFORM%/bin/gcc.exe ^ + -DCMAKE_CXX_COMPILER=/mingw%NORM_PLATFORM%/bin/g++.exe ^ -DWITH_PYTHON=OFF ^ -DWITH_SHARED_LIB=OFF ^ -DWITH_STATIC_LIB=ON @ECHO ON -%BASH% -lc "mkdir -p %BUILDDIR_MSYS% && cd %BUILDDIR_MSYS% && cmake.exe %SRCDIR_MSYS% %CMAKEARGS% && cmake --build . --config %CONFIGURATION% --target install" || EXIT /B +%BASH% -lc "mkdir -p %BUILDDIR% && cd %BUILDDIR% && cmake.exe %SRCDIR% %CMAKEARGS% && cmake --build . --config %CONFIGURATION% --target install" || EXIT /B @ECHO OFF diff --git a/build/appveyor/MING-appveyor-install.bat b/build/appveyor/MING-appveyor-install.bat index 0d5f99e4d..ce8fc7d12 100644 --- a/build/appveyor/MING-appveyor-install.bat +++ b/build/appveyor/MING-appveyor-install.bat @@ -13,9 +13,43 @@ :: :: -:: Appveyor install script for MinGW -:: Installs (or builds) third party packages we need +:: Appveyor install script for MINGW on MSYS2 +:: Installs third party packages we need for a cmake build :: -:: Same as the MSYS installation requirements -CALL build\appveyor\MSYS-appveyor-install.bat +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_install.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B +CALL cl_showenv.bat || EXIT /B + +:: We're going to keep boost at a version cmake understands +SET BOOSTVER=1.64.0-3 +SET BOOSTPKG=mingw-w64-%MINGWPLAT%-boost-%BOOSTVER%-any.pkg.tar.xz +SET IGNORE=--ignore mingw-w64-x86_64-boost --ignore mingw-w64-i686-boost + +SET PACKAGES=^ + --needed -S bison flex make ^ + mingw-w64-%MINGWPLAT%-cmake ^ + mingw-w64-%MINGWPLAT%-libevent ^ + mingw-w64-%MINGWPLAT%-openssl ^ + mingw-w64-%MINGWPLAT%-toolchain ^ + mingw-w64-%MINGWPLAT%-zlib + +::mingw-w64-%MINGWPLAT%-qt5 : WAY too large (1GB download!) - tested in cygwin builds anyway + +:: Remove old packages that no longer exist to avoid an error +%BASH% -lc "pacman --noconfirm --remove libcatgets catgets || true" || EXIT /B + +:: Upgrade things +%BASH% -lc "pacman --noconfirm -Syu %IGNORE%" || EXIT /B +%BASH% -lc "pacman --noconfirm -Su %IGNORE%" || EXIT /B +%BASH% -lc "pacman --noconfirm %PACKAGES%" || EXIT /B + +:: Install a slightly older boost (BOOSTVER) as cmake in mingw +:: does not have built-in dependencies for boost 1.66.0 yet +:: -- this cuts down on build warning output -- + +%BASH% -lc "if [[ $(pacman --query | grep '%MINGWPLAT%-boost') ^!= *"%BOOSTVER%"* ]]; then wget http://repo.msys2.org/mingw/%MINGWPLAT%/%BOOSTPKG% && pacman --noconfirm --needed -U %BOOSTPKG% && rm %BOOSTPKG%; fi" || EXIT /B diff --git a/build/appveyor/MING-appveyor-test.bat b/build/appveyor/MING-appveyor-test.bat index c37c72a9c..499c1ff80 100644 --- a/build/appveyor/MING-appveyor-test.bat +++ b/build/appveyor/MING-appveyor-test.bat @@ -12,5 +12,11 @@ :: limitations under the License. :: -:: Same as MSYS2 -CALL build\appveyor\MSYS-appveyor-test.bat +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_test.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B + +%BASH% -lc "cd %BUILDDIR% && ctest.exe -C %CONFIGURATION% --timeout 300 -VV -E '%DISABLED_TESTS%'" || EXIT /B diff --git a/build/appveyor/MSVC-appveyor-install.bat b/build/appveyor/MSVC-appveyor-install.bat index 573700e0c..95008bd52 100644 --- a/build/appveyor/MSVC-appveyor-install.bat +++ b/build/appveyor/MSVC-appveyor-install.bat @@ -26,47 +26,35 @@ CALL cl_setenv.bat || EXIT /B CALL cl_showenv.bat || EXIT /B MKDIR "%WIN3P%" || EXIT /B -:: Install ant - this also installs the latest JDK as a dependency -:: The installation of JDK requires us to pick up PATH and JAVE_HOME from the registry -cinst -c "%BUILDCACHE%" -y ant || EXIT /B +choco feature enable -n allowGlobalConfirmation || EXIT /B + +:: Things to install when NOT running in appveyor: +IF "%APPVEYOR_BUILD_ID%" == "" ( + cup -y chocolatey || EXIT /B + cinst -c "%BUILDCACHE%" -y curl || EXIT /B + cinst -c "%BUILDCACHE%" -y 7zip || EXIT /B + cinst -c "%BUILDCACHE%" -y python3 || EXIT /B + cinst -c "%BUILDCACHE%" -y openssl.light || EXIT /B +) -:: Install bison and flex +cinst -c "%BUILDCACHE%" -y jdk8 || EXIT /B cinst -c "%BUILDCACHE%" -y winflexbison3 || EXIT /B -:: zlib +:: zlib - not available through chocolatey CD "%APPVEYOR_SCRIPTS%" || EXIT /B call build-zlib.bat || EXIT /B -:: libevent +:: libevent - not available through chocolatey CD "%APPVEYOR_SCRIPTS%" || EXIT /B call build-libevent.bat || EXIT /B -:: python packages -pip install backports.ssl_match_hostname ^ +:: python packages (correct path to pip set in cl_setenv.bat) +pip.exe ^ + install backports.ssl_match_hostname ^ ipaddress ^ + six ^ tornado ^ twisted || EXIT /B -:: msinttypes - for MSVC2010 only -SET MSINTTYPESURL=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/msinttypes/msinttypes-r26.zip -IF "%COMPILER%" == "vc100" ( - MKDIR "%WIN3P%\msinttypes" || EXIT /B - CD "%WIN3P%\msinttypes" || EXIT /B - appveyor DownloadFile "%MSINTTYPESURL%" || EXIT /B - 7z x "msinttypes-r26.zip" || EXIT /B -) - -:: appveyor build slaves do not have MSVC2010 Boost installed -IF "%COMPILER%" == "vc100" ( - SET BITS=64 - IF "%PLATFORM%" == "x86" ( - SET BITS=32 - ) - SET BOOSTEXEURL=https://downloads.sourceforge.net/project/boost/boost-binaries/%BOOST_VERSION%/boost_%BOOST_VERSION:.=_%-msvc-10.0-!BITS!.exe - SET BOOSTEXE=C:\projects\thrift\buildcache\boost_%BOOST_VERSION:.=_%-msvc-10.0-!BITS!.exe - appveyor DownloadFile "!BOOSTEXEURL!" -FileName "!BOOSTEXE!" || EXIT /B - "!BOOSTEXE!" /dir=C:\Libraries\boost_%BOOST_VERSION:.=_% /silent || EXIT /B -) - :: Haskell (GHC) and cabal cinst -c "%BUILDCACHE%" -y ghc || EXIT /B diff --git a/build/appveyor/MSVC-appveyor-test.bat b/build/appveyor/MSVC-appveyor-test.bat index 16ee2078e..35945792a 100644 --- a/build/appveyor/MSVC-appveyor-test.bat +++ b/build/appveyor/MSVC-appveyor-test.bat @@ -12,14 +12,21 @@ :: limitations under the License. :: -@ECHO OFF +@ECHO ON SETLOCAL EnableDelayedExpansion CD build\appveyor || EXIT /B CALL cl_banner_test.bat || EXIT /B CALL cl_setenv.bat || EXIT /B CD "%BUILDDIR%" || EXIT /B -:: Add directories to the path to find DLLs of third party libraries so tests run -SET PATH=%BOOST_LIBRARYDIR%;%OPENSSL_ROOT%\bin;%WIN3P%\zlib-inst\bin;%PATH% +DIR C:\libraries +DIR C:\libraries\boost_1_59_0 +DIR C:\libraries\boost_1_60_0 +DIR C:\libraries\boost_1_62_0 +DIR C:\libraries\boost_1_63_0 +DIR C:\libraries\boost_1_64_0 + +:: Add directories to the path to find DLLs of third party libraries so tests run properly! +SET PATH=%BOOST_LIBRARYDIR:/=\%;%OPENSSL_ROOT%\bin;%WIN3P%\zlib-inst\bin;%PATH% ctest -C %CONFIGURATION% --timeout 300 -VV -E "(%DISABLED_TESTS%)" || EXIT /B diff --git a/build/appveyor/MSYS-appveyor-build.bat b/build/appveyor/MSYS-appveyor-build.bat index b9d8955e2..44017295e 100644 --- a/build/appveyor/MSYS-appveyor-build.bat +++ b/build/appveyor/MSYS-appveyor-build.bat @@ -33,12 +33,13 @@ SET CMAKEARGS=-G\"%GENERATOR%\" ^ -DCMAKE_CXX_COMPILER=g++.exe ^ -DCMAKE_MAKE_PROGRAM=make.exe ^ -DCMAKE_INSTALL_PREFIX=%INSTDIR_MSYS% ^ + -DLIBEVENT_ROOT=%LIBEVENT_ROOT% ^ -DOPENSSL_LIBRARIES=%OPENSSL_LIBRARIES% ^ -DOPENSSL_ROOT_DIR=%OPENSSL_ROOT% ^ -DOPENSSL_USE_STATIC_LIBS=ON ^ -DWITH_BOOST_STATIC=ON ^ -DWITH_JAVA=OFF ^ - -DWITH_LIBEVENT=OFF ^ + -DWITH_LIBEVENT=ON ^ -DWITH_PYTHON=%WITH_PYTHON% ^ -DWITH_SHARED_LIB=OFF ^ -DWITH_STATIC_LIB=ON diff --git a/build/appveyor/MSYS-appveyor-install.bat b/build/appveyor/MSYS-appveyor-install.bat index ff43cd371..a818df305 100644 --- a/build/appveyor/MSYS-appveyor-install.bat +++ b/build/appveyor/MSYS-appveyor-install.bat @@ -25,17 +25,24 @@ CALL cl_banner_install.bat || EXIT /B CALL cl_setenv.bat || EXIT /B CALL cl_showenv.bat || EXIT /B +:: We're going to keep boost at a version cmake understands +SET BOOSTPKG=mingw-w64-x86_64-boost-1.64.0-3-any.pkg.tar.xz +SET IGNORE=--ignore mingw-w64-x86_64-boost + SET PACKAGES=^ - --needed -S bison flex ^ - make ^ - mingw-w64-x86_64-boost ^ + --needed -S bison flex make ^ mingw-w64-x86_64-cmake ^ + mingw-w64-x86_64-libevent ^ mingw-w64-x86_64-openssl ^ mingw-w64-x86_64-toolchain ^ mingw-w64-x86_64-zlib -:: omitting libevent-devel for now it is version 2.1.4 and doesn't play nice with MinGW +%BASH% -lc "pacman --noconfirm -Syu %IGNORE%" || EXIT /B +%BASH% -lc "pacman --noconfirm -Su %IGNORE%" || EXIT /B +%BASH% -lc "pacman --noconfirm %PACKAGES%" || EXIT /B + +:: Install a slightly older boost (1.64.0) as cmake 3.10 +:: does not have built-in dependencies for boost 1.66.0 yet +:: -- this cuts down on build warning output -- +%BASH% -lc "wget http://repo.msys2.org/mingw/x86_64/%BOOSTPKG% && pacman --noconfirm --needed -U %BOOSTPKG% && rm %BOOSTPKG%" || EXIT /B -%BASH% -lc "pacman --noconfirm -Syu" || EXIT /B -%BASH% -lc "pacman --noconfirm -Su" || EXIT /B -%BASH% -lc "pacman --noconfirm %PACKAGES%" || EXIT /B diff --git a/build/appveyor/build-libevent.bat b/build/appveyor/build-libevent.bat index 13c74ee15..64b635b1e 100644 --- a/build/appveyor/build-libevent.bat +++ b/build/appveyor/build-libevent.bat @@ -17,14 +17,21 @@ SETLOCAL EnableDelayedExpansion SET URLFILE=libevent-%LIBEVENT_VERSION%-stable.tar.gz SET URL=https://github.com/libevent/libevent/releases/download/release-%LIBEVENT_VERSION%-stable/%URLFILE% -CD %WIN3P% || EXIT /B -appveyor DownloadFile %URL% || EXIT /B -7z x %URLFILE% -so | 7z x -si -ttar > nul || EXIT /B +:: Download - support running a local build or a build in appveyor +CD "%WIN3P%" || EXIT /B +IF "%APPVEYOR_BUILD_ID%" == "" ( + curl -L -f -o "%URLFILE%" "%URL%" +) ELSE ( + appveyor DownloadFile "%URL%" +) +7z x "%URLFILE%" -so | 7z x -si -ttar > nul || EXIT /B CD "libevent-%LIBEVENT_VERSION%-stable" || EXIT /B -nmake -f Makefile.nmake || EXIT /B +nmake -f Makefile.nmake static_libs || EXIT /B + +:: in libevent 2.0 there is no nmake subdirectory in WIN32-Code, but in 2.1 there is mkdir lib || EXIT /B move *.lib lib\ || EXIT /B -move WIN32-Code\event2\* include\event2\ || EXIT /B +move WIN32-Code\event2\* include\event2\ || move WIN32-Code\nmake\event2\* include\event2\ || EXIT /B move *.h include\ || EXIT /B ENDLOCAL diff --git a/build/appveyor/build-zlib.bat b/build/appveyor/build-zlib.bat index d8811a153..9195726d5 100644 --- a/build/appveyor/build-zlib.bat +++ b/build/appveyor/build-zlib.bat @@ -24,11 +24,18 @@ SET URLFILE=%PACKAGE%.tar.gz SET URL=http://zlib.net/%URLFILE% SET FURL=http://zlib.net/fossils/%URLFILE% -:: Download +:: Download - support running a local build or a build in appveyor CD "%WIN3P%" || EXIT /B -appveyor DownloadFile "%URL%" -IF ERRORLEVEL 1 ( - appveyor DownloadFile "%FURL%" || EXIT /B +IF "%APPVEYOR_BUILD_ID%" == "" ( + curl -L -f -o "%URLFILE%" "%URL%" + IF ERRORLEVEL 1 ( + curl -L -f -o "%URLFILE%" "%FURL%" + ) +) ELSE ( + appveyor DownloadFile "%URL%" + IF ERRORLEVEL 1 ( + appveyor DownloadFile "%FURL%" || EXIT /B + ) ) 7z x "%URLFILE%" -so | 7z x -si -ttar > nul || EXIT /B diff --git a/build/appveyor/cl_setcompiler.bat b/build/appveyor/cl_setcompiler.bat index b97da7359..733ffc538 100644 --- a/build/appveyor/cl_setcompiler.bat +++ b/build/appveyor/cl_setcompiler.bat @@ -20,7 +20,7 @@ :: vc110 = Visual Studio 2012 :: vc120 = Visual Studio 2013 :: vc140 = Visual Studio 2015 -:: vc150 = Visual Studio 2017 +:: vc141 = Visual Studio 2017 :: :: Honors any existing COMPILER environment variable :: setting instead of overwriting it, to allow it @@ -44,10 +44,10 @@ IF NOT "%PROFILE:~0,4%" == "MSVC" ( IF !ERRORLEVEL! == 0 (SET COMPILER=vc110) CALL :CHECK 18 IF !ERRORLEVEL! == 0 (SET COMPILER=vc120) - CALL :CHECK 19.00 + CALL :CHECK 19.0 IF !ERRORLEVEL! == 0 (SET COMPILER=vc140) - CALL :CHECK 19.10 - IF !ERRORLEVEL! == 0 (SET COMPILER=vc150) + CALL :CHECK 19.1 + IF !ERRORLEVEL! == 0 (SET COMPILER=vc141) ) IF NOT DEFINED COMPILER ( @@ -59,5 +59,5 @@ ECHO [info ] detected compiler edition %COMPILER% EXIT /B 0 :CHECK -cl /? 2>&1 | findstr /C:"Version %1%." > nul +cl /? 2>&1 | findstr /C:"Version %1%" > nul EXIT /B diff --git a/build/appveyor/cl_setenv.bat b/build/appveyor/cl_setenv.bat index e80d6b569..10af2d347 100644 --- a/build/appveyor/cl_setenv.bat +++ b/build/appveyor/cl_setenv.bat @@ -12,6 +12,8 @@ :: limitations under the License. :: +@ECHO OFF + IF "%PROFILE%" == "MSVC2010" ( CALL "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" %PLATFORM% ) ELSE IF "%PROFILE%" == "MSVC2012" ( @@ -21,11 +23,11 @@ ) ELSE IF "%PROFILE%" == "MSVC2015" ( CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %PLATFORM% ) ELSE IF "%PROFILE%" == "MSVC2017" ( - CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat" %PLATFORM% + CALL :SETUPNEWERMSVC || EXIT /B ) ELSE IF "%PROFILE%" == "MINGW" ( - SET MSYS2_PATH_TYPE=stock -) ELSE IF "%PROFILE%" == "MSYS" ( - SET MSYS2_PATH_TYPE=stock + REM Supported, nothing special to do here. +) ELSE IF "%PROFILE%" == "CYGWIN" ( + REM Supported, nothing special to do here. ) ELSE ( ECHO Unsupported PROFILE=%PROFILE% or PLATFORM=%PLATFORM% EXIT /B 1 @@ -35,58 +37,93 @@ CALL cl_setcompiler.bat || EXIT /B CALL cl_setgenerator.bat || EXIT /B SET APPVEYOR_SCRIPTS=%APPVEYOR_BUILD_FOLDER%\build\appveyor -SET BUILDCACHE=%APPVEYOR_BUILD_FOLDER%\buildcache -SET BUILDDIR=%APPVEYOR_BUILD_FOLDER%\local-thrift-build -SET INSTDIR=%APPVEYOR_BUILD_FOLDER%\local-thrift-inst +SET BUILDCACHE=%APPVEYOR_BUILD_FOLDER%\..\build\cache +SET BUILDDIR=%APPVEYOR_BUILD_FOLDER%\..\build\%PROFILE%\%PLATFORM% +SET INSTDIR=%APPVEYOR_BUILD_FOLDER%\..\build\%PROFILE%\%PLATFORM% SET SRCDIR=%APPVEYOR_BUILD_FOLDER% -: PLATFORM is x64 or x86, but we want x86 to become "32" when we strip it down for paths: +:: PLATFORM is x64 or x86 +:: NORM_PLATFORM is 64 or 32 SET NORM_PLATFORM=%PLATFORM:~-2,2% IF "%NORM_PLATFORM%" == "86" (SET NORM_PLATFORM=32) -:: FindBoost needs forward slashes so cmake doesn't see something as an escaped character -SET BOOST_ROOT=C:/Libraries/boost_%BOOST_VERSION:.=_% -SET BOOST_LIBRARYDIR=%BOOST_ROOT%/lib%NORM_PLATFORM%-msvc-%COMPILER:~-3,2%.0 -SET OPENSSL_ROOT=C:\OpenSSL-Win%NORM_PLATFORM% -SET WIN3P=%APPVEYOR_BUILD_FOLDER%\thirdparty +IF "%PROFILE:~0,4%" == "MSVC" ( -:: MSVC2010 doesn't "do" std::thread -IF "%COMPILER%" == "vc100" ( - SET THREADMODEL=BOOST -) ELSE ( - SET THREADMODEL=STD -) + :: FindBoost needs forward slashes so cmake doesn't see something as an escaped character + SET BOOST_ROOT=C:/Libraries/boost_%BOOST_VERSION:.=_% + SET BOOST_LIBRARYDIR=!BOOST_ROOT!/lib%NORM_PLATFORM%-msvc-%COMPILER:~-3,2%.%COMPILER:~-1,1% + SET OPENSSL_ROOT=C:\OpenSSL-Win%NORM_PLATFORM% + SET WIN3P=%APPVEYOR_BUILD_FOLDER%\thirdparty -IF "%PYTHON_VERSION%" == "" ( - SET WITH_PYTHON=OFF -) ELSE ( - SET WITH_PYTHON=ON - SET PATH=C:\Python%PYTHON_VERSION:.=%\scripts;C:\Python%PYTHON_VERSION:.=%;!PATH! -) -IF "%CONFIGURATION%" == "Debug" (SET ZLIB_LIB_SUFFIX=d) + :: MSVC2010 doesn't "do" std::thread + IF "%COMPILER%" == "vc100" ( + SET THREADMODEL=BOOST + ) ELSE ( + SET THREADMODEL=STD + ) -IF NOT "%QT_VERSION%" == "" ( - IF /i "%PLATFORM%" == "x64" SET QTEXT=_64 - SET PATH=C:\Qt\%QT_VERSION%\%PROFILE%!QTEXT!\bin;!PATH! -) + IF "%PYTHON_VERSION%" == "" ( + SET WITH_PYTHON=OFF + ) ELSE ( + SET WITH_PYTHON=ON + IF /i "%PLATFORM%" == "x64" SET PTEXT=-x64 + SET PATH=C:\Python%PYTHON_VERSION:.=%!PTEXT!\scripts;C:\Python%PYTHON_VERSION:.=%!PTEXT!;!PATH! + ) + IF "%CONFIGURATION%" == "Debug" (SET ZLIB_LIB_SUFFIX=d) + + IF NOT "%QT_VERSION%" == "" ( + IF /i "%PLATFORM%" == "x64" SET QTEXT=_64 + SET PATH=C:\Qt\%QT_VERSION%\%PROFILE%!QTEXT!\bin;!PATH! + ) + +) ELSE IF "%PROFILE:~0,4%" == "MING" ( -IF NOT "%PROFILE:~0,4%" == "MSVC" ( + :: PLATFORM = x86 means MINGWPLAT i686 + :: PLATFORM = x64 means MINGWPLAT x86_64 + SET MINGWPLAT=x86_64 + IF "%PLATFORM%" == "x86" (SET MINGWPLAT=i686) SET BASH=C:\msys64\usr\bin\bash.exe - SET BOOST_ROOT= - SET BOOST_INCLUDEDIR=/mingw64/include - SET BOOST_LIBRARYDIR=/mingw64/lib - SET OPENSSL_LIBRARIES=/mingw64/lib - SET OPENSSL_ROOT=/mingw64 - SET WIN3P= + !BASH! -lc "sed -i '/export PATH=\/mingw32\/bin/d' ~/.bash_profile && sed -i '/export PATH=\/mingw64\/bin/d' ~/.bash_profile && echo 'export PATH=/mingw%NORM_PLATFORM%/bin:$PATH' >> ~/.bash_profile" || EXIT /B - !BASH! -lc "sed -i '/export PATH=\/mingw64\/bin/d' ~/.bash_profile && echo 'export PATH=/mingw64/bin:$PATH' >> ~/.bash_profile" || EXIT /B + SET BUILDDIR=%BUILDDIR:\=/% + SET BUILDDIR=/c!BUILDDIR:~2! + SET INSTDIR=%INSTDIR:\=/% + SET INSTDIR=/c!INSTDIR:~2! + SET SRCDIR=%SRCDIR:\=/% + SET SRCDIR=/c!SRCDIR:~2! + +) ELSE IF "%PROFILE:~0,4%" == "CYGW" ( + + SET CYGWINROOT=C:\cygwin + IF "%PLATFORM%" == "x64" (SET CYGWINROOT=!CYGWINROOT!64) + + SET BASH=!CYGWINROOT!\bin\bash.exe + SET SETUP=!CYGWINROOT!\setup-x86 + IF "%PLATFORM%" == "x64" (SET SETUP=!SETUP!_64) + SET SETUP=!SETUP!.exe + + SET BUILDDIR=%BUILDDIR:\=/% + SET BUILDDIR=/cygdrive/c!BUILDDIR:~2! + SET INSTDIR=%INSTDIR:\=/% + SET INSTDIR_CYG=/cygdrive/c!INSTDIR:~2! + SET SRCDIR=%SRCDIR:\=/% + SET SRCDIR=/cygdrive/c!SRCDIR:~2! ) -SET BUILDDIR_MSYS=%BUILDDIR:\=/% -SET BUILDDIR_MSYS=/c%BUILDDIR_MSYS:~2% -SET INSTDIR_MSYS=%INSTDIR:\=/% -SET INSTDIR_MSYS=/c%INSTDIR_MSYS:~2% -SET SRCDIR_MSYS=%SRCDIR:\=/% -SET SRCDIR_MSYS=/c%SRCDIR_MSYS:~2% +GOTO :EOF + +:SETUPNEWERMSVC + FOR /F "USEBACKQ TOKENS=*" %%i IN (`call "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version "[15.0,16.0)" -property installationPath`) DO ( + IF "%MSVCROOT%" == "" (SET MSVCROOT=%%i) + ) + SET MSVCPLAT=x86 + IF "%PLATFORM%" == "x64" (SET MSVCPLAT=amd64) + + SET CURRENTDIR=%CD% + CALL "!MSVCROOT!\Common7\Tools\VsDevCmd.bat" -arch=!MSVCPLAT! || EXIT /B + CD %CURRENTDIR% + EXIT /B + +:EOF diff --git a/build/appveyor/cl_setgenerator.bat b/build/appveyor/cl_setgenerator.bat index 7ca98530f..5eb6ff31f 100644 --- a/build/appveyor/cl_setgenerator.bat +++ b/build/appveyor/cl_setgenerator.bat @@ -28,6 +28,7 @@ :: Optional [arch] can be "Win64" or "IA64". :: MinGW Makefiles = Generates makefiles for MinGW :: MSYS Makefiles = Generates makefiles for MSYS +:: Unix Makefiles = Generates makefiles for CYGWIN :: :: Honors any existing GENERATOR environment variable :: setting instead of overwriting it, to allow it @@ -45,6 +46,10 @@ IF DEFINED GENERATOR ( IF "%PROFILE:~0,4%" == "MING" ( SET GENERATOR=MinGW Makefiles + +) ELSE IF "%PROFILE:~0,4%" == "CYGW" ( + SET GENERATOR=Unix Makefiles + ) ELSE IF "%PROFILE:~0,4%" == "MSYS" ( SET GENERATOR=MSYS Makefiles ) ELSE ( @@ -55,9 +60,9 @@ IF "%PROFILE:~0,4%" == "MING" ( IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 11 2012!GENARCH! CALL :CHECK 18 IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 12 2013!GENARCH! - CALL :CHECK 19.00 + CALL :CHECK 19.0 IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 14 2015!GENARCH! - CALL :CHECK 19.10 + CALL :CHECK 19.1 IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 15 2017!GENARCH! ) @@ -70,5 +75,5 @@ ECHO [info ] using CMake generator %GENERATOR% EXIT /B 0 :CHECK -cl /? 2>&1 | findstr /C:"Version %1%." > nul +cl /? 2>&1 | findstr /C:"Version %1%" > nul EXIT /B diff --git a/build/appveyor/cl_showenv.bat b/build/appveyor/cl_showenv.bat index 33dd66072..3dda546e5 100644 --- a/build/appveyor/cl_showenv.bat +++ b/build/appveyor/cl_showenv.bat @@ -34,6 +34,7 @@ ECHO/ ECHO Our Variables ECHO ------------------------------------------------------------------------------- ECHO APPVEYOR_SCRIPTS = %APPVEYOR_SCRIPTS% +ECHO BASH = %BASH% ECHO BOOST_ROOT = %BOOST_ROOT% ECHO BOOST_INCLUDEDIR = %BOOST_INCLUDEDIR% ECHO BOOST_LIBRARYDIR = %BOOST_LIBRARYDIR% @@ -44,20 +45,16 @@ ECHO GENERATOR = %GENERATOR% ECHO INSTDIR = %INSTDIR% ECHO JAVA_HOME = %JAVA_HOME% ECHO OPENSSL_ROOT = %OPENSSL_ROOT% +ECHO SETUP = %SETUP% ECHO SRCDIR = %SRCDIR% ECHO WIN3P = %WIN3P% ECHO WITH_PYTHON = %WITH_PYTHON% ECHO ZLIB_STATIC_SUFFIX = %ZLIB_STATIC_SUFFIX% IF NOT "%PROFILE:~0,4%" == "MSVC" ( -ECHO/ -ECHO MSYS2/MinGW -ECHO ------------------------------------------------------------------------------- -ECHO BUILDDIR_MSYS = %BUILDDIR_MSYS% -ECHO INSTDIR_MSYS = %INSTDIR_MSYS% -ECHO MSYS2_PATH_TYPE = %MSYS2_PATH_TYPE% -ECHO SRCDIR_MSYS = %SRCDIR_MSYS% -ECHO PATH = -C:\msys64\usr\bin\bash -lc "echo $PATH" + ECHO/ + ECHO UNIXy PATH + ECHO ------------------------------------------------------------------------------- + %BASH% -lc "echo $PATH" ) ECHO/ ECHO Windows PATH diff --git a/build/appveyor/simulate-appveyor.bat b/build/appveyor/simulate-appveyor.bat index b32c0da12..8674f40b7 100644 --- a/build/appveyor/simulate-appveyor.bat +++ b/build/appveyor/simulate-appveyor.bat @@ -16,7 +16,7 @@ :: Helps build thrift by pretending to be appveyor :: Usage: :: cd build\appveyor -:: simulate-appveyor.bat [Debug|Release] [x86|x64] [MINGW|MSVC2015] +:: simulate-appveyor.bat [Debug|Release] [x86|x64] [CYGWIN|MINGW|MSVC201?] :: @ECHO OFF |