Skip to content
This repository was archived by the owner on Aug 5, 2022. It is now read-only.

Conversation

dawagner
Copy link
Contributor

@dawagner dawagner added this to the Windows port milestone Sep 25, 2015
@dawagner dawagner force-pushed the test-skeleton-plugin branch 5 times, most recently from e62d84d to 53c4cff Compare September 28, 2015 12:43
@dawagner
Copy link
Contributor Author

Need #255 before merging.

@dawagner dawagner force-pushed the test-skeleton-plugin branch 2 times, most recently from 935f5cc to 99fcf54 Compare September 28, 2015 19:02
The plugins' entry-point used to be a symbol which name was constructed based on
the library name but the Parameter Framework was trying to deduce it based on
how library files are usually named on Linux, i.e. prefixed with "lib", then the
soname, then ".so".

This is not always true on Linux and this is usually false on Windows.

Also, if the API of this symbol changes, there is no way to know at
compile-time.

Which is why this rework introduces a macro to be used by plugins. This macro
is the name of the entry-point symbol to be declared by plugins and will be
retrieved by the Parameter Framework.

A new header is added and exported to plugins: Plugin.h. This header declares
the entry-point and also declares it to be visible (a private entry-point
would be useless). Plugins should use this header in the file defining their
entry-point.

For now, we only support one API version at a time: if the API changes from V1
to V2, the plugins won't compile and the Parameter Framework won't recognize
previously-compiled plugins using V1. If we want backward-compatibility, we can
add it later by declaring both macros (V1 and V2) and trying to find the symbol
corresponding to V1 if the symbol corresponding to V2 can't be found.

The first name of the macro is: PARAMETER_FRAMEWORK_PLUGIN_ENTRYPOINT_V1

Implementation detail: the implementation is split between Plugin.h,
SubsystemLibrary and SystemClass: everything the plugin needs to know is put
under Plugin.h, what must be shared between the plugin and the core is under
Subsystemlibrary and the parts private to the core are under SystemClass - which
is the class responsible for loading the plugins.

Signed-off-by: David Wagner <david.wagner@intel.com>
Signed-off-by: David Wagner <david.wagner@intel.com>
@dawagner dawagner force-pushed the test-skeleton-plugin branch from 99fcf54 to 872d46b Compare September 29, 2015 14:11
@dawagner
Copy link
Contributor Author

Contains #255 (which is only the "rework the plugin entry-point api" commit).

Import libraries are used at link time: they describe the interface offered by
a DLL. They are needed by client and plugin developers in order to link against
parameter.dll.

CMake considers them to be "archives". Thus, this commit instruct CMake to
install the "archives" under the "lib" subdirectory.

Signed-off-by: David Wagner <david.wagner@intel.com>
@dawagner dawagner force-pushed the test-skeleton-plugin branch from 872d46b to b5db88d Compare September 29, 2015 16:13
We will introduce more tests that will assume that the Parameter Framework is
available on the system and will try to use it.

Signed-off-by: David Wagner <david.wagner@intel.com>
Signed-off-by: David Wagner <david.wagner@intel.com>
It involves a very simple client, libparameter and the skeleton plugin. The
test simply instantiate and start a Parameter Framework.

Signed-off-by: David Wagner <david.wagner@intel.com>
On both Appveyor and Travis.

Signed-off-by: David Wagner <david.wagner@intel.com>
@krocard krocard closed this Sep 29, 2015
@krocard krocard reopened this Sep 29, 2015
@krocard
Copy link
Contributor

krocard commented Sep 29, 2015

Closed because of miss click.

@krocard
Copy link
Contributor

krocard commented Sep 29, 2015

:shipit:

@dawagner
Copy link
Contributor Author

Merged in the v3candidate branch

@dawagner dawagner closed this Sep 30, 2015
@dawagner dawagner deleted the test-skeleton-plugin branch October 15, 2015 11:35
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants