Skip to content

Commit

Permalink
4.6.1 patch release.
Browse files Browse the repository at this point in the history
  • Loading branch information
grafikrobot committed Jun 12, 2021
2 parents 172da13 + 96a3008 commit f4d89da
Show file tree
Hide file tree
Showing 15 changed files with 142 additions and 90 deletions.
16 changes: 5 additions & 11 deletions .ci/azp-linux-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,28 @@ steps:
set -e
cd src/engine
set PATH=${PATH};${CXX_PATH}
./build.sh ${TOOLSET} --cxx=${CXX}
./build.sh ${TOOLSET}
./b2 -v
cd ../..
displayName: Build
- bash: |
set -e
CXX_PATH=`which ${CXX}`
cd test
echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam
python test_all.py ${TEST_TOOLSET}
python test_all.py ${TOOLSET}
cd ..
displayName: Test
- bash: |
set -e
CXX_PATH=`which ${CXX}`
echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam
./src/engine/b2 b2 warnings-as-errors=on variant=debug,release address-model=32,64 toolset=${TEST_TOOLSET}
./src/engine/b2 b2 warnings-as-errors=on variant=debug,release address-model=32,64 toolset=${TOOLSET}
displayName: "No Warnings"
- bash: |
set -e
CXX_PATH=`which ${CXX}`
echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam
./bootstrap.sh ${TOOLSET}
./b2 --prefix=$HOME/temp/.b2 install ${TEST_TOOLSET}
./b2 --prefix=$HOME/temp/.b2 install toolset=${TOOLSET}
rm ./b2
export PATH=$HOME/temp/.b2/bin:$PATH
cd $HOME
touch build.jam
b2 -v
b2 -n --debug-configuration
b2 -n --debug-configuration toolset=${TOOLSET}
displayName: Bootstrap
2 changes: 1 addition & 1 deletion Jamroot.jam
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ local b2_src =
[ glob src/engine/*.cpp src/engine/modules/*.cpp :
src/engine/*nt.cpp src/engine/*unix.cpp src/engine/*vms.cpp
src/engine/yyacc.cpp src/engine/mkjambase.cpp
src/engine/check_cxx11.cpp
src/engine/check_*.cpp
src/engine/jamgram.cpp
] ;
local b2_src_nt = [ glob src/engine/*nt.cpp ] ;
Expand Down
4 changes: 2 additions & 2 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ file LICENSE.txt or copy at https://www.bfgroup.xyz/b2/LICENSE.txt)

Continuously tested on:

* FreeBSD Clang 6, 7, 8, 9
* FreeBSD GCC 6, 7, 8, 9, 10, 11
* FreeBSD Clang 7, 8, 9, 10, 11, 12
* FreeBSD GCC 7, 8, 9, 10, 11
* Linux Clang 3.5, 3.6, 3.7, 3.8, 3.9, 4, 5, 6, 7, 8, 9, 10, 11, 12
* Linux GCC 4.7, 4.8, 4.9, 5, 6, 7, 8, 9, 10, 11
* macOS Xcode 10.0, 10.1, 10.2, 10.2.1, 11.2.1, 11.3, 11.3.1, 11.4.1, 11.5, 11.6, 11.7, 12.0.1, 12.1.1, 12.2, 12.3, 12.4
Expand Down
21 changes: 11 additions & 10 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,27 +22,28 @@ environment:
TOOLSET: vc12
TEST_TOOLSET: msvc
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
# - job_name: 'Cygwin 3.1.7, Test'
# job_group: 'Test'
# TOOLSET:
# TEST_TOOLSET: gcc
# APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
# CXX_PATH: C:/cygwin/bin
- job_name: 'Cygwin 3.1.7 x64, Test'
job_group: 'TestCygwin'
TOOLSET: gcc
TEST_TOOLSET: gcc
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
B2_CXX_PATH: C:/cygwin64/bin
B2_CXX: C:/cygwin64/bin/g++.exe

build_script:
- cmd: |
cd src/engine
PATH=%PATH%;%CXX_PATH%
set PATH=%B2_CXX_PATH%;%PATH%
- cmd: |
./build.bat %TOOLSET%
- cmd: |
cd ../..
src\engine\b2.exe -v
before_test:
-cmd: |
HOME=%HOMEDRIVE%%HOMEPATH%
echo "using" %TEST_TOOLSET% ":" ":" %CXX% ";" > "%HOME%/user-config.jam"
- cmd: |
set HOME=%HOMEDRIVE%%HOMEPATH%
echo using %TEST_TOOLSET% : : %B2_CXX% ; > "%HOME%/user-config.jam"
for:
- matrix:
Expand Down
48 changes: 24 additions & 24 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ stages:
- job: 'Linux_Latest'
strategy:
matrix:
GCC 11: {TOOLSET: gcc, TEST_TOOLSET: gcc, CXX: g++-11, PACKAGES: g++-11, VM_IMAGE: 'ubuntu-latest'}
Clang 12: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-12, PACKAGES: clang-12, LLVM_OS: focal, LLVM_VER: 12, VM_IMAGE: 'ubuntu-latest'}
GCC 11: {TOOLSET: gcc-11, PACKAGES: g++-11, VM_IMAGE: 'ubuntu-latest'}
Clang 12: {TOOLSET: clang-12, PACKAGES: clang-12, LLVM_OS: focal, LLVM_VER: 12, VM_IMAGE: 'ubuntu-latest'}
pool:
vmImage: $(VM_IMAGE)
steps:
Expand Down Expand Up @@ -97,28 +97,28 @@ stages:
- job: 'Linux'
strategy:
matrix:
GCC 10: {TOOLSET: gcc, TEST_TOOLSET: gcc, CXX: g++-10, PACKAGES: g++-10, VM_IMAGE: 'ubuntu-latest'}
GCC 9: {TOOLSET: gcc, TEST_TOOLSET: gcc, CXX: g++-9, PACKAGES: g++-9, VM_IMAGE: 'ubuntu-18.04'}
GCC 8: {TOOLSET: gcc, TEST_TOOLSET: gcc, CXX: g++-8, PACKAGES: g++-8, VM_IMAGE: 'ubuntu-18.04'}
GCC 7: {TOOLSET: gcc, TEST_TOOLSET: gcc, CXX: g++-7, PACKAGES: g++-7, VM_IMAGE: 'ubuntu-18.04'}
GCC 6: {TOOLSET: gcc, TEST_TOOLSET: gcc, CXX: g++-6, PACKAGES: g++-6, VM_IMAGE: 'ubuntu-18.04'}
GCC 5: {TOOLSET: gcc, TEST_TOOLSET: gcc, CXX: g++-5, PACKAGES: g++-5, VM_IMAGE: 'ubuntu-18.04'}
GCC 4.9: {TOOLSET: gcc, TEST_TOOLSET: gcc, CXX: g++-4.9, PACKAGES: g++-4.9, VM_IMAGE: 'ubuntu-16.04'}
GCC 4.8: {TOOLSET: gcc, TEST_TOOLSET: gcc, CXX: g++-4.8, PACKAGES: g++-4.8, VM_IMAGE: 'ubuntu-16.04'}
GCC 4.7: {TOOLSET: gcc, TEST_TOOLSET: gcc, CXX: g++-4.7, PACKAGES: g++-4.7, VM_IMAGE: 'ubuntu-16.04'}
Clang 11: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-11, PACKAGES: clang-11, LLVM_OS: focal, LLVM_VER: 11, VM_IMAGE: 'ubuntu-latest'}
Clang 10: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-10, PACKAGES: clang-10, LLVM_OS: bionic, LLVM_VER: 10, VM_IMAGE: 'ubuntu-18.04'}
Clang 9: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-9, PACKAGES: clang-9, LLVM_OS: bionic, LLVM_VER: 9, VM_IMAGE: 'ubuntu-18.04'}
Clang 8: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-8, PACKAGES: clang-8, LLVM_OS: bionic, LLVM_VER: 8, VM_IMAGE: 'ubuntu-18.04'}
Clang 7: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-7, PACKAGES: clang-7, LLVM_OS: bionic, LLVM_VER: 7, VM_IMAGE: 'ubuntu-18.04'}
Clang 6: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-6.0, PACKAGES: clang-6.0, LLVM_OS: bionic, LLVM_VER: 6.0, VM_IMAGE: 'ubuntu-18.04'}
Clang 5: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-5.0, PACKAGES: clang-5.0, LLVM_OS: bionic, LLVM_VER: 5.0, VM_IMAGE: 'ubuntu-18.04'}
Clang 4: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-4.0, PACKAGES: clang-4.0, LLVM_OS: xenial, LLVM_VER: 4.0, VM_IMAGE: 'ubuntu-16.04'}
Clang 3.9: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-3.9, PACKAGES: clang-3.9, VM_IMAGE: 'ubuntu-16.04'}
Clang 3.8: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-3.8, PACKAGES: clang-3.8, VM_IMAGE: 'ubuntu-16.04'}
Clang 3.7: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-3.7, PACKAGES: clang-3.7, VM_IMAGE: 'ubuntu-16.04'}
Clang 3.6: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-3.6, PACKAGES: clang-3.6, VM_IMAGE: 'ubuntu-16.04'}
Clang 3.5: {TOOLSET: clang, TEST_TOOLSET: clang, CXX: clang++-3.5, PACKAGES: clang-3.5, VM_IMAGE: 'ubuntu-16.04'}
GCC 10: {TOOLSET: gcc-10, PACKAGES: g++-10, VM_IMAGE: 'ubuntu-latest'}
GCC 9: {TOOLSET: gcc-9, PACKAGES: g++-9, VM_IMAGE: 'ubuntu-18.04'}
GCC 8: {TOOLSET: gcc-8, PACKAGES: g++-8, VM_IMAGE: 'ubuntu-18.04'}
GCC 7: {TOOLSET: gcc-7, PACKAGES: g++-7, VM_IMAGE: 'ubuntu-18.04'}
GCC 6: {TOOLSET: gcc-6, PACKAGES: g++-6, VM_IMAGE: 'ubuntu-18.04'}
GCC 5: {TOOLSET: gcc-5, PACKAGES: g++-5, VM_IMAGE: 'ubuntu-18.04'}
GCC 4.9: {TOOLSET: gcc-4.9, PACKAGES: g++-4.9, VM_IMAGE: 'ubuntu-16.04'}
GCC 4.8: {TOOLSET: gcc-4.8, PACKAGES: g++-4.8, VM_IMAGE: 'ubuntu-16.04'}
GCC 4.7: {TOOLSET: gcc-4.7, PACKAGES: g++-4.7, VM_IMAGE: 'ubuntu-16.04'}
Clang 11: {TOOLSET: clang-11, PACKAGES: clang-11, LLVM_OS: focal, LLVM_VER: 11, VM_IMAGE: 'ubuntu-latest'}
Clang 10: {TOOLSET: clang-10, PACKAGES: clang-10, LLVM_OS: bionic, LLVM_VER: 10, VM_IMAGE: 'ubuntu-18.04'}
Clang 9: {TOOLSET: clang-9, PACKAGES: clang-9, LLVM_OS: bionic, LLVM_VER: 9, VM_IMAGE: 'ubuntu-18.04'}
Clang 8: {TOOLSET: clang-8, PACKAGES: clang-8, LLVM_OS: bionic, LLVM_VER: 8, VM_IMAGE: 'ubuntu-18.04'}
Clang 7: {TOOLSET: clang-7, PACKAGES: clang-7, LLVM_OS: bionic, LLVM_VER: 7, VM_IMAGE: 'ubuntu-18.04'}
Clang 6: {TOOLSET: clang-6.0, PACKAGES: clang-6.0, LLVM_OS: bionic, LLVM_VER: 6.0, VM_IMAGE: 'ubuntu-18.04'}
Clang 5: {TOOLSET: clang-5.0, PACKAGES: clang-5.0, LLVM_OS: bionic, LLVM_VER: 5.0, VM_IMAGE: 'ubuntu-18.04'}
Clang 4: {TOOLSET: clang-4.0, PACKAGES: clang-4.0, LLVM_OS: xenial, LLVM_VER: 4.0, VM_IMAGE: 'ubuntu-16.04'}
Clang 3.9: {TOOLSET: clang-3.9, PACKAGES: clang-3.9, VM_IMAGE: 'ubuntu-16.04'}
Clang 3.8: {TOOLSET: clang-3.8, PACKAGES: clang-3.8, VM_IMAGE: 'ubuntu-16.04'}
Clang 3.7: {TOOLSET: clang-3.7, PACKAGES: clang-3.7, VM_IMAGE: 'ubuntu-16.04'}
Clang 3.6: {TOOLSET: clang-3.6, PACKAGES: clang-3.6, VM_IMAGE: 'ubuntu-16.04'}
Clang 3.5: {TOOLSET: clang-3.5, PACKAGES: clang-3.5, VM_IMAGE: 'ubuntu-16.04'}
pool:
vmImage: $(VM_IMAGE)
steps:
Expand Down
7 changes: 7 additions & 0 deletions doc/src/history.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
[[b2.history]]
= History

== Version 4.6.1

* Fix building b2 engine with cygwin64.
-- _René Ferdinand Rivera Morell_
* Fix version detection of clang toolset from compiler exec.
-- _Nikita Kniazev_

== Version 4.6.0

This release wraps up a few new features that make using some toolsets easier
Expand Down
4 changes: 2 additions & 2 deletions src/engine/build.bat
Original file line number Diff line number Diff line change
Expand Up @@ -170,11 +170,11 @@ set B2_SOURCES=
set B2_SOURCES=%B2_SOURCES% builtins.cpp class.cpp
set B2_SOURCES=%B2_SOURCES% command.cpp compile.cpp constants.cpp cwd.cpp
set B2_SOURCES=%B2_SOURCES% debug.cpp debugger.cpp
set B2_SOURCES=%B2_SOURCES% execcmd.cpp execnt.cpp filent.cpp filesys.cpp frames.cpp function.cpp
set B2_SOURCES=%B2_SOURCES% execcmd.cpp execnt.cpp execunix.cpp filent.cpp filesys.cpp fileunix.cpp frames.cpp function.cpp
set B2_SOURCES=%B2_SOURCES% glob.cpp hash.cpp hcache.cpp hdrmacro.cpp headers.cpp jam.cpp
set B2_SOURCES=%B2_SOURCES% jamgram.cpp lists.cpp make.cpp make1.cpp md5.cpp mem.cpp modules.cpp
set B2_SOURCES=%B2_SOURCES% native.cpp object.cpp option.cpp output.cpp parse.cpp pathnt.cpp
set B2_SOURCES=%B2_SOURCES% pathsys.cpp regexp.cpp rules.cpp scan.cpp search.cpp jam_strings.cpp
set B2_SOURCES=%B2_SOURCES% pathsys.cpp pathunix.cpp regexp.cpp rules.cpp scan.cpp search.cpp jam_strings.cpp
set B2_SOURCES=%B2_SOURCES% startup.cpp subst.cpp sysinfo.cpp
set B2_SOURCES=%B2_SOURCES% timestamp.cpp variable.cpp w32_getreg.cpp
set B2_SOURCES=%B2_SOURCES% modules/order.cpp
Expand Down
24 changes: 14 additions & 10 deletions src/engine/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,9 @@ test_compiler ()
SETUP=${B2_SETUP:-true}
if test_true ${B2_VERBOSE_OPT} ; then
echo "> ${CMD} check_cxx11.cpp"
( ${SETUP} ; ${CMD} check_cxx11.cpp )
( ${SETUP} ; ${CMD} check_clib.cpp check_cxx11.cpp )
else
( ${SETUP} ; ${CMD} check_cxx11.cpp ) 1>/dev/null 2>/dev/null
( ${SETUP} ; ${CMD} check_clib.cpp check_cxx11.cpp ) 1>/dev/null 2>/dev/null
fi
CHECK_RESULT=$?
if test_true ${CHECK_RESULT} ; then
Expand All @@ -131,8 +131,8 @@ test_compiler ()

test_toolset ()
{
if test "${B2_TOOLSET}" = "" ; then return ${TRUE} ; fi
if test "${B2_TOOLSET}" = "$1" -o "${B2_TOOLSET}" = "$2" -o "${B2_TOOLSET}" = "$3" ; then return ${TRUE} ; fi
if test "${TOOLSET}" = "" ; then return ${TRUE} ; fi
if test "${TOOLSET}" = "$1" -o "${TOOLSET}" = "$2" -o "${TOOLSET}" = "$3" ; then return ${TRUE} ; fi
return 1
}

Expand All @@ -151,14 +151,18 @@ test_toolset ()
#
check_toolset ()
{
TOOLSET=${B2_TOOLSET%%-*}
TOOLSET_SUFFIX=${B2_TOOLSET##$TOOLSET}

# Prefer Clang (clang) on macOS..
if test_toolset clang && test_uname Darwin && test_compiler clang++ -x c++ -std=c++11 ; then B2_TOOLSET=clang ; return ${TRUE} ; fi
if test_toolset clang && test_uname Darwin && test_compiler clang++$TOOLSET_SUFFIX -x c++ -std=c++11 ; then B2_TOOLSET=clang$TOOLSET_SUFFIX ; return ${TRUE} ; fi
# GCC (gcc)..
if test_toolset gcc && test_compiler g++ -x c++ -std=c++11 ; then B2_TOOLSET=gcc ; return ${TRUE} ; fi
if test_toolset gcc && test_compiler g++$TOOLSET_SUFFIX -x c++ -std=c++11 ; then B2_TOOLSET=gcc$TOOLSET_SUFFIX ; return ${TRUE} ; fi
if test_toolset gcc && test_compiler g++$TOOLSET_SUFFIX -x c++ -std=c++11 -D_GNU_SOURCE ; then B2_TOOLSET=gcc$TOOLSET_SUFFIX ; return ${TRUE} ; fi
# GCC (gcc) with -pthread arg (for AIX)..
if test_toolset gcc && test_compiler g++ -x c++ -std=c++11 -pthread ; then B2_TOOLSET=gcc ; return ${TRUE} ; fi
if test_toolset gcc && test_compiler g++$TOOLSET_SUFFIX -x c++ -std=c++11 -pthread ; then B2_TOOLSET=gcc$TOOLSET_SUFFIX ; return ${TRUE} ; fi
# Clang (clang)..
if test_toolset clang && test_compiler clang++ -x c++ -std=c++11 ; then B2_TOOLSET=clang ; return ${TRUE} ; fi
if test_toolset clang && test_compiler clang++$TOOLSET_SUFFIX -x c++ -std=c++11 ; then B2_TOOLSET=clang$TOOLSET_SUFFIX ; return ${TRUE} ; fi
# Intel macOS (intel-darwin)
if test_toolset intel-darwin && test -r "${HOME}/intel/oneapi/setvars.sh" && test_uname Darwin ; then
B2_SETUP="source ${HOME}/intel/oneapi/setvars.sh"
Expand Down Expand Up @@ -317,7 +321,7 @@ fi
# Set the additional options needed to build the engine based on the toolset.
case "${B2_TOOLSET}" in

gcc)
gcc|gcc-*)
CXX_VERSION_OPT=${CXX_VERSION_OPT:---version}
B2_CXXFLAGS_RELEASE="-O2 -s"
B2_CXXFLAGS_DEBUG="-O0 -g"
Expand Down Expand Up @@ -383,7 +387,7 @@ case "${B2_TOOLSET}" in
B2_CXXFLAGS_DEBUG="-g"
;;

clang*)
clang|clang-*)
CXX_VERSION_OPT=${CXX_VERSION_OPT:---version}
B2_CXXFLAGS_RELEASE="-O3 -s"
B2_CXXFLAGS_DEBUG="-O0 -fno-inline -g"
Expand Down
19 changes: 19 additions & 0 deletions src/engine/check_clib.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/* Copyright 2021 Rene Rivera
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE.txt or https://www.bfgroup.xyz/b2/LICENSE.txt)
*/

/*
This program is a compile test for support of clib use.
This is used by the build script to guess and check the compiler to build the engine with.
*/

// Some headers we depend on..
#include <string.h>


int check_clib()
{
{ auto _ = strdup("-"); }
return 0;
}
2 changes: 1 addition & 1 deletion src/engine/config_toolset.bat
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ goto :eof

:Config_GCC
if not defined CXX ( set "CXX=g++" )
set "B2_CXX="%CXX%" -x c++ -std=c++11 -s -O3 -o b2.exe"
set "B2_CXX="%CXX%" -x c++ -std=c++11 -s -O3 -o b2.exe -D_GNU_SOURCE"
set "_known_=1"
goto :eof

Expand Down
2 changes: 1 addition & 1 deletion src/engine/patchlevel.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ Distributed under the Boost Software License, Version 1.0.

#define VERSION_MAJOR 4
#define VERSION_MINOR 6
#define VERSION_PATCH 0
#define VERSION_PATCH 1
16 changes: 13 additions & 3 deletions src/tools/clang-linux.jam
Original file line number Diff line number Diff line change
Expand Up @@ -108,12 +108,22 @@ rule init ( version ? : command * : options * ) {

rule get-full-version ( command-string )
{
return [ gcc.get-full-version $(command-string) ] ;
return [ common.match-command-output version : "version ([0-9.]+)"
: "$(command-string) --version" ] ;
}

rule get-short-version ( command-string )
rule get-short-version ( command-string : single-digit-since ? )
{
return [ gcc.get-short-version $(command-string) : 4 ] ;
local version = [ get-full-version $(command-string) ] ;
version = [ SPLIT_BY_CHARACTERS $(version) : . ] ;

import version ;
if [ version.version-less $(version) : $(single-digit-since:E=4) ]
{
return $(version[1-2]:J=.) ;
}

return $(version[1]) ;
}

###############################################################################
Expand Down
19 changes: 19 additions & 0 deletions src/tools/common.jam
Original file line number Diff line number Diff line change
Expand Up @@ -1155,6 +1155,25 @@ rule find-compiler ( toolset : tool : version ? : command * : additional-paths *
return $(command) ;
}

rule match-command-output ( kind ? : pattern : command-string )
{
local output = [ SHELL $(command-string) : exit-status ] ;
if 0 != $(output[2])
{
errors.error '$(command-string)'
exited with error code $(output[2]) ;
}

local match = [ MATCH $(pattern) : $(output[1]) ] ;
if ! $(match)
{
errors.error '$(command-string)'
returned an invalid $kind string '$(output[1])' ;
}

return $(match) ;
}

rule __test__ ( )
{
import assert ;
Expand Down
24 changes: 3 additions & 21 deletions src/tools/gcc.jam
Original file line number Diff line number Diff line change
Expand Up @@ -289,36 +289,18 @@ if [ os.name ] = NT
JAMSHELL = % ;
}

local rule get-version ( command-string )
{
local output = [ SHELL $(command-string) : exit-status ] ;
if 0 != $(output[2])
{
errors.error '$(command-string)'
exited with error code $(output[2]) ;
}

local version = [ MATCH "^([0-9.]+)" : $(output[1]) ] ;
if ! $(version)
{
errors.error '$(command-string)'
returned an invalid version string '$(output[1])' ;
}

return $(version) ;
}

rule get-full-version ( command-string )
{
# -dumpfullversion is only supported for gcc 7+.
# Passing both options works, as the first one that's
# recognized will be used.
return [ get-version "$(command-string) -dumpfullversion -dumpversion" ] ;
return [ common.match-command-output version : "^([0-9.]+)"
: "$(command-string) -dumpfullversion -dumpversion" ] ;
}

rule get-short-version ( command-string : single-digit-since ? )
{
local version = [ get-version "$(command-string) -dumpversion" ] ;
local version = [ get-full-version $(command-string) ] ;
version = [ SPLIT_BY_CHARACTERS $(version) : . ] ;

import version ;
Expand Down
Loading

0 comments on commit f4d89da

Please sign in to comment.