aboutsummaryrefslogtreecommitdiffstats
path: root/src/gfx_compilers.h
diff options
context:
space:
mode:
authorinmarket <inmarket@ugfx.io>2017-06-30 19:43:51 +1000
committerinmarket <inmarket@ugfx.io>2017-06-30 19:43:51 +1000
commit9b7318710025ae85af714bb0b5f390db84ae2cd0 (patch)
treef7b1849a40c0019d048761f9493f6d15695703cd /src/gfx_compilers.h
parente5497f2ac058acb427b6fcdd15db6adeddd7bc55 (diff)
downloaduGFX-9b7318710025ae85af714bb0b5f390db84ae2cd0.tar.gz
uGFX-9b7318710025ae85af714bb0b5f390db84ae2cd0.tar.bz2
uGFX-9b7318710025ae85af714bb0b5f390db84ae2cd0.zip
Add compatibility with Visual Studio and make compile warning capabilities more cross platform
Diffstat (limited to 'src/gfx_compilers.h')
-rw-r--r--src/gfx_compilers.h58
1 files changed, 37 insertions, 21 deletions
diff --git a/src/gfx_compilers.h b/src/gfx_compilers.h
index 46d6c8b1..6d1dae1e 100644
--- a/src/gfx_compilers.h
+++ b/src/gfx_compilers.h
@@ -285,12 +285,19 @@
*
* Please keep this list in alphabetical order to keep it easier to maintain
*/
+
#undef GFX_COMPILER_NAME
#undef GFX_COMPILER_TESTED
#undef GFX_COMPILER_VERSION_MAJOR
#undef GFX_COMPILER_VERSION_MINOR
#undef GFX_COMPILER_VERSION_PATCH
#undef GFX_COMPILER_VERSION_BUILD
+ #undef GFX_COMPILER_WARNING_TYPE
+ #define GFX_COMPILER_WARNING_NONE 0 /* Don't display warnings */
+ #define GFX_COMPILER_WARNING_DIRECT 1 /* Use #warning text, no macro expansion possible */
+ #define GFX_COMPILER_WARNING_MACRO 2 /* Use COMPILER_WARNING(text), macro expansion possible */
+ #define GFX_COMPILER_WARNING_GCC 3 /* Use GCC style warnings - converted to GFX_COMPILER_WARNING_MACRO */
+
#if GFX_COMPILER == GFX_COMPILER_ACC
#if GFX_SHOW_COMPILER && GFX_DISPLAY_RULE_WARNINGS
#warning "Compiler: ACC"
@@ -338,6 +345,7 @@
#define GFX_COMPILER_VERSION_MINOR (((__ARMCC_VERSION)/10000)%10)
#define GFX_COMPILER_VERSION_PATCH (((__ARMCC_VERSION)/1000)%10)
#define GFX_COMPILER_VERSION_BUILD ((__ARMCC_VERSION)%1000)
+ #pragma anon_unions // Allow anonymous unions
#define __LITTLE_IF_NOT_BIG__ // Oops - Defines __BIG_ENDIAN but not __LITTLE_ENDIAN
#elif GFX_COMPILER == GFX_COMPILER_AZTEC
#if GFX_SHOW_COMPILER && GFX_DISPLAY_RULE_WARNINGS
@@ -362,11 +370,9 @@
#define GFX_COMPILER_VERSION_MINOR (((__CC65__)/0x10)%0x10)
#define GFX_COMPILER_VERSION_PATCH ((__CC65__)%0x10)
#elif GFX_COMPILER == GFX_COMPILER_CLANG
- #if GFX_SHOW_COMPILER && GFX_DISPLAY_RULE_WARNINGS
- #warning "Compiler: CLANG"
- #endif
#define GFX_COMPILER_NAME "CLang (LLVM)"
#define GFX_COMPILER_TESTED TRUE
+ #define GFX_COMPILER_WARNING_TYPE GFX_COMPILER_WARNING_GCC
#define GFX_COMPILER_VERSION_MAJOR (__clang_major__)
#define GFX_COMPILER_VERSION_MINOR (__clang_minor__)
#define GFX_COMPILER_VERSION_PATCH (__clang_patchlevel__)
@@ -404,11 +410,9 @@
#define GFX_COMPILER_VERSION_MAJOR (_RELEASE)
#define GFX_COMPILER_VERSION_MINOR (_RELEASE_MINOR)
#elif GFX_COMPILER == GFX_COMPILER_CYGWIN
- #if GFX_SHOW_COMPILER && GFX_DISPLAY_RULE_WARNINGS
- #warning "Compiler: CYGWIN"
- #endif
#define GFX_COMPILER_NAME "Cygwin"
#define GFX_COMPILER_TESTED TRUE
+ #define GFX_COMPILER_WARNING_TYPE GFX_COMPILER_WARNING_GCC
#define GFX_COMPILER_VERSION_MAJOR (__GNUC__)
#define GFX_COMPILER_VERSION_MINOR (__GNUC_MINOR__)
#ifdef __GNUC_PATCHLEVEL__
@@ -489,11 +493,9 @@
#endif
#define GFX_COMPILER_NAME "Fujitsu C++"
#elif GFX_COMPILER == GFX_COMPILER_GCC
- #if GFX_SHOW_COMPILER && GFX_DISPLAY_RULE_WARNINGS
- #warning "Compiler: GCC"
- #endif
#define GFX_COMPILER_NAME "GCC"
#define GFX_COMPILER_TESTED TRUE
+ #define GFX_COMPILER_WARNING_TYPE GFX_COMPILER_WARNING_GCC
#define GFX_COMPILER_VERSION_MAJOR (__GNUC__)
#define GFX_COMPILER_VERSION_MINOR (__GNUC_MINOR__)
#ifdef __GNUC_PATCHLEVEL__
@@ -654,11 +656,9 @@
#endif
#define GFX_COMPILER_NAME "Microway NDP C"
#elif GFX_COMPILER == GFX_COMPILER_MINGW32
- #if GFX_SHOW_COMPILER && GFX_DISPLAY_RULE_WARNINGS
- #warning "Compiler: MINGW32"
- #endif
#define GFX_COMPILER_NAME "MingW32"
#define GFX_COMPILER_TESTED TRUE
+ #define GFX_COMPILER_WARNING_TYPE GFX_COMPILER_WARNING_GCC
#define GFX_COMPILER_VERSION_MAJOR (__GNUC__)
#define GFX_COMPILER_VERSION_MINOR (__GNUC_MINOR__)
#ifdef __GNUC_PATCHLEVEL__
@@ -666,10 +666,8 @@
#endif
#define DEPRECATED(msg) __attribute__((deprecated(msg)))
#elif GFX_COMPILER == GFX_COMPILER_MINGW64
- #if GFX_SHOW_COMPILER && GFX_DISPLAY_RULE_WARNINGS
- #warning "Compiler: MINGW64"
- #endif
#define GFX_COMPILER_NAME "MingW64"
+ #define GFX_COMPILER_WARNING_TYPE GFX_COMPILER_WARNING_GCC
#define GFX_COMPILER_VERSION_MAJOR (__GNUC__)
#define GFX_COMPILER_VERSION_MINOR (__GNUC_MINOR__)
#ifdef __GNUC_PATCHLEVEL__
@@ -890,9 +888,6 @@
#endif
#define GFX_COMPILER_NAME "VBCC"
#elif GFX_COMPILER == GFX_COMPILER_VS
- #if GFX_SHOW_COMPILER && GFX_DISPLAY_RULE_WARNINGS
- #warning "Compiler: VS"
- #endif
#define GFX_COMPILER_NAME "Microsoft Visual Studio"
#ifdef _MSC_FULL_VER
#if _MSC_FULL_VER < 100000000
@@ -912,6 +907,9 @@
#define GFX_COMPILER_VERSION_BUILD (_MSC_BUILD)
#endif
#define DEPRECATED(msg) __declspec(deprecated(msg))
+
+ #define GFX_COMPILER_WARNING_TYPE GFX_COMPILER_WARNING_MACRO
+ #define COMPILER_WARNING(desc) __pragma(message(__FILE__ "(" GFXSTRX(__LINE__) "): warning uGFX: " desc))
#elif GFX_COMPILER == GFX_COMPILER_WATCOM
#if GFX_SHOW_COMPILER && GFX_DISPLAY_RULE_WARNINGS
#warning "Compiler: WATCOM"
@@ -928,8 +926,17 @@
#define GFX_COMPILER_VERSION_MINOR (((__ZTC__)/0x10)%0x10)
#define GFX_COMPILER_VERSION_PATCH ((__ZTC__)%0x10)
#endif
+
#ifndef GFX_COMPILER_TESTED
- #define GFX_COMPILER_TESTED FALSE
+ #define GFX_COMPILER_TESTED FALSE
+ #endif
+ #ifndef GFX_COMPILER_WARNING_TYPE
+ #define GFX_COMPILER_WARNING_TYPE GFX_COMPILER_WARNING_DIRECT
+ #elif GFX_COMPILER_WARNING_TYPE == GFX_COMPILER_WARNING_GCC
+ #undef GFX_COMPILER_WARNING_TYPE
+ #define GFX_COMPILER_WARNING_TYPE GFX_COMPILER_WARNING_MACRO
+ #define COMPILER_PRAGMA(x) _Pragma(#x)
+ #define COMPILER_WARNING(desc) COMPILER_PRAGMA(GCC warning desc)
#endif
/************************************ End Compiler Settings *************************/
@@ -944,6 +951,11 @@
#define GFX_COMPILER_NAME "Unknown"
#warning "You are using an unknown compiler. Please report this on the ugfx forum"
#endif
+ #if GFX_SHOW_COMPILER && GFX_DISPLAY_RULE_WARNINGS
+ #if GFX_COMPILER_WARNING_TYPE == GFX_COMPILER_WARNING_MACRO
+ COMPILER_WARNING(GFXSTRX(Compiler: GFX_COMPILER_NAME))
+ #endif
+ #endif
/**
* @brief This compiler is tested with ugfx
@@ -955,8 +967,12 @@
* tested with a different compiler version. Please report any problems
* on the ugfx forum.
*/
- #if !GFX_COMPILER_TESTED
- #warning "You are using an un-tested compiler. Please report any compile errors or warnings on the ugfx forum"
+ #if !GFX_COMPILER_TESTED && GFX_DISPLAY_RULE_WARNINGS
+ #if GFX_COMPILER_WARNING_TYPE == GFX_COMPILER_WARNING_DIRECT
+ #warning "You are using an un-tested compiler. Please report any compile errors or warnings on the ugfx forum"
+ #elif GFX_COMPILER_WARNING_TYPE == GFX_COMPILER_WARNING_MACRO
+ COMPILER_WARNING(GFXSTRX(You are using the un-tested GFX_COMPILER_NAME compiler. Please report any compile errors or warnings on the ugfx forum))
+ #endif
#endif
/**