Skip to content

Commit 0de6259

Browse files
authored
cmake options cleanup (#69)
1 parent 305ba13 commit 0de6259

File tree

3 files changed

+20
-18
lines changed

3 files changed

+20
-18
lines changed

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ option(CLARABEL_FEATURE_FAER_SPARSE "Enable `faer-sparse` option" OFF)
3535
option(CLARABEL_FEATURE_PARDISO_MKL "Enable `pardiso-mkl` option" OFF)
3636
option(CLARABEL_FEATURE_PARDISO_PANUA "Enable `pardiso-panua` option" OFF)
3737

38+
# option for direct cargo feature specification
39+
set(CLARABEL_CARGO_FEATURES "" CACHE STRING "Comma-separated list of clarabel features for cargo")
3840

3941
#----------------------------------------------
4042
#----------------------------------------------

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ where `VCPKG_TOOLCHAIN_PATH` is the path to the vcpkg toolchain file.
8282

8383
## Optional solver features
8484

85-
Clarabel.rs supports a variety of build options for semidefinite program (SDP) support, JSON file read/write, 3rd party linear solvers etc. Feature options can be passed to cargo via CMake using `-DCLARABEL_RUST_FEATURES = "feature1,feature2,..."`.
85+
Clarabel.rs supports a variety of build options for semidefinite program (SDP) support, JSON file read/write, 3rd party linear solvers etc. Feature options can be passed to cargo via CMake using `-DCLARABEL_CARGO_FEATURES = "feature1,feature2,..."`.
8686

8787
| Feature | Description |
8888
|---------|-------------|

rust_wrapper/CMakeLists.txt

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@ endif()
1818

1919
set(CLARABEL_C_OUTPUT_DIR ${clarabel_c_output_directory} PARENT_SCOPE)
2020

21-
if(NOT DEFINED CLARABEL_RUST_FEATURES)
22-
set(CLARABEL_RUST_FEATURES "")
21+
if(NOT DEFINED CLARABEL_CARGO_FEATURES)
22+
set(CLARABEL_CARGO_FEATURES "")
2323
endif()
2424

2525
# -------------------------------------
2626
# Cargo feature configuration helper functions
2727
#--------------------------------------
2828

29-
# Check if CLARABEL_RUST_FEATURES contains a specific feature
29+
# Check if CLARABEL_CARGO_FEATURES contains a specific feature
3030
function(rust_feature_is_enabled PATTERN RESULT_VAR)
31-
string(REPLACE "," ";" FEATURE_LIST "${CLARABEL_RUST_FEATURES}")
31+
string(REPLACE "," ";" FEATURE_LIST "${CLARABEL_CARGO_FEATURES}")
3232
set(${RESULT_VAR} FALSE PARENT_SCOPE)
3333
foreach(FEATURE ${FEATURE_LIST})
3434
if(FEATURE MATCHES "${PATTERN}")
@@ -38,9 +38,9 @@ function(rust_feature_is_enabled PATTERN RESULT_VAR)
3838
endforeach()
3939
endfunction()
4040

41-
# Check if CLARABEL_RUST_FEATURES contains any of the "sdp" options
41+
# Check if CLARABEL_CARGO_FEATURES contains any of the "sdp" options
4242
function(rust_features_has_sdp RESULT_VAR)
43-
if(CLARABEL_RUST_FEATURES MATCHES ".*sdp.*")
43+
if(CLARABEL_CARGO_FEATURES MATCHES ".*sdp.*")
4444
set(${RESULT_VAR} TRUE PARENT_SCOPE)
4545
else()
4646
set(${RESULT_VAR} FALSE PARENT_SCOPE)
@@ -80,20 +80,20 @@ endfunction()
8080

8181

8282
if(NOT CLARABEL_FEATURE_SDP STREQUAL "none")
83-
append_feature(CLARABEL_RUST_FEATURES "${CLARABEL_FEATURE_SDP}")
83+
append_feature(CLARABEL_CARGO_FEATURES "${CLARABEL_FEATURE_SDP}")
8484
endif()
8585

8686
if(CLARABEL_FEATURE_FAER_SPARSE)
87-
append_feature(CLARABEL_RUST_FEATURES "faer-sparse")
87+
append_feature(CLARABEL_CARGO_FEATURES "faer-sparse")
8888
endif()
8989

9090
if(CLARABEL_FEATURE_PARDISO_MKL)
91-
append_feature(CLARABEL_RUST_FEATURES "pardiso-mkl")
91+
append_feature(CLARABEL_CARGO_FEATURES "pardiso-mkl")
9292
endif()
9393

9494
# SERDE feature flag
9595
if(CLARABEL_FEATURE_SERDE)
96-
append_feature(CLARABEL_RUST_FEATURES "serde")
96+
append_feature(CLARABEL_CARGO_FEATURES "serde")
9797
endif()
9898

9999

@@ -102,7 +102,7 @@ endif()
102102
#--------------------------------------
103103

104104
# ----
105-
# Rust features should be passed via the CLARABEL_RUST_FEATURES variable.
105+
# Cargo features can be passed directly via the CLARABEL_CARGO_FEATURES variable.
106106
# For some features, we requires some additional CMake configuration.
107107
# ---
108108

@@ -144,22 +144,22 @@ endif()
144144

145145
# replace each rust <feature> with clarabel/<feature> so that they pass through
146146
# this wrapper to the clarabel crate underneath
147-
format_clarabel_rust_features("${CLARABEL_RUST_FEATURES}" CLARABEL_RUST_FEATURES)
147+
format_clarabel_rust_features("${CLARABEL_CARGO_FEATURES}" CLARABEL_CARGO_FEATURES)
148148

149149
# some features must also be specified at the wrapper level
150150
# add them again, but after prepending clarabel/ to everything
151151
if(CONFIG_SDP)
152-
append_feature(CLARABEL_RUST_FEATURES "sdp")
152+
append_feature(CLARABEL_CARGO_FEATURES "sdp")
153153
endif()
154154
if(CONFIG_SERDE)
155-
append_feature(CLARABEL_RUST_FEATURES "serde")
155+
append_feature(CLARABEL_CARGO_FEATURES "serde")
156156
endif()
157157

158-
if(NOT CLARABEL_RUST_FEATURES STREQUAL "")
159-
set(clarabel_c_build_flags "${clarabel_c_build_flags};--features=${CLARABEL_RUST_FEATURES}")
158+
if(NOT CLARABEL_CARGO_FEATURES STREQUAL "")
159+
set(clarabel_c_build_flags "${clarabel_c_build_flags};--features=${CLARABEL_CARGO_FEATURES}")
160160
endif()
161161

162-
message("-- Rust feature list: " ${CLARABEL_RUST_FEATURES})
162+
message("-- Cargo feature list: " ${CLARABEL_CARGO_FEATURES})
163163
message("-- Cargo options: " "${clarabel_c_build_flags}")
164164

165165
# -------------------------------------

0 commit comments

Comments
 (0)