From 57463ca3a52877b0ba4a42040ee634a7e1324625 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Thu, 31 Jan 2019 13:19:51 +0000 Subject: [PATCH 1/3] Add C++17 toolchain --- cmake/toolchains/cxx17.cmake | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cmake/toolchains/cxx17.cmake diff --git a/cmake/toolchains/cxx17.cmake b/cmake/toolchains/cxx17.cmake new file mode 100644 index 000000000..04a865ebd --- /dev/null +++ b/cmake/toolchains/cxx17.cmake @@ -0,0 +1,4 @@ +# Require C++17. +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED TRUE) +set(CMAKE_CXX_EXTENSIONS OFF) From 6adabf37d19705e26eed56289d742abfbaffa142 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Thu, 31 Jan 2019 13:22:02 +0000 Subject: [PATCH 2/3] Build using C++17 on CircleCI --- .circleci/config.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0f6821617..6ff111c6a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -66,6 +66,7 @@ jobs: paths: - soljson.js - version.txt + test_emscripten_solcjs: docker: - image: circleci/node:10 @@ -84,6 +85,7 @@ jobs: name: Test solcjs command: | test/solcjsTests.sh /tmp/workspace/soljson.js $(cat /tmp/workspace/version.txt) + test_emscripten_external: docker: - image: circleci/node:10 @@ -102,6 +104,7 @@ jobs: name: External tests command: | test/externalTests.sh /tmp/workspace/soljson.js || test/externalTests.sh /tmp/workspace/soljson.js + build_x86_linux: docker: - image: buildpack-deps:bionic @@ -124,6 +127,24 @@ jobs: paths: - "*" + build_x86_linux_cxx17: + docker: + - image: buildpack-deps:bionic + environment: + TERM: xterm + CMAKE_OPTIONS: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/cxx17.cmake + steps: + - checkout + - run: + name: Install build dependencies + command: | + apt-get -qq update + # Note: do not include cvc4 here, it is not C++17 compatible. + apt-get -qy install cmake libboost-regex-dev libboost-filesystem-dev libboost-test-dev libboost-system-dev libboost-program-options-dev + ./scripts/install_obsolete_jsoncpp_1_7_4.sh + - run: *setup_prerelease_commit_hash + - run: *run_build + build_x86_archlinux: docker: - image: archlinux/base @@ -350,6 +371,7 @@ workflows: requires: - build_emscripten - build_x86_linux: *build_on_tags + - build_x86_linux_cxx17: *build_on_tags - build_x86_clang7: *build_on_tags - build_x86_mac: *build_on_tags - test_x86_linux: From f56ab1c2e76cc12dd00417219c1589d044c08ebf Mon Sep 17 00:00:00 2001 From: Daniel Kirchner Date: Mon, 4 Feb 2019 14:10:27 +0100 Subject: [PATCH 3/3] Enable cvc4 for C++17 build by switching to Ubuntu disco. --- .circleci/config.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6ff111c6a..8b36a05ee 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -129,7 +129,7 @@ jobs: build_x86_linux_cxx17: docker: - - image: buildpack-deps:bionic + - image: buildpack-deps:disco environment: TERM: xterm CMAKE_OPTIONS: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/cxx17.cmake @@ -139,8 +139,7 @@ jobs: name: Install build dependencies command: | apt-get -qq update - # Note: do not include cvc4 here, it is not C++17 compatible. - apt-get -qy install cmake libboost-regex-dev libboost-filesystem-dev libboost-test-dev libboost-system-dev libboost-program-options-dev + apt-get -qy install cmake libboost-regex-dev libboost-filesystem-dev libboost-test-dev libboost-system-dev libboost-program-options-dev libcvc4-dev ./scripts/install_obsolete_jsoncpp_1_7_4.sh - run: *setup_prerelease_commit_hash - run: *run_build