Skip to content

Commit

Permalink
Updated build instructions.
Browse files Browse the repository at this point in the history
  • Loading branch information
kblaschke committed Sep 19, 2023
1 parent b88f96b commit 70132f1
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 21 deletions.
27 changes: 14 additions & 13 deletions BUILDING-cmake.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,22 +106,23 @@ using the `-D` switch.
| `BUILD_SHARED_LIBS` | `ON` | | Build projectM as shared libraries. If `OFF`, build static libraries. |
| `ENABLE_PLAYLIST` | `ON` | | Builds and installs the playlist library. |
| `ENABLE_EMSCRIPTEN` | `OFF` | `Emscripten` | Build for the web using Emscripten. Only supports build as a static library and using GLES. |
| `ENABLE_GLES` | `OFF` | `GLES` | Use OpenGL ES 3 profile for rendering instead of the Core profile. |

Note that `ENABLE_GLES` will be forcibly set to `ON` for Emscripten and Android builds, making it mandatory.

### Experimental and application-dependent build switches

The following table contains a list of build options which are only useful in special circumstances, e.g. when
developing libprojectM, trying experimental features or building the library for a special use-case/environment.

| CMake option | Default | Required dependencies | Description |
|------------------------|---------|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `ENABLE_SDL_UI` | `ON` | `SDL2` | Builds the SDL-based test application. Only used for development testing, will not be installed. |
| `ENABLE_GLES` | `OFF` | `GLES` | Use OpenGL ES 3 profile for rendering instead of the Core profile. |
| `ENABLE_THREADING` | `ON` | | Enable multithreading support for preset loading if available. |
| `ENABLE_OPENMP` | `ON` | `OpenMP` | Enable OpenMP support if available. |
| `ENABLE_DEBUG_POSTFIX` | `ON` | | Adds `d` (by default) to the name of any binary file in debug builds. |
| `ENABLE_SYSTEM_GLM` | `OFF` | | Builds against a system-installed GLM library. |
| `ENABLE_LLVM` | `OFF` | `LLVM` | Enables **highly experimental** LLVM JIT support. Will most probably not build, as the LLVM API changes frequently. |
| `ENABLE_CXX_INTERFACE` | `OFF` | | Exports symbols for the `ProjectM` and `PCM` C++ classes and installs the additional the headers. Using the C++ interface is not recommended and unsupported. |
| CMake option | Default | Required dependencies | Description |
|------------------------|---------|--------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `ENABLE_SDL_UI` | `ON` | `SDL2` | Builds the SDL-based test application. Only used for development testing, will not be installed. |
| `ENABLE_THREADING` | `ON` | | Enable multithreading support for preset loading if available. |
| `ENABLE_INSTALL` | `OFF` | Building as a CMake subproject | Enable projectM install targets when built as a subproject via `add_subdirectory()`. |
| `ENABLE_DEBUG_POSTFIX` | `ON` | | Adds `d` (by default) to the name of any binary file in debug builds. |
| `ENABLE_SYSTEM_GLM` | `OFF` | | Builds against a system-installed GLM library. |
| `ENABLE_CXX_INTERFACE` | `OFF` | | Exports symbols for the `ProjectM` and `PCM` C++ classes and installs the additional the headers. Using the C++ interface is not recommended and unsupported. |

### Path options

Expand Down Expand Up @@ -284,7 +285,7 @@ linked to.
If you want to use the optional playlist library, you need to specifically request it as a component:

```cmake
find_package(libprojectM COMPONENTS Playlist)
find_package(projectM4 COMPONENTS Playlist)
```

You can either use `REQUIRED` to force a fatal error if the component cannot be found or check if the target exists
Expand All @@ -303,11 +304,11 @@ If you link the playlist library, the main `libprojectM::projectM` target will b
Searches for projectM and the playlist library and links both to the application:

```cmake
find_package(libprojectM REQUIRED COMPONENTS Playlist)
find_package(projectM4 REQUIRED COMPONENTS Playlist)
add_executable(MyApp main.cpp)
target_link_libraries(MyApp PRIVATE
libprojectM::Playlist
libprojectM::playlist
)
```
8 changes: 0 additions & 8 deletions BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,6 @@ development files. To build projectM, both binaries and development files need t
autotools or if not installed.
* [**SDL2**](https://github.com/libsdl-org/SDL): Simple Directmedia Layer. Version 2.0.5 or higher is required to build
the standalone visualizer application (projectMSDL).
* [**LLVM**](https://llvm.org/): Low-Level Virtual Machine. Optional and **experimental**, used to speed up preset
execution by leveraging the LLVM JIT compiler.

#### Only relevant for Linux distributions, FreeBSD and macOS:

Expand Down Expand Up @@ -305,12 +303,6 @@ To build projectM using the Android SDK, please refer to the official NDK docs:
It is highly recommended using the latest NDK and CMake >= 3.21 for building.

### LLVM JIT

There are some optimizations for parsing preset equations that leverage the LLVM JIT. You can try adding the CMake
option `-DENABLE_LLVM=ON` to enable them. They may not work with a newer version of
LLVM (https://github.com/projectM-visualizer/projectm/pull/360).

## libprojectM

`libprojectM` is the core library. It is made up of three sub-libraries:
Expand Down

0 comments on commit 70132f1

Please sign in to comment.