File tree 5 files changed +56
-8
lines changed
5 files changed +56
-8
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ set(rime_soversion 1)
10
10
add_definitions (-DRIME_VERSION="${rime_version} " )
11
11
12
12
option (BUILD_SHARED_LIBS "Build Rime as shared library" ON )
13
+ option (BUILD_MERGED_PLUGINS "Merge plugins into one Rime library" ON )
13
14
option (BUILD_STATIC "Build with dependencies as static libraries" OFF )
14
15
option (BUILD_DATA "Build data for Rime" OFF )
15
16
option (BUILD_TEST "Build and run tests" ON )
@@ -187,6 +188,15 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|FreeBSD|DragonFly")
187
188
endif ()
188
189
endif ()
189
190
191
+ add_subdirectory (plugins)
192
+ message (STATUS "rime_plugins_libs: ${rime_plugins_deps} " )
193
+ message (STATUS "rime_plugins_modules: ${rime_plugins_modules} " )
194
+ set (list "" )
195
+ foreach (mod ${rime_plugins_modules} )
196
+ set (list "${list} ,Q(${mod} )" )
197
+ endforeach ()
198
+ add_definitions (-DRIME_EXTRA_MODULES=${list} )
199
+
190
200
if (BUILD_SHARED_LIBS )
191
201
add_definitions (-DRIME_BUILD_SHARED_LIBS)
192
202
set (rime_library rime)
Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ release:
10
10
cmake --build xbuild --config Release
11
11
12
12
debug:
13
- cmake . -Bxdebug -GXcode -DBUILD_STATIC=ON -DBUILD_SEPARATE_LIBS=ON
13
+ cmake . -Bxdebug -GXcode -DBUILD_STATIC=ON
14
14
cmake --build xdebug --config Debug
15
15
16
16
clean:
Original file line number Diff line number Diff line change
1
+ set (RIME_SOURCE_DIR ${PROJECT_SOURCE_DIR} )
2
+ set (LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR} /lib)
3
+
4
+ unset (plugins_objs)
5
+ unset (plugins_deps)
6
+ unset (plugins_modules)
7
+ file (GLOB plugin_files "*" )
8
+ foreach (file ${plugin_files} )
9
+ if (IS_DIRECTORY ${file} )
10
+ message (STATUS "Found plugin: ${file} " )
11
+ unset (plugin_name)
12
+ unset (plugin_objs)
13
+ unset (plugin_deps)
14
+ unset (plugin_modules)
15
+ add_subdirectory (${file} )
16
+ if (BUILD_MERGED_PLUGINS)
17
+ set (plugins_objs ${plugins_objs} ${plugin_objs} )
18
+ set (plugins_deps ${plugins_deps} ${plugin_deps} )
19
+ set (plugins_modules ${plugins_modules} ${plugin_modules} )
20
+ else ()
21
+ message (STATUS "Plugin ${plugin_name} provides modules: ${plugin_modules} " )
22
+ add_library (${plugin_name} ${plugin_objs} )
23
+ target_link_libraries (${plugin_name} ${plugin_deps} )
24
+ if (XCODE_VERSION )
25
+ set_target_properties (${plugin_name} PROPERTIES INSTALL_NAME_DIR "@rpath" )
26
+ endif (XCODE_VERSION )
27
+ install (TARGETS ${plugin_name} DESTINATION ${LIB_INSTALL_DIR} )
28
+ endif ()
29
+ endif ()
30
+ endforeach (file)
31
+
32
+ set (rime_plugins_objs ${plugins_objs} PARENT_SCOPE)
33
+ set (rime_plugins_deps ${plugins_deps} PARENT_SCOPE)
34
+ set (rime_plugins_modules ${plugins_modules} PARENT_SCOPE)
Original file line number Diff line number Diff line change @@ -39,7 +39,8 @@ set(rime_core_deps
39
39
${Glog_LIBRARY}
40
40
${YamlCpp_LIBRARY}
41
41
${CMAKE_THREAD_LIBS_INIT}
42
- ${rime_optional_deps} )
42
+ ${rime_optional_deps}
43
+ ${rime_plugins_deps} )
43
44
set (rime_extra_deps
44
45
${ICONV_LIBRARIES}
45
46
${LevelDb_LIBRARY}
58
59
endif ()
59
60
60
61
if (BUILD_SHARED_LIBS )
61
- add_library (rime ${rime_src} )
62
+ add_library (rime ${rime_plugins_objs} ${ rime_src} )
62
63
target_link_libraries (rime ${rime_deps} )
63
64
set_target_properties (rime PROPERTIES DEFINE_SYMBOL "RIME_EXPORTS" )
64
65
set_target_properties (rime PROPERTIES VERSION ${rime_version} SOVERSION ${rime_soversion} )
@@ -77,7 +78,7 @@ if(BUILD_SHARED_LIBS)
77
78
install (TARGETS rime-gears DESTINATION ${LIB_INSTALL_DIR} )
78
79
endif ()
79
80
else ()
80
- add_library (rime-static STATIC ${rime_src} )
81
+ add_library (rime-static STATIC ${rime_plugins_objs} ${ rime_src} )
81
82
target_link_libraries (rime-static ${rime_deps} )
82
83
set_target_properties (rime-static PROPERTIES OUTPUT_NAME "rime" PREFIX "lib" )
83
84
install (TARGETS rime-static DESTINATION ${LIB_INSTALL_DIR} )
Original file line number Diff line number Diff line change 11
11
12
12
#include < rime_api.h>
13
13
#include < rime/module.h>
14
+ #include < rime/setup.h>
14
15
15
16
namespace rime {
16
17
17
- RIME_API RIME_MODULE_LIST (kDefaultModules , " default" );
18
+ #define Q (x ) #x
19
+ RIME_API RIME_MODULE_LIST (kDefaultModules , " default" RIME_EXTRA_MODULES);
20
+ #undef Q
18
21
RIME_MODULE_LIST (kDeployerModules , " deployer" );
19
22
RIME_MODULE_LIST (kLegacyModules , " legacy" );
20
23
24
+ RIME_REGISTER_MODULE_GROUP (default , " core" , " dict" , " gears" )
25
+ RIME_REGISTER_MODULE_GROUP (deployer, " core" , " dict" , " levers" )
26
+
21
27
RIME_API void LoadModules (const char * module_names[]) {
22
28
ModuleManager& mm (ModuleManager::instance ());
23
29
for (const char ** m = module_names; *m; ++m) {
@@ -33,7 +39,4 @@ RIME_API void SetupLogging(const char* app_name) {
33
39
#endif // RIME_ENABLE_LOGGING
34
40
}
35
41
36
- RIME_REGISTER_MODULE_GROUP (default , " core" , " dict" , " gears" )
37
- RIME_REGISTER_MODULE_GROUP (deployer, " core" , " dict" , " levers" )
38
-
39
42
} // namespace rime
You can’t perform that action at this time.
0 commit comments