Skip to content

Commit cbe3b9d

Browse files
author
James Bradbury
committed
Merge remote-tracking branch 'upstream/main' into updev
2 parents 421107f + 5f9cf25 commit cbe3b9d

File tree

2 files changed

+108
-74
lines changed

2 files changed

+108
-74
lines changed

.github/workflows/release.yml

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
name: Release
2+
on:
3+
workflow_dispatch:
4+
inputs:
5+
base:
6+
description: 'Base branch to deploy core from'
7+
required: false
8+
default: 'main'
9+
10+
jobs:
11+
docs:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: flucoma/actions/env@v4
15+
with:
16+
branch: ${{ github.event.inputs.base }}
17+
- uses: flucoma/actions/docs@v4
18+
with:
19+
target: MAKE_MAX_REF
20+
branch: ${{ github.event.inputs.base }}
21+
22+
- uses: actions/upload-artifact@v2
23+
with:
24+
name: docsbuild
25+
path: build/max_ref
26+
27+
winbuild:
28+
runs-on: windows-latest
29+
steps:
30+
- uses: actions/checkout@v2
31+
- uses: flucoma/actions/env@v4
32+
with:
33+
branch: ${{ github.event.inputs.base }}
34+
- uses: flucoma/actions/max@v4
35+
36+
- uses: actions/upload-artifact@v2
37+
with:
38+
name: winbuild
39+
path: "release-packaging/FluidCorpusManipulation/externals/"
40+
41+
macbuild:
42+
runs-on: macos-11
43+
outputs:
44+
version: ${{ steps.get-version.outputs.version }}
45+
steps:
46+
- uses: actions/checkout@v2
47+
- uses: flucoma/actions/env@v4
48+
with:
49+
branch: ${{ github.event.inputs.base }}
50+
- uses: flucoma/actions/max@v4
51+
52+
- uses: actions/upload-artifact@v2
53+
with:
54+
name: macbuild
55+
path: release-packaging/FluidCorpusManipulation/
56+
57+
- id: get-version
58+
run: echo "::set-output name=version::$(cat flucoma.version.rc)"
59+
working-directory: core
60+
61+
release:
62+
runs-on: ubuntu-latest
63+
needs: [winbuild, macbuild, docs]
64+
65+
steps:
66+
- name: make parent folder
67+
run : mkdir -p "FluidCorpusManipulation"
68+
69+
- uses: actions/download-artifact@v2
70+
with:
71+
name: macbuild
72+
path: "FluidCorpusManipulation"
73+
74+
- uses: actions/download-artifact@v2
75+
with:
76+
name: winbuild
77+
path: "FluidCorpusManipulation/externals"
78+
79+
- uses: actions/download-artifact@v2
80+
with:
81+
name: docsbuild
82+
path: "FluidCorpusManipulation/docs"
83+
84+
- name: zip
85+
run: zip -r FluCoMa-Max-"${{ needs.macbuild.outputs.version }}".zip "FluidCorpusManipulation"
86+
87+
- name: package and upload
88+
uses: softprops/action-gh-release@v1
89+
with:
90+
name: ${{ needs.macbuild.outputs.version }}
91+
body: "This is a release build of the FluCoMa Max package. The build hash is ${{ github.sha }}"
92+
files: FluCoMa*.zip
93+
prerelease: true
94+
tag_name: ${{ needs.macbuild.outputs.version }}
95+
draft: false

README.md

Lines changed: 13 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -2,89 +2,28 @@
22

33
This repository hosts code for generating the Max objects and documentation resources for the Fluid Corpus Manipulation Project. Much of the actual code that does the exciting stuff lives in this repository's principal dependency, the [Fluid Corpus Manipulation Library](https://github.com/flucoma/flucoma-core).
44

5+
# Minimal Quick Build
56

6-
# How to build
7+
Minimal build steps below. For detailed guidance see https://github.com/flucoma/flucoma-max/wiki/Compiling
78

8-
## Pre-requisites
9+
## Prerequisites
910

