Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
a2f4a33c8This file is pinned to the selected release. Download the original to open it in your design tool.
#pragma once
#pragma warning(disable:4189) // unused local variable
#pragma warning(disable:4100) // unused param
#pragma warning(disable:4127) // conditional expression is constant
#pragma warning(disable:4201) // anonymous struct/union
//#pragma optimize("", off)
// Debug builds - painfully, ungodly slow.
#ifdef CONFIG_DEBUG
constexpr bool config_debug = true;
#else
constexpr bool config_debug = false;
#endif
// Regression test the LogicBoy implementation against GateBoy
#ifdef CONFIG_REGRESSION
constexpr bool config_regression = true;
#else
constexpr bool config_regression = false;
#endif
// Running tests in optimized mode build - don't bother with CHECK()s or hash
// tests, but do use all the gate bits as they get folded into the memory dump.
#ifdef CONFIG_RELEASE
constexpr bool config_release = true;
#else
constexpr bool config_release = false;
#endif
// As-fast-as-possible build - turn all error checking off.
#ifdef CONFIG_FASTMODE
constexpr bool config_fastmode = true;
#else
constexpr bool config_fastmode = false;
#endif
static_assert(((int)config_debug + (int)config_regression + (int)config_release + (int)config_fastmode) == 1, "Bad build config");
// debug - use flags, dchecks, idempotence checks
// release - use flags, no dchecks
// regression - no flags, no dchecks, regression checks against release
// fast - no flags, no dchecks
// Evaluate all DCHECK() statements (basically assert)
constexpr bool config_dcheck = config_debug;
constexpr bool config_use_flags = config_debug || config_release;
constexpr bool config_check_flags = config_debug;
// In debug builds we check that tock_slow() is idempotent.
constexpr bool config_idempotence = config_debug;
static_assert((config_check_flags && config_use_flags) || !config_check_flags, "Bad config_use/check_flags");