-
Notifications
You must be signed in to change notification settings - Fork 703
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow static libs #528
base: master
Are you sure you want to change the base?
Allow static libs #528
Conversation
hefroy
commented
Sep 27, 2023
•
edited
Loading
edited
- Remove SHARED option from add_library to allow static libs, CMake then respects the standard BUILD_SHARED_LIBS option.
- Set the default value of BUILD_SHARED_LIBS to ON.
- Modify plugin_manager_impl to call the plugin init function for built-in plugins via a hook, whilst still supporting external shared library plugins.
- Add plugin init hook function to each built-in plugin.
- Add plugin libs to link libs in CMake export config when static libs are enabled.
18b3ced
to
fd5173b
Compare
fd5173b
to
2ba9e24
Compare
we will check this change internally to see if this is causing any other problems |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please rebase/fix merge issues
2ba9e24
to
4105e41
Compare
Rebased ✔️ |
thanks! I will test this PR internally. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These changes are not building on the windows env.:
CMake Error at test/network_tests/CMakeLists.txt:4264 (add_dependencies): The dependency target "routingmanagerd" of target "build_network_tests" does not exist.
4105e41
to
8a5eb0b
Compare
This seemed to be caused by some other issue on the master branch when I last rebased the branch. I've just rebased it again and now I don't see that CMake error and for me the Windows build compiles ok. |
I created a similar patch for 3.1.20, I was never really happy with it, but maybe we can compare patches. I don't remember all the details right now, but my CMake changes were much more extensive, and I had to fix the way the singletons (logger, security, etc) were created and remove any lib constructor/destructor. In the end it seemed to work but I had a segfault on exit in |
- Remove SHARED option from add_library to allow static libs, CMake then respects the standard BUILD_SHARED_LIBS option. - Set the default value of BUILD_SHARED_LIBS to ON. - Modify plugin_manager_impl to call the plugin init function for built-in plugins via a hook, whilst still supporting external shared library plugins. - Add plugin init hook function to each built-in plugin. - Add plugin libs to link libs in CMake export config when static libs are enabled.
8a5eb0b
to
eca0636
Compare
I think the most recent vsomeip release only has [one lib destructor here](https://github.com/search?q=repo%3ACOVESA%2Fvsomeip+__attribute__&type=code, CommonAPI (capicxx-core-runtime) has two lib constructors though (not sure if you're using CommonAPI) Looking at the vsomeip one, it could probably be ignored.. |
I also found the same, and have opened #789 separately to fix a couple of use-after-free destruction order issues.
Agreed.
Yes I am also using CommonAPI and have two PRs for adding static library support - probably better to discuss those over there: |
For reference, this patch is being used over in https://github.com/aws/aws-iot-fleetwise-edge |