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

Add support for OSX #96

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

ChristianBelloni
Copy link

@ChristianBelloni ChristianBelloni commented Oct 10, 2024

Hi, this is a naive implementation to support osx, for what i can see on every other platform everything should stay the same and all tests now pass, let me know if there's something else i should do

Christian Belloni added 3 commits October 10, 2024 18:35
Signed-off-by: Christian Belloni <christianbelloni@Christians-Laptop.local>
Signed-off-by: Christian Belloni <christianbelloni@Christians-Laptop.local>
Signed-off-by: Christian Belloni <christianbelloni@Christians-Laptop.local>
Copy link
Collaborator

@arg0d arg0d left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changes to scripts look good, but the changes to Rust code seem redundant.

@@ -74,10 +74,25 @@ impl Config {
}

pub fn cdylib_name(&self) -> String {
self.cdylib_name
#[cfg(target_os = "macos")]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like the branches are identical?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only change is on the macos branch, i thought macos, windows and linux may be treated differently in the future so i kept three branches. if you think that that's not necessary i can remove the windows branch

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops, I'm blind. I think it would be better to write the code in some different way, to avoid these copy-pasted lines. It's kinda difficult to see what's the difference, but I think it's like that just in diff. When I looked at the changes without diff, it was more clear.

This branching makes the generated bindings dependent on the environment they are generated, i.e. you can't use Mac to generate bindings that will work on Windows. Are you sure that's the desired behaviour for your use case?

I tried to run the tests locally and it's working without .dylib suffix. Can you test again without .dylib suffix?

Copy link
Author

@ChristianBelloni ChristianBelloni Oct 11, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I first tested it the loading failed complaining that the shared lib couldn't be found, it's been a minute since I did any interop in c# so I assumed it didn't handle extensions, as soon as I can I'll test it again and see if it works.

In case the lib still cannot be found would you be open to #if-ing the dllimport declarations to support platform specific extensions?

Something like

<PropertyGroup>
    <IsWindows Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))' == 'true'">true</IsWindows>
    <IsOSX Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' == 'true'">true</IsOSX>
</PropertyGroup>
<PropertyGroup Condition="'$(IsWindows)'=='true'">
    <DefineConstants>Windows</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(IsOSX)'=='true'">
    <DefineConstants>OSX</DefineConstants>
</PropertyGroup>
#if OSX
[DllImport("lib.dylib")]
#else
[DllImport("lib")]
#endif
public static extern void myFunc();

Obviously I'd add Linux too, I'm keeping it short here.

I'm writing on my phone so if it's messed up I'll fix the formatting in the morning.

Thank you for taking the time to review this 😊

Signed-off-by: Christian Belloni <christianbelloni@Christians-Laptop.local>
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