+++ /dev/null
-#!/bin/bash
-
-#####################################################################
-# #
-# Compiles Faust programs to supercollider #
-# (c) Grame, 2010 #
-# #
-#####################################################################
-
-#-------------------------------------------------------------------
-# Supercollider headers : path to the folder containing :
-# plugin_interface/, common/ and server/ headers
-
-# Possible path
-
-SC0=$SUPERCOLLIDER_HEADERS
-SC1="/usr/local/include/SuperCollider"
-SC2="/usr/local/include/supercollider"
-SC3="/usr/include/SuperCollider"
-SC4="/usr/include/supercollider"
-
-# check if directory exists
-
-if [ -d $SC0/plugin_interface ]; then
- SC=$SC0
-elif [ -d $SC1 ]; then
- SC=$SC1
-elif [ -d $SC2 ]; then
- SC=$SC2
-elif [ -d $SC3 ]; then
- SC=$SC3
-elif [ -d $SC4 ]; then
- SC=$SC4
-else
- echo "Can't find SuperCollider headers"
- exit 1
-fi
-echo Using SC Headers in $SC
-
-INCLUDE="-I$SC/plugin_interface/ -I$SC/common/ -I$SC/server/"
-
-if [ $# = 0 ]; then
- echo USAGE:
- echo "$0 [-d[ebug]] [-icc] [-omp] [-sd] file1.dsp [file2.dsp ...]"
- exit 1
-fi
-
-#-------------------------------------------------------------------
-# Analyze command arguments :
-# faust options -> OPTIONS
-# if -omp : -openmp or -fopenmp -> OPENMP
-# if -d or -debug -> F2SC_DEBUG
-# if -sd or -synthdef -> SYNTHDEF
-# existing *.dsp files -> FILES
-#
-
-# PHASE 1 : Look for -icc option to force use of intel icc (actually icpc)
-# without having to configure CXX and CXXFLAGS
-for p in $@; do
- if [ "$p" = -icc ]; then
- CXX=icpc
- CXXFLAGS='-O3 -xT -ftz -fno-alias -fp-model fast=2'
- fi
-done
-
-#PHASE 2 : dispatch command arguments
-F2SC_DEBUG=0
-SYNTHDEF=""
-for p in $@; do
- if [ "$p" = -omp ]; then
- if [[ $CXX == "icpc" ]]; then
- OMP="-openmp"
- else
- OMP="-fopenmp"
- fi
- fi
-
- if [ "$p" = -debug ] || [ "$p" = -d ]; then
- F2SC_DEBUG=1
- elif [ "$p" = -sd ] || [ "$p" = -synthdef ]; then
- SYNTHDEF="--synthdef"
- elif [ "$p" = -icc ]; then
- ignore=" "
- elif [ ${p:0:1} = "-" ]; then
- OPTIONS="$OPTIONS $p"
- elif [[ -e "$p" ]]; then
- FILES="$FILES $p"
- else
- echo "*** Faust source-file '$p' not found"
- OPTIONS="$OPTIONS $p"
- fi
-done
-
-if [ $F2SC_DEBUG = 1 ]; then
- OUTDEV=/dev/tty
- DNDEBUG=""
-else
- OUTDEV=/dev/null
- DNDEBUG="-DNDEBUG"
-fi
-
-if [ "$FILES" = "" ]; then
- echo USAGE:
- echo "$0 [-d[ebug]] [-icc] [-omp] file1.dsp [file2.dsp ...]"
- exit 1
-fi
-
-#-------------------------------------------------------------------
-# Check plateform specifics
-#
-if [[ $(uname) == Darwin ]]; then
- EXT="scx"
- SCFLAGS="-DNO_LIBSNDFILE -DSC_DARWIN $DNDEBUG -bundle "
-elif [[ $(uname) == Linux ]]; then
- EXT="so"
- SCFLAGS="-DNO_LIBSNDFILE -DSC_LINUX $DNDEBUG -shared -fPIC"
-else
- echo "unsupported plateform"
- exit 1
-fi
-
-#-------------------------------------------------------------------
-# compile the *.dsp files
-#
-for p in $FILES; do
-
- CUR=$(pwd)
- f=$(basename "$p")
- SRCDIR=$(dirname "$p")
-
- # creates a temporary dir
- TDR=$(mktemp -d faust.XXX)
- TMP=$TDR/${f%.dsp}
- mkdir "$TMP"
-
- # compile the .dsp file to c++ and xml
- faust -xml "$SRCDIR/$f" -o /dev/null;
- mv "$SRCDIR/$f.xml" $TMP/
- faust -a supercollider.cpp $OPTIONS "$SRCDIR/$f" -o "$TMP/${f%.dsp}.cpp"
-
- # compile c++ to binary; --prefix should be same as in ../../examples/Makefile.sccompile
- (
- cd "$TMP"
- faust2sc --prefix=Faust $SYNTHDEF $f.xml > "${f%.dsp}.sc" 2>$OUTDEV
- ${CXX=g++} -O3 $SCFLAGS -I$CUR $INCLUDE $CXXFLAGS $OMP -Dmydsp=${f%.dsp} -o ${f%.dsp}.$EXT ${f%.dsp}.cpp
- )> $OUTDEV
-
- ## move the produced files from tmp to source dir
- cp "$TMP/${f%.dsp}.$EXT" "$SRCDIR/${f%.dsp}.$EXT"
- cp "$TMP/${f%.dsp}.sc" "$SRCDIR/${f%.dsp}.sc"
-
-
- if [ $F2SC_DEBUG = 1 ]; then
- echo "Retaining intermediate products directory '$TDR'"
- OUTDEV=/dev/tty
- else
- rm -rf "$TDR"
- fi
-
- # collects all the files produced
- BINARIES="$BINARIES$SRCDIR/${f%.dsp}.$EXT;$SRCDIR/${f%.dsp}.sc;"
-
-done
-
-# return the binaries names
-echo "$BINARIES"