vulkan icon indicating copy to clipboard operation
vulkan copied to clipboard

Having trouble linking the MoltenVK framework on macOS

Open alansikora opened this issue 4 years ago • 5 comments

When I run go get "github.com/vulkan-go/vulkan", the framework cannot be found:

~/W/A/go-vulkan-engine ❯❯❯ go get "github.com/vulkan-go/vulkan"                                        ✘ 2
# github.com/vulkan-go/vulkan
ld: framework not found MoltenVK
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I tried copying MoltenVK.xcframework to the /Library/Frameworks folder, symlinking, also with vulkan.framework and I can't make it work.

I also tried to run it with sudo, no luck.

Has anyone run into the same problem?

alansikora avatar Mar 25 '21 15:03 alansikora

It seems MoltenVK switched to use the new xcframework which is great for packaging multiple static libraries for different platforms - unfortunately, it doesn't play nice with clang.

I was able to work around the problem by using the dylib version of MoltenVK, unfortunately that required me to fork vulkan-go/vulkan and vulkan-go/glfw since there's no way to replace the linking flags.

I've created an issue on the MoltenVK project: https://github.com/KhronosGroup/MoltenVK/issues/1328

But perhaps it would make sense to add a way to select framework or dylib in vulkan_darwin.go. E.g. with a build tag

ptxmac avatar Apr 01 '21 12:04 ptxmac

@ptxmac I'm okay to always follow the bleeding edge. If that's a simple change (and doesn't require full re-gen), then PR is very welcome :)

I don't see the point to use framework version at all..

xlab avatar Apr 02 '21 13:04 xlab

The framework version might be useful for creating iOS / tvOS / etc apps - but it shouldn't be a blocker.

Unfortunately, the MoltenVK project only provides make targets for installing the xcframework. So the installation becomes a bit more manual.

I'll put up some PRs with the changes

ptxmac avatar Apr 02 '21 14:04 ptxmac

For vulkan: https://github.com/vulkan-go/vulkan/pull/52

And the same change for glfw: https://github.com/vulkan-go/glfw/pull/6

ptxmac avatar Apr 02 '21 14:04 ptxmac

The Makefile didn't work, however using CGO_CFLAGS="$(pkg-config --cflags glfw3)" CGO_LDFLAGS="-L/usr/local/lib $(pkg-config --libs glfw3)" go build works. (Note the -L/usr/local/lib part)

Nv7-GitHub avatar Jan 12 '22 08:01 Nv7-GitHub