1 /* MPFR internal header related to thread-local variables. 2 3 Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 4 Contributed by the Arenaire and Caramel projects, INRIA. 5 6 This file is part of the GNU MPFR Library. 7 8 The GNU MPFR Library is free software; you can redistribute it and/or modify 9 it under the terms of the GNU Lesser General Public License as published by 10 the Free Software Foundation; either version 3 of the License, or (at your 11 option) any later version. 12 13 The GNU MPFR Library is distributed in the hope that it will be useful, but 14 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 16 License for more details. 17 18 You should have received a copy of the GNU Lesser General Public License 19 along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see 20 http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc., 21 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ 22 23 #ifndef __MPFR_THREAD_H__ 24 #define __MPFR_THREAD_H__ 25 26 /* Note: Let's define MPFR_THREAD_ATTR even after a #error to make the 27 error message more visible (e.g. gcc doesn't immediately stop after 28 the #error line and outputs many error messages if MPFR_THREAD_ATTR 29 is not defined). But some compilers will just output a message and 30 may build MPFR "successfully" (without thread support). */ 31 #ifndef MPFR_THREAD_ATTR 32 # ifdef MPFR_USE_THREAD_SAFE 33 # if defined(_MSC_VER) 34 # if defined(_WINDLL) 35 # error "Can't build MPFR DLL as thread safe." 36 # define MPFR_THREAD_ATTR 37 # else 38 # define MPFR_THREAD_ATTR __declspec( thread ) 39 # endif 40 # else 41 # define MPFR_THREAD_ATTR __thread 42 # endif 43 # else 44 # define MPFR_THREAD_ATTR 45 # endif 46 #endif 47 48 #endif 49