Skip to content
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

Inital attempt at WiFi support #143

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft

Conversation

stuken
Copy link

@stuken stuken commented Dec 19, 2021

First pass. Linking against a system install of slirp brings in a dependency on glib-2.0. A local build of this will fail to load against the redist packaged libglib-2.0-0.dll in the release config of Retroach due to version mismatches. The redist version is at least a minor revision back.

However, if the build linked libslirp-0.dll and libglib-2.0-0.dll are copied to the retroarch dir it loads correctly and my testing with a nossl patched mario kart ds connects succefully to Wiimmfi and it can be played online without issues.

Getting a correctly linked libslirp is key this working. I see two options for this.

  1. Upgrade the ci infrastructure to install slirp(if not already installed) along with upgrading to a compatible glib2.0, package both as part of the redist libs and build the core linking to the system version in line with the changes in this draft pr.
  2. Build libslirp as an internal dep within the core and link it that way.

I've attempted an integrated build but I've not been able to make the required changes that the meson build tool does or get the existing makefile setup find the system glib2.0 without hardcoding paths. To avoid any system linking building glib2.0 as a further core bundled dependency would be required bringing in a whole other layer complexity.

Option 1 would be my prefered choice but any input would be appreciated.

@Myaats
Copy link
Collaborator

Myaats commented Dec 19, 2021

In my opinion Option 1 is not the way to go because of all the platforms and packaging methods that would need to be changed. As there is no good way to distribute redistributables currently. Not to mention all the linux distros who package the core without libslirp as a dependency.

@stuken
Copy link
Author

stuken commented Dec 21, 2021

libslirp builds as part of the core now and the paths to glib are resoved via pkg-config. Building a whole instance of glib is extremely problematic without going through it's own build process so it links agains the system glib for now.

Build changes are exclusive to windows but whats there should build and run cleanly with the windows release builds without any dll shuffling.

@ghost
Copy link

ghost commented Dec 22, 2021

Would be nice if it could work on Android as well...

@Myaats
Copy link
Collaborator

Myaats commented Dec 22, 2021

I would prefer that external dependencies was included through git submodules instead of just copying it into the source tree

@stuken
Copy link
Author

stuken commented Dec 22, 2021

libslirp will not compile out of the box, meson makes changes to the source before passing it on to compile step. Those minor changes will need to be hosted in a forked repo to allow submodule management.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants