Skip to content

Accessing feature settings when using Clarabel as library #73

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions