diff --git a/docs/getting_started/installation_and_usage.md b/docs/getting_started/installation_and_usage.md index 175bf545a..d1c4a079a 100644 --- a/docs/getting_started/installation_and_usage.md +++ b/docs/getting_started/installation_and_usage.md @@ -342,7 +342,7 @@ tools.build:compiler_executables={"c": "gcc-12", "cpp": "g++-12"} [`MP_UNITS_API_STD_FORMAT`](#MP_UNITS_API_STD_FORMAT){ #MP_UNITS_API_STD_FORMAT } -: [:octicons-tag-24: 2.2.0][use fmtlib support] · :octicons-milestone-24: `AUTO`/`ON`/`OFF` (Default: `AUTO`) +: [:octicons-tag-24: 2.2.0][use fmtlib support] · :octicons-milestone-24: `AUTO`/`TRUE`/`FALSE` (Default: `AUTO`) Enables the usage of [`std::format`](https://en.cppreference.com/w/cpp/utility/format/format) and associated facilities for text formatting. If it is not supported, then @@ -352,7 +352,7 @@ tools.build:compiler_executables={"c": "gcc-12", "cpp": "g++-12"} [`MP_UNITS_API_STRING_VIEW_RET`](#MP_UNITS_API_STRING_VIEW_RET){ #MP_UNITS_API_STRING_VIEW_RET } -: [:octicons-tag-24: 2.2.0][cmake returning string_view] · :octicons-milestone-24: `AUTO`/`ON`/`OFF` (Default: `AUTO`) +: [:octicons-tag-24: 2.2.0][cmake returning string_view] · :octicons-milestone-24: `AUTO`/`TRUE`/`FALSE` (Default: `AUTO`) Enables returning `std::string_view` from the [`unit_symbol()`](../users_guide/framework_basics/text_output.md#unit_symbol) @@ -364,7 +364,7 @@ tools.build:compiler_executables={"c": "gcc-12", "cpp": "g++-12"} [`MP_UNITS_API_NO_CRTP`](#MP_UNITS_API_NO_CRTP){ #MP_UNITS_API_NO_CRTP } -: [:octicons-tag-24: 2.2.0][cmake no crtp support] · :octicons-milestone-24: `AUTO`/`ON`/`OFF` (Default: `AUTO`) +: [:octicons-tag-24: 2.2.0][cmake no crtp support] · :octicons-milestone-24: `AUTO`/`TRUE`/`FALSE` (Default: `AUTO`) Removes the need for the usage of the CRTP idiom in the [`quantity_spec` definitions](../users_guide/framework_basics/systems_of_quantities.md#defining-quantities). diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cee2b7f17..edbaac1ed 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -85,7 +85,7 @@ check_cxx_feature_supported(__cpp_explicit_this_parameter ${projectPrefix}EXPLIC # validate settings if(NOT ${projectPrefix}API_FREESTANDING - AND ${projectPrefix}API_STD_FORMAT STREQUAL "TRUE" + AND "${projectPrefix}API_STD_FORMAT" AND NOT (${projectPrefix}LIB_FORMAT_SUPPORTED # libc++ has a basic supports for std::format but does not set __cpp_lib_format @@ -96,13 +96,11 @@ if(NOT ${projectPrefix}API_FREESTANDING message(FATAL_ERROR "`std::format` enabled but not supported") endif() -if(${projectPrefix}API_STRING_VIEW_RET STREQUAL "TRUE" AND NOT - ${projectPrefix}STATIC_CONSTEXPR_VARS_IN_CONSTEXPR_FUNCTIONS -) +if("${projectPrefix}API_STRING_VIEW_RET" AND NOT ${projectPrefix}STATIC_CONSTEXPR_VARS_IN_CONSTEXPR_FUNCTIONS) message(FATAL_ERROR "`std::string_view` returns enabled but not supported") endif() -if(${projectPrefix}API_NO_CRTP STREQUAL "TRUE" AND NOT ${projectPrefix}EXPLICIT_THIS_PARAMETER_SUPPORTED) +if("${projectPrefix}API_NO_CRTP" AND NOT ${projectPrefix}EXPLICIT_THIS_PARAMETER_SUPPORTED) message(FATAL_ERROR "`NO_CRTP` mode enabled but explicit `this` parameter is not supported") endif() diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 9d2839f30..45c91dd01 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -23,8 +23,7 @@ cmake_minimum_required(VERSION 3.23) function(set_feature_flag name) - set(val_list "TRUE" "FALSE") - if(${projectPrefix}${name} IN_LIST val_list) + if(NOT ${projectPrefix}${name} STREQUAL "AUTO") target_compile_definitions( mp-units-core ${${projectPrefix}TARGET_SCOPE} ${projectPrefix}${name}=$ ) @@ -99,8 +98,8 @@ set_feature_flag(API_NO_CRTP) # Text formatting if(NOT ${projectPrefix}API_FREESTANDING - AND (${projectPrefix}API_STD_FORMAT STREQUAL "FALSE" OR (${projectPrefix}API_STD_FORMAT STREQUAL "AUTO" - AND NOT ${projectPrefix}LIB_FORMAT_SUPPORTED)) + AND (NOT ${projectPrefix}API_STD_FORMAT OR (${projectPrefix}API_STD_FORMAT STREQUAL "AUTO" + AND NOT ${projectPrefix}LIB_FORMAT_SUPPORTED)) ) if(NOT TARGET fmt::fmt) find_package(fmt REQUIRED)