Skip to content

Accessing feature settings when using Clarabel as library #73

@pfetsch

Description

@pfetsch

I want to use Clarabel as a library via the C-interface.

Is there a way to read the configuration used for building? In particular, I would need to know all features like

CLARABEL_USE_FLOAT
CLARABEL_FEATURE_SDP
CLARABEL_FEATURE_SERDE
CLARABEL_FEATURE_FAER_SPARSE

These features are used in the C-structs and if I set them to a value different from the one a compile time, the code will segfault.

I think one way would be through writing a configuration file, via something like

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/clarabel_config.h.in ${clarabel_c_output_directory}/clarabel_config.h @ONLY)

This will take a configuration file clarabel_config.h.in and parse it. This could look like

#ifndef __CLARABEL_CONFIG_H__
#define __CLARABEL_CONFIG_H__

#cmakedefine CLARABEL_USE_FLOAT
#cmakedefine CLARABEL_FEATURE_SDP
#cmakedefine CLARABEL_FEATURE_SERDE
#cmakedefine CLARABEL_FEATURE_FAER_SPARSE

#endif

The output would be the following file clarabel_config.h:

#ifndef __CLARABEL_CONFIG_H__
#define __CLARABEL_CONFIG_H__

/* #undef CLARABEL_USE_FLOAT */
#define CLARABEL_FEATURE_SDP
#define CLARABEL_FEATURE_SERDE
#define CLARABEL_FEATURE_FAER_SPARSE

#endif

This will only work for features that are directly specified, not the ones passed as CARGO_FEATURES.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions