Skip to content

Instantly share code, notes, and snippets.

@moon6969
Created July 28, 2017 22:19
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save moon6969/017467affdfb160a9e4b6d228e277bfe to your computer and use it in GitHub Desktop.
Notepad++ buildboost.bat update for VS2017
@ECHO OFF
:: Perform the pre-steps to build boost and set the boost path for the build file
SETLOCAL
SET BOOSTPATH=
SET MSVCTOOLSET=
SET TOOLSETCOMMAND=
SET BOOSTVERSION=
SET WORKPATH=%~dp0%
SET BUILDTARGETPARAM=
SET BUILDTARGETPATH=
rem :PARAMLOOP
IF [%1]==[] (
GOTO PARAMCONTINUE
)
IF NOT [%1]==[--toolset] (
SET BOOSTPATH=%1
)
rem VS2017support: One extra change below for 14.1 toolset support
rem VS2015support: Param loop is REMed out for some reason so hack here to allow -toolset to work properly.
rem VS2015support: This means that parameter or is important. New usage is...
rem VS2015support: BuildBoost-VS2015edit.bat PathToBoost [--toolset ToolsetVersion] [-x64]
IF [%2]==[--toolset] (
SET MSVCTOOLSET=%3
SHIFT
SHIFT
)
IF [%2]==[-x64] (
SET BUILDTARGETPARAM=architecture=ia64
SET BUILDTARGETPATH=architecture-ia64\
)
rem SHIFT
rem GOTO PARAMLOOP
:PARAMCONTINUE
IF [%BOOSTPATH%]==[] (
GOTO USAGE
)
SET TOOLSETCOMMAND=
IF NOT [%MSVCTOOLSET%]==[] (
SET TOOLSETCOMMAND=toolset=%MSVCTOOLSET%
)
IF NOT EXIST "%BOOSTPATH%\boost\regex.hpp" (
ECHO Not found: %BOOSTPATH%\boost\regex.hpp
GOTO BOOSTNOTFOUND
)
IF NOT EXIST "%BOOSTPATH%\bjam\bin\bjam.exe" (
ECHO Building BJAM, the boost build tool
rem VS2015support: Boost 1_63_0 has bootstrap.bat & b2.exe in '...tools\build\' instead of '...tools\build\v2\'
PUSHD %BOOSTPATH%\tools\build
CALL bootstrap.bat
rem VS2015support: Add echo
ECHO Starting boost install
%BOOSTPATH%\tools\build\b2 --prefix=%BOOSTPATH%\bjam install
POPD
)
IF NOT ERRORLEVEL 0 (
GOTO BUILDERROR
)
ECHO.
ECHO ***************************************************************
ECHO Building tool to check boost version
ECHO ***************************************************************
ECHO # Temporary version of auto-generated file > %WORKPATH%\boostpath.mak
ECHO # If you're seeing this version of the file, and you're not currently building boost, >> %WORKPATH%\boostpath.mak
ECHO # then your buildboost.bat is failing somewhere. >> %WORKPATH%\boostpath.mak
ECHO # Run BuildBoost.bat [absolute_path_to_boost] to generate this file again >> %WORKPATH%\boostpath.mak
ECHO # And lookout for error messages >> %WORKPATH%\boostpath.mak
ECHO BOOSTPATH=%BOOSTPATH% >> %WORKPATH%\boostpath.mak
IF NOT EXIST bin md bin
nmake -f getboostver.mak
IF ERRORLEVEL 1 (
ECHO ******************************
ECHO ** ERROR building getboostver.exe
ECHO ** Please see the error messages above, and post as much as you can to the
ECHO ** Notepad++ Open Discussion forum
ECHO ** http://sourceforge.net/projects/notepad-plus/forums/forum/331753
ECHO.
GOTO EOF
)
for /f "delims=" %%i in ('bin\getboostver.exe') do set BOOSTVERSION=%%i
IF [%BOOSTVERSION%]==[] (
ECHO There was an error detecting the boost version.
ECHO Please see the error messages above, and post as much as you can to the
ECHO Notepad++ Open Discussion forum
ECHO http://sourceforge.net/projects/notepad-plus/forums/forum/331753
ECHO.
GOTO EOF
)
ECHO.
ECHO ***************************************************************
ECHO Boost version in use: %BOOSTVERSION%
ECHO ***************************************************************
ECHO.
ECHO.
ECHO ***************************************************************
ECHO Building Boost::regex
ECHO ***************************************************************
ECHO.
PUSHD %BOOSTPATH%\libs\regex\build
%BOOSTPATH%\bjam\bin\bjam %TOOLSETCOMMAND% variant=release threading=multi link=static runtime-link=static %BUILDTARGETPARAM%
IF NOT ERRORLEVEL 0 (
GOTO BUILDERROR
)
%BOOSTPATH%\bjam\bin\bjam %TOOLSETCOMMAND% variant=debug threading=multi link=static runtime-link=static %BUILDTARGETPARAM%
IF NOT ERRORLEVEL 0 (
GOTO BUILDERROR
)
IF NOT [%MSVCTOOLSET%]==[] (
GOTO TOOLSETKNOWN
)
rem VS2015support: ToDo = add detect here. For now must specify Toolset on BuildBoost command line.
:: VS2013
IF EXIST %BOOSTPATH%\bin.v2\libs\regex\build\msvc-12.0\release\%BUILDTARGETPATH%link-static\runtime-link-static\threading-multi\libboost_regex-vc120-mt-s-%BOOSTVERSION%.lib (
SET MSVCTOOLSET=msvc-12.0
)
:: VS2012
IF EXIST %BOOSTPATH%\bin.v2\libs\regex\build\msvc-11.0\release\link-static\runtime-link-static\threading-multi\libboost_regex-vc110-mt-s-%BOOSTVERSION%.lib (
SET MSVCTOOLSET=msvc-11.0
)
:: VS2010
IF EXIST %BOOSTPATH%\bin.v2\libs\regex\build\msvc-10.0\release\link-static\runtime-link-static\threading-multi\libboost_regex-vc100-mt-s-%BOOSTVERSION%.lib (
SET MSVCTOOLSET=msvc-10.0
)
:: VS2008
IF EXIST %BOOSTPATH%\bin.v2\libs\regex\build\msvc-9.0\release\link-static\runtime-link-static\threading-multi\libboost_regex-vc90-mt-s-%BOOSTVERSION%.lib (
SET MSVCTOOLSET=msvc-9.0
)
:: VS2005
IF EXIST %BOOSTPATH%\bin.v2\libs\regex\build\msvc-8.0\release\link-static\runtime-link-static\threading-multi\libboost_regex-vc80-mt-s-%BOOSTVERSION%.lib (
SET MSVCTOOLSET=msvc-8.0
)
IF [%MSVCTOOLSET%]==[] (
ECHO No correctly built boost regex libraries could be found.
ECHO Try specifying the MSVC version on the command line.
GOTO USAGE
)
ECHO ***********************************************
ECHO Assuming toolset in use is %MSVCTOOLSET%
ECHO ***********************************************
ECHO If this is not correct, specify the version on the command line with --toolset
ECHO Run buildboost.bat without parameters to see the usage.
:TOOLSETKNOWN
rem VS2017support: Add BOOSTLIBPATH case
:: VS2017
IF [%MSVCTOOLSET%]==[msvc-14.1] (
SET BOOSTLIBPATH=%BOOSTPATH%\bin.v2\libs\regex\build\msvc-14.1
)
rem VS2015support: Add BOOSTLIBPATH case
:: VS2015
IF [%MSVCTOOLSET%]==[msvc-14.0] (
SET BOOSTLIBPATH=%BOOSTPATH%\bin.v2\libs\regex\build\msvc-14.0
)
:: VS2013
IF [%MSVCTOOLSET%]==[msvc-12.0] (
SET BOOSTLIBPATH=%BOOSTPATH%\bin.v2\libs\regex\build\msvc-12.0
)
:: VS2012
IF [%MSVCTOOLSET%]==[msvc-11.0] (
SET BOOSTLIBPATH=%BOOSTPATH%\bin.v2\libs\regex\build\msvc-11.0
)
:: VS2010
IF [%MSVCTOOLSET%]==[msvc-10.0] (
SET BOOSTLIBPATH=%BOOSTPATH%\bin.v2\libs\regex\build\msvc-10.0
)
:: VS2008
IF [%MSVCTOOLSET%]==[msvc-9.0] (
SET BOOSTLIBPATH=%BOOSTPATH%\bin.v2\libs\regex\build\msvc-9.0
)
:: VS2005
IF [%MSVCTOOLSET%]==[msvc-8.0] (
SET BOOSTLIBPATH=%BOOSTPATH%\bin.v2\libs\regex\build\msvc-8.0
)
:: Error case, so we try to give the user a helpful error message
IF [%BOOSTLIBPATH%] == [] (
ECHO ****************************************
ECHO ** ERROR
ECHO ** Boost library could not be found.
ECHO ** Make sure you've specified the correct boost path on the command line,
ECHO ** and try adding the toolset version
ECHO ****************************************
GOTO USAGE
)
ECHO # Autogenerated file, run BuildBoost.bat [path_to_boost] to generate > %WORKPATH%\boostpath.mak
ECHO BOOSTPATH=%BOOSTPATH% >> %WORKPATH%\boostpath.mak
ECHO BOOSTLIBPATH=%BOOSTLIBPATH% >> %WORKPATH%\boostpath.mak
ECHO BUILDTARGETPATH=%BUILDTARGETPATH% >> %WORKPATH%\boostpath.mak
POPD
ECHO.
ECHO.
ECHO Boost::regex built.
ECHO.
ECHO Now you need to build scintilla.
ECHO.
ECHO From the scintilla\win32 directory
ECHO.
ECHO nmake -f scintilla.mak
ECHO.
ECHO.
GOTO EOF
:BOOSTNOTFOUND
ECHO Boost Path not valid. Run BuildBoost.bat with the absolute path to the directory
ECHO where you unpacked your boost zip.
ECHO.
:USAGE
ECHO.
ECHO Boost is available free from www.boost.org
ECHO.
ECHO Unzip the file downloaded from www.boost.org, and give the absolute path
ECHO as the first parameter to buildboost.bat
ECHO.
ECHO e.g.
ECHO buildboost.bat d:\libs\boost_1_55_0
ECHO.
ECHO To build 64 bit version, add "-x64" flag after the full file path.
ECHO e.g.
ECHO buildboost.bat d:\libs\boost_1_55_0 -x64
ECHO.
ECHO.
ECHO You can specify which version of the Visual Studio compiler to use
ECHO with --toolset.
ECHO Use:
ECHO --toolset msvc-8.0 for Visual studio 2005
ECHO --toolset msvc-9.0 for Visual Studio 2008
ECHO --toolset msvc-10.0 for Visual Studio 2010
ECHO --toolset msvc-11.0 for Visual Studio 2012
ECHO --toolset msvc-12.0 for Visual Studio 2013
ECHO.
ECHO.
ECHO e.g. To build with boost in d:\libs\boost_1_55_0 with Visual Studio 2008
ECHO.
ECHO buildboost.bat --toolset msvc-9.0 d:\libs\boost_1_55_0
ECHO.
GOTO EOF
:BUILDERROR
ECHO There was an error building boost. Please see the messages above for details.
ECHO - Have you got a clean extract from a recent boost version, such as 1.55?
ECHO - Download a fresh copy from www.boost.org and extract it to a directory,
ECHO and run the batch again with the name of that directory
:EOF
ENDLOCAL
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment