compiler_setup.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2010 NICTA and the authors listed below
00002 // http://nicta.com.au
00003 // 
00004 // Authors:
00005 // - Conrad Sanderson (conradsand at ieee dot org)
00006 // 
00007 // This file is part of the Armadillo C++ library.
00008 // It is provided without any warranty of fitness
00009 // for any purpose. You can redistribute this file
00010 // and/or modify it under the terms of the GNU
00011 // Lesser General Public License (LGPL) as published
00012 // by the Free Software Foundation, either version 3
00013 // of the License or (at your option) any later version.
00014 // (see http://www.opensource.org/licenses for more info)
00015 
00016 
00017 
00018 #define arma_hot
00019 #define arma_cold
00020 #define arma_pure
00021 #define arma_const
00022 #define arma_inline  inline
00023 #define arma_aligned
00024 #define arma_warn_unused
00025 
00026 #if defined(__GNUG__)
00027 
00028   #if (__GNUC__ < 4)
00029     #error "*** Need a newer compiler ***"
00030   #endif
00031   
00032   #if (__GNUC_MINOR__ >= 3)
00033     #undef  arma_hot
00034     #undef  arma_cold
00035     
00036     #define arma_hot  __attribute__((hot))
00037     #define arma_cold __attribute__((cold))
00038   #endif
00039 
00040   #undef  arma_pure
00041   #undef  arma_const
00042   #undef  arma_inline
00043   #undef  arma_aligned
00044   #undef  arma_warn_unused
00045 
00046   #define arma_pure               __attribute__((pure))
00047   #define arma_const              __attribute__((const))
00048   #define arma_inline      inline __attribute__((always_inline))
00049   #define arma_aligned            __attribute__((aligned))
00050   #define arma_warn_unused        __attribute__((warn_unused_result))
00051   
00052   #define ARMA_GOOD_COMPILER
00053   
00054 #elif defined(__INTEL_COMPILER)
00055   
00056   #if (__INTEL_COMPILER < 1000)
00057     #error "*** Need a newer compiler ***"
00058   #endif
00059   
00060   #define ARMA_GOOD_COMPILER
00061   
00062 #elif defined(_MSC_VER)
00063   
00064   #pragma message ("*** WARNING: This compiler may have an incomplete implementation of the C++ standard ***")
00065   #undef ARMA_GOOD_COMPILER
00066 
00067 #endif
00068 
00069 
00070 #if defined(__CUDACC__)
00071   #undef ARMA_HAVE_STD_ISFINITE
00072   #undef ARMA_HAVE_STD_ISINF
00073   #undef ARMA_HAVE_STD_ISNAN
00074 #endif
00075 
00076 
00077 #if defined(__INTEL_COMPILER)
00078   #if (__INTEL_COMPILER <= 1110)
00079     #undef ARMA_HAVE_STD_ISFINITE
00080   #endif
00081 #endif