164 lines
5.6 KiB
Batchfile
164 lines
5.6 KiB
Batchfile
::
|
|
:: 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.
|
|
::
|
|
|
|
::
|
|
:: Generates a Visual Studio solution for thrift and then builds it.
|
|
:: Assumes third party libraries have been built or placed already.
|
|
::
|
|
:: Open a Visual Studio Command Prompt of your choosing and then
|
|
:: run this script.
|
|
::
|
|
:: Normally the script will run cmake to generate a solution, then
|
|
:: perform a build, then run tests on the complete thrift library
|
|
:: in release mode.
|
|
::
|
|
:: Flags you can use to change this behavior:
|
|
::
|
|
:: /DEBUG - debug instead of release
|
|
:: /IDE - launch Visual Studio with a path set
|
|
:: up correctly to run tests instead of
|
|
:: performing any other actions, i.e.
|
|
:: implies setting the next three flags
|
|
:: /NOGENERATE - skip cmake generation - useful if you
|
|
:: have already generated a solution and just
|
|
:: want to build
|
|
:: /NOBUILD - skip cmake build - useful if you just
|
|
:: want to generate a solution
|
|
:: /NOTEST - skip ctest execution
|
|
::
|
|
|
|
@ECHO OFF
|
|
SETLOCAL EnableDelayedExpansion
|
|
|
|
:: Sets variables for third party versions used in build
|
|
CALL scripts\tpversions.bat || EXIT /B
|
|
|
|
IF NOT DEFINED PACKAGE_NAME SET PACKAGE_NAME=thrift
|
|
IF NOT DEFINED PACKAGE_VERSION SET PACKAGE_VERSION=dev
|
|
IF NOT DEFINED SOURCE_DIR SET SOURCEDIR=%~dp0%PACKAGE_NAME%
|
|
IF NOT DEFINED WIN3P_ROOT SET WIN3P_ROOT=%~dp0thirdparty
|
|
|
|
:: Set COMPILER to (vc100 - vc140) depending on the current environment
|
|
CALL scripts\cl_setcompiler.bat || EXIT /B
|
|
|
|
:: Set ARCH to either win32 or x64 depending on the current environment
|
|
CALL scripts\cl_setarch.bat || EXIT /B
|
|
|
|
:: Set GENERATOR for CMake depending on the current environment
|
|
CALL scripts\cl_setgenerator.bat || EXIT /B
|
|
|
|
:: Defaults
|
|
|
|
IF NOT DEFINED BUILDTYPE SET BUILDTYPE=Release
|
|
SET OPT_IDE=0
|
|
SET OPT_BUILD=1
|
|
SET OPT_GENERATE=1
|
|
SET OPT_TEST=1
|
|
|
|
:: Apply Flags
|
|
|
|
IF /I "%1" == "/DEBUG" SET BUILDTYPE=Debug
|
|
IF /I "%2" == "/DEBUG" SET BUILDTYPE=Debug
|
|
IF /I "%3" == "/DEBUG" SET BUILDTYPE=Debug
|
|
IF /I "%1" == "/IDE" SET OPT_IDE=1
|
|
IF /I "%2" == "/IDE" SET OPT_IDE=1
|
|
IF /I "%3" == "/IDE" SET OPT_IDE=1
|
|
IF /I "%1" == "/NOBUILD" SET OPT_BUILD=0
|
|
IF /I "%2" == "/NOBUILD" SET OPT_BUILD=0
|
|
IF /I "%3" == "/NOBUILD" SET OPT_BUILD=0
|
|
IF /I "%1" == "/NOGENERATE" SET OPT_GENERATE=0
|
|
IF /I "%2" == "/NOGENERATE" SET OPT_GENERATE=0
|
|
IF /I "%3" == "/NOGENERATE" SET OPT_GENERATE=0
|
|
IF /I "%1" == "/NOTEST" SET OPT_TEST=0
|
|
IF /I "%2" == "/NOTEST" SET OPT_TEST=0
|
|
IF /I "%3" == "/NOTEST" SET OPT_TEST=0
|
|
|
|
IF %OPT_IDE% == 1 (
|
|
SET OPT_GENERATE=0
|
|
SET OPT_BUILD=0
|
|
SET OPT_TEST=0
|
|
)
|
|
|
|
SET BUILDDIR=%~dp0build\%PACKAGE_NAME%\%PACKAGE_VERSION%\%COMPILER%\%ARCH%\
|
|
SET OUTDIR=%~dp0dist\%PACKAGE_NAME%-%PACKAGE_VERSION%\%COMPILER%\%ARCH%\%BUILDTYPE%\
|
|
SET BOOST_LIBDIR=lib%ARCH:~-2,2%-msvc-%COMPILER:~-3,2%.0
|
|
IF "%BUILDTYPE%" == "Debug" (SET ZLIB_STATIC_SUFFIX=d)
|
|
|
|
ECHO/
|
|
ECHO =========================================================================
|
|
ECHO Configuration: %PACKAGE_NAME% %PACKAGE_VERSION% %COMPILER%:%ARCH%:%BUILDTYPE% "%GENERATOR%"
|
|
IF DEFINED COMPILERONLY (
|
|
ECHO COMPILER ONLY
|
|
)
|
|
ECHO Build Directory: %BUILDDIR%
|
|
ECHO Install Directory: %OUTDIR%
|
|
ECHO Source Directory: %SOURCEDIR%
|
|
ECHO =========================================================================
|
|
ECHO/
|
|
|
|
IF %OPT_IDE% == 1 (
|
|
|
|
CALL :SETRUNPATH || EXIT /B
|
|
CALL DEVENV "!BUILDDIR!Apache Thrift.sln" || EXIT /B
|
|
EXIT /B
|
|
|
|
)
|
|
|
|
MKDIR "%BUILDDIR%"
|
|
CD "%BUILDDIR%" || EXIT /B
|
|
|
|
IF %OPT_GENERATE% == 1 (
|
|
|
|
CMAKE.EXE %~dp0thrift ^
|
|
-G"%GENERATOR%" ^
|
|
-DBISON_EXECUTABLE=%WIN3P_ROOT%\dist\winflexbison\win_bison.exe ^
|
|
-DBOOST_ROOT=%WIN3P_ROOT%\dist\boost_%TP_BOOST_VERSION% ^
|
|
-DBOOST_LIBRARYDIR=%WIN3P_ROOT%\dist\boost_%TP_BOOST_VERSION%\%BOOST_LIBDIR% ^
|
|
-DCMAKE_INSTALL_PREFIX=%OUTDIR% ^
|
|
-DCMAKE_BUILD_TYPE=%BUILDTYPE% ^
|
|
-DFLEX_EXECUTABLE=%WIN3P_ROOT%\dist\winflexbison\win_flex.exe ^
|
|
-DINTTYPES_ROOT=%WIN3P_ROOT%\dist\msinttypes ^
|
|
-DLIBEVENT_ROOT=%WIN3P_ROOT%\dist\libevent-%TP_LIBEVENT_VERSION%\%COMPILER%\%ARCH%\%BUILDTYPE% ^
|
|
-DOPENSSL_ROOT_DIR=%WIN3P_ROOT%\dist\openssl-%TP_OPENSSL_VERSION%\%COMPILER%\%ARCH%\%BUILDTYPE%\dynamic ^
|
|
-DOPENSSL_USE_STATIC_LIBS=OFF ^
|
|
-DZLIB_LIBRARY=%WIN3P_ROOT%\dist\zlib-%TP_ZLIB_VERSION%\%COMPILER%\%ARCH%\lib\zlib%ZLIB_LIB_SUFFIX%.lib ^
|
|
-DZLIB_ROOT=%WIN3P_ROOT%\dist\zlib-%TP_ZLIB_VERSION%\%COMPILER%\%ARCH% ^
|
|
-DWITH_BOOSTTHREADS=ON ^
|
|
-DWITH_SHARED_LIB=OFF ^
|
|
-DWITH_STATIC_LIB=ON || EXIT /B
|
|
|
|
)
|
|
|
|
IF %OPT_BUILD% == 1 (
|
|
|
|
CD %BUILDDIR%
|
|
CMAKE.EXE --build . --config %BUILDTYPE% --target INSTALL || EXIT /B
|
|
|
|
)
|
|
|
|
IF %OPT_TEST% == 1 (
|
|
|
|
CALL :SETRUNPATH || EXIT /B
|
|
CMAKE.EXE --build . --config %BUILDTYPE% --target RUN_TESTS || EXIT /B
|
|
|
|
)
|
|
|
|
:SETRUNPATH
|
|
SET PATH=!PATH!;%WIN3P_ROOT%\dist\boost_%TP_BOOST_VERSION%\%BOOST_LIBDIR%
|
|
SET PATH=!PATH!;%WIN3P_ROOT%\dist\openssl-%TP_OPENSSL_VERSION%\%COMPILER%\%ARCH%\%BUILDTYPE%\dynamic\bin
|
|
SET PATH=!PATH!;%WIN3P_ROOT%\dist\zlib-%TP_ZLIB_VERSION%\%COMPILER%\%ARCH%\bin
|
|
EXIT /B
|
|
|
|
ENDLOCAL
|
|
EXIT /B
|