File: faust2raqt

package info (click to toggle)
faust 2.30.5~ds0-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 279,348 kB
  • sloc: cpp: 239,368; javascript: 32,310; ansic: 17,442; sh: 11,925; java: 5,903; objc: 3,879; makefile: 3,030; cs: 1,139; python: 987; ruby: 951; xml: 693; yacc: 537; lex: 239; lisp: 201; awk: 110
file content (139 lines) | stat: -rwxr-xr-x 4,097 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#!/bin/bash

#####################################################################
#                                                                   #
#               Compiles Faust programs to RtAudio-qt               #
#               (c) Grame, 2015                                     #
#                                                                   #
#####################################################################

. faustpath
. faustoptflags
. usage.sh

CXXFLAGS+=" $MYGCCFLAGS"  # So that additional CXXFLAGS can be used

ARCHFILE=$FAUSTARCH/ra-qt.cpp
ARCHLIB="-L/usr/local/lib -lrtaudio"

#-------------------------------------------------------------------------------
# Search for qmake or qmake-qt4

QMAKE=$(which qmake-qt4 || echo qmake) 

#-------------------------------------------------------------------
# Analyze command arguments :
# faust options                 -> OPTIONS
# existing *.dsp files          -> FILES
#

#PHASE 2 : dispatch command arguments

OSCINC=""
QTDEFS=""
OSCLIB=""
DEPLOY="yes"

for p in $@; do
    if [ $p = "-help" ] || [ $p = "-h" ]; then
        usage faust2raqt "[options] [Faust options] <file.dsp>"
        require Qt
        echo "Compiles Faust programs to RtAudio-Qt"
        option
        options -httpd -osc -midi -qrcode -poly -nodeploy
        option "Faust options"
        exit
    fi
    
    if [ $p = "-poly" ]; then
        POLYDEFS="DEFINES += POLY"
    elif [ $p = "-midi" ]; then
        MIDIDEFS="DEFINES += MIDICTRL"
    elif [ $p = "-osc" ]; then
        OSCDEFS="DEFINES += OSCCTRL"
        OSCLIBS="-lOSCFaust"
	elif [ "$p" = "-httpd" ]; then
		HTTPDEFS="DEFINES += HTTPCTRL"
		HTTPLIBS="-lHTTPDFaust -lmicrohttpd"
	elif [ $p = "-nodeploy" ]; then
		DEPLOY="no"
	elif [ "$p" = "-qrcode" ]; then # requires -httpd
		QRDEFS="DEFINES += QRCODECTRL"
    elif [ ${p:0:1} = "-" ]; then
	    OPTIONS="$OPTIONS $p"
	elif [[ -f "$p" ]] && [ ${p: -4} == ".dsp" ]; then
	    FILES="$FILES $p"
    else
	    OPTIONS="$OPTIONS $p"        
	fi
done

#-------------------------------------------------------------------
# Check Darwin specifics
#
if [[ $(uname) == Darwin ]]; then
    ARCHLIB+=" -framework CoreMIDI -framework CoreFoundation -framework CoreAudio"
    CXXFLAGS+=" -D__MACOSX_CORE__"
    SYS_VERSION=$(uname -v | cut -d : -f1 | cut -d. -f1 | cut -d' ' -f4)
	if [ $SYS_VERSION -gt 12 ]
	then
	    SPEC=""
	    CLANGOPT="QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9"  
	    CXXFLAGS="$CXXFLAGS -mmacosx-version-min=10.9"
	else
	    SPEC="-spec macx-g++"
	    CLANGOPT=""
	fi
    EXT=".app"
fi

#-------------------------------------------------------------------
# Check Linux specifics
#
if [[ $(uname) == Linux ]]; then
    ARCHLIB+=" -lasound"
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 faust to c++
 	faust -i -a $ARCHFILE $OPTIONS "$SRCDIR/$f" -o "$TMP/${f%.dsp}.cpp" || exit
  
    # compile c++ to binary
    (
	    cd "$TMP"
	    $QMAKE -project "QT += widgets printsupport network" "CONFIG+=warn_off" "$CLANGOPT" "INCLUDEPATH+=$CUR" "INCLUDEPATH+=$FAUSTINC" "QMAKE_CXXFLAGS=$CXXFLAGS -Wno-unused-parameter $FAUSTTOOLSFLAGS" "QMAKE_INFO_PLIST=$FAUSTARCH/Info.plist" "LIBS+=$ARCHLIB $OSCLIBS $HTTPLIBS" "HEADERS+=$FAUSTINC/faust/gui/QTUI.h" "RESOURCES+= $FAUSTINC/faust/gui/Styles/Grey.qrc" "$OSCDEFS" "$HTTPDEFS" "$QRDEFS" "$POLYDEFS" "$MIDIDEFS"
	    $QMAKE $SPEC QMAKE_CFLAGS_ISYSTEM=-I
        make
    ) > /dev/null || exit
     
    # on Mac add the QT libraries to the bundle
    if [[ $(uname) == Darwin ]]; then
        if [ "$DEPLOY" = "yes" ]; then
            macdeployqt "$TMP/${f%.dsp}$EXT" || exit
        fi
    fi

    rm -rf "$SRCDIR/${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