#ifndef MLDrs_MULTILEVEL_MLD_CONFIG_H
#define MLDrs_MULTILEVEL_MLD_CONFIG_H

/*
 * Multilevel monolithic build config
 *
 * This configuration is based on ../mldsa-native/examples/monolithic_build_multilevel/
 *
 * It supports a build that includes all the parameter sets in a monolithic object file.
 */

/**
 * MLD_CONFIG_NO_SUPERCOP
 *
 * By default, mldsa_native.h exposes the mldsa-native API in the
 * SUPERCOP naming convention (crypto_sign_xxx). If you don't need
 * this, set MLD_CONFIG_NO_SUPERCOP.
 *
 * @note You must set this for a multi-level build as the SUPERCOP
 * naming does not disambiguate between the parameter sets.
 */
#define MLD_CONFIG_NO_SUPERCOP

/**
 * MLD_CONFIG_MULTILEVEL_BUILD
 *
 * Set this if the build is part of a multi-level build supporting
 * multiple parameter sets.
 *
 * If you need only a single parameter set, keep this unset.
 *
 * To build mldsa-native with support for all parameter sets,
 * build it three times -- once per parameter set -- and set the
 * option MLD_CONFIG_MULTILEVEL_WITH_SHARED for exactly one of
 * them, and MLD_CONFIG_MULTILEVEL_NO_SHARED for the others.
 * MLD_CONFIG_MULTILEVEL_BUILD should be set for all of them.
 *
 * See examples/multilevel_build for an example.
 *
 * This can also be set using CFLAGS.
 */
#define MLD_CONFIG_MULTILEVEL_BUILD

/**
 * MLD_CONFIG_NAMESPACE_PREFIX
 *
 * The prefix to use to namespace global symbols from mldsa/.
 *
 * In a multi-level build, level-dependent symbols will
 * additionally be prefixed with the parameter set (44/65/87).
 *
 * This can also be set using CFLAGS.
 */
#define MLD_CONFIG_NAMESPACE_PREFIX mldsa

/**
 * MLD_CONFIG_INTERNAL_API_QUALIFIER
 *
 * If set, this option provides an additional qualifier
 * to be added to declarations of internal API functions and data.
 *
 * The primary use case for this option are single-CU builds,
 * in which case this option can be set to `static`.
 */
#define MLD_CONFIG_INTERNAL_API_QUALIFIER static

#include "mldsa/mldsa_native_config.h"

#endif /* !MLDrs_MULTILEVEL_MLD_CONFIG_H */
