@@ -231,31 +231,76 @@ macro(pv_process_plugins root_src root_build)
231
231
DESTINATION "${PV_INSTALL_PLUGIN_DIR} "
232
232
COMPONENT Runtime)
233
233
234
- # write the static plugins init file.
235
- _write_static_plugins_init_file(
236
- ${CMAKE_CURRENT_BINARY_DIR} /pvStaticPluginsInit.h
237
- ${PARAVIEW_PLUGINLIST} )
234
+ if (NOT BUILD_SHARED_LIBS )
235
+ # write the static plugins init file.
236
+ _write_static_plugins_init_file(
237
+ ${CMAKE_CURRENT_BINARY_DIR} /pvStaticPluginsInit.h
238
+ ${CMAKE_CURRENT_BINARY_DIR} /pvStaticPluginsInit.cxx
239
+ ${PARAVIEW_PLUGINLIST} )
240
+
241
+ vtk_module_dep_includes(vtkPVClientServerCoreCore)
242
+ include_directories (${vtkPVClientServerCoreCore_INCLUDE_DIRS} ${vtkPVClientServerCoreCore_DEPENDS_INCLUDE_DIRS} )
243
+ add_library (vtkPVStaticPluginsInit
244
+ ${CMAKE_CURRENT_BINARY_DIR} /pvStaticPluginsInit.cxx)
245
+ target_link_libraries (vtkPVStaticPluginsInit
246
+ LINK_PRIVATE ${PARAVIEW_PLUGINLIST} )
247
+ endif ()
238
248
endmacro ()
239
249
240
250
#------------------------------------------------------------------------------
241
251
# Internal function used to generate a header file initializing all plugins that
242
252
# can be used by executables to link against the plugins when building
243
253
# statically.
244
- function (_write_static_plugins_init_file filename)
245
- set (plugins_init_function "#include \" vtkPVPlugin.h\"\n\n " )
254
+ function (_write_static_plugins_init_file header source )
255
+ file (WRITE "${header} " "void paraview_static_plugins_init();\n " )
256
+
257
+ set (plugins_init_function "#include \" vtkPVPlugin.h\"\n " )
258
+ set (plugins_init_function "${plugins_init_function} #include \" vtkPVPluginLoader.h\"\n\n " )
259
+ set (plugins_init_function "${plugins_init_function} #include \" vtkPVPluginTracker.h\"\n\n " )
260
+ set (plugins_init_function "${plugins_init_function} #include <string>\n\n " )
246
261
247
262
# write PV_PLUGIN_IMPORT_INIT calls
248
263
foreach (plugin_name ${ARGN} )
249
264
set (plugins_init_function "${plugins_init_function} PV_PLUGIN_IMPORT_INIT(${plugin_name} );\n " )
250
265
endforeach ()
251
266
set (plugins_init_function "${plugins_init_function} \n " )
252
267
268
+ set (plugins_init_function "${plugins_init_function} static bool paraview_static_plugins_load(const char* name);\n\n " )
269
+ set (plugins_init_function "${plugins_init_function} static bool paraview_static_plugins_search(const char* name);\n\n " )
270
+ set (plugins_init_function "${plugins_init_function} void paraview_static_plugins_init()\n {\n " )
271
+ set (plugins_init_function "${plugins_init_function} vtkPVPluginLoader::SetStaticPluginLoadFunction(paraview_static_plugins_load);\n " )
272
+ set (plugins_init_function "${plugins_init_function} vtkPVPluginTracker::SetStaticPluginSearchFunction(paraview_static_plugins_search);\n " )
273
+ set (plugins_init_function "${plugins_init_function} }\n\n " )
274
+
275
+ # write callback functions
276
+ set (plugins_init_function "${plugins_init_function} static bool paraview_static_plugins_func(const char* name, bool load);\n\n " )
277
+ set (plugins_init_function "${plugins_init_function} static bool paraview_static_plugins_load(const char* name)\n {\n " )
278
+ set (plugins_init_function "${plugins_init_function} return paraview_static_plugins_func(name, true);\n " )
279
+ set (plugins_init_function "${plugins_init_function} }\n\n " )
280
+ set (plugins_init_function "${plugins_init_function} static bool paraview_static_plugins_search(const char* name)\n {\n " )
281
+ set (plugins_init_function "${plugins_init_function} return paraview_static_plugins_func(name, false);\n " )
282
+ set (plugins_init_function "${plugins_init_function} }\n\n " )
283
+
253
284
# write PV_PLUGIN_IMPORT calls
254
- set (plugins_init_function "${plugins_init_function} inline void paraview_static_plugins_init()\n {\n " )
285
+ set (plugins_init_function "${plugins_init_function} static bool paraview_static_plugins_func(const char* name, bool load)\n {\n " )
286
+ set (plugins_init_function "${plugins_init_function} std::string sname = name;\n\n " )
255
287
foreach (plugin_name ${ARGN} )
256
- set (plugins_init_function "${plugins_init_function} PV_PLUGIN_IMPORT(${plugin_name} );\n " )
288
+ set (plugins_init_function "${plugins_init_function} if (sname == \" ${plugin_name} \" )\n " )
289
+ set (plugins_init_function "${plugins_init_function} {\n " )
290
+ set (plugins_init_function "${plugins_init_function} if (load)\n " )
291
+ set (plugins_init_function "${plugins_init_function} {\n " )
292
+ set (plugins_init_function "${plugins_init_function} static bool loaded = false;\n " )
293
+ set (plugins_init_function "${plugins_init_function} if (!loaded)\n " )
294
+ set (plugins_init_function "${plugins_init_function} {\n " )
295
+ set (plugins_init_function "${plugins_init_function} PV_PLUGIN_IMPORT(${plugin_name} );\n " )
296
+ set (plugins_init_function "${plugins_init_function} loaded = true;\n " )
297
+ set (plugins_init_function "${plugins_init_function} }\n " )
298
+ set (plugins_init_function "${plugins_init_function} }\n " )
299
+ set (plugins_init_function "${plugins_init_function} return true;\n " )
300
+ set (plugins_init_function "${plugins_init_function} }\n " )
257
301
endforeach ()
302
+ set (plugins_init_function "${plugins_init_function} return false;\n " )
258
303
set (plugins_init_function "${plugins_init_function} }\n " )
259
304
260
- file (WRITE "${filename } " "${plugins_init_function} " )
305
+ file (WRITE "${source } " "${plugins_init_function} " )
261
306
endfunction ()
0 commit comments