From 039148fb0ebf7017ff9e603e2fc25f603dae0204 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 28 Sep 2024 14:39:14 -0700 Subject: [PATCH] Updated check for stdbool.h If you're building in a C99 or newer environment, we'll automatically include stdbool.h. If you're building in a C89 or C90 environment, we'll assume that stdbool.h isn't available and define bool as an unsigned char. If you have a working stdbool.h and want SDL to use it, you can either include stdbool.h before SDL headers, or define SDL_INCLUDE_STDBOOL_H in your project. Closes https://github.com/libsdl-org/SDL/pull/10980 --- include/SDL3/SDL_stdinc.h | 41 ++++++++++-------------- include/SDL3/SDL_test_crc32.h | 2 ++ include/SDL3/SDL_test_memory.h | 2 ++ src/joystick/gdk/SDL_gameinputjoystick.c | 1 - 4 files changed, 21 insertions(+), 25 deletions(-) diff --git a/include/SDL3/SDL_stdinc.h b/include/SDL3/SDL_stdinc.h index e12cf1096e..c83a0b90f5 100644 --- a/include/SDL3/SDL_stdinc.h +++ b/include/SDL3/SDL_stdinc.h @@ -34,35 +34,28 @@ #include -/* Most everything except Visual Studio 2013 and earlier has stdbool.h now */ -#if defined(_MSC_VER) && (_MSC_VER < 1910) -#define SDL_DEFINE_STDBOOL -#endif -/* gcc-2.95 had non-standard stdbool.h */ -#if defined(__GNUC__) && (__GNUC__ < 3) -#define SDL_DEFINE_STDBOOL -#endif - -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#include -#endif #include -#ifndef __cplusplus -#ifdef SDL_DEFINE_STDBOOL -#ifndef __bool_true_false_are_defined -#define __bool_true_false_are_defined 1 -#define bool uint8_t -#define false 0 -#define true 1 -#endif -#else -#include -#endif -#endif #include #include #include +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + defined(SDL_INCLUDE_INTTYPES_H) +#include +#endif + +#ifndef __cplusplus +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + defined(SDL_INCLUDE_STDBOOL_H) +#include +#elif !defined(__bool_true_false_are_defined) && !defined(bool) +#define bool unsigned char +#define false 0 +#define true 1 +#define __bool_true_false_are_defined 1 +#endif +#endif /* !__cplusplus */ + #ifndef SDL_DISABLE_ALLOCA # ifndef alloca # ifdef HAVE_ALLOCA_H diff --git a/include/SDL3/SDL_test_crc32.h b/include/SDL3/SDL_test_crc32.h index 49c4cf21d5..62ece2afa8 100644 --- a/include/SDL3/SDL_test_crc32.h +++ b/include/SDL3/SDL_test_crc32.h @@ -34,6 +34,8 @@ #ifndef SDL_test_crc32_h_ #define SDL_test_crc32_h_ +#include + #include /* Set up for C function definitions, even when using C++ */ #ifdef __cplusplus diff --git a/include/SDL3/SDL_test_memory.h b/include/SDL3/SDL_test_memory.h index a1f8b1b3c0..16b2f63305 100644 --- a/include/SDL3/SDL_test_memory.h +++ b/include/SDL3/SDL_test_memory.h @@ -30,6 +30,8 @@ #ifndef SDL_test_memory_h_ #define SDL_test_memory_h_ +#include + #include /* Set up for C function definitions, even when using C++ */ #ifdef __cplusplus diff --git a/src/joystick/gdk/SDL_gameinputjoystick.c b/src/joystick/gdk/SDL_gameinputjoystick.c index bf60aded52..77ce854f47 100644 --- a/src/joystick/gdk/SDL_gameinputjoystick.c +++ b/src/joystick/gdk/SDL_gameinputjoystick.c @@ -25,7 +25,6 @@ #include "../SDL_sysjoystick.h" #include "../usb_ids.h" -#include #define COBJMACROS #include