Skip to content

Commit e11c079

Browse files
committed
solvers: don't apply patches twice
1 parent 78859b7 commit e11c079

File tree

3 files changed

+37
-15
lines changed

3 files changed

+37
-15
lines changed

CMakeLists.txt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,10 @@ endif()
103103

104104
set(enable_cbmc_tests on CACHE BOOL "Whether CBMC tests should be enabled")
105105

106-
set(sat_impl "minisat2" CACHE STRING
107-
"This setting controls the SAT library which is used. Valid values are
108-
'minisat2', 'glucose', 'cadical', 'ipasir-cadical' or 'ipasir-custom'"
106+
set(sat_impl "minisat2;glucose,cadical" CACHE STRING
107+
"This setting control the SAT libraries which are used. Valid values are
108+
'minisat2', 'glucose', 'cadical', 'ipasir-cadical' or 'ipasir-custom'.
109+
Use multiple solvers ; seperated"
109110
)
110111

111112
if(${enable_cbmc_tests})
@@ -125,8 +126,9 @@ if(DEFINED CMAKE_USE_CUDD)
125126
execute_process(COMMAND ./configure HAVE_DOXYGEN=FALSE WORKING_DIRECTORY ${cudd_SOURCE_DIR})
126127
endif()
127128
message(STATUS "Patching Cudd-3.0.0")
128-
execute_process(COMMAND patch -N -p0 -i ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cudd-3.0.0-postconfig.patch
129-
WORKING_DIRECTORY ${cudd_SOURCE_DIR})
129+
execute_process(
130+
COMMAND patch -N -p0 -i ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cudd-3.0.0-postconfig.patch
131+
WORKING_DIRECTORY ${cudd_SOURCE_DIR})
130132
message(STATUS "Building Cudd-3.0.0")
131133
execute_process(COMMAND make WORKING_DIRECTORY ${cudd_SOURCE_DIR})
132134

src/solvers/CMakeLists.txt

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,15 @@ foreach(SOLVER ${sat_impl})
7070
# to 2 times)
7171
download_project(PROJ minisat2
7272
URL http://ftp.debian.org/debian/pool/main/m/minisat2/minisat2_2.2.1.orig.tar.gz
73-
PATCH_COMMAND patch -p1 -i ${CBMC_SOURCE_DIR}/scripts/minisat-2.2.1-patch
74-
COMMAND cmake -E copy ${CBMC_SOURCE_DIR}/scripts/minisat2_CMakeLists.txt CMakeLists.txt
73+
PATCH_COMMAND cmake -E copy ${CBMC_SOURCE_DIR}/scripts/minisat2_CMakeLists.txt CMakeLists.txt
7574
URL_MD5 27faa19ee0508660bd6fb7f894646d42
76-
)
75+
)
76+
if (NOT EXISTS ${minisat2_SOURCE_DIR}/minisat/core/Solver.cc.orig)
77+
message(STATUS "Patching minisat-2.2.1")
78+
execute_process(
79+
COMMAND patch -N -p1 -i ${CBMC_SOURCE_DIR}/scripts/minisat-2.2.1-patch
80+
WORKING_DIRECTORY ${minisat2_SOURCE_DIR})
81+
endif()
7782

7883
add_subdirectory(${minisat2_SOURCE_DIR} ${minisat2_BINARY_DIR})
7984

@@ -103,10 +108,15 @@ foreach(SOLVER ${sat_impl})
103108

