mesonbuild / mesonbuild/wrapdb

Support for metal-cpp

Open
#2,235 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Meson
Stars
118
Forks
298
Avg merge
2d 2h
Merged PRs (30d)
24

Description

## Feature Request

I'm trying to use the [metal-cpp](https://developer.apple.com/metal/cpp/) library provided by Apple to integrate my C++ codebase with the metal API.

It doesn't look like there are any wrapfiles for that library.

### Possible Issues

One of the issues I foresee is that Apple has a weird way of versioning their library. Namely, it appears they release this library on an OS-compatibility basis (attached screenshot from the page):

![Image](https://github.com/user-attachments/assets/f108289a-14de-416b-80e4-109b382966ba)

Strange. I was wondering what the best way to package this up would be. I see two options:

1. We support the latest and greatest wrap version -- [`metal-cpp_macOS26_iOS26-beta.zip`](https://developer.apple.com/metal/cpp/files/metal-cpp_macOS26_iOS26-beta.zip). _I believe this to be unwise -- the latest and greatest right now is an unstable beta that few users actually have installed on their machines._
2. We provide an array of wraps, each for one zip provided by Apple. This seems like a reasonable-enough solution, but seems like a maintenance nightmare.

This is my first time dipping my toes into writing wraps (normally I would've been lazy and submoduled). Let me know if you have better suggestions than the ones I offered.

For reference, Here's a convenient (to `awk`, not so much humans) table of all the redistributions:

```
metal-cpp_macOS12_iOS15.zip https://developer.apple.com/metal/cpp/files/metal-cpp_macOS12_iOS15.zip
metal-cpp_macOS13_iOS16.zip https://developer.apple.com/metal/cpp/files/metal-cpp_macOS13_iOS16.zip
metal-cpp_macOS13.3_iOS16.4.zip https://developer.apple.com/metal/cpp/files/metal-cpp_macOS13.3_iOS16.4.zip
metal-cpp_macOS14_iOS17-beta.zip https://developer.apple.com/metal/cpp/files/metal-cpp_macOS14_iOS17-beta.zip
metal-cpp_macOS14.2_iOS17.2.zip https://developer.apple.com/metal/cpp/files/metal-cpp_macOS14.2_iOS17.2.zip
metal-cpp_macOS15_iOS18-beta.zip https://developer.apple.com/metal/cpp/files/metal-cpp_macOS15_iOS18-beta.zip
metal-cpp_macOS15_iOS18.zip https://developer.apple.com/metal/cpp/files/metal-cpp_macOS15_iOS18.zip
metal-cpp_macOS15.2_iOS18.2.zip https://developer.apple.com/metal/cpp/files/metal-cpp_macOS15.2_iOS18.2.zip
metal-cpp_macOS26_iOS26-beta.zip https://developer.apple.com/metal/cpp/files/metal-cpp_macOS26_iOS26-beta.zip
```

I'll be opening a PR briefly with a partial implementation for the latter!

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the metal-cpp redistribution table and the linked Apple archive URLs, then review the partial implementation mentioned in the issue. Done means providing wrapfiles for metal-cpp using a settled strategy for Apple’s OS-compatibility-based versions, rather than leaving the packaging choice unresolved.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, ios, macos
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.