+++ /dev/null
-#!/bin/bash
-
-#####################################################################
-# #
-# Compiles Faust programs to Max/MSP #
-# (c) Grame, 2010 #
-# #
-#####################################################################
-
-createInfoPList() {
- (
- echo '<?xml version="1.0" encoding="UTF-8"?>'
- echo '<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">'
- echo '<plist version="1.0">'
- echo '<dict>'
- echo ' <key>CFBundleExecutable</key>'
- echo " <string>$1</string>"
- echo ' <key>CFBundleName</key>'
- echo " <string>$1</string>"
- echo ' <key>CFBundlePackageType</key>'
- echo ' <string>iLaX</string>'
- echo '</dict>'
- echo '</plist>'
- ) > "$2"
-}
-
-
-#-------------------------------------------------------------------
-# Analyze command arguments :
-# faust options -> OPTIONS
-# if -omp : -openmp or -fopenmp -> OPENMP
-# 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
-for p in $@; do
- if [ "$p" = -omp ]; then
- if [[ $CXX == "icpc" ]]; then
- OMP="-openmp"
- else
- OMP="-fopenmp"
- fi
- fi
-
- if [ "$p" = -icc ]; then
- ignore=" "
- elif [ ${p:0:1} = "-" ]; then
- OPTIONS="$OPTIONS $p"
- elif [[ -e "$p" ]]; then
- FILES="$FILES $p"
- else
- OPTIONS="$OPTIONS $p"
- fi
-done
-
-
-
-#-------------------------------------------------------------------
-# Check darwin specifics
-#
-if [[ $(uname) == Darwin ]]; then
- SPEC="-spec macx-g++"
- EXT="~.mxo"
-fi
-
-#-------------------------------------------------------------------
-# compile the *.dsp files
-#
-PATH=$PATH:/usr/local/bin
-
-for p in $FILES; do
-
- #INC=-I/usr/local/include/c74support/max-includes -I/usr/local/include/c74support/msp-includes
- CC=g++
-
- CUR=$(pwd)
- f=$(basename "$p")
- SRCDIR=$(dirname "$p")
-
- # creates a temporary dir
- TDR=$(mktemp -d faust.XXX)
- TMP="$TDR/${f%.dsp}"
- mkdir "$TMP"
-
- # compile faust to c++
- faust -a max-msp.cpp $OPTIONS "$SRCDIR/$f" -o "$TMP/${f%.dsp}.cpp"
-
- # compile c++ to binary
- (
- cd "$TMP"
- install -d "${f%.dsp}$EXT/Contents/MacOS"
- $CC -arch i386 -fpascal-strings -fasm-blocks -g -O3 -I/usr/local/lib/faust -I/usr/local/include/c74support/max-includes -I/usr/local/include/c74support/msp-includes -c "${f%.dsp}.cpp" -o "${f%.dsp}.i386.o"
- $CC -framework MaxAPI -framework Carbon -framework MaxAudioAPI -arch i386 -Wl,-Y,1455 -bundle "${f%.dsp}.i386.o" -o "${f%.dsp}.i386~"
- #$CC -arch ppc -fpascal-strings -fasm-blocks -g -O3 -I/usr/local/lib/faust -I/usr/local/include/c74support/max-includes -I/usr/local/include/c74support/msp-includes -c "${f%.dsp}.cpp" -o "${f%.dsp}.ppc.o"
- #$CC -framework Carbon -framework MaxAPI -framework MaxAudioAPI -arch ppc -Wl,-Y,1455 -bundle "${f%.dsp}.ppc.o" -o "${f%.dsp}.ppc~"
- createInfoPList "${f%.dsp}~" "${f%.dsp}$EXT/Contents/Info.plist"
- #lipo -create "${f%.dsp}.i386~" "${f%.dsp}.ppc~" -output "${f%.dsp}$EXT/Contents/MacOS/${f%.dsp}~"
- lipo -create "${f%.dsp}.i386~" -output "${f%.dsp}$EXT/Contents/MacOS/${f%.dsp}~"
-
- ) > /dev/null
-
- rm -rf "$SRCDIR/${f%.dsp}$EXT"
-
- # Keep .dsp and .cpp files in the plug-in
- cp "$TMP/${f%.dsp}.cpp" "$TMP/${f%.dsp}$EXT"
- cp "$SRCDIR/$f" "$TMP/${f%.dsp}$EXT"
-
- cp -r "$TMP/${f%.dsp}$EXT" "$SRCDIR/${f%.dsp}$EXT"
- rm -rf "$TDR"
-
- # collect binary file name for FaustGIDE
- BINARIES="$BINARIES$SRCDIR/${f%.dsp}$EXT;"
-done
-
-echo $BINARIES
-
-