-
Notifications
You must be signed in to change notification settings - Fork 6.5k
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
[sleef] Disable COMPILER_SUPPORTS_OPENMP on Linux #32744
base: master
Are you sure you want to change the base?
Conversation
It seems like the right fix is to add the |
I tried do as the following,
|
@Neumann-A @dg0yt Any ideas on anyone who understands the right way to do this in meson? |
@BillyONeal : https://stackoverflow.com/questions/45465892/how-to-use-openmp-in-a-c-project-built-with-meson
However, it is probably controlled by a per project option and if not that is a problematic optional dependency. meson in vcpkg currently does not control optional dependencies in meson if the project does not give an option for it since the only way to control those optional deps is by wrapping the whole project in its own meson.build which sets the variable of the dependency call to a disabled object. (answered a different question but whatever if rubberband provides pkg-config it should be in the pc file) |
I also submitted an issue on upstream of |
My first thought was that My second thought was that we would actually need an exported usage requirement for lib sleefdft. But the sleef package installs a pc file for only lib sleef. So we are back to patching port rubberband. Based on @Neumann-A's hint, and acknowledging that we see a linking problem, the following fixes the build for me: feature_dependencies += sleefdft_dep
feature_dependencies += sleef_dep
feature_defines += ['-DHAVE_SLEEF']
+ omp_dep = dependency('openmp')
+ if omp_dep.found()
+ feature_dependencies += omp_dep.partial_dependency(link_args: true, links: true)
+ endif |
(Rubber Band developer, coming in because of the linked issue there)
I don't follow the logic - if the problem is an omission in the Sleef package, why is the solution patching Rubber Band rather than Sleef? |
This solution resolved the build error. |
I agree with this. This is a linkage issue, and passing compile options can't solve the problem. I tried to pass option |
|
So just pass |
Sure, but then (apparently) it doesn't declare the corresponding requirements in the .pc file(s). This doesn't really have anything to do with Rubber Band, except that Rubber Band is the "consumer" in this case. The problem is that Sleef is built in a way that imposes requirements on the user but doesn't declare what they are. |
@canman This was the immediate feedback for the vcpkg issue, for a quick fix without disabling openmp. I do agree that the permanent fix must be implemented on the sleef side - that's why I talked wrote about that.
@LilyWangLL This pc file is for lib sleef, but the link library issue is with lib sleefdft. |
I don't know. If a I tried configuring Sleef (current repo tip, on Arch Linux) with I then did a quick performance test, and found no measurable difference between Rubber Band builds against Sleef using (But both of those were slightly faster than FFTW - we're still only talking about a 2%-3% reduction in runtime on a time-and-pitch-shifting example with the R3 engine, but definitely outside measurement error.) [btw wrong user tagged in previous comment - I'm @cannam, not canman] |
Fixes #32360, disable option
COMPILER_SUPPORTS_OPENMP
on Linux, fix build error ofrubberband[cli,core]:x64-linux
:I have submitted an issue on upstream: shibatch/sleef#467.
SHA512s are updated for each updated downloadThe "supports" clause reflects platforms that may be fixed by this new versionAny fixed CI baseline entries are removed from that file.Any patches that are no longer applied are deleted from the port's directory../vcpkg x-add-version --all
and committing the result.