Defaulting to C++17 for building.

This commit is contained in:
Christian Parpart 2019-08-09 11:28:22 +02:00 committed by Daniel Kirchner
parent bd105ad4b1
commit e91c6acbc3
10 changed files with 24 additions and 27 deletions

View File

@ -292,13 +292,13 @@ jobs:
command: codecov --flags all --gcov-root build command: codecov --flags all --gcov-root build
- store_artifacts: *artifacts_test_results - store_artifacts: *artifacts_test_results
# Builds in C++17 mode and uses debug build in order to speed up. # Builds in C++20 mode and uses debug build in order to speed up.
# Do *NOT* store any artifacts or workspace as we don't run tests on this build. # Do *NOT* store any artifacts or workspace as we don't run tests on this build.
b_ubu_cxx17: b_ubu_cxx20:
<<: *build_ubuntu1904 <<: *build_ubuntu1904
environment: environment:
CMAKE_BUILD_TYPE: Debug CMAKE_BUILD_TYPE: Debug
CMAKE_OPTIONS: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/cxx17.cmake -DUSE_CVC4=OFF CMAKE_OPTIONS: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/cxx20.cmake -DUSE_CVC4=OFF
steps: steps:
- checkout - checkout
- run: *run_build - run: *run_build
@ -612,7 +612,7 @@ workflows:
# build-only # build-only
- b_docs: *workflow_trigger_on_tags - b_docs: *workflow_trigger_on_tags
- b_archlinux: *workflow_trigger_on_tags - b_archlinux: *workflow_trigger_on_tags
- b_ubu_cxx17: *workflow_trigger_on_tags - b_ubu_cxx20: *workflow_trigger_on_tags
- b_ubu_ossfuzz: *workflow_trigger_on_tags - b_ubu_ossfuzz: *workflow_trigger_on_tags
# OS/X build and tests # OS/X build and tests

View File

@ -188,7 +188,7 @@ cache:
install: install:
- test $SOLC_INSTALL_DEPS_TRAVIS != On || (scripts/install_deps.sh) - test $SOLC_INSTALL_DEPS_TRAVIS != On || (scripts/install_deps.sh)
- test "$TRAVIS_OS_NAME" != "linux" || (scripts/install_cmake.sh) - test "$TRAVIS_OS_NAME" != "linux" || (sudo scripts/install_cmake.sh)
before_script: before_script:
# Disable tests unless run on the release branch, on tags or with daily cron # Disable tests unless run on the release branch, on tags or with daily cron

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.5.0) cmake_minimum_required(VERSION 3.9.0)
set(ETH_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}/cmake" CACHE PATH "The the path to the cmake directory") set(ETH_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}/cmake" CACHE PATH "The the path to the cmake directory")
list(APPEND CMAKE_MODULE_PATH ${ETH_CMAKE_DIR}) list(APPEND CMAKE_MODULE_PATH ${ETH_CMAKE_DIR})
@ -13,11 +13,6 @@ eth_policy()
set(PROJECT_VERSION "0.5.12") set(PROJECT_VERSION "0.5.12")
project(solidity VERSION ${PROJECT_VERSION} LANGUAGES C CXX) project(solidity VERSION ${PROJECT_VERSION} LANGUAGES C CXX)
if (${CMAKE_VERSION} VERSION_LESS "3.9.0")
# needed for the big endian test for older cmake versions
enable_language(C)
endif()
include(TestBigEndian) include(TestBigEndian)
TEST_BIG_ENDIAN(IS_BIG_ENDIAN) TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
if (IS_BIG_ENDIAN) if (IS_BIG_ENDIAN)

View File

@ -15,9 +15,9 @@ set(JSONCPP_INCLUDE_DIR "${prefix}/include")
# versions used in the CI runs. # versions used in the CI runs.
if(EMSCRIPTEN) if(EMSCRIPTEN)
# Do not include all flags in CMAKE_CXX_FLAGS for emscripten, # Do not include all flags in CMAKE_CXX_FLAGS for emscripten,
# but only use -std=c++14. Using all flags causes build failures # but only use -std=c++17. Using all flags causes build failures
# at the moment. # at the moment.
set(JSONCPP_CXX_FLAGS -std=c++14) set(JSONCPP_CXX_FLAGS -std=c++17)
else() else()
set(JSONCPP_CXX_FLAGS ${CMAKE_CXX_FLAGS}) set(JSONCPP_CXX_FLAGS ${CMAKE_CXX_FLAGS})
endif() endif()

