Skip to content

Commit 66e70a3

Browse files
committed
Add CMake support for building CBMC with IPASIR linking against CaDiCaL.
1 parent 598c554 commit 66e70a3

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ set(enable_cbmc_tests on CACHE BOOL "Whether CBMC tests should be enabled")
8181

8282
set(sat_impl "minisat2" CACHE STRING
8383
"This setting controls the SAT library which is used. Valid values are
84-
'minisat2', 'glucose', or 'cadical'"
84+
'minisat2', 'glucose', 'cadical' or 'ipasir-cadical'"
8585
)
8686

8787
if(${enable_cbmc_tests})

src/solvers/CMakeLists.txt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ set(booleforce_source
3838
set(minibdd_source
3939
${CMAKE_CURRENT_SOURCE_DIR}/bdd/miniBDD/example.cpp
4040
)
41+
set(ipasir_source
42+
${CMAKE_CURRENT_SOURCE_DIR}/sat/satcheck_ipasir.cpp
43+
)
44+
4145

4246
file(GLOB_RECURSE sources "*.cpp" "*.h")
4347
list(REMOVE_ITEM sources
@@ -51,6 +55,7 @@ list(REMOVE_ITEM sources
5155
${lingeling_source}
5256
${booleforce_source}
5357
${minibdd_source}
58+
# ${ipasir_source}
5459
)
5560

5661
add_library(solvers ${sources})
@@ -128,6 +133,33 @@ elseif("${sat_impl}" STREQUAL "cadical")
128133
)
129134

130135
target_link_libraries(solvers cadical)
136+
elseif("${sat_impl}" STREQUAL "ipasir-cadical")
137+
message(STATUS "Building with IPASIR solver linking against: CaDiCaL")
138+
139+
download_project(PROJ cadical
140+
URL https://github.com/arminbiere/cadical/archive/rel-1.4.0.tar.gz
141+
PATCH_COMMAND true
142+
COMMAND ./configure CXX=g++
143+
URL_MD5 9bad586a82995a1d95d1197d445a353a
144+
)
145+
146+
message(STATUS "Building CaDiCaL")
147+
execute_process(COMMAND make WORKING_DIRECTORY ${cadical_SOURCE_DIR})
148+
149+
target_compile_definitions(solvers PUBLIC
150+
SATCHECK_IPASIR HAVE_IPASIR IPASIR=${cadical_SOURCE_DIR}/src
151+
)
152+
153+
add_library(cadical_ipasir STATIC IMPORTED)
154+
set_property(TARGET cadical_ipasir
155+
PROPERTY IMPORTED_LOCATION ${cadical_SOURCE_DIR}/build/libcadical.a
156+
)
157+
158+
target_include_directories(solvers
159+
PUBLIC
160+
${cadical_SOURCE_DIR}/src
161+
)
162+
target_link_libraries(solvers cadical_ipasir)
131163
endif()
132164

133165
if(CMAKE_USE_CUDD)

0 commit comments

Comments
 (0)