Skip to content

Commit e9b1db4

Browse files
committed
Build using C++17
This raises the minimum GCC version supported to 7 (see https://gcc.gnu.org/projects/cxx-status.html#cxx17). Add -Wno-register to silence warnings about the use of the `register` storage class by older flex versions (as present on macOS). CMake doesn't know about C++ 17 until version 3.8, so we need to hard-code the necessary command-line options.
1 parent f69bb0e commit e9b1db4

File tree

9 files changed

+14
-26
lines changed

9 files changed

+14
-26
lines changed

.clang-format

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ SpacesInCStyleCastParentheses: 'false'
7171
SpacesInContainerLiterals: 'false'
7272
SpacesInParentheses: 'false'
7373
SpacesInSquareBrackets: 'false'
74-
Standard: c++11
74+
Standard: c++17
7575
TabWidth: '2'
7676
UseTab: Never
7777
---

CMakeLists.txt

+2-7
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,9 @@ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR
7272
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
7373
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
7474
# Enable lots of warnings
75-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -Werror -Wno-deprecated-declarations -Wswitch-enum")
75+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wall -Wpedantic -Werror -Wno-deprecated-declarations -Wno-register -Wswitch-enum")
7676
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
77-
# This would be the place to enable warnings for Windows builds, although
78-
# config.inc doesn't seem to do that currently
77+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17 /W3 /D_CRT_SECURE_NO_WARNINGS /O2 /GF ")
7978

8079
# Include Git Bash Environment (rqeuired for download_project (patch))
8180
find_package(Git)
@@ -180,16 +179,12 @@ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR
180179
endif()
181180

182181
function(cprover_default_properties)
183-
set(CBMC_CXX_STANDARD 11)
184-
set(CBMC_CXX_STANDARD_REQUIRED true)
185182
set(CBMC_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY
186183
"Developer ID Application: Daniel Kroening")
187184

188185
set_target_properties(
189186
${ARGN}
190187
PROPERTIES
191-
CXX_STANDARD ${CBMC_CXX_STANDARD}
192-
CXX_STANDARD_REQUIRED ${CBMC_CXX_STANDARD_REQUIRED}
193188
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CBMC_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY})
194189
endfunction()
195190

