# Copyright: 2016-2023 Paul Obermeier (obermeier@tcl3d.org) # Distributed under BSD license. # # BuildType Windows: Boost / vs # Boost / gcc # BuildType Linux : Boost / gcc # BuildType Darwin : Boost / gcc # # Boost is very sensible regarding the usable C++ compiler versions. # See Setup file MiscLibs.bawt for possible combinations. proc Init_Boost { libName libVersion } { SetScriptAuthor $libName "Paul Obermeier" "obermeier@tcl3d.org" SetLibHomepage $libName "https://www.boost.org/" SetLibDependencies $libName "None" SetPlatforms $libName "All" SetWinCompilers $libName "gcc" "vs" } proc Build_Boost { libName libVersion buildDir instDir devDir distDir } { if { [UseWinCompiler $libName "gcc"] && [Is32Bit] } { SetErrorMessage "gcc supported for 64-bit only" return false } if { [IsWindows] } { switch -exact -- [GetCompilerVersion] { "vs2008" { set msvc "msvc-9.0" } "vs2010" { set msvc "msvc-10.0" } "vs2012" { set msvc "msvc-11.0" } "vs2013" { set msvc "msvc-12.0" } "vs2015" { set msvc "msvc-14.0" } "vs2017" { set msvc "msvc-14.1" } "vs2019" { set msvc "msvc-14.2" } "vs2022" { set msvc "msvc-14.2" } "gcc" { set msvc "gcc" } default { SetErrorMessage "Unsupported Visual Studio version [GetCompilerVersion]" return false } } set ts "" switch -exact -- [GetCompilerVersion] { "vs2008" { # set ts "vc9" ; } "vs2010" { # set ts "vc10" ; } "vs2012" { # set ts "vc11" ; } "vs2013" { # set ts "vc12" ; } "vs2015" { set ts "vc14" ; } "vs2017" { # set ts "vc141" ; } "vs2019" { # set ts "vc142" ; } "vs2022" { # set ts "vc143" ; } "gcc" { set ts "gcc" ; } default { SetErrorMessage "Unsupported Visual Studio version [GetCompilerVersion]" return false } } } if { [UseStage "Extract" $libName] } { ExtractLibrary $libName $buildDir ReplaceLine "$buildDir/bootstrap.bat" \ "call .\\build.bat" \ "call .\\build.bat \%1" } if { [UseStage "Configure" $libName] } { set cmd "" if { [IsWindows] } { if { [UseWinCompiler $libName "gcc"] } { append cmd "./bootstrap.bat $ts" } else { append cmd "CALL .\\bootstrap.bat $ts" } } else { append cmd "./bootstrap.sh --without-libraries=python" } if { [UseWinCompiler $libName "gcc"] } { MSysRun $libName "${libName}_Configure" $buildDir "$cmd" } else { DosRun $libName "${libName}_Configure" $buildDir "$cmd" } } if { [UseStage "Compile" $libName] } { set cmd "" if { [IsWindows] } { if { [UseWinCompiler $libName "gcc"] } { append cmd "./b2.exe " } else { append cmd "CALL .\\b2.exe " } append cmd "--toolset=$msvc " append cmd "--without-python " } else { append cmd "./b2 " } append cmd "address-model=[GetBits] " append cmd "--prefix=$instDir --build-dir=$buildDir/Build " append cmd "variant=[string tolower [GetBuildType]] " append cmd "link=shared runtime-link=shared threading=multi " if { [GetNumJobs $libName] > 1 } { append cmd "-j[GetNumJobs $libName] " } if { [UseWinCompiler $libName "gcc"] } { MSysRun $libName "${libName}_Compile" $buildDir "$cmd" } else { DosRun $libName "${libName}_Compile" $buildDir "$cmd" } } if { [UseStage "Distribute" $libName] } { MultiFileCopy "$buildDir/boost" "$instDir/include" "*" true if { [IsWindows] } { MultiFileCopy "$buildDir/stage/lib" "$instDir/lib" "*.dll *.lib *.a" true } else { MultiFileCopy "$buildDir/stage/lib" "$instDir/lib" "*.so* *.dylib" true } StripLibraries "$instDir" if { [IsWindows] } { MultiFileCopy "$instDir/lib" "$distDir/lib" "*.dll" } else { LibFileCopy "$instDir" "$distDir" "*.dylib *.so*" } LibFileCopy "$instDir" "$devDir" "*" true MultiFileCopy "$instDir/include" "$devDir/include/boost" "*" true if { [IsDebugBuild] && [UseWinCompiler $libName "vs"] } { MultiFileCopy "$buildDir/Build/boost/bin.v2/libs" "$devDir/lib" "*.pdb" } } return true }