The XCFramework generated by build-xcframework.sh creates a module map
that manually lists public headers.
That list can fall out of sync with the framework's Headers directory.
The module map is currently missing ggml-opt.h, which is present in the
framework headers. This can cause downstream Apple builds to fail with:
Include of non-modular header inside framework module 'llama'
Use the framework's Headers directory itself as the module map umbrella
instead of maintaining a manual header list. This makes all public headers
under the generated framework's Headers directory part of the llama module.
# Create module map (common for all platforms)
cat > ${module_path}module.modulemap << EOF
framework module llama {
- header "llama.h"
- header "ggml.h"
- header "ggml-alloc.h"
- header "ggml-backend.h"
- header "ggml-metal.h"
- header "ggml-cpu.h"
- header "ggml-blas.h"
- header "gguf.h"
+ umbrella "Headers"
link "c++"
link framework "Accelerate"