View File

@ -1,4 +0,0 @@
# Require C++17.
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
set(CMAKE_CXX_EXTENSIONS OFF)

View File

@ -0,0 +1,4 @@
# Require C++20.
set(CMAKE_CXX_STANDARD 20) # This requires at least CMake 3.12 to understand this C++20 flag
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
set(CMAKE_CXX_EXTENSIONS OFF)

View File

@ -1,4 +1,4 @@
# Require C++14. # Require C++17.
set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD 17) # This requires at least CMake 3.8 to accept this C++17 flag.
set(CMAKE_CXX_STANDARD_REQUIRED TRUE) set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_EXTENSIONS OFF)

View File

@ -184,7 +184,7 @@ The following are dependencies for all builds of Solidity:
+-----------------------------------+-------------------------------------------------------+ +-----------------------------------+-------------------------------------------------------+
| Software | Notes | | Software | Notes |
+===================================+=======================================================+ +===================================+=======================================================+
| `CMake`_ (version 3.5+) | Cross-platform build file generator. | | `CMake`_ (version 3.9+) | Cross-platform build file generator. |
+-----------------------------------+-------------------------------------------------------+ +-----------------------------------+-------------------------------------------------------+
| `Boost`_ (version 1.65+) | C++ libraries. | | `Boost`_ (version 1.65+) | C++ libraries. |
+-----------------------------------+-------------------------------------------------------+ +-----------------------------------+-------------------------------------------------------+

View File

@ -34,6 +34,6 @@ set(sources
) )
add_library(devcore ${sources}) add_library(devcore ${sources})
target_link_libraries(devcore PUBLIC jsoncpp Boost::boost Boost::filesystem Boost::regex Boost::system Threads::Threads) target_link_libraries(devcore PUBLIC jsoncpp Boost::boost Boost::filesystem Boost::regex Boost::system)
target_include_directories(devcore PUBLIC "${CMAKE_SOURCE_DIR}") target_include_directories(devcore PUBLIC "${CMAKE_SOURCE_DIR}")
add_dependencies(devcore solidity_BuildInfo.h) add_dependencies(devcore solidity_BuildInfo.h)

View File

@ -6,16 +6,18 @@
set -e set -e
VERSION=3.7.1 VERSION_MAJOR=3
PREFIX=~/.local VERSION_MINOR=15
VERSION_MICRO=2
VERSION=$VERSION_MAJOR.$VERSION_MINOR.$VERSION_MICRO
PREFIX="/usr/local"
OS=$(uname -s) OS=$(uname -s)
case $OS in case $OS in
Linux) SHA256=7b4b7a1d9f314f45722899c0521c261e4bfab4a6b532609e37fef391da6bade2;; Linux) SHA256=f8cbec2abc433938bd9378b129d1d288bb33b8b5a277afe19644683af6e32a59;;
Darwin) SHA256=1851d1448964893fdc5a8c05863326119f397a3790e0c84c40b83499c7960267;; Darwin) SHA256=7ec056d641b8cbea98b220efdcc99da1991758a370063dcac3a0cd388d6b30b6;;
esac esac
BIN=$PREFIX/bin BIN=$PREFIX/bin
PATH=$PREFIX/bin:$PATH PATH=$PREFIX/bin:$PATH
@ -24,7 +26,7 @@ if test -f $BIN/cmake && ($BIN/cmake --version | grep -q "$VERSION"); then
echo "CMake $VERSION already installed in $BIN" echo "CMake $VERSION already installed in $BIN"
else else
FILE=cmake-$VERSION-$OS-x86_64.tar.gz FILE=cmake-$VERSION-$OS-x86_64.tar.gz
URL=https://cmake.org/files/v3.7/$FILE URL=https://cmake.org/files/v$VERSION_MAJOR.$VERSION_MINOR/$FILE
ERROR=0 ERROR=0
TMPFILE=$(mktemp --tmpdir cmake-$VERSION-$OS-x86_64.XXXXXXXX.tar.gz) TMPFILE=$(mktemp --tmpdir cmake-$VERSION-$OS-x86_64.XXXXXXXX.tar.gz)
echo "Downloading CMake ($URL)..." echo "Downloading CMake ($URL)..."