1 /* MPFR internal header related to thread-local variables.
3 Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
4 Contributed by the AriC and Caramel projects, INRIA.
6 This file is part of the GNU MPFR Library.
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.
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.
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. */
23 #ifndef __MPFR_THREAD_H__
24 #define __MPFR_THREAD_H__
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)
35 # error "Can't build MPFR DLL as thread safe."
36 # define MPFR_THREAD_ATTR
38 # define MPFR_THREAD_ATTR __declspec( thread )
41 # define MPFR_THREAD_ATTR __thread
44 # define MPFR_THREAD_ATTR