1 /* compiler.h - macros for various compiler features */
3 * GRUB -- GRand Unified Bootloader
4 * Copyright (C) 2002,2003,2005,2006,2007,2008,2009,2010,2014 Free Software Foundation, Inc.
6 * GRUB is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
11 * GRUB is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
20 #ifndef GRUB_COMPILER_HEADER
21 #define GRUB_COMPILER_HEADER 1
23 /* GCC version checking borrowed from glibc. */
24 #if defined(__GNUC__) && defined(__GNUC_MINOR__)
25 # define GNUC_PREREQ(maj,min) \
26 ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
28 # define GNUC_PREREQ(maj,min) 0
31 /* Does this compiler support compile-time error attributes? */
33 # define ATTRIBUTE_ERROR(msg) \
34 __attribute__ ((__error__ (msg)))
36 # define ATTRIBUTE_ERROR(msg) __attribute__ ((noreturn))
40 # define GNU_PRINTF gnu_printf
42 # define GNU_PRINTF printf
46 # define WARN_UNUSED_RESULT __attribute__ ((warn_unused_result))
48 # define WARN_UNUSED_RESULT
51 #endif /* ! GRUB_COMPILER_HEADER */