This adds a MacOS build (`os: osx`) to the Travis build matrix,
alongside the existing Linux build. Each build will be carried
out on both platforms simultaneously.
It also:
- Uses Travis' apt addon to install packages, rather than `sudo apt-get`
(MacOS packages are installed using `brew install` commands)
- No longer installs the libopenshot-audio PPA or the
libopenshot-audio-dev package prior to building the source tree
- Installs doxygen (and graphviz on Linux)
- Runs `make doc` before `make install`
- Uses `CMAKE_INSTALL_PREFIX` instead of `make DESTDIR`
`math(EXPR ... OUTPUT_FORMAT HEXADECIMAL)` only works in recent
CMake versions, so if it's not available we just hardcode a
fixed hex string instead of computing the version properly
from the project variables.
The header files JuceLibraryCode/*.h are no longer used. Instead there
are templates in include/, which CMake will use to generate headers in
CMAKE_CURRENT_BINARY_DIR/include/ at build time.
* include/JuceHeader.h.in
- variables in namespace ProjectInfo are populated with data from
the corresponding CMake variables
* include/AppConfig.h.in
- No changes currently, CMake will simply copy this file to AppConfig.h
This moves the installation target directory for the documentation
to `${CMAKE_INSTALL_DOCDIR}/API`, which on most systems is
`${CMAKE_INSTALL_PREFIX}/share/doc/libopenshot-audio/API`.
I tend to create multiple build paths at the root of the
project, for testing various configurations. So I'll have
all of `build/`, `build-somebranch`, `build-otherbranch`,
etc. sitting around.
This PR updates the `.gitignore` for the repo to exclude
`/build*`, meaning _anything_ with a name that starts with
`build`, if it's located at the root of the repository tree.
CMake will now discover for Python 3 in addition to Doxygen, as a
prerequisite for creating a `doc` target. If everything checks out,
the user can run `make doc` to generate formatted docs, and they
will be installed to `${CMAKE_INSTALL_DOCDIR}` (typically
`${CMAKE_INSTALL_PREFIX}/share/doc/libopenshot/audio/`) when
`make install` is run.
They're not _our_ warnings, since we didn't write the documentation
in the JUCE code, so there's really not a lot of point in seeing
them spewed out on every build.
There was a bug in the definition of `DOXYFILE_LATEX`, and _another_
in the processing of it (which were the only reason it wasn't
defaulting on, the way it appeared to be configured), fixed the
bug and changed it to default OFF. But now it _can_ be enabled.
Also moved the handling of `DOXYFILE_DOT` out of the latex-only
section, so that it can be turned on with the new config variable
`DOXYFILE_USE_DOT` (default on). If `DOXYFILE_USE_DOT` is enabled
and the `dot` executable is found, `DOXYFILE_DOT` will be set "YES"
and `dot` will be used for the HTML as well, giving better graphs.
Also include the documentation MarkDown pages in the Doxygen docs.
These will show up as Related Pages in the interface.
* The formatting of `INSTALL-*.md` had to be changed some:
- Doxygen doesn't support headings in bulleted lists (lines starting
with `* ###`) -- I'm not even sure that's legal markdown. They were
changed to just level 3 headings (lines starting with `###`).
- ALL Windows paths in `INSTALL-WINDOWS.md` were wrapped in backticks,
to prevent Doxygen parsing them as markup commands.
- Level 1 headings were added to the top of the three install docs,
giving them the title "Building libopenshot for ___(OS)___".
Otherwise all three pages were titled "Getting Started".
* Separately, the table at the top of `HW-ACCEL.md` does not
translate well to Doxygen. It will need further polishing. But the
docs are all quite readable now.
Doxygen was having real trouble generating clean docs from
the JUCE sources, but their own website docs were generated
with Doxygen as well, and looked great.
Turns out, they preprocess their own source files before
generating docs from them. Borrowed their Python script to
munge the sources, and connected it up as a new target
dependency for `make doc`. It'll only run if the docs are
requested to be built, and `make clean` will clear out
the preprocessed sources if it's run.