Skip to content

Commit 77a2807

Browse files
committed
deps: bump scip to v9.2.1
* use libscip shared library * enable soplex
1 parent 62dca6e commit 77a2807

23 files changed

+541
-82
lines changed

CMakeLists.txt

+8
Original file line numberDiff line numberDiff line change
@@ -296,11 +296,19 @@ message(STATUS "Build PDLP: ${BUILD_PDLP}")
296296
CMAKE_DEPENDENT_OPTION(USE_SCIP "Use the Scip solver" ON "BUILD_CXX" OFF)
297297
message(STATUS "SCIP support: ${USE_SCIP}")
298298
if(USE_SCIP)
299+
CMAKE_DEPENDENT_OPTION(BUILD_Boost "Build the Boost dependency Library" OFF
300+
"NOT BUILD_DEPS" ON)
301+
CMAKE_DEPENDENT_OPTION(BUILD_soplex "Build the Soplex dependency Library" OFF
302+
"NOT BUILD_DEPS" ON)
299303
CMAKE_DEPENDENT_OPTION(BUILD_SCIP "Build the SCIP dependency Library" OFF
300304
"NOT BUILD_DEPS" ON)
301305
else()
306+
set(BUILD_Boost OFF)
307+
set(BUILD_soplex OFF)
302308
set(BUILD_SCIP OFF)
303309
endif()
310+
message(STATUS "Build Boost (Soplex requirement): ${BUILD_Boost}")
311+
message(STATUS "Build Soplex (SCIP requirement): ${BUILD_soplex}")
304312
message(STATUS "Build SCIP: ${BUILD_SCIP}")
305313

306314
# Optional third party solvers (disabled by default)

Dependencies.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Cgl=0.60.9
1010
Cbc=2.10.12
1111
GLPK=5.0
1212
HiGHS=v1.9.0
13-
Scip=v920
13+
Scip=v921
1414
# Python
1515
pybind11=v2.13.6
1616
pybind11_abseil=v202402.0

MODULE.bazel

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ bazel_dep(name = "rules_jvm_external", version = "6.6")
3737
bazel_dep(name = "rules_license", version = "1.0.0")
3838
bazel_dep(name = "rules_proto", version = "7.1.0")
3939
bazel_dep(name = "rules_python", version = "1.0.0")
40-
bazel_dep(name = "scip", version = "9.2.0.bcr.3")
40+
bazel_dep(name = "scip", version = "9.2.1")
4141
bazel_dep(name = "swig", version = "4.3.0")
4242
bazel_dep(name = "zlib", version = "1.3.1.bcr.4")
4343

cmake/check_deps.cmake

+3-3
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,10 @@ if(USE_PDLP AND BUILD_PDLP)
105105
endif()
106106

107107
if(USE_SCIP)
108-
if(NOT TARGET libscip)
109-
message(FATAL_ERROR "Target libscip not available.")
108+
if(NOT TARGET SCIP::libscip)
109+
message(FATAL_ERROR "Target SCIP::libscip not available.")
110110
endif()
111-
set(SCIP_DEPS libscip)
111+
set(SCIP_DEPS SCIP::libscip)
112112
endif()
113113

114114
# Check optional Dependencies

cmake/dependencies/CMakeLists.txt

+67-14
Original file line numberDiff line numberDiff line change
@@ -259,33 +259,86 @@ if(BUILD_HIGHS)
259259
message(CHECK_PASS "fetched")
260260
endif()
261261

