pinmame
pinmame copied to clipboard
Shared library questions
In the installation for VPinMAME there are several shared libraries:
- VPinMAME.dll
- Bass.dll
- VPinMAME64.dll
- libpinmame-3.5.dll
- Bass64.dll
My questions:
- What is the relationship between VPinMAME.dll, VPinMAME64.dll and libpinmame.dll?
- Does PinMAME or PinMAME32 use these libraries?
- Does anything else use VPinMAME.dll or VPinMAME64.dll?
- What is libpinmame used for?
The reason I ask is because I see a lot of apparent duplication in the code that is compiled for these libraries, suggesting common dependencies that are being handled via compilation rather than linking.
- Is there a reason for this?
- Would anyone be opposed to me trying to clean it up?
If the common dependencies can be moved to static libs and linked by the dependent projects, it will have several benefits:
- Better logical code separation
- Smaller file counts for dependent projects
- Faster build times
- Less chance of broken builds
- Better extensibility in the future
There are more, but I think you get the idea. This is not a trivial change and it will have the following impacts:
- Automated build system will need to be adjusted to preserve previously built artifacts to satisfy linking dependencies.
- Version-controlled project files will need to be modified to build with the new code structure (or eliminated in favor of on-demand generation via CMake)
The above can be tested and validated prior to incorporation into Master. A feature branch off master can be created with a build process created to create and test the new approach. Once it's good, it can be merged up to the master branch
I am willing to do the project refactoring, and create the necessary CMake files to facilitate this. I will need help from the maintainers to set up the feature branch and automated build, as I do not have that access. We will need testers for the non-Windows projects to ensure that we don't adversely impact them.