summaryrefslogtreecommitdiff
path: root/dgl/Base.hpp
diff options
context:
space:
mode:
authorfalkTX <falktx@gmail.com>2014-04-10 20:53:30 +0100
committerfalkTX <falktx@gmail.com>2014-04-10 20:53:30 +0100
commit339d2fb4a0ddc5305aeaecabe88d92bf62976e5c (patch)
tree06d0f4cd50af364d830383a7f97f6598ddeb6478 /dgl/Base.hpp
parent5d89995112172b5ae04d9a5333a5bb1e301e38d1 (diff)
Fix headers for clang; Add Window::setTransientWinId used in Carla
Diffstat (limited to 'dgl/Base.hpp')
-rw-r--r--dgl/Base.hpp31
1 files changed, 21 insertions, 10 deletions
diff --git a/dgl/Base.hpp b/dgl/Base.hpp
index 943d466d..91afe57e 100644
--- a/dgl/Base.hpp
+++ b/dgl/Base.hpp
@@ -17,35 +17,44 @@
#ifndef DGL_BASE_HPP_INCLUDED
#define DGL_BASE_HPP_INCLUDED
+/* Compatibility with non-clang compilers */
+#ifndef __has_feature
+# define __has_feature(x) 0
+#endif
+#ifndef __has_extension
+# define __has_extension __has_feature
+#endif
+
+/* Check OS */
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
# define DGL_OS_WINDOWS 1
#elif defined(__APPLE__)
# define DGL_OS_MAC 1
#elif defined(__HAIKU__)
# define DGL_OS_HAIKU 1
-#elif defined(__linux__)
+#elif defined(__linux__) || defined(__linux)
# define DGL_OS_LINUX 1
#endif
+/* Check for C++11 support */
#if defined(HAVE_CPP11_SUPPORT)
# define PROPER_CPP11_SUPPORT
-#elif defined(__GNUC__) && (__cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__))
-# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405
-# define PROPER_CPP11_SUPPORT
-# if (__GNUC__ * 100 + __GNUC_MINOR__) < 407
-# define override // gcc4.7+ only
-# endif
+#elif __cplusplus >= 201103L || (defined(__GNUC__) && defined(__GXX_EXPERIMENTAL_CXX0X__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 405) || __has_extension(cxx_noexcept)
+# define PROPER_CPP11_SUPPORT
+# if (defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) < 407) || ! __has_extension(cxx_override_control)
+# define override // gcc4.7+ only
+# define final // gcc4.7+ only
# endif
#endif
#ifndef PROPER_CPP11_SUPPORT
-# ifndef __clang__
-# define noexcept throw()
-# endif
+# define noexcept throw()
# define override
+# define final
# define nullptr (0)
#endif
+/* Define namespace */
#ifndef DGL_NAMESPACE
# define DGL_NAMESPACE DGL
#endif
@@ -54,12 +63,14 @@
#define END_NAMESPACE_DGL }
#define USE_NAMESPACE_DGL using namespace DGL_NAMESPACE;
+/* GL includes */
#ifdef DGL_OS_MAC
# include <OpenGL/gl.h>
#else
# include <GL/gl.h>
#endif
+/* missing GL defines */
#if defined(GL_BGR_EXT) && ! defined(GL_BGR)
# define GL_BGR GL_BGR_EXT
#endif