Updated to Praat 5.4.20
[sgc2.git] / praat_module / makePraat.sh
blob6b632a43b9cc19167b43a7dd3af7bcf49b1beedc
1 #!/bin/bash
3 APPLICATIONNAME=SpeakGoodChinese2
4 CURRENTWORKINGDIR=$(pwd)
5 UNAME=$(uname -s)
6 MAKECMD=make
7 EXECPATH=./praat
8 TARGETNAME=${APPLICATIONNAME}
9 ZIPNAME=${TARGETNAME}
11 PRAATSOURCES=./praat_sources
12 if [[ ${1:-Normal} == "MinGW" ]]; then
13 PRAATSOURCES=../../praat_mingw
14 if [[ ! -d ${PRAATSOURCES} ]]; then
15 exit
17 # Temporary cludge to recompile this file without -O2
18 touch ${PRAATSOURCES}/dwsys/regularExp.cpp
19 elif [[ -d ../praat_sources ]]; then
20 PRAATSOURCES=../praat_sources
21 elif [[ -d ../../demo_praat_sources ]]; then
22 PRAATSOURCES=../../demo_praat_sources
23 elif [[ -d ../../praat_sources ]]; then
24 PRAATSOURCES=../../praat_sources
27 if [[ -e ${PRAATSOURCES}/makefile.defs && -n `grep -l mingw32 ${PRAATSOURCES}/makefile.defs` ]]; then
28 EXECPATH=./Praat.exe
29 if [[ ${1:-Normal} == "MinGW" && ${2:-Normal} == "XP" ]]; then
30 TARGETNAME=${APPLICATIONNAME}XP.exe
31 else
32 TARGETNAME=${APPLICATIONNAME}.exe
34 ZIPNAME=${TARGETNAME}
35 UNAME=MinGW
36 elif [[ ${UNAME} == "Darwin" ]]; then
37 MAKECMD="xcodebuild -project praat64.xcodeproj"
38 echo ${2:-Normal}
39 if [[ `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.*.sdk` ]]; then
40 SDK=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
41 MAKECMD="xcodebuild -project praat64.xcodeproj -sdk ${SDK}"
42 EXECPATH="./build/Configuration64/Praat.app"
43 ZIPNAME=${ZIPNAME}_64.app
44 elif [[ -d ${PRAATSOURCES}/praat32.xcodeproj && ${1:-Normal} != "OSX64" ]]; then
45 if [[ -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs ]]; then
46 SDK=`ls -1d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/*|grep 10.6`
47 else
48 SDK=`ls -1d /Developer/SDKs/*|grep 10.6`
50 MAKECMD="xcodebuild -project praat32.xcodeproj -sdk ${SDK}"
51 EXECPATH="./build/Configuration1/Praat.app"
52 ZIPNAME=${ZIPNAME}_32.app
53 else
54 MAKECMD="xcodebuild -project praat64.xcodeproj"
55 EXECPATH="./build/Configuration64/Praat.app"
56 ZIPNAME=${ZIPNAME}_64.app
58 TARGETNAME=${APPLICATIONNAME}.app
61 # Patch Praat
62 cd ${PRAATSOURCES}
63 if [[ -s ${CURRENTWORKINGDIR}/adaptPraat.patch ]]; then
64 patch --strip=1 < ${CURRENTWORKINGDIR}/adaptPraat.patch
66 if [[ -s ${CURRENTWORKINGDIR}/sys_praat_name.patch ]]; then
67 patch --strip=1 < ${CURRENTWORKINGDIR}/sys_praat_name.patch
70 # Add demopraatapplication.h
71 cd main/
72 rm -f demopraatapplication.h
73 if [[ ${1:-Normal} == "MinGW" && ${2:-Normal} == "XP" ]]; then
74 cat ${CURRENTWORKINGDIR}/${APPLICATIONNAME}expanded.h | sed 's/\(\"build_SHA\$ \= \\\"[^\\]*\)/\1 XP/g' > ${CURRENTWORKINGDIR}/${APPLICATIONNAME}expandedXP.h
75 ln -s ${CURRENTWORKINGDIR}/${APPLICATIONNAME}expandedXP.h ./demopraatapplication.h
76 else
77 ln -s ${CURRENTWORKINGDIR}/${APPLICATIONNAME}expanded.h ./demopraatapplication.h
79 # Create a file containing the Build number
80 grep 'build_SHA$ = "' ${CURRENTWORKINGDIR}/${APPLICATIONNAME}expanded.praat | grep ':' | perl -ane '/\"([A-F0-9]+)\s+([\d\-]+)(.*)\"/;print "<i>$1</i> <b>$2</b>$3\n";' > ${CURRENTWORKINGDIR}/Build_SHA.html
82 # Get the manual into the tutorials manual
83 cp ../fon/manual_tutorials.cpp ../fon/manual_tutorials.cppORIGINAL
84 NUMLINES=$(grep -n '}' ../fon/manual_tutorials.cpp|tail -1|sed 's/\:.*//g'|perl -ane 'print $_-1;')
85 TAILLINES=$(wc -l ../fon/manual_tutorials.cpp|perl -ane "print \$_ - ${NUMLINES}")
86 head -n ${NUMLINES} ../fon/manual_tutorials.cppORIGINAL > ../fon/manual_tutorials.cpp
87 cat ${CURRENTWORKINGDIR}/manual_${APPLICATIONNAME}.cpp >> ../fon/manual_tutorials.cpp
88 tail -${TAILLINES} ../fon/manual_tutorials.cppORIGINAL >> ../fon/manual_tutorials.cpp
90 # Get the icons into the main folder
91 mv ../main/Praat.icns ../main/PraatBACKUP.icns
92 mv ../main/praat_win.ico ../main/praat_winBACKUP.ico
93 cp ${CURRENTWORKINGDIR}/sgc.icns ../main/Praat.icns
94 cp ${CURRENTWORKINGDIR}/sgc_win.ico ../main/praat_win.ico
96 touch main_Praat.cpp
98 # Patch main_Praat
99 if [[ -s ${CURRENTWORKINGDIR}/main_Praat.patch ]]; then
100 patch main_Praat.cpp ${CURRENTWORKINGDIR}/main_Praat.patch
103 cd ../
104 if [[ ${UNAME} == "Darwin" ]]; then
105 ${MAKECMD} OTHER_CFLAGS='$OTHER_CFLAGS -DDEMOAPP' 2>&1
106 else
107 ${MAKECMD} 2>&1
110 # Undo patches
111 if [[ -s ${CURRENTWORKINGDIR}/adaptPraat.patch ]]; then
112 patch -R --strip=1 < ${CURRENTWORKINGDIR}/adaptPraat.patch
114 if [[ -s ${CURRENTWORKINGDIR}/sys_praat_name.patch ]]; then
115 patch -R --strip=1 < ${CURRENTWORKINGDIR}/sys_praat_name.patch
118 cd main/
119 rm -f demopraatapplication.h ../fon/manual_tutorials.cpp Praat.icns praat_win.ico
120 mv PraatBACKUP.icns Praat.icns
121 mv praat_winBACKUP.ico praat_win.ico
122 mv ../fon/manual_tutorials.cppORIGINAL ../fon/manual_tutorials.cpp
123 if [[ -s ${CURRENTWORKINGDIR}/main_Praat.patch ]]; then
124 patch -R main_Praat.cpp ${CURRENTWORKINGDIR}/main_Praat.patch
126 cd -
128 # Move result to correct directory
129 if [[ -d ${CURRENTWORKINGDIR}/${TARGETNAME} ]]; then
130 rm -r ${CURRENTWORKINGDIR}/${TARGETNAME}
132 mv ${EXECPATH} ${CURRENTWORKINGDIR}/${TARGETNAME}
135 cd ${CURRENTWORKINGDIR}
136 zip -r ${ZIPNAME}.zip ${TARGETNAME}
138 # Create MD5SUM
139 if [[ -n `which md5` ]] ; then
140 if [[ -f ${CURRENTWORKINGDIR}/${TARGETNAME} ]]; then
141 cd ${CURRENTWORKINGDIR}/; md5 ${TARGETNAME} > ${TARGETNAME}.md5 ; cd -
143 cd ${CURRENTWORKINGDIR}/; md5 ${ZIPNAME}.zip > ${ZIPNAME}.zip.md5 ; cd -
145 if [[ -n `which md5sum` ]] ; then
146 if [[ -f ${CURRENTWORKINGDIR}/${TARGETNAME} ]]; then
147 cd ${CURRENTWORKINGDIR}/; md5sum ${TARGETNAME} > ${TARGETNAME}.md5 ; cd -
149 cd ${CURRENTWORKINGDIR}/; md5sum ${ZIPNAME}.zip > ${ZIPNAME}.zip.md5 ; cd -
152 # Create SHA1
153 if [[ -n `which shasum` ]] ; then
154 if [[ -f ${CURRENTWORKINGDIR}/${TARGETNAME} ]]; then
155 cd ${CURRENTWORKINGDIR}/; shasum -p ${TARGETNAME} > ${TARGETNAME}.sha1 ; cd -
157 cd ${CURRENTWORKINGDIR}/; shasum -p ${ZIPNAME}.zip > ${ZIPNAME}.zip.sha1 ; cd -