mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #11873 from soroosh-sdi/cmake-check-z3-latest
Require latest Z3 by default and allow relaxing the requirement with `STRICT_Z3_VERSION=OFF`
This commit is contained in:
commit
6d806359be
@ -18,7 +18,7 @@ else {
|
|||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
$boost_dir=(Resolve-Path $PSScriptRoot\..\deps\boost\lib\cmake\Boost-*)
|
$boost_dir=(Resolve-Path $PSScriptRoot\..\deps\boost\lib\cmake\Boost-*)
|
||||||
..\deps\cmake\bin\cmake -G "Visual Studio 16 2019" -DBoost_DIR="$boost_dir\" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_INSTALL_PREFIX="$PSScriptRoot\..\upload" ..
|
..\deps\cmake\bin\cmake -G "Visual Studio 16 2019" -DBoost_DIR="$boost_dir\" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_INSTALL_PREFIX="$PSScriptRoot\..\upload" -DUSE_Z3=OFF ..
|
||||||
if ( -not $? ) { throw "CMake configure failed." }
|
if ( -not $? ) { throw "CMake configure failed." }
|
||||||
msbuild solidity.sln /p:Configuration=Release /m:5 /v:minimal
|
msbuild solidity.sln /p:Configuration=Release /m:5 /v:minimal
|
||||||
if ( -not $? ) { throw "Build failed." }
|
if ( -not $? ) { throw "Build failed." }
|
||||||
|
@ -34,6 +34,7 @@ endif()
|
|||||||
|
|
||||||
option(SOLC_LINK_STATIC "Link solc executable statically on supported platforms" OFF)
|
option(SOLC_LINK_STATIC "Link solc executable statically on supported platforms" OFF)
|
||||||
option(SOLC_STATIC_STDLIBS "Link solc against static versions of libgcc and libstdc++ on supported platforms" OFF)
|
option(SOLC_STATIC_STDLIBS "Link solc against static versions of libgcc and libstdc++ on supported platforms" OFF)
|
||||||
|
option(STRICT_Z3_VERSION "Use the latest version of Z3" ON)
|
||||||
|
|
||||||
# Setup cccache.
|
# Setup cccache.
|
||||||
include(EthCcache)
|
include(EthCcache)
|
||||||
@ -63,8 +64,29 @@ configure_file("${CMAKE_SOURCE_DIR}/cmake/templates/license.h.in" include/licens
|
|||||||
|
|
||||||
include(EthOptions)
|
include(EthOptions)
|
||||||
configure_project(TESTS)
|
configure_project(TESTS)
|
||||||
|
set(LATEST_Z3_VERSION "4.8.12")
|
||||||
|
set(MINIMUM_Z3_VERSION "4.8.0")
|
||||||
|
find_package(Z3)
|
||||||
|
if (${Z3_FOUND})
|
||||||
|
if (${STRICT_Z3_VERSION})
|
||||||
|
if (NOT ("${Z3_VERSION_STRING}" VERSION_EQUAL ${LATEST_Z3_VERSION}))
|
||||||
|
message(
|
||||||
|
FATAL_ERROR
|
||||||
|
"SMTChecker tests require Z3 ${LATEST_Z3_VERSION} for all tests to pass.\n\
|
||||||
|
Build with -DSTRICT_Z3_VERSION=OFF if you want to use a different version. \
|
||||||
|
You can also use -DUSE_Z3=OFF to build without Z3. In both cases use --no-smt when running tests."
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
if ("${Z3_VERSION_STRING}" VERSION_LESS ${MINIMUM_Z3_VERSION})
|
||||||
|
message(
|
||||||
|
FATAL_ERROR
|
||||||
|
"Solidity requires Z3 ${MINIMUM_Z3_VERSION} or newer. You can also use -DUSE_Z3=OFF to build without Z3."
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
find_package(Z3 4.8.0)
|
|
||||||
if(${USE_Z3_DLOPEN})
|
if(${USE_Z3_DLOPEN})
|
||||||
add_definitions(-DHAVE_Z3)
|
add_definitions(-DHAVE_Z3)
|
||||||
add_definitions(-DHAVE_Z3_DLOPEN)
|
add_definitions(-DHAVE_Z3_DLOPEN)
|
||||||
|
@ -336,6 +336,16 @@ The following are dependencies for all builds of Solidity:
|
|||||||
|
|
||||||
Starting from 0.5.10 linking against Boost 1.70+ should work without manual intervention.
|
Starting from 0.5.10 linking against Boost 1.70+ should work without manual intervention.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The default build configuration requires a specific Z3 version (the latest one at the time the
|
||||||
|
code was last updated). Changes introduced between Z3 releases often result in slightly different
|
||||||
|
(but still valid) results being returned. Our SMT tests do not account for these differences and
|
||||||
|
will likely fail with a different version than the one they were written for. This does not mean
|
||||||
|
that a build using a different version is faulty. If you pass ``-DSTRICT_Z3_VERSION=OFF`` option
|
||||||
|
to CMake, you can build with any version that satisfies the requirement given in the table above.
|
||||||
|
If you do this, however, please remember to pass the ``--no-smt`` option to ``scripts/tests.sh``
|
||||||
|
to skip the SMT tests.
|
||||||
|
|
||||||
Minimum Compiler Versions
|
Minimum Compiler Versions
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user