COMPILING.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ We assume that you have a Debian/Ubuntu or Red Hat-like distribution.
152152
```
153153
dnf install gcc gcc-c++ flex bison curl patch
154154
```
155-
Note that you need g++ version 5.0 or newer.
155+
Note that you need g++ version 7.0 or newer.
156156
157157
On Amazon Linux and similar distributions, do as root:
158158
```

scripts/bash-autocomplete/extract_switches.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22
echo "Compiling the helper file to extract the raw list of parameters from cbmc"
3-
g++ -c -MMD -MP -std=c++11 -Wall -I ../../src/ -ftrack-macro-expansion=0 -fno-diagnostics-show-caret switch_extractor_helper.c -o tmp.o 2> pragma.txt
3+
g++ -c -MMD -MP -std=c++17 -Wall -I ../../src/ -ftrack-macro-expansion=0 -fno-diagnostics-show-caret switch_extractor_helper.c -o tmp.o 2> pragma.txt
44

55
retval=$?
66

scripts/glucose_CMakeLists.txt

-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ add_library(glucose-condensed
99
set_target_properties(
1010
glucose-condensed
1111
PROPERTIES
12-
CXX_STANDARD 11
13-
CXX_STANDARD_REQUIRED true
1412
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Developer ID Application: Daniel Kroening"
1513
)
1614

scripts/minisat2_CMakeLists.txt

-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ add_library(minisat2-condensed
99
set_target_properties(
1010
minisat2-condensed
1111
PROPERTIES
12-
CXX_STANDARD 11
13-
CXX_STANDARD_REQUIRED true
1412
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Developer ID Application: Daniel Kroening"
1513
)
1614

src/common

+6-6
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ endif
3434
CP_CFLAGS = -MMD -MP
3535
CXXFLAGS ?= -Wall -O2
3636
ifeq ($(filter-out OSX OSX_Universal,$(BUILD_ENV_)),)
37-
CP_CXXFLAGS += -MMD -MP -mmacosx-version-min=10.15 -std=c++11 -stdlib=libc++
37+
CP_CXXFLAGS += -MMD -MP -mmacosx-version-min=10.15 -std=c++17 -stdlib=libc++
3838
LINKFLAGS += -mmacosx-version-min=10.15 -stdlib=libc++
3939
LINKNATIVE += -mmacosx-version-min=10.15 -stdlib=libc++
4040
else
41-
CP_CXXFLAGS += -MMD -MP -std=c++11
41+
CP_CXXFLAGS += -MMD -MP -std=c++17
4242
endif
4343
ifeq ($(filter -O%,$(CXXFLAGS)),)
4444
CP_CXXFLAGS += -O2
@@ -102,13 +102,13 @@ else ifeq ($(BUILD_ENV_),Cygwin)
102102
CFLAGS ?= -Wall -O2
103103
CXXFLAGS ?= -Wall -O2
104104
CP_CFLAGS = -MMD -MP
105-
CP_CXXFLAGS += -MMD -MP -std=c++11 -U__STRICT_ANSI__
105+
CP_CXXFLAGS += -MMD -MP -std=c++17 -U__STRICT_ANSI__
106106
# Cygwin-g++ has problems with statically linking exception code.
107107
# If linking fails, remove -static.
108-
LINKFLAGS = -static -std=c++11
108+
LINKFLAGS = -static -std=c++17
109109
LINKLIB = ar rcT $@ $^
110110
LINKBIN = $(CXX) $(LINKFLAGS) -o $@ -Wl,--start-group $^ -Wl,--end-group $(LIBS)
111-
LINKNATIVE = $(HOSTCXX) -std=c++11 -o $@ $^ -static
111+
LINKNATIVE = $(HOSTCXX) -std=c++17 -o $@ $^ -static
112112
ifeq ($(origin CC),default)
113113
#CC = gcc
114114
CC = x86_64-w64-mingw32-gcc
@@ -133,7 +133,7 @@ else ifeq ($(BUILD_ENV_),MSVC)
133133
DEPEXT = .dep
134134
EXEEXT = .exe
135135
CFLAGS ?= /W3 /O2 /GF
136-
CXXFLAGS ?= /W3 /D_CRT_SECURE_NO_WARNINGS /O2 /GF
136+
CXXFLAGS ?= /W3 /D_CRT_SECURE_NO_WARNINGS /O2 /GF /std:c++17
137137
CP_CFLAGS =
138138
CP_CXXFLAGS +=
139139
LINKLIB = lib /NOLOGO /OUT:$@ $^

src/config.inc

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ BUILD_ENV = AUTO
55
ifeq ($(BUILD_ENV),MSVC)
66
#CXXFLAGS += /Wall /WX
77
else
8-
CXXFLAGS += -Wall -pedantic -Werror -Wno-deprecated-declarations -Wswitch-enum
8+
CXXFLAGS += -Wall -pedantic -Werror -Wno-deprecated-declarations -Wno-register -Wswitch-enum
99
endif
1010

1111
ifeq ($(CPROVER_WITH_PROFILING),1)

src/solvers/CMakeLists.txt

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
set(CMAKE_CXX_STANDARD 11)
2-
set(CMAKE_CXX_STANDARD_REQUIRED true)
3-
41
# We may use one of several different solver libraries.
52
# The following files wrap the chosen solver library.
63
# We remove them all from the solver-library sources list, and then add the
@@ -109,7 +106,7 @@ elseif("${sat_impl}" STREQUAL "cadical")
109106
download_project(PROJ cadical
110107
URL https://github.com/arminbiere/cadical/archive/rel-1.4.1.tar.gz
111108
PATCH_COMMAND true
112-
COMMAND CXX=${CMAKE_CXX_COMPILER} ./configure -O3 -s CXXFLAGS=-std=c++14
109+
COMMAND CXX=${CMAKE_CXX_COMPILER} ./configure -O3 -s CXXFLAGS=-std=c++17
113110
URL_MD5 b44874501a175106424f4bd5de29aa59
114111
)
115112

@@ -139,7 +136,7 @@ elseif("${sat_impl}" STREQUAL "ipasir-cadical")
139136
download_project(PROJ cadical
140137
URL https://github.com/arminbiere/cadical/archive/rel-1.4.1.tar.gz
141138
PATCH_COMMAND true
142-
COMMAND CXX=${CMAKE_CXX_COMPILER} ./configure -O3 -s CXXFLAGS=-std=c++14
139+
COMMAND CXX=${CMAKE_CXX_COMPILER} ./configure -O3 -s CXXFLAGS=-std=c++17
143140
URL_MD5 b44874501a175106424f4bd5de29aa59
144141
)
145142

0 commit comments

Comments
 (0)