262+
# ##############################################################################
263+
# BOOST
264+
# ##############################################################################
265+
if(BUILD_Boost)
266+
message(CHECK_START "Fetching Boost")
267+
list(APPEND CMAKE_MESSAGE_INDENT " ")
268+
FetchContent_Declare(
269+
Boost
270+
URL
271+
https://github.com/boostorg/boost/releases/download/boost-1.87.0/boost-1.87.0-cmake.tar.gz
272+
USES_TERMINAL_DOWNLOAD TRUE
273+
DOWNLOAD_NO_EXTRACT FALSE
274+
PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/boost-1.87.0.patch"
275+
)
276+
set(BOOST_INCLUDE_LIBRARIES multiprecision serialization)
277+
option(BOOST_SKIP_INSTALL_RULES NO)
278+
set(BOOST_ENABLE_CMAKE ON)
279+
set(BUILD_SHARED_LIBS OFF)
280+
FetchContent_MakeAvailable(Boost)
281+
set(BUILD_SHARED_LIBS ON)
282+
list(POP_BACK CMAKE_MESSAGE_INDENT)
283+
message(CHECK_PASS "fetched")
284+
endif()
285+
286+
# ##############################################################################
287+
# SOPLEX
288+
# ##############################################################################
289+
if(BUILD_soplex)
290+
message(CHECK_START "Fetching SOPLEX")
291+
list(APPEND CMAKE_MESSAGE_INDENT " ")
292+
FetchContent_Declare(
293+
soplex
294+
GIT_REPOSITORY "https://github.com/scipopt/soplex.git"
295+
GIT_TAG "release-713"
296+
GIT_SHALLOW TRUE
297+
PATCH_COMMAND git apply --ignore-whitespace
298+
"${CMAKE_CURRENT_LIST_DIR}/../../patches/soplex-v7.1.3.patch"
299+
)
300+
set(SHARED ON CACHE BOOL "Soplex param" FORCE)
301+
set(ZLIB ON CACHE BOOL "Soplex param" FORCE)
302+
set(GMP OFF CACHE BOOL "Soplex param" FORCE)
303+
set(BOOST ON CACHE BOOL "Soplex param" FORCE)
304+
set(QUADMATH OFF CACHE BOOL "Soplex param" FORCE)
305+
set(MPFR OFF CACHE BOOL "Soplex param" FORCE)
306+
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON CACHE BOOL "Soplex param" FORCE)
307+
set(MT OFF CACHE BOOL "Soplex param" FORCE)
308+
set(PAPILO OFF CACHE BOOL "Soplex param" FORCE)
309+
#set(Boost_INCLUDE_DIR "../boost-src/libs/config/include" CACHE PATH "Soplex param" FORCE)
310+
FetchContent_MakeAvailable(soplex)
311+
list(POP_BACK CMAKE_MESSAGE_INDENT)
312+
message(CHECK_PASS "fetched")
313+
endif()
314+
262315
# ##############################################################################
263316
# SCIP
264317
# ##############################################################################
265318
if(BUILD_SCIP)
266319
message(CHECK_START "Fetching SCIP")
267320
list(APPEND CMAKE_MESSAGE_INDENT " ")
268-
set(SHARED OFF)
269-
set(READLINE OFF)
270-
set(GMP OFF)
271-
set(PAPILO OFF)
272-
set(ZIMPL OFF)
273-
set(IPOPT OFF)
274-
set(AMPL OFF)
275-
276-
set(TPI "tny" CACHE STRING "Scip param")
277-
set(EXPRINT "none" CACHE STRING "Scip param")
278-
set(LPS "none" CACHE STRING "Scip param")
279-
set(SYM "none" CACHE STRING "Scip param")
280321
FetchContent_Declare(
281322
scip
282323
GIT_REPOSITORY "https://github.com/scipopt/scip.git"
283324
GIT_TAG "v921"
284325
GIT_SHALLOW TRUE
285-
PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/scip-v921.patch"
326+
PATCH_COMMAND git apply --ignore-whitespace
327+
"${CMAKE_CURRENT_LIST_DIR}/../../patches/scip-v921.patch"
286328
)
329+
set(SHARED ON CACHE BOOL "Scip param" FORCE)
330+
set(ZLIB ON CACHE BOOL "Scip param" FORCE)
331+
set(READLINE OFF CACHE BOOL "Scip param" FORCE)
332+
set(GMP OFF CACHE BOOL "Scip param" FORCE)
333+
set(PAPILO OFF CACHE BOOL "Scip param" FORCE)
334+
set(ZIMPL OFF CACHE BOOL "Scip param" FORCE)
335+
set(AMPL OFF CACHE BOOL "Scip param" FORCE)
336+
set(IPOPT OFF CACHE BOOL "Scip param" FORCE)
337+
set(TPI "tny" CACHE STRING "Scip param" FORCE)
338+
set(EXPRINT "none" CACHE STRING "Scip param" FORCE)
339+
set(LPS "spx" CACHE STRING "Scip param" FORCE)
340+
set(SYM "none" CACHE STRING "Scip param" FORCE)
287341
FetchContent_MakeAvailable(scip)
288-
set(LPI_GLOP_SRC ${scip_SOURCE_DIR}/src/lpi/lpi_glop.cpp PARENT_SCOPE)
289342
list(POP_BACK CMAKE_MESSAGE_INDENT)
290343
message(CHECK_PASS "fetched")
291344
endif()

cmake/docs/cmake.dot

