Apply -fvisibility to decrease binary size 37/111737/2
authorJihoon Kim <jihoon48.kim@samsung.com>
Mon, 23 Jan 2017 23:58:26 +0000 (08:58 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Tue, 24 Jan 2017 00:10:00 +0000 (16:10 -0800)
The binary sizes are decrease
ise-engine-sunpinyin.so : 75KB -> 59KB
libsunpinyin.so : 249KB -> 205KB

Change-Id: I6904a17129b0299e1b6e68e72d8f17dc749ce109
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
15 files changed:
packaging/ise-engine-sunpinyin.spec
src/ime-core/ic_history.h
src/ime-core/imi_data.h
src/ime-core/imi_option_event.h
src/ime-core/imi_options.h
src/ime-core/imi_view.h
src/ime-core/imi_view_classic.h
src/ime-core/imi_winHandler.h
src/ime-core/userdict.h
src/pinyin/pinyin_seg.h
src/pinyin/shuangpin_seg.h
src/portability.h
wrapper/scim/src/imi_scimwin.h
wrapper/scim/src/sunpinyin_imengine.cpp
wrapper/scim/src/sunpinyin_imengine_setup.cpp

index 8d3b016..e0b7ced 100755 (executable)
@@ -27,6 +27,10 @@ This package contains Chinese Pinyin engine ISE header files and static librarie
 %setup -q
 
 %build
+export CFLAGS+=" -fvisibility=hidden"
+export CXXFLAGS+=" -fvisibility=hidden -fvisibility-inlines-hidden"
+export CPPFLAGS+=" -DEXPORTED=__attribute__\(\(visibility\(\\\"default\\\"\)\)\)"
+
 ./bootstrap
 %configure  --disable-static
 make %{?jobs:-j%jobs}
index ba5a929..f299204 100644 (file)
@@ -48,7 +48,7 @@
 /**
  * A forget all history memory
  */
-class CICHistory {
+class EXPORTED CICHistory {
 public:
     /** don't care word id, or seperator word id */
     static const uint32_t DCWID;
@@ -113,7 +113,7 @@ public:
     virtual void initStopWords() = 0;
 };
 
-class CBigramHistory : public CICHistory {
+class EXPORTED CBigramHistory : public CICHistory {
 public:
     static void initClass();
 
index 7e808b0..0776c55 100644 (file)
@@ -51,7 +51,7 @@ void print_wide(const TWCHAR* wstr);
 /**
  * Data of the IM implementation shared by all Desktop/Session(IC)
  */
-class CIMIData {
+class EXPORTED CIMIData {
 public:
     CIMIData()
         : m_pPinyinTrie(NULL), m_pLM(NULL) { }
index 25e2539..5f979a3 100644 (file)
@@ -57,7 +57,7 @@ struct COptionEvent {
     } value;
 };
 
-class IConfigurable
+class EXPORTED IConfigurable
 {
 public:
     IConfigurable();
index 7043960..2ac65f8 100644 (file)
@@ -55,7 +55,7 @@
 #define SUNPINYIN_USERDATA_DIR_PREFIX ".sunpinyin"
 #endif
 
-struct CSimplifiedChinesePolicy : public IConfigurable {
+struct EXPORTED CSimplifiedChinesePolicy : public IConfigurable {
     CSimplifiedChinesePolicy ();
 
     bool loadResources();
@@ -103,7 +103,7 @@ public:
 
 typedef SingletonHolder<CSimplifiedChinesePolicy> ASimplifiedChinesePolicy;
 
-struct CQuanpinSchemePolicy : IConfigurable {
+struct EXPORTED CQuanpinSchemePolicy : IConfigurable {
 public:
 
     IPySegmentor* createPySegmentor(){
@@ -151,7 +151,7 @@ protected: ~CQuanpinSchemePolicy () {}
 
 typedef SingletonHolder<CQuanpinSchemePolicy> AQuanpinSchemePolicy;
 
-struct CShuangpinSchemePolicy : public IConfigurable {
+struct EXPORTED CShuangpinSchemePolicy : public IConfigurable {
 public:
     CShuangpinSchemePolicy();
 
index fdbaaa3..9f96c68 100644 (file)
@@ -48,7 +48,7 @@
 #include "utils.h"
 #include <set>
 
-class CHotkeyProfile : private CNonCopyable
+class EXPORTED CHotkeyProfile : private CNonCopyable
 {
 public:
     CHotkeyProfile();
index 135a932..138863c 100644 (file)
@@ -43,7 +43,7 @@
 
 #include "imi_view.h"
 
-class CIMIClassicView : public CIMIView
+class EXPORTED CIMIClassicView : public CIMIView
 {
 public:
     CIMIClassicView();
index f0182ed..f3f82dc 100644 (file)
@@ -51,7 +51,7 @@ class CIMIView;
 
 /*@}*/
 
-class CIMIWinHandler
+class EXPORTED CIMIWinHandler
 {
 public:
     enum {
index 24c21a1..cf6e8e1 100644 (file)
@@ -45,7 +45,7 @@
 #include "lexicon/pytrie.h"
 #include "imi_defines.h"
 
-class CUserDict
+class EXPORTED CUserDict
 {
 public:
     CUserDict () : m_fname(NULL), m_db(NULL) {}
index 2933c0d..7e318f7 100644 (file)
@@ -48,7 +48,7 @@
 #include <algorithm>
 #include <climits>
 
-class CGetCorrectionPairOp : private CNonCopyable
+class EXPORTED CGetCorrectionPairOp : private CNonCopyable
 {
 public:
     typedef std::pair<std::string, std::string> CCorrectionPair;
@@ -69,7 +69,7 @@ private:
     bool m_bEnabled;
 };
 
-class CGetFuzzySegmentsOp : private CNonCopyable
+class EXPORTED CGetFuzzySegmentsOp : private CNonCopyable
 {
 public:
     typedef std::map<unsigned,
@@ -98,7 +98,7 @@ private:
     CFuzzySyllableMap m_fuzzyProMap;
 };
 
-class CQuanpinSegmentor : public IPySegmentor
+class EXPORTED CQuanpinSegmentor : public IPySegmentor
 {
 public:
     CQuanpinSegmentor ();
index 296557b..7974b31 100644 (file)
@@ -45,7 +45,7 @@
 #include "pinyin_data.h"
 #include <vector>
 
-class CShuangpinSegmentor : public IPySegmentor
+class EXPORTED CShuangpinSegmentor : public IPySegmentor
 {
 public:
     CShuangpinSegmentor (EShuangpinType shpType);
index d6116f5..3307aff 100644 (file)
@@ -193,7 +193,7 @@ size_t MBSTOWCS(TWCHAR *pwcs, const char* s, size_t n);
 
 size_t WCSTOMBS(char* s, const TWCHAR* pwcs, size_t n);
 
-size_t WCSLEN(const TWCHAR* ws);
+EXPORTED size_t WCSLEN(const TWCHAR* ws);
 
 namespace std {
 #ifdef HOST_OS_GNUC_2
index 5e27def..f47911e 100644 (file)
@@ -41,7 +41,7 @@
 
 class SunPyInstance;
 
-class CScimWinHandler : public CIMIWinHandler
+class EXPORTED CScimWinHandler : public CIMIWinHandler
 {
 public:
     CScimWinHandler(SunPyInstance* ime, SunLookupTable* lookup_table);
index 634907e..69570d5 100644 (file)
@@ -109,20 +109,20 @@ static Property _punct_property    (SCIM_PROP_PUNCT, "");
 static char g_common_symbol[]={'#','$','%','^','&','*','@'};
 
 extern "C" {
-    void scim_module_init (void)
+    EXPORTED void scim_module_init (void)
     {
         SCIM_DEBUG_IMENGINE (3) << "scim_module_init\n";
         bindtextdomain (GETTEXT_PACKAGE, SCIM_SUNPINYIN_LOCALEDIR);
         bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
     }
 
-    void scim_module_exit (void)
+    EXPORTED void scim_module_exit (void)
     {
         _scim_pinyin_factory.reset ();
         _scim_config.reset ();
     }
 
-    uint32 scim_imengine_module_init (const ConfigPointer &config)
+    EXPORTED uint32 scim_imengine_module_init (const ConfigPointer &config)
     {
         SCIM_DEBUG_IMENGINE (3) << "module_init\n";
         _status_property.set_tip (_("The status of the current input method. Click to change it."));
@@ -140,7 +140,7 @@ extern "C" {
         return 1;
     }
 
-    IMEngineFactoryPointer scim_imengine_module_create_factory (uint32 engine)
+    EXPORTED IMEngineFactoryPointer scim_imengine_module_create_factory (uint32 engine)
     {
         SCIM_DEBUG_IMENGINE (3) << "entering scim_imengine_module_create_factory()\n";
         if (engine != 0) return IMEngineFactoryPointer (0);
index 9e69098..c05dea8 100644 (file)
@@ -83,17 +83,17 @@ static bool        query_changed ();
 
 // Module Interface.
 extern "C" {
-    void scim_module_init (void)
+    EXPORTED void scim_module_init (void)
     {
         bindtextdomain (GETTEXT_PACKAGE, SCIM_SUNPINYIN_LOCALEDIR);
         bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
     }
 
-    void scim_module_exit (void)
+    EXPORTED void scim_module_exit (void)
     {
     }
 
-    GtkWidget * scim_setup_module_create_ui (void)
+    EXPORTED GtkWidget * scim_setup_module_create_ui (void)
     {
         static GtkWidget *setup_ui = NULL;
         if (setup_ui == NULL)
@@ -101,32 +101,32 @@ extern "C" {
         return setup_ui;
     }
 
-    String scim_setup_module_get_category (void)
+    EXPORTED String scim_setup_module_get_category (void)
     {
         return String ("IMEngine");
     }
 
-    String scim_setup_module_get_name (void)
+    EXPORTED String scim_setup_module_get_name (void)
     {
         return String (_("SunPinyin"));
     }
 
-    String scim_setup_module_get_description (void)
+    EXPORTED String scim_setup_module_get_description (void)
     {
         return String (_("A Statistical Language Model Based Intelligent IMEngine Module for Simplified Chinese."));
     }
 
-    void scim_setup_module_load_config (const ConfigPointer &config)
+    EXPORTED void scim_setup_module_load_config (const ConfigPointer &config)
     {
         load_config (config);
     }
 
-    void scim_setup_module_save_config (const ConfigPointer &config)
+    EXPORTED void scim_setup_module_save_config (const ConfigPointer &config)
     {
         save_config (config);
     }
 
-    bool scim_setup_module_query_changed ()
+    EXPORTED bool scim_setup_module_query_changed ()
     {
         return query_changed ();
     }