diff options
author | Campbell Barton <campbell@blender.org> | 2022-09-26 05:26:48 +0300 |
---|---|---|
committer | Campbell Barton <campbell@blender.org> | 2022-09-27 00:05:13 +0300 |
commit | bcb7b119ae5240632b7f8b07f926c230f3c48daf (patch) | |
tree | e2ad3dc3fe145f4506c9178d8652bdb0752a55e4 /source/blender/blenlib | |
parent | cd7e9a1ad5b4f60934c4d95d81968788331db94a (diff) |
Cleanup: remove workarounds and version checks for unsupported compilers
Match minimum supported versions from the WIKI [0] by raising them to:
- GCC 9.3.1
- CLANG 8.0
- MVCS 2019 (16.9.16 / 1928)
Details:
- Add CMake checks that ensure supported compiler versions early on.
- Previously GCC per-processor version checks served to exclude
`__clang__`, in some cases this has been replaced by explicitly
excluding `__clang__`. This was needed as CLANG treated some of these
flags differently to GCC, causing the build to fail.
- Remove USE_APPLE_OMP_FIX GCC-4.2 OpenMP workaround.
- Remove linking error workaround for old MSVC versions.
[0]: https://wiki.blender.org/wiki/Building_Blender
Reviewed by: brecht, LazyDodo
Ref D16068
Diffstat (limited to 'source/blender/blenlib')
-rw-r--r-- | source/blender/blenlib/BLI_assert.h | 2 | ||||
-rw-r--r-- | source/blender/blenlib/BLI_compiler_attrs.h | 8 | ||||
-rw-r--r-- | source/blender/blenlib/BLI_endian_switch_inline.h | 2 | ||||
-rw-r--r-- | source/blender/blenlib/BLI_math_inline.h | 4 | ||||
-rw-r--r-- | source/blender/blenlib/BLI_strict_flags.h | 10 | ||||
-rw-r--r-- | source/blender/blenlib/BLI_winstuff.h | 5 | ||||
-rw-r--r-- | source/blender/blenlib/intern/threads.cc | 28 |
7 files changed, 12 insertions, 47 deletions
diff --git a/source/blender/blenlib/BLI_assert.h b/source/blender/blenlib/BLI_assert.h index 4a7fae6e98c..4292620e462 100644 --- a/source/blender/blenlib/BLI_assert.h +++ b/source/blender/blenlib/BLI_assert.h @@ -67,7 +67,7 @@ void _BLI_assert_unreachable_print(const char *file, int line, const char *funct # define BLI_STATIC_ASSERT(a, msg) static_assert(a, msg); #elif defined(_MSC_VER) /* Visual Studio */ -# if (_MSC_VER > 1910) && !defined(__clang__) +# if !defined(__clang__) # define BLI_STATIC_ASSERT(a, msg) static_assert(a, msg); # else # define BLI_STATIC_ASSERT(a, msg) _STATIC_ASSERT(a); diff --git a/source/blender/blenlib/BLI_compiler_attrs.h b/source/blender/blenlib/BLI_compiler_attrs.h index 99f0aa9f049..9ee626296cb 100644 --- a/source/blender/blenlib/BLI_compiler_attrs.h +++ b/source/blender/blenlib/BLI_compiler_attrs.h @@ -25,7 +25,7 @@ #endif /* never returns NULL */ -#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 /* gcc4.9+ only */ +#ifdef __GNUC__ # define ATTR_RETURNS_NONNULL __attribute__((returns_nonnull)) #else # define ATTR_RETURNS_NONNULL @@ -39,14 +39,14 @@ #endif /* hint to treat any non-null function return value cannot alias any other pointer */ -#if (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 403)) +#ifdef __GNUC__ # define ATTR_MALLOC __attribute__((malloc)) #else # define ATTR_MALLOC #endif /* the function return value points to memory (2 args for 'size * tot') */ -#if (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 403)) +#ifdef __GNUC__ # define ATTR_ALLOC_SIZE(args...) __attribute__((alloc_size(args))) #else # define ATTR_ALLOC_SIZE(...) @@ -69,7 +69,7 @@ /* Use to suppress '-Wimplicit-fallthrough' (in place of 'break'). */ #ifndef ATTR_FALLTHROUGH -# if defined(__GNUC__) && (__GNUC__ >= 7) /* gcc7.0+ only */ +# ifdef __GNUC__ # define ATTR_FALLTHROUGH __attribute__((fallthrough)) # else # define ATTR_FALLTHROUGH ((void)0) diff --git a/source/blender/blenlib/BLI_endian_switch_inline.h b/source/blender/blenlib/BLI_endian_switch_inline.h index ce44348d4dd..32cb0f234f2 100644 --- a/source/blender/blenlib/BLI_endian_switch_inline.h +++ b/source/blender/blenlib/BLI_endian_switch_inline.h @@ -26,7 +26,7 @@ BLI_INLINE void BLI_endian_switch_int16(short *val) } BLI_INLINE void BLI_endian_switch_uint16(unsigned short *val) { -#if (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 408)) /* gcc4.8+ only */ +#ifdef __GNUC__ *val = __builtin_bswap16(*val); #else unsigned short tval = *val; diff --git a/source/blender/blenlib/BLI_math_inline.h b/source/blender/blenlib/BLI_math_inline.h index bf91c9108a9..b190b022a88 100644 --- a/source/blender/blenlib/BLI_math_inline.h +++ b/source/blender/blenlib/BLI_math_inline.h @@ -28,8 +28,8 @@ extern "C" { # define MALWAYS_INLINE #endif -/* gcc 4.6 (supports push/pop) */ -#if (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 406)) +/* Check for GCC push/pop pragma support. */ +#ifdef __GNUC__ # define BLI_MATH_GCC_WARN_PRAGMA 1 #endif diff --git a/source/blender/blenlib/BLI_strict_flags.h b/source/blender/blenlib/BLI_strict_flags.h index 8489871d5da..cc5b5dce363 100644 --- a/source/blender/blenlib/BLI_strict_flags.h +++ b/source/blender/blenlib/BLI_strict_flags.h @@ -9,16 +9,12 @@ */ #ifdef __GNUC__ -# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 /* gcc4.6+ only */ +/* NOTE(@campbellbarton): CLANG behaves slightly differently to GCC, + * these can be enabled but do so carefully as they can introduce build-errors. */ +# if !defined(__clang__) # pragma GCC diagnostic error "-Wsign-compare" -# endif -# if __GNUC__ >= 6 /* gcc6+ only */ # pragma GCC diagnostic error "-Wconversion" -# endif -# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 -/* gcc4.8+ only (behavior changed to ignore globals). */ # pragma GCC diagnostic error "-Wshadow" -/* older gcc changed behavior with ternary */ # pragma GCC diagnostic error "-Wsign-conversion" # endif /* pedantic gives too many issues, developers can define this for own use */ diff --git a/source/blender/blenlib/BLI_winstuff.h b/source/blender/blenlib/BLI_winstuff.h index 7201e1bb4a1..34f1b1a68f1 100644 --- a/source/blender/blenlib/BLI_winstuff.h +++ b/source/blender/blenlib/BLI_winstuff.h @@ -48,11 +48,6 @@ extern "C" { # define S_ISDIR(x) (((x)&_S_IFDIR) == _S_IFDIR) #endif -/* Defines for using ISO C++ conferment names. */ -#if !defined(_MSC_VER) || _MSC_VER < 1900 -# define snprintf _snprintf -#endif - #if defined(_MSC_VER) # define R_OK 4 # define W_OK 2 diff --git a/source/blender/blenlib/intern/threads.cc b/source/blender/blenlib/intern/threads.cc index 156f2a7b338..f99a27c2475 100644 --- a/source/blender/blenlib/intern/threads.cc +++ b/source/blender/blenlib/intern/threads.cc @@ -37,17 +37,6 @@ #include "atomic_ops.h" -#if defined(__APPLE__) && defined(_OPENMP) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) && \ - !defined(__clang__) -# define USE_APPLE_OMP_FIX -#endif - -#ifdef USE_APPLE_OMP_FIX -/* ************** libgomp (Apple gcc 4.2.1) TLS bug workaround *************** */ -extern pthread_key_t gomp_tls_key; -static void *thread_tls_data; -#endif - /** * Basic Thread Control API * ======================== @@ -153,15 +142,7 @@ void BLI_threadpool_init(ListBase *threadbase, void *(*do_thread)(void *), int t } } - uint level = atomic_fetch_and_add_u(&thread_levels, 1); - if (level == 0) { -#ifdef USE_APPLE_OMP_FIX - /* Workaround for Apple gcc 4.2.1 OMP vs background thread bug, - * we copy GOMP thread local storage pointer to setting it again - * inside the thread that we start. */ - thread_tls_data = pthread_getspecific(gomp_tls_key); -#endif - } + atomic_fetch_and_add_u(&thread_levels, 1); } int BLI_available_threads(ListBase *threadbase) @@ -194,13 +175,6 @@ int BLI_threadpool_available_thread_index(ListBase *threadbase) static void *tslot_thread_start(void *tslot_p) { ThreadSlot *tslot = (ThreadSlot *)tslot_p; - -#ifdef USE_APPLE_OMP_FIX - /* Workaround for Apple gcc 4.2.1 OMP vs background thread bug, - * set GOMP thread local storage pointer which was copied beforehand */ - pthread_setspecific(gomp_tls_key, thread_tls_data); -#endif - return tslot->do_thread(tslot->callerdata); } |