10-
* [CMake](http://cmake.org) >= 3.11
11-
* A C++ 14 compliant compiler for Mac or Windows (via XCode tools on Mac, and Visual Studio 17 >= 15.9 on Windows)
11+
* C++14 compliant compiler (clang, GCC or MSVC)
12+
* cmake
13+
* make (or Ninja or XCode or VisualStudio)
14+
* git
15+
* an internet connection
16+
* [Max SDK](https://github.com/Cycling74/max-sdk) (>= 7.3.3)
1217

13-
## Dependencies
18+
CMake will automatically download the dependencies needed
1419

15-
* [Max SDK](https://github.com/Cycling74/max-sdk) (>= 7.3.3) : this is the only dependency we don't (optionally) manage for you, so there must be a version available to point to when you run, using the CMake Variable `MAX_SDK_PATH` (see below). It can live anywhere on your file system, although often it is convenient to install directly into your Max packages folder.
16-
17-
These will be downloaded and configured automatically, unless you pass CMake a source code location on disk for each (see below):
18-
19-
* [Fluid Corpus Manipulation Library](https://github.com/flucoma/flucoma-core)
20-
* [Eigen](https://gitlab.com/libeigen/eigen) (3.3.5)
21-
* [HISSTools Library](https://github.com/AlexHarker/HISSTools_Library)
22-
23-
24-
## I'm in a Hurry...
25-
26-
...and you already have a development environment set up, understand CMake, and have the Max SDK available? And Python 3 + DocUtils + Jinja if you want docs?
27-
28-
Cool:
29-
30-
```
20+
```bash
3121
mkdir -p build && cd build
32-
cmake -DMAX_SDK_PATH=<location of your Max SDK> -DDOCS=<ON/OFF> ..
22+
cmake -DMAX_SDK_PATH=</path/to/sdk> ..
3323
make install
3424
```
3525

36-
This will assemble a Max package in `release-packaging`.
37-
38-
An alternative to setting up / running CMake directly on the command line is to install the CMake GUI, or use to use the curses GUI `ccmake`.
39-
40-
Also, with CMake you have a choice of which build system you use.
41-
42-
* The default on macOS and Linux is `Unix Makefiles`. On macOS you can also use Xcode by passing `-GXcode` to CMake when you first run it.
43-
* The default on Windows is the latest version of Visual Studio installed. However, Visual Studio can open CMake files directly as projects, which has some upsides. When used this way, CMake variables have to be set via a JSON file that MSVC will use to configure CMake.
44-
45-
46-
## Generating Documentation
47-
48-
The documentation partially relies on a system that is shared with other wrappers of the Fluid Corpus Manipulation Project for different creative coding environments.
49-
50-
Pre-requisites:
51-
52-
* Python 3
53-
* Docutils python package (ReST parsing)
54-
* Jinja python package (template engine)
55-
* PyYAML >= 5.1 (YAML parsing)
56-
57-
To generate `maxref.xml` documentation for the Max objects requires a further dependency, [flucoma-docs](https://github.com/flucoma/flucoma-docs), which we use to combine generated and human-written docs. We then pass `DOCS=ON` to CMake
58-
```
59-
cmake -DDOCS=ON ..
60-
```
61-
Unless we pass the location on disk of `flucoma-docs`, CMake will again take care of downloading this dependency.
62-
63-
This process:
64-
65-
* has only ever been tested on Mac, so may well not work at all on Windows
66-
* can sometimes produce spurious warnings in Xcode, but *should* work
67-
68-
69-
## Using Manual Dependencies
70-
71-
In some cases you may want to use your own copies of the required libraries. Unless specified, the build system will download these automatically. To bypass this behavior, use the following cache variables:
72-
73-
* `FLUID_PATH`: location of the Fluid Corpus Manipulation Library
74-
* `FLUID_DOCS_PATH`: location of `flucoma-docs` repository (e.g. for debugging documentation generation)
75-
* `EIGEN_PATH` location of the Eigen library
76-
* `HISS_PATH` location of the HISSTools library
77-
78-
For example, use this to use your own copy of the Fluid Corpus Manipulation Library
79-
```
80-
cmake -DMAX_SDK_PATH=<location of your Max SDK> -DFLUID_PATH=<location of Fluid Corpus Manipulation Library> ..
81-
```
82-
83-
To find out which branches / tags / commits of these we use, look in the top level `CMakeLists.txt` of the Fluid Corpus Manipulation Library for the `FetchContent_Declare` statements for each dependency.
84-
85-
## Compiling for different CPUs
86-
87-
The build system generally assumes an x86 cpu with AVX instructions (most modern x86 CPUs). To build on another kind of CPU (e.g. older than 2012) you can use the `FLUID_ARCH` cache variable to pass specific flags to your compiler. For example use `-DFLUID_ARCH=-mcpu=native` to optimize for your particular CPU.
26+
This will assemble a package in `release-packaging`.
8827

8928
## Credits
9029
#### FluCoMa core development team (in alphabetical order)

0 commit comments

Comments
 (0)