Skip to content

Developer's Guide

David Braun edited this page Dec 16, 2021 · 1 revision

Developer's Guide

It is recommended to check out the Github Actions workflow. The information below is a little out of date.

Git Submodules

git submodule update in this repo: git submodule update --init --recursive. This should clone llvm-project and FAUST to the thirdparty folder.

Building LLVM

Windows

cd thirdparty/llvm-project/llvm
cmake -Bbuild -G "Visual Studio 16 2019" -DLLVM_USE_CRT_DEBUG=MDd -DLLVM_USE_CRT_RELEASE=MD -DLLVM_BUILD_TESTS=Off -DCMAKE_INSTALL_PREFIX="./llvm" -Thost=x64

(Note that the MD flags build a dynamic library, whereas MT would have built a static library.)

Then open thirdparty/llvm-project/llvm/build/LLVM.sln and build in Release/64. This will take at least 20 minutes. You can also do this from the command line (x64 Native Tools Command Prompt for VS 2019) instead: msbuild thirdparty/llvm-project/llvm/build/LLVM.sln /property:Configuration=Release

macOS

Go to https://github.com/llvm/llvm-project/releases/tag/llvmorg-12.0.0 and download clang+llvm-12.0.0-x86_64-apple-darwin.tar.xz to this repository's thirdparty folder. Unzip it into a directory.

Building TD-Faust

Windows

In the root of the TD-Faust repo, set an absolute path to this subfolder in your llvm-project installation. Then run CMake.

set LLVM_DIR=C:/path/to/TD-Faust/thirdparty/llvm-project/llvm/build/lib/cmake/llvm
cmake -Bbuild -DUSE_LLVM_CONFIG=off

Open build/TD-Faust.sln and build in Release mode. (Debug is inconvenient because you'd have to build LLVM in Debug.) TD-Faust.dll and faust.dll should appear in the Plugins folder.

Run the TouchDesigner project by pressing F5.

macOS

In root of the TD-Faust repo:

cmake -Bbuild -DUSE_LLVM_CONFIG=off -G "Xcode" -DCMAKE_PREFIX_PATH=/path/to/TD-Faust/thirdparty/clang+llvm-12.0.0-x86_64-apple-darwin/lib/cmake/llvm

Then open build/TD-Faust.xcodeproj and build ALL_BUILD. You will need to rename libfaust.2.13.15.dylib to libfaust.2.dylib and optionally TD-Faust.bundle to TD-Faust.plugin.

Clone this wiki locally