mirror of
https://github.com/flipperdevices/flipperzero-firmware.git
synced 2025-12-12 04:41:26 +04:00
New toolchain with gcc 12 (#3254)
* changes for xPack 12.3 * support for gcc 13.2 * Update tools name * Add new linux toolchain * Fixed copro submodule * Fix gdb-py * Fixes for c++ apps * Fix gdb-py3, add udev rules * Fixed udev rules location * Add MacOS arm, fix fbt toolchain download * Fixed downloading error file * fbt: fixed linker warnings; removed gcc 10 from list of supported toolchains * ufbt: fixed supported toolchain versions * nfc: replaced local malloc with calloc * restored code with Warray-bounds to older state * Update fbtenv.cmd * Suppressing warnings * Bump to 25 * Bump to 26 * lint: reformatted macros for new clang-format * Bump to 27 * Fix m type word * Bump to 28 * furi: added FURI_DEPRECATED macro * scripts: toolchain download on Windows: fixing partially extracted cases Co-authored-by: DrunkBatya <drunkbatya.js@gmail.com>
This commit is contained in:
@@ -13,6 +13,10 @@ extern "C" {
|
||||
#define FURI_WARN_UNUSED __attribute__((warn_unused_result))
|
||||
#endif
|
||||
|
||||
#ifndef FURI_DEPRECATED
|
||||
#define FURI_DEPRECATED __attribute__((deprecated))
|
||||
#endif
|
||||
|
||||
#ifndef FURI_WEAK
|
||||
#define FURI_WEAK __attribute__((weak))
|
||||
#endif
|
||||
|
||||
@@ -84,9 +84,9 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef REVERSE_BYTES_U32
|
||||
#define REVERSE_BYTES_U32(x) \
|
||||
((((x)&0x000000FF) << 24) | (((x)&0x0000FF00) << 8) | (((x)&0x00FF0000) >> 8) | \
|
||||
(((x)&0xFF000000) >> 24))
|
||||
#define REVERSE_BYTES_U32(x) \
|
||||
((((x) & 0x000000FF) << 24) | (((x) & 0x0000FF00) << 8) | (((x) & 0x00FF0000) >> 8) | \
|
||||
(((x) & 0xFF000000) >> 24))
|
||||
#endif
|
||||
|
||||
#ifndef FURI_BIT
|
||||
|
||||
@@ -26,19 +26,20 @@
|
||||
*tmp_x = y; \
|
||||
*tmp_x; \
|
||||
})
|
||||
#define FURI_CONST_ASSIGN(x, y) \
|
||||
_Generic((x), signed char \
|
||||
: FURI_CONST_ASSIGN_(signed char, x, y), unsigned char \
|
||||
: FURI_CONST_ASSIGN_(unsigned char, x, y), short \
|
||||
: FURI_CONST_ASSIGN_(short, x, y), unsigned short \
|
||||
: FURI_CONST_ASSIGN_(unsigned short, x, y), int \
|
||||
: FURI_CONST_ASSIGN_(int, x, y), unsigned \
|
||||
: FURI_CONST_ASSIGN_(unsigned, x, y), long \
|
||||
: FURI_CONST_ASSIGN_(long, x, y), unsigned long \
|
||||
: FURI_CONST_ASSIGN_(unsigned long, x, y), long long \
|
||||
: FURI_CONST_ASSIGN_(long long, x, y), unsigned long long \
|
||||
: FURI_CONST_ASSIGN_(unsigned long long, x, y), float \
|
||||
: FURI_CONST_ASSIGN_(float, x, y), double \
|
||||
: FURI_CONST_ASSIGN_(double, x, y), long double \
|
||||
: FURI_CONST_ASSIGN_(long double, x, y))
|
||||
#define FURI_CONST_ASSIGN(x, y) \
|
||||
_Generic( \
|
||||
(x), \
|
||||
signed char: FURI_CONST_ASSIGN_(signed char, x, y), \
|
||||
unsigned char: FURI_CONST_ASSIGN_(unsigned char, x, y), \
|
||||
short: FURI_CONST_ASSIGN_(short, x, y), \
|
||||
unsigned short: FURI_CONST_ASSIGN_(unsigned short, x, y), \
|
||||
int: FURI_CONST_ASSIGN_(int, x, y), \
|
||||
unsigned: FURI_CONST_ASSIGN_(unsigned, x, y), \
|
||||
long: FURI_CONST_ASSIGN_(long, x, y), \
|
||||
unsigned long: FURI_CONST_ASSIGN_(unsigned long, x, y), \
|
||||
long long: FURI_CONST_ASSIGN_(long long, x, y), \
|
||||
unsigned long long: FURI_CONST_ASSIGN_(unsigned long long, x, y), \
|
||||
float: FURI_CONST_ASSIGN_(float, x, y), \
|
||||
double: FURI_CONST_ASSIGN_(double, x, y), \
|
||||
long double: FURI_CONST_ASSIGN_(long double, x, y))
|
||||
#endif
|
||||
|
||||
@@ -568,26 +568,30 @@ void furi_string_utf8_decode(char c, FuriStringUTF8State* state, FuriStringUnico
|
||||
/**
|
||||
* @brief Select for 1 argument
|
||||
*/
|
||||
#define FURI_STRING_SELECT1(func1, func2, a) \
|
||||
_Generic((a), char* : func2, const char* : func2, FuriString* : func1, const FuriString* : func1)(a)
|
||||
#define FURI_STRING_SELECT1(func1, func2, a) \
|
||||
_Generic((a), char*: func2, const char*: func2, FuriString*: func1, const FuriString*: func1)( \
|
||||
a)
|
||||
|
||||
/**
|
||||
* @brief Select for 2 arguments
|
||||
*/
|
||||
#define FURI_STRING_SELECT2(func1, func2, a, b) \
|
||||
_Generic((b), char* : func2, const char* : func2, FuriString* : func1, const FuriString* : func1)(a, b)
|
||||
#define FURI_STRING_SELECT2(func1, func2, a, b) \
|
||||
_Generic((b), char*: func2, const char*: func2, FuriString*: func1, const FuriString*: func1)( \
|
||||
a, b)
|
||||
|
||||
/**
|
||||
* @brief Select for 3 arguments
|
||||
*/
|
||||
#define FURI_STRING_SELECT3(func1, func2, a, b, c) \
|
||||
_Generic((b), char* : func2, const char* : func2, FuriString* : func1, const FuriString* : func1)(a, b, c)
|
||||
#define FURI_STRING_SELECT3(func1, func2, a, b, c) \
|
||||
_Generic((b), char*: func2, const char*: func2, FuriString*: func1, const FuriString*: func1)( \
|
||||
a, b, c)
|
||||
|
||||
/**
|
||||
* @brief Select for 4 arguments
|
||||
*/
|
||||
#define FURI_STRING_SELECT4(func1, func2, a, b, c, d) \
|
||||
_Generic((b), char* : func2, const char* : func2, FuriString* : func1, const FuriString* : func1)(a, b, c, d)
|
||||
#define FURI_STRING_SELECT4(func1, func2, a, b, c, d) \
|
||||
_Generic((b), char*: func2, const char*: func2, FuriString*: func1, const FuriString*: func1)( \
|
||||
a, b, c, d)
|
||||
|
||||
/**
|
||||
* @brief Allocate new FuriString and set it content to string (or C string).
|
||||
|
||||
Reference in New Issue
Block a user