+24-2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ digraph CMake {
4141
label = "abseil/abseil-cpp.git";
4242
}
4343

44+
subgraph clusterRe2 {
45+
Re2 [label="re2::re2"];
46+
47+
color=royalblue;
48+
label = "google/re2.git";
49+
}
50+
Absl -> Re2;
51+
4452
subgraph clusterProtobuf {
4553
Protobuf [label="protobuf::libprotobuf", color=royalblue];
4654

@@ -49,6 +57,7 @@ digraph CMake {
4957
}
5058
ZLIB -> Protobuf;
5159
Absl -> Protobuf;
60+
Re2 -> Protobuf;
5261

5362
subgraph clusterCoinOR {
5463
subgraph clusterCoinUtils {
@@ -139,15 +148,27 @@ digraph CMake {
139148
}
140149

141150
subgraph clusterSCIPSolver {
151+
subgraph clusterSoplex {
152+
SPX [label="libsoplex-pic"];
153+
154+
color=royalblue;
155+
label = "scipopt/soplex.git";
156+
}
157+
142158
subgraph clusterSCIP {
143-
SCIP [label="scip::scip"];
159+
SCIP [label="SCIP::libscip"];
144160

145161
color=royalblue;
146162
label = "scipopt/scip.git";
147163
}
164+
165+
SPX -> SCIP;
166+
148167
color=royalblue;
149168
label = "SCIP Solver\n(-DUSE_SCIP=ON)";
150169
}
170+
ZLIB -> SPX;
171+
ZLIB -> SCIP;
151172

152173
SWIG_WIN [label="swigwin\n(Windows)", color=chocolate];
153174

@@ -176,6 +197,7 @@ digraph CMake {
176197
ZLIB -> OR_SRC;
177198
Absl -> OR_SRC;
178199
Protobuf -> OR_SRC;
200+
Re2 -> OR_SRC;
179201
ClpSolver -> OR_SRC;
180202
CbcSolver -> OR_SRC;
181203
GLPK -> OR_SRC;
@@ -228,7 +250,7 @@ digraph CMake {
228250
OR_SRC -> OR_WJAVA [label="swig", color=chocolate];
229251
OR_SRC -> OR_JAVA [label="swig", color=chocolate];
230252
OR_WJAVA -> OR_JAVA;
231-
OR_JAVA -> PKG_JAVA [label="maven (WIP)", style="dotted", color=crimson];
253+
OR_JAVA -> PKG_JAVA [label="maven", color=crimson];
232254

233255
color=crimson;
234256
label = "Java\n(-DBUILD_JAVA=ON)";

cmake/docs/deps.dot

+13-1
Original file line numberDiff line numberDiff line change
@@ -135,20 +135,32 @@ digraph CMakeDeps {
135135
}
136136

137137
subgraph clusterSCIPSolver {
138+
subgraph clusterSoplex {
139+
SPX [label="libsoplex"];
140+
141+
color=royalblue;
142+
label = "scipopt/soplex.git";
143+
}
138144
subgraph clusterSCIP {
139-
SCIP [label="scip::scip"];
145+
SCIP [label="SCIP::libscip"];
140146

141147
color=royalblue;
142148
label = "scipopt/scip.git";
143149
}
150+
SPX -> SCIP;
151+
144152
color=royalblue;
145153
label = "-DUSE_SCIP=ON AND -DBUILD_SCIP=ON";
146154
}
147155

148156
// inter deps
149157
ZLIB -> Protobuf;
150158
ZLIB -> Cbc;
159+
ZLIB -> SPX;
160+
ZLIB -> SCIP;
161+
Absl -> Re2;
151162
Absl -> Protobuf;
163+
Re2 -> Protobuf;
152164
}
153165
@enddot
154166
# vim tw:0

cmake/dotnet.cmake

+3
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,9 @@ set(need_cbc_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Cbc}>>")
395395
set(need_unix_highs_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_HIGHS}>>")
396396
set(need_windows_highs_lib "$<AND:${is_windows},$<BOOL:${BUILD_HIGHS}>>")
397397

398+
set(need_unix_scip_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_SCIP}>>")
399+
set(need_windows_scip_lib "$<AND:${is_windows},$<BOOL:${BUILD_SCIP}>>")
400+
398401
set(is_ortools_shared "$<STREQUAL:$<TARGET_PROPERTY:ortools,TYPE>,SHARED_LIBRARY>")
399402
set(need_unix_ortools_lib "$<AND:${is_not_windows},${is_ortools_shared}>")
400403
set(need_windows_ortools_lib "$<AND:${is_windows},${is_ortools_shared}>")

cmake/java.cmake

+11-2
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,9 @@ set(need_unix_cbc_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Cbc}>>")
298298
set(need_unix_highs_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_HIGHS}>>")
299299
set(need_windows_highs_lib "$<AND:${is_windows},$<BOOL:${BUILD_HIGHS}>>")
300300

301+
set(need_unix_scip_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_SCIP}>>")
302+
set(need_windows_scip_lib "$<AND:${is_windows},$<BOOL:${BUILD_SCIP}>>")
303+
301304
set(is_ortools_shared "$<STREQUAL:$<TARGET_PROPERTY:ortools,TYPE>,SHARED_LIBRARY>")
302305
set(need_unix_ortools_lib "$<AND:${is_not_windows},${is_ortools_shared}>")
303306
set(need_windows_ortools_lib "$<AND:${is_windows},${is_ortools_shared}>")
@@ -441,8 +444,14 @@ add_custom_command(
441444

442445
COMMAND ${CMAKE_COMMAND} -E
443446
$<IF:$<BOOL:${BUILD_HIGHS}>,copy,true>
444-
$<${need_unix_highs_lib}:$<TARGET_SONAME_FILE:highs>>
445-
$<${need_windows_highs_lib}:$<TARGET_FILE:highs>>
447+
$<${need_unix_highs_lib}:$<TARGET_SONAME_FILE:highs::highs>>
448+
$<${need_windows_highs_lib}:$<TARGET_FILE:highs::highs>>
449+
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
450+
451+
COMMAND ${CMAKE_COMMAND} -E
452+
$<IF:$<BOOL:${BUILD_SCIP}>,copy,true>
453+
$<${need_unix_scip_lib}:$<TARGET_SONAME_FILE:SCIP::libscip>>
454+
$<${need_windows_scip_lib}:$<TARGET_FILE:SCIP::libscip>>
446455
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
447456

448457
COMMAND ${CMAKE_COMMAND} -E

cmake/ortoolsConfig.cmake.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ if(@USE_PDLP@)
6666
endif()
6767

6868
if(@USE_SCIP@)
69-
if(NOT TARGET libscip)
69+
if(NOT TARGET SCIP::libscip)
7070
find_dependency(SCIP REQUIRED)
7171
endif()
7272
endif()

cmake/python.cmake

+11-2
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,9 @@ set(need_unix_cbc_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Cbc}>>")
454454
set(need_unix_highs_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_HIGHS}>>")
455455
set(need_windows_highs_lib "$<AND:${is_windows},$<BOOL:${BUILD_HIGHS}>>")
456456

457+
set(need_unix_scip_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_SCIP}>>")
458+
set(need_windows_scip_lib "$<AND:${is_windows},$<BOOL:${BUILD_SCIP}>>")
459+
457460
set(is_ortools_shared "$<STREQUAL:$<TARGET_PROPERTY:ortools,TYPE>,SHARED_LIBRARY>")
458461
set(need_unix_ortools_lib "$<AND:${is_not_windows},${is_ortools_shared}>")
459462
set(need_windows_ortools_lib "$<AND:${is_windows},${is_ortools_shared}>")
@@ -597,8 +600,14 @@ add_custom_command(
597600

598601
COMMAND ${CMAKE_COMMAND} -E
599602
$<IF:$<BOOL:${BUILD_HIGHS}>,copy,true>
600-
$<${need_unix_highs_lib}:$<TARGET_SONAME_FILE:highs>>
601-
$<${need_windows_highs_lib}:$<TARGET_FILE:highs>>
603+
$<${need_unix_highs_lib}:$<TARGET_SONAME_FILE:highs::highs>>
604+
$<${need_windows_highs_lib}:$<TARGET_FILE:highs::highs>>
605+
${PYTHON_PROJECT}/.libs
606+
607+
COMMAND ${CMAKE_COMMAND} -E
608+
$<IF:$<BOOL:${BUILD_SCIP}>,copy,true>
609+
$<${need_unix_scip_lib}:$<TARGET_SONAME_FILE:SCIP::libscip>>
610+
$<${need_windows_scip_lib}:$<TARGET_FILE:SCIP::libscip>>
602611
${PYTHON_PROJECT}/.libs
603612

604613
COMMAND ${CMAKE_COMMAND} -E

ortools/dotnet/Google.OrTools.runtime.csproj.in

+5-2
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,11 @@
129129
$<@need_cgl_lib@:;$<TARGET_SONAME_FILE:Coin::Cgl>>
130130
$<@need_cbc_lib@:;$<TARGET_SONAME_FILE:Coin::Cbc>;$<TARGET_SONAME_FILE:Coin::OsiCbc>;$<TARGET_SONAME_FILE:Coin::CbcSolver>>
131131

132-
$<@need_unix_highs_lib@:;$<TARGET_SONAME_FILE:highs>>
133-
$<@need_windows_highs_lib@:;$<TARGET_FILE:highs>>
132+
$<@need_unix_highs_lib@:;$<TARGET_SONAME_FILE:highs::highs>>
133+
$<@need_windows_highs_lib@:;$<TARGET_FILE:highs::highs>>
134+
135+
$<@need_unix_scip_lib@:;$<TARGET_SONAME_FILE:SCIP::libscip>>
136+
$<@need_windows_scip_lib@:;$<TARGET_FILE:SCIP::libscip>>
134137

135138
$<@need_unix_ortools_lib@:;$<TARGET_SONAME_FILE:ortools>>
136139
$<@need_windows_ortools_lib@:;$<TARGET_FILE:ortools>>

ortools/gscip/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@ target_link_libraries(${NAME} PRIVATE
3333
absl::strings
3434
absl::str_format
3535
protobuf::libprotobuf
36-
$<$<BOOL:${USE_SCIP}>:libscip>
36+
SCIP::libscip
3737
${PROJECT_NAMESPACE}::ortools_proto)
3838
#add_library(${PROJECT_NAMESPACE}::gscip ALIAS ${NAME})

ortools/java/com/google/ortools/Loader.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ public static synchronized void loadNativeLibraries() {
143143
Path tempPath = unpackNativeResources(resourceURI);
144144
// libraries order does matter !
145145
List<String> dlls = Arrays.asList("zlib1", "abseil_dll", "re2", "utf8_validity",
146-
"libprotobuf", "highs", "ortools", "jniortools");
146+
"libprotobuf", "highs", "libscip", "ortools", "jniortools");
147147
for (String dll : dlls) {
148148
try {
149149
// System.out.println("System.load(" + dll + ")");

ortools/linear_solver/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ target_link_libraries(${NAME} PRIVATE
4848
$<$<BOOL:${USE_GLPK}>:GLPK::GLPK>
4949
$<$<BOOL:${USE_HIGHS}>:highs::highs>
5050
$<$<BOOL:${USE_PDLP}>:Eigen3::Eigen>
51-
$<$<BOOL:${USE_SCIP}>:libscip>
51+
$<$<BOOL:${USE_SCIP}>:SCIP::libscip>
5252
${PROJECT_NAMESPACE}::ortools_proto)
5353
#add_library(${PROJECT_NAMESPACE}::linear_solver ALIAS ${NAME})
5454

ortools/linear_solver/proto_solver/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ target_link_libraries(${NAME} PRIVATE
4646
absl::status
4747
absl::str_format
4848
$<$<BOOL:${USE_PDLP}>:Eigen3::Eigen>
49-
$<$<BOOL:${USE_SCIP}>:libscip>
49+
$<$<BOOL:${USE_SCIP}>:SCIP::libscip>
5050
$<$<BOOL:${USE_HIGHS}>:highs::highs>
5151
${PROJECT_NAMESPACE}::ortools_proto)
5252
#add_library(${PROJECT_NAMESPACE}::linear_solver_proto_solver ALIAS ${NAME})

ortools/linear_solver/wrappers/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ target_include_directories(${NAME} PRIVATE
2525
${PROJECT_BINARY_DIR})
2626
target_link_libraries(${NAME} PRIVATE
2727
absl::status
28-
$<$<BOOL:${USE_SCIP}>:libscip>
28+
$<$<BOOL:${USE_SCIP}>:SCIP::libscip>
2929
${PROJECT_NAMESPACE}::ortools_proto)
3030
#add_library(${PROJECT_NAMESPACE}::linear_solver_wrappers ALIAS ${NAME})

ortools/math_opt/io/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ target_include_directories(${NAME} PUBLIC
3030
target_link_libraries(${NAME} PRIVATE
3131
${PROJECT_NAMESPACE}::math_opt_proto
3232
absl::strings
33-
$<$<BOOL:${USE_SCIP}>:libscip>
33+
$<$<BOOL:${USE_SCIP}>:SCIP::libscip>
3434
)

0 commit comments

Comments
 (0)