| Index: include/core/SkTypes.h
|
| diff --git a/include/core/SkTypes.h b/include/core/SkTypes.h
|
| index 4e95c69f3229cdfc63b95cd2e1fa6bdaeccd8caf..b38268231df1a818d913d559e68e33a0d3dd32b1 100644
|
| --- a/include/core/SkTypes.h
|
| +++ b/include/core/SkTypes.h
|
| @@ -9,6 +9,22 @@
|
| #define SkTypes_DEFINED
|
|
|
| // IWYU pragma: begin_exports
|
| +
|
| +// In at least two known scenarios when using GCC with libc++:
|
| +// * GCC 4.8 targeting ARMv7 with NEON
|
| +// * GCC 4.9 targeting ARMv8 64 bit
|
| +// we need to typedef float float32_t (or include <arm_neon.h> which does that)
|
| +// before #including <memory>. This makes no sense. I'm not very interested in
|
| +// understanding why... these are old, bizarre platform configuration that we
|
| +// should just let die.
|
| +#include <ciso646> // Include something innocuous to define _LIBCPP_VERISON if it's libc++.
|
| +#if defined(__GNUC__) && __GNUC__ == 4 \
|
| + && ((defined(SK_CPU_ARM32) && defined(SK_ARM_HAS_NEON)) || defined(SK_CPU_ARM64)) \
|
| + && defined(_LIBCPP_VERSION)
|
| + typedef float float32_t;
|
| + #include <memory>
|
| +#endif
|
| +
|
| #include "SkPreConfig.h"
|
| #include "SkUserConfig.h"
|
| #include "SkPostConfig.h"
|
|
|