From 6ca85a8cf1f30ea36eaebe28484ae183d836811d Mon Sep 17 00:00:00 2001 From: Ray Molenkamp Date: Wed, 23 Feb 2022 12:27:02 -0700 Subject: [PATCH] Fix: Build issue on windows tbb/enumerable_thread_specific.h drags in windows.h which will define min/max macro's unless you politely ask it not to. it's bit of an eyesore, but it is what it is --- .../blenlib/BLI_enumerable_thread_specific.hh | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/source/blender/blenlib/BLI_enumerable_thread_specific.hh b/source/blender/blenlib/BLI_enumerable_thread_specific.hh index 339f02dce0f..51bf8d06cf1 100644 --- a/source/blender/blenlib/BLI_enumerable_thread_specific.hh +++ b/source/blender/blenlib/BLI_enumerable_thread_specific.hh @@ -3,7 +3,25 @@ #pragma once #ifdef WITH_TBB -# include + +# ifdef WITH_TBB +/* Quiet top level deprecation message, unrelated to API usage here. */ +# if defined(WIN32) && !defined(NOMINMAX) +/* TBB includes Windows.h which will define min/max macros causing issues + * when we try to use std::min and std::max later on. */ +# define NOMINMAX +# define TBB_MIN_MAX_CLEANUP +# endif +# include +# ifdef WIN32 +/* We cannot keep this defined, since other parts of the code deal with this on their own, leading + * to multiple define warnings unless we un-define this, however we can only undefine this if we + * were the ones that made the definition earlier. */ +# ifdef TBB_MIN_MAX_CLEANUP +# undef NOMINMAX +# endif +# endif +# endif #endif #include