]> The Tcpdump Group git mirrors - tcpdump/blobdiff - compiler-tests.h
CI: Add warning exemptions for Sun C (suncc-5.14) on Solaris 10
[tcpdump] / compiler-tests.h
index d9cf81f0751104072f92ba7298b03d6d1814095b..d4fe177bc247576db178ed0f5945c67fa91a4687 100644 (file)
  */
 
 #if ! defined(__GNUC__)
-#define ND_IS_AT_LEAST_GNUC_VERSION(major, minor) 0
+  /* Not GCC and not "just like GCC" */
+  #define ND_IS_AT_LEAST_GNUC_VERSION(major, minor) 0
 #else
-#define ND_IS_AT_LEAST_GNUC_VERSION(major, minor) \
+  /* GCC or "just like GCC" */
+  #define ND_IS_AT_LEAST_GNUC_VERSION(major, minor) \
        (__GNUC__ > (major) || \
         (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
 #endif
  */
 
 #if !defined(__clang__)
-#define ND_IS_AT_LEAST_CLANG_VERSION(major, minor) 0
+  /* Not Clang */
+  #define ND_IS_AT_LEAST_CLANG_VERSION(major, minor) 0
 #else
-#define ND_IS_AT_LEAST_CLANG_VERSION(major, minor) \
+  /* Clang */
+  #define ND_IS_AT_LEAST_CLANG_VERSION(major, minor) \
        (__clang_major__ > (major) || \
         (__clang_major__ == (major) && __clang_minor__ >= (minor)))
 #endif
  */
 
 #if ! defined(__SUNPRO_C)
-#define ND_IS_AT_LEAST_SUNC_VERSION(major,minor) 0
+  /* Not Sun/Oracle C */
+  #define ND_IS_AT_LEAST_SUNC_VERSION(major,minor) 0
 #else
-#define ND_SUNPRO_VERSION_TO_BCD(major, minor) \
+  /* Sun/Oracle C */
+  #define ND_SUNPRO_VERSION_TO_BCD(major, minor) \
        (((minor) >= 10) ? \
            (((major) << 12) | (((minor)/10) << 8) | (((minor)%10) << 4)) : \
            (((major) << 8) | ((minor) << 4)))
-#define ND_IS_AT_LEAST_SUNC_VERSION(major,minor) \
+  #define ND_IS_AT_LEAST_SUNC_VERSION(major,minor) \
        (__SUNPRO_C >= ND_SUNPRO_VERSION_TO_BCD((major), (minor)))
 #endif
 
  * __ibmxl__ is defined since at least XL C 13.1.1.
  */
 
-#if ! defined(__xlC__)
-#if ! defined(__ibmxl__)
-#define ND_IS_AT_LEAST_XL_C_VERSION(major,minor) 0
+#if ! defined(__xlC__) && ! defined(__ibmxl__)
+  /* Not XL C */
+  #define ND_IS_AT_LEAST_XL_C_VERSION(major,minor) 0
+  #define ND_IS_AT_LEAST_XL_C_MODFIX(modification, fixlevel) 0
 #else
-#define ND_IS_AT_LEAST_XL_C_VERSION(major, minor) \
+  /* XL C */
+  #if defined(__ibmxl__)
+    /*
+     * Later Linux version of XL C; use __ibmxl_version__ to test
+     * the version.
+     */
+    #define ND_IS_AT_LEAST_XL_C_VERSION(major, minor) \
        (__ibmxl_version__ > (major) || \
         (__ibmxl_version__ == (major) && __ibmxl_release__ >= (minor)))
-#endif /* ! __ibmxl__ */
-#else /* ! __xlC__ */
-#define ND_IS_AT_LEAST_XL_C_VERSION(major, minor) \
+    #define ND_IS_AT_LEAST_XL_C_MODFIX(modification, fixlevel) \
+       (__ibmxl_modification__ > (modification) || \
+        (__ibmxl_modification__ == (modification) && \
+         __ibmxl_ptf_fix_level__ >= (fixlevel)))
+  #else /* __ibmxl__ */
+    /*
+     * __ibmxl__ not defined; use __xlC__ to test the version.
+     */
+    #define ND_IS_AT_LEAST_XL_C_VERSION(major, minor) \
        (__xlC__ >= (((major) << 8) | (minor)))
+    #define ND_IS_AT_LEAST_XL_C_MODFIX(modification, fixlevel) \
+       ((((modification) << 8) | (fixlevel)) >= __xlC_ver__)
+  #endif /* __ibmxl__ */
 #endif
 
 /*
  */
 
 #if ! defined(__HP_aCC)
-#define ND_IS_AT_LEAST_HP_C_VERSION(major,minor) 0
+  /* Not HP C */
+  #define ND_IS_AT_LEAST_HP_C_VERSION(major,minor) 0
 #else
-#define ND_IS_AT_LEAST_HP_C_VERSION(major,minor) \
+  /* HP C */
+  #define ND_IS_AT_LEAST_HP_C_VERSION(major,minor) \
        (__HP_aCC >= ((major)*10000 + (minor)*100))
 #endif