Commit graph

20 commits

Author SHA1 Message Date
Daniel Eklöf
0e3866186f plugin: for now, the defines *all* use the word PLUGIN 2019-02-06 18:09:48 +01:00
Daniel Eklöf
727d7b343f cmake: initial support for building wayland-only, or x11-only 2019-02-03 20:05:44 +01:00
Daniel Eklöf
452c4b6015 plugins: export a const function pointer interface struct 2019-01-26 18:32:04 +01:00
Daniel Eklöf
0d591fe5a1 allow plugins to be compiled into the f00bar main binary 2019-01-14 20:57:03 +01:00
Daniel Eklöf
7754ef3661 decorations: are now plugins 2019-01-13 17:43:25 +01:00
Daniel Eklöf
bc62843c91 modules: get rid of struct module_info
Since this struct only contained function pointers, make all modules
export those functions directly.

The plugin manager now defines a module interface struct, and fills it
it by dlsym:ing the functions that used to be in module_info.
2019-01-13 17:09:11 +01:00
Daniel Eklöf
07b1615a41 particles: get rid of struct particle_info
Since this struct only contained function pointers, make all particles
export those functions directly.

The plugin manager now defines a particle interface struct, and fills
it it by dlsym:ing the functions that used to be in particle_info.
2019-01-13 17:03:35 +01:00
Daniel Eklöf
2df419efc2 plugin: remove TODO 2019-01-13 11:29:10 +01:00
Daniel Eklöf
45280416ff modules, particles: type-specific filename prefix
Instead of naming the shared libraries libfoo.so, add a type-specific
prefix: module_foo.so, or particle_foo.so
2019-01-13 11:26:31 +01:00
Daniel Eklöf
ec4a47e5db modules: rename module_info -> plugin_info
This is the same name used by particles.
2019-01-13 11:18:32 +01:00
Daniel Eklöf
47018104da particles: compile as shared libraries (plugins) 2019-01-13 11:13:47 +01:00
Daniel Eklöf
72edcf608c plugin: include plugin type in log messages 2019-01-12 22:47:36 +01:00
Daniel Eklöf
0fa7906e99 plugin: add plugin_load_particle() function 2019-01-12 22:36:45 +01:00
Daniel Eklöf
9fa37f0d98 plugin: 'libs' -> 'plugins' 2019-01-12 21:17:12 +01:00
Daniel Eklöf
aa4fede306 plugin: use tll_free_and_free() to free the global plugin list 2019-01-12 21:16:13 +01:00
Daniel Eklöf
aa6ea602ca plugin: remove linked-list items as we 2019-01-12 21:13:50 +01:00
Daniel Eklöf
f7fd305821 build: install targets for f00bar binary + module plugins
Module plugins are (still) built in <build-dir>/modules.

When installing, f00bar binary is installed to <install-dir>/bin, and
the module plugins to <install-dir>/lib/f00bar.

For this to work, we now also set RPATH correctly. Since the installed
module plugins end up in a different location then when building,
different settings is required for BUILD_RPATH and INSTALL_RPATH.
2019-01-12 21:07:48 +01:00
Daniel Eklöf
7f2501334d modules: use the same name for the module_info in all modules 2019-01-12 20:34:43 +01:00
Daniel Eklöf
45eb2b85f0 plugin: cache module_info symbol as well 2019-01-12 19:44:24 +01:00
Daniel Eklöf
962252467f plugins: only dlopen() each plugin once. dlcose() in destructor 2019-01-12 19:38:06 +01:00