Move Q_DECL_{IMPORT,EXPORT,HIDDEN} to qcompilerdetection.h
Mindful of QT_VISIBILITY_AVAILABLE and Q_OS_WIN for GCC: when GCC is used on Windows (i.e., MinGW or potentially Cygwin), use the declspec variant so we produce proper DLL imports and exports. When used on other platforms, rely on configure adding QT_VISIBILITY_AVAILABLE to qconfig.h, which confirms that the -fvisibility argument is available. That flag has been available since GCC 4.0 on ELF targets, but it could be missing on some other targets. Change-Id: I3dbc0043c1eaee0c469c5b1dc8bf05842fe9cd47 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
This commit is contained in:
parent
32758d917e
commit
4d55ba046c
@ -93,6 +93,8 @@
|
||||
# define Q_UNREACHABLE() __assume(0)
|
||||
# define Q_NORETURN __declspec(noreturn)
|
||||
# define Q_DECL_DEPRECATED __declspec(deprecated)
|
||||
# define Q_DECL_EXPORT __declspec(dllexport)
|
||||
# define Q_DECL_IMPORT __declspec(dllimport)
|
||||
/* Intel C++ disguising as Visual C++: the `using' keyword avoids warnings */
|
||||
# if defined(__INTEL_COMPILER)
|
||||
# define Q_DECL_VARIABLE_DEPRECATED
|
||||
@ -143,6 +145,15 @@
|
||||
# define __is_empty(X) false
|
||||
# define __is_pod(X) false
|
||||
# define Q_DECL_DEPRECATED __attribute__ ((__deprecated__))
|
||||
# ifdef Q_OS_LINUX
|
||||
# define Q_DECL_EXPORT __attribute__((visibility("default")))
|
||||
# define Q_DECL_IMPORT __attribute__((visibility("default")))
|
||||
# define Q_DECL_HIDDEN __attribute__((visibility("hidden")))
|
||||
# else
|
||||
# define Q_DECL_EXPORT __declspec(dllexport)
|
||||
# define Q_DECL_IMPORT __declspec(dllimport)
|
||||
# endif
|
||||
|
||||
#elif defined(__GNUC__)
|
||||
# define Q_CC_GNU
|
||||
# define Q_C_CALLBACKS
|
||||
@ -167,6 +178,15 @@
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifdef Q_OS_WIN
|
||||
# define Q_DECL_EXPORT __declspec(dllexport)
|
||||
# define Q_DECL_IMPORT __declspec(dllimport)
|
||||
# elif defined(QT_VISIBILITY_AVAILABLE)
|
||||
# define Q_DECL_EXPORT __attribute__((visibility("default")))
|
||||
# define Q_DECL_IMPORT __attribute__((visibility("default")))
|
||||
# define Q_DECL_HIDDEN __attribute__((visibility("hidden")))
|
||||
# endif
|
||||
|
||||
# define Q_ALIGNOF(type) __alignof__(type)
|
||||
# define Q_TYPEOF(expr) __typeof__(expr)
|
||||
# define Q_DECL_DEPRECATED __attribute__ ((__deprecated__))
|
||||
@ -649,6 +669,15 @@
|
||||
#ifndef Q_DECL_VARIABLE_DEPRECATED
|
||||
# define Q_DECL_VARIABLE_DEPRECATED Q_DECL_DEPRECATED
|
||||
#endif
|
||||
#ifndef Q_DECL_EXPORT
|
||||
# define Q_DECL_EXPORT
|
||||
#endif
|
||||
#ifndef Q_DECL_IMPORT
|
||||
# define Q_DECL_IMPORT
|
||||
#endif
|
||||
#ifndef Q_DECL_HIDDEN
|
||||
# define Q_DECL_HIDDEN
|
||||
#endif
|
||||
|
||||
/*
|
||||
Workaround for static const members on MSVC++.
|
||||
|
@ -456,35 +456,6 @@ class QDataStream;
|
||||
|
||||
#define QT_SUPPORTS(FEATURE) (!defined(QT_NO_##FEATURE))
|
||||
|
||||
#if defined(Q_OS_LINUX) && defined(Q_CC_RVCT)
|
||||
# define Q_DECL_EXPORT __attribute__((visibility("default")))
|
||||
# define Q_DECL_IMPORT __attribute__((visibility("default")))
|
||||
# define Q_DECL_HIDDEN __attribute__((visibility("hidden")))
|
||||
#endif
|
||||
|
||||
#ifndef Q_DECL_EXPORT
|
||||
# if defined(Q_OS_WIN) || defined(Q_CC_RVCT)
|
||||
# define Q_DECL_EXPORT __declspec(dllexport)
|
||||
# elif defined(QT_VISIBILITY_AVAILABLE)
|
||||
# define Q_DECL_EXPORT __attribute__((visibility("default")))
|
||||
# define Q_DECL_HIDDEN __attribute__((visibility("hidden")))
|
||||
# endif
|
||||
# ifndef Q_DECL_EXPORT
|
||||
# define Q_DECL_EXPORT
|
||||
# endif
|
||||
#endif
|
||||
#ifndef Q_DECL_IMPORT
|
||||
# if defined(Q_OS_WIN) || defined(Q_CC_RVCT)
|
||||
# define Q_DECL_IMPORT __declspec(dllimport)
|
||||
# else
|
||||
# define Q_DECL_IMPORT
|
||||
# endif
|
||||
#endif
|
||||
#ifndef Q_DECL_HIDDEN
|
||||
# define Q_DECL_HIDDEN
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
Create Qt DLL if QT_DLL is defined (Windows only)
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user