summaryrefslogtreecommitdiff
path: root/dev-util/boost-build/boost-build-1.73.0-cxx-20.patch
blob: d7e7a15d9803f923b92621f554cc3ae489a1f423 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
From 677e2f3d546d8e7f140d97cd8291a81a423e6451 Mon Sep 17 00:00:00 2001
From: Andrey Semashev <Lastique@users.noreply.github.com>
Date: Wed, 6 May 2020 18:56:38 +0300
Subject: [PATCH] Add cxxstd value 20 for C++20 (#592)

* Added cxxstd value 20 for C++20.

The -std=c++20 is supported by clang 10.

* Updated cxxstd=latest for clang 5.0 and newer.

clang 5.0 supports -std=c++17. clang 6.0 supports -std=c++2a.
clang 10.0 supports -std=c++20.

* Updated cxxstd=latest for gcc.

gcc 4.9 supports -std=c++14. gcc 6 supports -std=c++17. gcc 10 will support
-std=c++20.

* Added support for cxxstd=20 to toolsets that don't support C++20.
---
 src/tools/clang.jam                   | 5 ++++-
 src/tools/cray.jam                    | 2 +-
 src/tools/features/cxxstd-feature.jam | 4 ++--
 src/tools/gcc.jam                     | 5 ++++-
 src/tools/pgi.jam                     | 1 +
 src/tools/xlcpp.jam                   | 4 ++++
 7 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/tools/clang.jam b/tools/clang.jam
index bcb3837039..f1850db194 100644
--- a/tools/clang.jam
+++ b/tools/clang.jam
@@ -55,7 +55,10 @@ rule init-cxxstd-flags ( toolset : condition * : version )
     local dialects = [ feature.values <cxxstd-dialect> ] ;
     dialects = [ set.difference $(dialects) : gnu iso ] ;
     local std ;
-    if [ version-ge $(version) : 3.5 ] { std = 1z ; }
+    if [ version-ge $(version) : 10.0 ] { std = 20 ; }
+    else if [ version-ge $(version) : 6.0 ] { std = 2a ; }
+    else if [ version-ge $(version) : 5.0 ] { std = 17 ; }
+    else if [ version-ge $(version) : 3.5 ] { std = 1z ; }
     else if [ version-ge $(version) : 3.4 ] { std = 14 ; }
     else if [ version-ge $(version) : 3.3 ] { std = 11 ; }
     else { std = 03 ; }
diff --git a/tools/cray.jam b/tools/cray.jam
index 107b3dbbc5..d586af3af4 100644
--- a/tools/cray.jam
+++ b/tools/cray.jam
@@ -707,7 +707,7 @@ rule set-cxxstd-procedure ( targets * : sources * : properties * )
     local cxxstd = [ feature.get-values cxxstd : $(properties) ] ;
     local cray-cxxstd = ;
 
-    local unsupported-values = 2a ; # I don't know what '2a' means.
+    local unsupported-values = 2a 20 ; # I don't know what '2a' means.
     if $(cxxstd) && $(cxxstd) in $(unsupported-values)
     {
 
diff --git a/tools/features/cxxstd-feature.jam b/tools/features/cxxstd-feature.jam
index dfddf5bb78..3d7ba8d8cc 100644
--- a/tools/features/cxxstd-feature.jam
+++ b/tools/features/cxxstd-feature.jam
@@ -8,7 +8,7 @@ import feature ;
 #| tag::doc[]
 
 [[bbv2.builtin.features.cxxstd]]`cxxstd`::
-*Allowed values*: `98`, `03`, `0x`, `11`, `1y`, `14`, `1z`, `17`, `2a`,
+*Allowed values*: `98`, `03`, `0x`, `11`, `1y`, `14`, `1z`, `17`, `2a`, `20`,
 `latest`.
 +
 Specifies the version of the C++ Standard Language to build with. All the
@@ -28,7 +28,7 @@ is supported.
 |# # end::doc[]
 
 feature.feature cxxstd
-    : 98 03 0x 11 1y 14 1z 17 2a latest
+    : 98 03 0x 11 1y 14 1z 17 2a 20 latest
     : optional composite propagated ;
 
 #| tag::doc[]
diff --git a/tools/gcc.jam b/tools/gcc.jam
index 5ceb038fc5..f03336a5d7 100644
--- a/tools/gcc.jam
+++ b/tools/gcc.jam
@@ -499,8 +499,11 @@ local rule compile-link-flags ( * )
     local rule init-cxxstd-flags ( condition * : version )
     {
         local std ;
-        if [ version-ge $(version) : 8 ] { std = 2a ; }
+        if [ version-ge $(version) : 10 ] { std = 20 ; }
+        else if [ version-ge $(version) : 8 ] { std = 2a ; }
+        else if [ version-ge $(version) : 6 ] { std = 17 ; }
         else if [ version-ge $(version) : 5 ] { std = 1z ; }
+        else if [ version-ge $(version) : 4.9 ] { std = 14 ; }
         else if [ version-ge $(version) : 4.8 ] { std = 1y ; }
         else if [ version-ge $(version) : 4.7 ] { std = 11 ; }
         else if [ version-ge $(version) : 3.3 ] { std = 98 ; }
diff --git a/tools/pgi.jam b/tools/pgi.jam
index b59db4d4ec..6eed7759fb 100644
--- a/tools/pgi.jam
+++ b/tools/pgi.jam
@@ -57,6 +57,7 @@ flags pgi.compile.c++ OPTIONS <cxxstd>14 : -std=c++14 ;
 flags pgi.compile.c++ OPTIONS <cxxstd>1z : -std=c++17 ;
 flags pgi.compile.c++ OPTIONS <cxxstd>17 : -std=c++17 ;
 flags pgi.compile.c++ OPTIONS <cxxstd>2a : -std=c++17 ;
+flags pgi.compile.c++ OPTIONS <cxxstd>20 : -std=c++17 ;
 flags pgi.compile.c++ OPTIONS <cxxstd>latest : -std=c++17 ;
 
 flags pgi.compile OPTIONS <link>shared : -fpic ;
diff --git a/tools/xlcpp.jam b/tools/xlcpp.jam
index 1b66301cf1..a9e767cefb 100644
--- a/tools/xlcpp.jam
+++ b/tools/xlcpp.jam
@@ -112,6 +112,10 @@ flags xlcpp.compile.c++ OPTIONS <cxxstd>0x : -std=c++11 ;
 flags xlcpp.compile.c++ OPTIONS <cxxstd>11 : -std=c++11 ;
 flags xlcpp.compile.c++ OPTIONS <cxxstd>1y : -std=c++1y ;
 flags xlcpp.compile.c++ OPTIONS <cxxstd>14 : -std=c++1y ;
+flags xlcpp.compile.c++ OPTIONS <cxxstd>1z : -std=c++1y ;
+flags xlcpp.compile.c++ OPTIONS <cxxstd>17 : -std=c++1y ;
+flags xlcpp.compile.c++ OPTIONS <cxxstd>2a : -std=c++1y ;
+flags xlcpp.compile.c++ OPTIONS <cxxstd>20 : -std=c++1y ;
 flags xlcpp.compile.c++ OPTIONS <cxxstd>latest : -std=c++1y ;
 
 flags xlcpp.compile OPTIONS <cflags> ;