divideconcept / FluidLite

Very light version of FluidSynth designed to be hardware, platform and external dependency independent.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FluidLite problems found when working on my project

pedrolcl opened this issue · comments

I've been exploring FluidLite lately, in relation to another exploration of Qt Multimedia low level audio output. That resulted on this project.

For this project I've forked FluidLite here addressing several problems:

  1. There are no FluidLite releases, so no source packages. Surprisingly, there are three repositories which are all retrieving different commits from the git repository. Defining a version number is not centralized in a single source/place, which would be useful when/if a release is being cooked.

  2. No installation on common prefixes like /usr or /usr/local is possible, because there is a conflict with the original Fluidsynth headers directory.

  3. The fluidlite.pc spec file for pkg-config does not work if the include and/or library install paths are absolute.

  4. Headers: fluid_config.h and version.h should be generated by cmake, with dynamic content depending on the configuration options.

  5. If both the static lib and the shared object are requested, all the sources are compiled twice. This should not be necessary.

  6. CMake Modernization including exported targets to enable find_package(fluidlite) in downstream projects using fluidlite and cmake, so pkg-config won't be needed in that case.

There can be two exported targets:

  • fluidlite::fluidlite
  • fluidlite::fluidlite-static

The above targets are automatically imported when using find_package(fluidlite)`, and will be used to obtain the includes and
libraries when using a cmake command like this:

target_link_libraries(${PROJECT_NAME} PRIVATE
    fluidlite::fluidlite-static
)
  1. Client projects should also be able to use FluidLite installed on arbitrary prefixes, but also using a build directory directly with a cmake variable like -Dfluidlite_DIR=/path/to/the/build/tree.

  2. Support for using FluidLite as a subdirectory easily, for instance as a git submodule. This is what I've chosen for
    fluidlite-qtmultimedia.