Skip to content

Add macOS Framework build support#957

Merged
revmischa merged 4 commits into
masterfrom
feature/macos-framework-924
Feb 2, 2026
Merged

Add macOS Framework build support#957
revmischa merged 4 commits into
masterfrom
feature/macos-framework-924

Conversation

@revmischa
Copy link
Copy Markdown
Member

Adds an opt-in CMake path to build libprojectM and the playlist library as macOS Framework bundles to simplify integration with macOS apps expecting .framework outputs.

Fixes #924

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds opt-in support for building libprojectM and the playlist library as macOS Framework bundles through a new ENABLE_MACOS_FRAMEWORK CMake option. This addresses issue #924 by enabling developers to build .framework outputs suitable for macOS application integration.

Changes:

  • Added ENABLE_MACOS_FRAMEWORK CMake option to enable framework builds on Darwin platforms with shared libraries
  • Modified header paths in API configuration to use absolute paths for proper framework header handling
  • Added framework build configuration for both projectM and projectM_playlist libraries

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
CMakeLists.txt Adds ENABLE_MACOS_FRAMEWORK cmake option and status output
src/api/CMakeLists.txt Converts header paths to absolute paths and exports PROJECTM_PUBLIC_HEADERS to parent scope for framework builds
src/libprojectM/CMakeLists.txt Configures projectM as a framework bundle with proper identifiers and headers, updates install destination path
src/playlist/CMakeLists.txt Configures projectM_playlist as a framework bundle with proper identifiers and install destinations

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/api/CMakeLists.txt
Comment thread src/api/CMakeLists.txt Outdated
Comment thread src/libprojectM/CMakeLists.txt
Adds ENABLE_MACOS_FRAMEWORK cmake option to build projectM-4.framework
and projectM-4-playlist.framework bundles instead of plain dylibs.
Only available on macOS with shared library builds.

The frameworks include all public headers in the Headers/ directory
and use standard macOS framework versioning (Version A).

Fixes #924
- Use absolute paths for headers exported to parent scope
- Include C++ headers in framework when ENABLE_CXX_INTERFACE is on
@revmischa revmischa force-pushed the feature/macos-framework-924 branch from cce5fdd to 4d52e5c Compare February 1, 2026 17:47
@revmischa revmischa force-pushed the feature/macos-framework-924 branch from 4d52e5c to c8ab097 Compare February 1, 2026 17:47
@revmischa
Copy link
Copy Markdown
Member Author

Addressed the feedback:

  • Rebased on latest master
  • Now using get_target_property(projectM_api PUBLIC_HEADER) instead of relying on PARENT_SCOPE variable
  • Added all C++ interface headers for framework builds (Audio/*.hpp, Renderer/RenderContext.hpp, Logging.hpp, ProjectM.hpp)

@revmischa revmischa merged commit 67c7564 into master Feb 2, 2026
37 checks passed
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.

[FEATURE] Build ProjectM.framework for MacOS

3 participants