GCC visibility support for C wrapper symbols
Mon May 11 14:07:17 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* GCC visibility support for C wrapper symbols
diff -rN -u old-qt.gui/src/lib/CMakeLists.txt new-qt.gui/src/lib/CMakeLists.txt
--- old-qt.gui/src/lib/CMakeLists.txt 2014-10-30 07:44:01.000000000 +0100
+++ new-qt.gui/src/lib/CMakeLists.txt 2014-10-30 07:44:01.000000000 +0100
@@ -2,6 +2,12 @@
set(QT_DONT_USE_QTGUI true)
include(${QT_USE_FILE})
+include(CheckCXXCompilerFlag)
+check_cxx_compiler_flag("-fvisibility=hidden" CXX_VISIBILITY)
+if(CXX_VISIBILITY)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden")
+endif(CXX_VISIBILITY)
+
set(QT_SMOKE_SOURCES qt-smoke.cpp qstring.cpp qstringlist.cpp lisp-object.cpp qlist.cpp)
add_library(qt-smoke-extra MODULE ${QT_SMOKE_SOURCES})
target_link_libraries(qt-smoke-extra ${QT_LIBRARIES})
diff -rN -u old-qt.gui/src/lib/cl_smoke_qt.h new-qt.gui/src/lib/cl_smoke_qt.h
--- old-qt.gui/src/lib/cl_smoke_qt.h 1970-01-01 01:00:00.000000000 +0100
+++ new-qt.gui/src/lib/cl_smoke_qt.h 2014-10-30 07:44:01.000000000 +0100
@@ -0,0 +1,14 @@
+#ifndef CL_SMOKE_QT_H
+#define CL_SMOKE_QT_H
+
+#if defined _WIN32 || defined __CYGWIN__
+ #define CL_SMOKE_QT_EXPORT __declspec(dllexport)
+#else
+ #if __GNUC__ >= 4
+ #define CL_SMOKE_QT_EXPORT __attribute__((visibility("default")))
+ #else
+ #define CL_SMOKE_QT_EXPORT
+ #endif
+#endif
+
+#endif // CL_SMOKE_QT_H
diff -rN -u old-qt.gui/src/lib/lisp-object.h new-qt.gui/src/lib/lisp-object.h
--- old-qt.gui/src/lib/lisp-object.h 2014-10-30 07:44:01.000000000 +0100
+++ new-qt.gui/src/lib/lisp-object.h 2014-10-30 07:44:01.000000000 +0100
@@ -6,25 +6,26 @@
#include <QExplicitlySharedDataPointer>
#include <smoke.h>
+#include "cl_smoke_qt.h"
extern "C"
{
- int
+ CL_SMOKE_QT_EXPORT int
qt_smoke_setup_lisp_object(void* destruct);
- int
+ CL_SMOKE_QT_EXPORT int
qt_smoke_lisp_object_id(const void* object);
- int
+ CL_SMOKE_QT_EXPORT int
qt_smoke_lisp_object_set(const void* object);
- void*
+ CL_SMOKE_QT_EXPORT void*
qt_smoke_make_lisp_object(int id);
- void*
+ CL_SMOKE_QT_EXPORT void*
qt_smoke_free_lisp_object(void* object);
- void*
+ CL_SMOKE_QT_EXPORT void*
qt_smoke_lisp_object_value(const void* variant);
}
diff -rN -u old-qt.gui/src/lib/qlist.h new-qt.gui/src/lib/qlist.h
--- old-qt.gui/src/lib/qlist.h 2014-10-30 07:44:01.000000000 +0100
+++ new-qt.gui/src/lib/qlist.h 2014-10-30 07:44:01.000000000 +0100
@@ -2,6 +2,7 @@
#define CL_SMOKE_QT_QLIST_H
#include <QList>
+#include "cl_smoke_qt.h"
/** @file
*/
@@ -30,19 +31,19 @@
/** @internal
* size, free and make_list. */
#define DEFINE_QLIST_WRAPPER_ALL_PART(NAME, TYPE) \
-int \
+CL_SMOKE_QT_EXPORT int \
qt_smoke_list_ ## NAME ## size(const void* list) \
{ \
return static_cast<const QList< TYPE >*>(list)->size(); \
} \
\
-void \
+CL_SMOKE_QT_EXPORT void \
qt_smoke_free_list_ ## NAME (void* list) \
{ \
delete static_cast<QList< TYPE >*>(list); \
} \
\
-void* \
+CL_SMOKE_QT_EXPORT void* \
qt_smoke_make_list_ ## NAME () \
{ \
return new QList< TYPE >(); \
@@ -53,14 +54,14 @@
* At and append for pointer types
*/
#define DEFINE_QLIST_WRAPPER_PTR_PART(NAME, TYPE) \
-const void* \
+CL_SMOKE_QT_EXPORT const void* \
qt_smoke_list_ ## NAME ## _at(const void* list, int index) \
{ \
const QList< TYPE >* qlist = static_cast<const QList< TYPE > *>(list); \
return qlist->at(index); \
} \
\
-void \
+CL_SMOKE_QT_EXPORT void \
qt_smoke_list_ ## NAME ## _append(void* list, void* data, int length) \
{ \
static_cast<QList< TYPE >*>(list) \
@@ -71,14 +72,14 @@
* At and append for value types.
*/
#define DEFINE_QLIST_WRAPPER_VALUE_PART(NAME, TYPE) \
-const void* \
+CL_SMOKE_QT_EXPORT const void* \
qt_smoke_list_ ## NAME ## _at(const void* list, int index) \
{ \
const QList< TYPE >* qlist = static_cast<const QList< TYPE > *>(list); \
return &qlist->at(index); \
} \
\
-void \
+CL_SMOKE_QT_EXPORT void \
qt_smoke_list_ ## NAME ## _append(void* list, void* data, int length) \
{ \
static_cast<QList< TYPE >*>(list) \
diff -rN -u old-qt.gui/src/lib/qstring.cpp new-qt.gui/src/lib/qstring.cpp
--- old-qt.gui/src/lib/qstring.cpp 2014-10-30 07:44:01.000000000 +0100
+++ new-qt.gui/src/lib/qstring.cpp 2014-10-30 07:44:01.000000000 +0100
@@ -1,6 +1,8 @@
#include <QString>
#include <QtDebug>
+#include "cl_smoke_qt.h"
+
/** @file
* @brief QString conversion. */
@@ -11,7 +13,7 @@
*
* @return a pointer to a newly allocated char array.
*/
-void*
+CL_SMOKE_QT_EXPORT void*
qt_smoke_qstring_to_byte_array(const void* qstring)
{
Q_ASSERT(qstring);
@@ -23,7 +25,7 @@
/** Frees an QString.
* @param qstring the QString to free
*/
-void
+CL_SMOKE_QT_EXPORT void
qt_smoke_free_qstring(void* qstring)
{
delete static_cast<QString*>(qstring);
@@ -35,7 +37,7 @@
*
* @return a newly allocated QString
*/
-void*
+CL_SMOKE_QT_EXPORT void*
qt_smoke_string_to_qstring(const char* data, int length)
{
return new QString(QString::fromLocal8Bit(data, length));
diff -rN -u old-qt.gui/src/lib/qstringlist.cpp new-qt.gui/src/lib/qstringlist.cpp
--- old-qt.gui/src/lib/qstringlist.cpp 2014-10-30 07:44:01.000000000 +0100
+++ new-qt.gui/src/lib/qstringlist.cpp 2014-10-30 07:44:01.000000000 +0100
@@ -2,6 +2,8 @@
#include <QtDebug>
#include <cstring>
+#include "cl_smoke_qt.h"
+
/** @file
* @brief QStringList conversion. */
@@ -12,7 +14,7 @@
*
* @return the number of items
*/
-int
+CL_SMOKE_QT_EXPORT int
qt_smoke_string_list_size(const void* string_list)
{
Q_ASSERT(string_list);
@@ -25,7 +27,7 @@
*
* @return a new allocated byte-array
*/
-void*
+CL_SMOKE_QT_EXPORT void*
qt_smoke_string_list_at(const void* string_list, int index)
{
Q_ASSERT(string_list);
@@ -39,7 +41,7 @@
/** Free a QStringList.
* @param string_list the QStringList to free
*/
-void
+CL_SMOKE_QT_EXPORT void
qt_smoke_free_string_list(void* string_list)
{
delete static_cast<QStringList*>(string_list);
@@ -49,7 +51,7 @@
*
* @return a new QStringList
*/
-void*
+CL_SMOKE_QT_EXPORT void*
qt_smoke_make_string_list()
{
return new QStringList();
@@ -60,7 +62,7 @@
* @param data the string
* @param length the length of @a data
*/
-void
+CL_SMOKE_QT_EXPORT void
qt_smoke_string_list_append(void* string_list, const char* data, int length)
{
static_cast<QStringList*>(string_list)->append(QString::fromLocal8Bit(data, length));
diff -rN -u old-qt.gui/src/lib/qt-smoke.cpp new-qt.gui/src/lib/qt-smoke.cpp
--- old-qt.gui/src/lib/qt-smoke.cpp 2014-10-30 07:44:01.000000000 +0100
+++ new-qt.gui/src/lib/qt-smoke.cpp 2014-10-30 07:44:01.000000000 +0100
@@ -2,6 +2,8 @@
#include <QEvent>
#include <QtDebug>
+#include "cl_smoke_qt.h"
+
/** @file
* @brief Qt support functions */
@@ -14,7 +16,7 @@
*
* @return @c true on success and @c false when the callback table is full.
*/
-int
+CL_SMOKE_QT_EXPORT int
qt_smoke_register_event_notify(void* callback)
{
Q_ASSERT(callback);