104109
download_project(PROJ glucose
105110
URL https://github.com/BrunoDutertre/glucose-syrup/archive/0bb2afd3b9baace6981cbb8b4a1c7683c44968b7.tar.gz
106-
PATCH_COMMAND patch -p1 -i ${CBMC_SOURCE_DIR}/scripts/glucose-syrup-patch
107-
COMMAND cmake -E copy ${CBMC_SOURCE_DIR}/scripts/glucose_CMakeLists.txt CMakeLists.txt
111+
PATCH_COMMAND cmake -E copy ${CBMC_SOURCE_DIR}/scripts/glucose_CMakeLists.txt CMakeLists.txt
108112
URL_MD5 7c539c62c248b74210aef7414787323a
109113
)
114+
if (NOT EXISTS ${glucose_SOURCE_DIR}/core/SolverTypes.h.orig)
115+
message(STATUS "Patching glucose")
116+
execute_process(
117+
COMMAND patch -N -p1 -i ${CBMC_SOURCE_DIR}/scripts/glucose-syrup-patch
118+
WORKING_DIRECTORY ${glucose_SOURCE_DIR})
119+
endif()
110120

111121
add_subdirectory(${glucose_SOURCE_DIR} ${glucose_BINARY_DIR})
112122

@@ -122,11 +132,16 @@ foreach(SOLVER ${sat_impl})
122132

123133
download_project(PROJ cadical
124134
URL https://github.com/arminbiere/cadical/archive/rel-2.0.0.tar.gz
125-
PATCH_COMMAND patch -p1 -i ${CBMC_SOURCE_DIR}/scripts/cadical-2.0.0-patch
126-
COMMAND cmake -E copy ${CBMC_SOURCE_DIR}/scripts/cadical_CMakeLists.txt CMakeLists.txt
135+
PATCH_COMMAND cmake -E copy ${CBMC_SOURCE_DIR}/scripts/cadical_CMakeLists.txt CMakeLists.txt
127136
COMMAND ./configure
128137
URL_MD5 9fc2a66196b86adceb822a583318cc35
129138
)
139+
if (NOT EXISTS ${cadical_SOURCE_DIR}/scripts/make-build-header.sh.orig)
140+
message(STATUS "Patching cadical-2.0.0")
141+
execute_process(
142+
COMMAND patch -N -p1 -i ${CBMC_SOURCE_DIR}/scripts/cadical-2.0.0-patch
143+
WORKING_DIRECTORY ${cadical_SOURCE_DIR})
144+
endif()
130145

131146
add_subdirectory(${cadical_SOURCE_DIR} ${cadical_BINARY_DIR})
132147

@@ -145,10 +160,14 @@ foreach(SOLVER ${sat_impl})
145160

146161
download_project(PROJ cadical
147162
URL https://github.com/arminbiere/cadical/archive/rel-2.0.0.tar.gz
148-
PATCH_COMMAND patch -p1 -i ${CBMC_SOURCE_DIR}/scripts/cadical-2.0.0-patch
149-
COMMAND ./configure
150163
URL_MD5 9fc2a66196b86adceb822a583318cc35
151164
)
165+
if (NOT EXISTS ${cadical_SOURCE_DIR}/scripts/make-build-header.sh.orig)
166+
message(STATUS "Patching cadical-2.0.0")
167+
execute_process(
168+
COMMAND patch -N -p1 -i ${CBMC_SOURCE_DIR}/scripts/cadical-2.0.0-patch
169+
WORKING_DIRECTORY ${cadical_SOURCE_DIR})
170+
endif()
152171

153172
message(STATUS "Building CaDiCaL")
154173
execute_process(COMMAND make WORKING_DIRECTORY ${cadical_SOURCE_DIR})

src/solvers/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,8 @@ modified (as `bv_refinementt` and `string_refinementt` do).
131131
interfaces. This is not used by the SMT2 back-ends.
132132

133133
* smt2/: Provides the `smt2_dect` type which converts the formulae to
134-
SMT-LIB 2 and then invokes one of Boolector, CVC3, CVC4, MathSAT, Yices or Z3.
134+
SMT-LIB 2 and then invokes one of Boolector, CVC3, CVC4, CVC5, MathSAT,
135+
Yices or Z3.
135136
Note that the interaction with the solver is batched and uses
136137
temporary files rather than using the interactive command supported by
137138
SMT-LIB 2. With the `–fpa` option, this output mode will not flatten

0 commit comments

Comments
 (0)