/*
 * Copyright (c) 2021, Yonatan Schachter
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/*
 * Originally this file is generated by pico-sdk, and some files
 * try to include it. Therefore, we have to provide that file,
 * with this exact name.
 * Since this file ends up included in all pico-sdk code, it's
 * used to inject workarounds to make pico-sdk compile with Zephyr.
 */

#ifndef _CONFIG_AUTOGEN_H_
#define _CONFIG_AUTOGEN_H_

/* WORKAROUNDS */

/*
 * static_assert is not supported, so BUILD_ASSERT is used instead.
 * BUILD_ASSERT is included through toolchain.h.
 */
#include <toolchain.h>
#define static_assert(expr, msg...) BUILD_ASSERT((expr), "" msg)

/* Convert uses of asm, which is not supported in c99, to __asm */
#define asm __asm

/* Disable binary info */
#define PICO_NO_BINARY_INFO 1

/* Zephyr compatible way of forcing inline */
#ifndef __always_inline
#define __always_inline ALWAYS_INLINE
#endif /* __always_inline */

/* Two definitions required for the flash driver */
#define __STRING(x) #x

#ifndef __noinline
#define __noinline __attribute__((noinline))
#endif

#endif
