Use gcc visibility feature to decrease number of exported symbols to half.
authorHong Jen Yee (PCMan) <pcman.tw@gmail.com>
Sat, 9 Nov 2013 10:22:12 +0000 (18:22 +0800)
committerHong Jen Yee (PCMan) <pcman.tw@gmail.com>
Sat, 9 Nov 2013 10:22:12 +0000 (18:22 +0800)
21 files changed:
CMakeLists.txt
aboutdialog/lxqtaboutdialog.h
addplugindialog/lxqtaddplugindialog.h
configdialog/lxqtconfigdialog.h
configdialog/lxqtpageselectwidget.h
lxqtapplication.h
lxqtautostartentry.h
lxqtgridlayout.h
lxqtnotification.h
lxqtplugininfo.h
lxqtpower/lxqtpower.h
lxqtpowermanager.cpp
lxqtpowermanager.h
lxqtprogramfinder.cpp
lxqtprogramfinder.h
lxqtrotatedwidget.h
lxqtscreensaver.h
lxqtsettings.h
lxqttranslator.h
lxqtxfitman.cpp
lxqtxfitman.h

index a8aa080..e268eb5 100644 (file)
@@ -27,6 +27,7 @@ set(PUB_HDRS
     lxqtautostartentry.h
     lxqtgridlayout.h
     lxqtrotatedwidget.h
+    lxqtglobals.h
 )
 
 set(PUBLIC_CLASSES
@@ -166,6 +167,13 @@ include_directories(${LXQT_INCLUDE_DIR})
 set(APP_SHARE_DIR ${CMAKE_INSTALL_PREFIX}/share/liblxqt)
 
 
+# use gcc visibility feature to decrease unnecessary exported symbols
+if (CMAKE_COMPILER_IS_GNUCXX)
+  # set visibility to hidden to hide symbols, unlesss they're exporeted manually in the code
+  set(CMAKE_CXX_FLAGS "-fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions")
+endif()
+add_definitions(-DCOMPILE_LIBLXQT)
+
 # create the portable headers *******************
 include(create_portable_headers)
 create_portable_headers(PORTABLE_HEADERS ${PUBLIC_CLASSES})
index 113d551..c4cf802 100644 (file)
@@ -29,6 +29,7 @@
 #define LXQTRABOUTDIALOG_H
 
 #include <QDialog>
+#include "lxqtglobals.h"
 
 namespace LxQt
 {
@@ -38,7 +39,7 @@ class AboutDialogPrivate;
 /**
  * @brief displays a simple about dialog
  */
-class AboutDialog: public QDialog
+class LXQT_API AboutDialog: public QDialog
 {
     Q_OBJECT
 public:
index 93f2fbf..3a19d96 100644 (file)
@@ -31,6 +31,7 @@
 
 #include <QDialog>
 #include <lxqtplugininfo.h>
+#include "lxqtglobals.h"
 
 #define SEARCH_DELAY 125
 
@@ -44,7 +45,7 @@ namespace LxQt
 
 /*! The AddPluginDialog class provides a dialog that allow users to add plugins.
  */
-class AddPluginDialog : public QDialog
+class LXQT_API AddPluginDialog : public QDialog
 {
     Q_OBJECT
 
index 927c40a..4aaaeda 100644 (file)
@@ -29,6 +29,7 @@
 
 #include <QtGui/QDialog>
 #include <QtGui/QAbstractButton>
+#include "lxqtglobals.h"
 
 namespace Ui {
 class ConfigDialog;
@@ -37,7 +38,7 @@ class ConfigDialog;
 namespace LxQt
 {
 
-class ConfigDialog : public QDialog
+class LXQT_API ConfigDialog : public QDialog
 {
     Q_OBJECT
 
index 8059d54..de34a55 100644 (file)
 #define LXQTPAGESELECTWIDGET_H
 
 #include <QtGui/QListWidget>
+#include "lxqtglobals.h"
+
 namespace LxQt
 {
 
-class PageSelectWidget : public QListWidget
+class LXQT_API PageSelectWidget : public QListWidget
 {
     Q_OBJECT
 public:
index 5fad5fe..2fac5c1 100644 (file)
@@ -30,6 +30,7 @@
 
 #include <QtGui/QApplication>
 #include <QtGui/QProxyStyle>
+#include "lxqtglobals.h"
 
 namespace LxQt
 {
@@ -42,7 +43,7 @@ namespace LxQt
  *       LXDE-Qt libraries.
  *
  */
-class Application : public QApplication
+class LXQT_API Application : public QApplication
 {
     Q_OBJECT
 
index b103902..c4be885 100644 (file)
@@ -26,6 +26,7 @@
 #define LXQTAUTOSTARTENTRY_H
 
 #include <qtxdg/xdgdesktopfile.h>
+#include "lxqtglobals.h"
 
 namespace LxQt
 {
@@ -39,7 +40,7 @@ autostart items. All changes are made in memory until commit() is called.
 When a "local" file has the same name as the "system" file, the local one overrides it. This class
 tries to ensure that the "local" file is deleted if it's identical to the "system" file.
 */
-class AutostartEntry
+class LXQT_API AutostartEntry
 {
 public:
     /*! Constructs an AutostartEntry object for a specific entry.
index 291929f..6fa4e79 100644 (file)
@@ -31,6 +31,7 @@
 
 #include <QtGui/QLayout>
 #include <QtCore/QList>
+#include "lxqtglobals.h"
 
 namespace LxQt
 {
@@ -40,7 +41,7 @@ class GridLayoutPrivate;
 /**
  The GridLayout class lays out widgets in a grid.
  **/
-class GridLayout: public QLayout
+class LXQT_API GridLayout: public QLayout
 {
     Q_OBJECT
 public:
index fd9dbba..876754d 100644 (file)
@@ -26,6 +26,7 @@
 #define LXQTNOTIFICATION_H
 
 #include <QtCore/QStringList>
+#include "lxqtglobals.h"
 
 namespace LxQt
 {
@@ -37,7 +38,7 @@ class NotificationPrivate;
  *
  * Spec: http://developer.gnome.org/notification-spec
  */
-class Notification : public QObject
+class LXQT_API Notification : public QObject
 {
     Q_OBJECT
 public:
index fa8922b..4896cb0 100644 (file)
@@ -36,6 +36,7 @@
 #include <QtCore/QFileInfo>
 #include <QtCore/QtAlgorithms>
 #include <QtCore/QDebug>
+#include "lxqtglobals.h"
 
 class QLibrary;
 
@@ -57,7 +58,7 @@ lxqtpanel_clock2.desktop file
 PluginInfo class gives the interface for reading the values from the plugin .desktop file.
 This is a pure virtual class, you must implement libraryDir(), translationDir(), and instance() methods.
 */
-class PluginInfo: public XdgDesktopFile
+class LXQT_API PluginInfo: public XdgDesktopFile
 {
 public:
     /// Constructs a PluginInfo object for accessing the info stored in the .desktop file.
index 7a5b2a0..b642eb2 100644 (file)
@@ -31,6 +31,7 @@
 
 #include <QtCore/QObject>
 #include <QtCore/QList>
+#include "lxqtglobals.h"
 
 namespace LxQt
 {
@@ -42,7 +43,7 @@ class PowerProvider;
     It allows logout from the user session, hibernate, reboot, shutdown and suspend computer.
     This is a wrapper class. All the real work is done in the PowerWorker classes.
 */
-class Power : public QObject
+class LXQT_API Power : public QObject
 {
     Q_OBJECT
 public:
index 6282cdc..92a181e 100644 (file)
 #include <QDesktopWidget>
 #include <QtDebug>
 #include "lxqttranslator.h"
+#include "lxqtglobals.h"
 
 namespace LxQt {
 
-class MessageBox: public QMessageBox
+class LXQT_API MessageBox: public QMessageBox
 {
 public:
     explicit MessageBox(QWidget *parent = 0): QMessageBox(parent) {}
index 58d5572..223313f 100644 (file)
@@ -30,6 +30,7 @@
 
 #include <QObject>
 #include <QAction>
+#include "lxqtglobals.h"
 
 namespace LxQt
 {
@@ -37,7 +38,7 @@ class Power;
 
 /*! QAction centric menu aware wrapper around lxqtpower
 */
-class PowerManager : public QObject
+class LXQT_API PowerManager : public QObject
 {
     Q_OBJECT
 
index c13bc82..fb2c440 100644 (file)
@@ -29,7 +29,7 @@
 
 using namespace LxQt;
 
-bool ProgramFinder::programExists(const QString& command)
+LXQT_API bool ProgramFinder::programExists(const QString& command)
 {
     QString program = programName(command);
     if (program[0] == QChar('/'))
@@ -48,16 +48,16 @@ bool ProgramFinder::programExists(const QString& command)
     return false;
 }
 
-QStringList ProgramFinder::findPrograms(const QStringList& programs)
+LXQT_API QStringList ProgramFinder::findPrograms(const QStringList& commands)
 {
     QStringList availPrograms;
-    foreach (const QString& program, programs)
+    foreach (const QString& program, commands)
         if (programExists(program))
             availPrograms.append(program);
     return availPrograms;
 }
 
-QString ProgramFinder::programName(const QString& command)
+LXQT_API QString ProgramFinder::programName(const QString& command)
 {
     wordexp_t we;
     if (wordexp(command.toLocal8Bit().constData(), &we, WRDE_NOCMD) == 0)
index 1447689..10d2ae8 100644 (file)
@@ -26,6 +26,8 @@
 #define LXQTPROGRAMFINDER_H
 
 #include <QtCore/QStringList>
+#include "lxqtglobals.h"
+
 namespace LxQt
 {
 
@@ -37,7 +39,7 @@ namespace ProgramFinder
      * \param command
      * \return True if the program exists
      */
-    bool programExists(const QString& command);
+    LXQT_API bool programExists(const QString& command);
 
     /*!
      * \brief findPrograms Filters a list of commands (with arguments) based on
@@ -45,14 +47,14 @@ namespace ProgramFinder
      * \param commands Commands to check
      * \return List of commands which are installed
      */
-    QStringList findPrograms(const QStringList& commands);
+    LXQT_API QStringList findPrograms(const QStringList& commands);
 
     /*!
      * \brief programName Returns the program name given a command
      * \param command
      * \return
      */
-    QString programName(const QString& command);
+    LXQT_API QString programName(const QString& command);
 }
 
 } // namespace LxQt
index d3ce348..44b30be 100644 (file)
 #define LXQTROTATED_WIDGET_H
 
 #include <QWidget>
+#include "lxqtglobals.h"
 
 namespace LxQt
 {
 
-class RotatedWidget: public QWidget
+class LXQT_API RotatedWidget: public QWidget
 {
     Q_OBJECT
 
index ecf480d..1fbf144 100644 (file)
 #include <QtCore/QProcess>
 #include <QtCore/QObject>
 #include <QtGui/QAction>
-
+#include "lxqtglobals.h"
 
 class QProcess;
 
 namespace LxQt
 {
 
-class ScreenSaver : public QObject
+class LXQT_API ScreenSaver : public QObject
 {
     Q_OBJECT
 
index e221e4a..e384ffc 100644 (file)
@@ -32,6 +32,7 @@
 #include <QtCore/QObject>
 #include <QtCore/QSettings>
 #include <QtCore/QSharedDataPointer>
+#include "lxqtglobals.h"
 
 class QEvent;
     
@@ -42,7 +43,7 @@ class SettingsPrivate;
 class GlobalSettings;
 
 /*! \brief User settings handling */
-class Settings : public QSettings
+class LXQT_API Settings : public QSettings
 {
     Q_OBJECT
 public:
@@ -98,7 +99,7 @@ private:
 class LxQtThemeData;
 
 /*! \brief QSS theme handling */
-class LxQtTheme
+class LXQT_API LxQtTheme
 {
 public:
     /// Constructs a null theme.
@@ -158,7 +159,7 @@ Only one theme object can be created. !*/
 #define lxqtTheme LxQtTheme::currentTheme()
 
 
-class SettingsCache
+class LXQT_API SettingsCache
 {
 public:
     explicit SettingsCache(QSettings &settings);
index 34b19bd..8e99aab 100644 (file)
 #define LXQTTRANSLATOR_H
 
 #include <QStringList>
+#include "lxqtglobals.h"
 
 namespace LxQt
 {
 /**
   The Translator class provides internationalization support for application and librarioes.
  **/
-class Translator
+class LXQT_API Translator
 {
 public:
     /**
index 4809d99..9dc1bb6 100644 (file)
@@ -69,7 +69,7 @@
 
 namespace LxQt {
 
-const XfitMan&  xfitMan()
+const XfitMan& xfitMan()
 {
     static XfitMan instance;
     return instance;
index 264712b..bc622fd 100644 (file)
@@ -29,6 +29,7 @@
 #ifndef LXQTXFITMAN_H
 #define LXQTXFITMAN_H
 
+#include "lxqtglobals.h"
 #include <QList>
 #include <QPixmap>
 #include <QString>
@@ -95,7 +96,7 @@ struct WindowState
 /**
  * @brief manages the Xlib apicalls
  */
-class XfitMan
+class LXQT_API XfitMan
 {
 public:
 
@@ -255,7 +256,7 @@ private:
 };
 
 
-const XfitMan& xfitMan();
+LXQT_API const XfitMan& xfitMan();
 
 } //namespace LxQt
 #endif // LXQTXFITMAN_H