updated makePraat
[sgc2.git] / praat_module / makePraat.sh
blob9907739714092b5c4f9ec092ef984ad7834183d1
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 if [[ -d ${PRAATSOURCES}/praat32.xcodeproj ]]; then
39 SDK=`ls -1d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/*|grep 10.6`
40 MAKECMD="xcodebuild -project praat32.xcodeproj -sdk ${SDK}"
41 EXECPATH="./build/Configuration1/Praat.app"
42 ZIPNAME=${ZIPNAME}_32.app
43 else
44 MAKECMD="xcodebuild -project praat64.xcodeproj"
45 EXECPATH="./build/Configuration64/Praat.app"
46 ZIPNAME=${ZIPNAME}_64.app
48 TARGETNAME=${APPLICATIONNAME}.app
51 # Patch Praat
52 cd ${PRAATSOURCES}
53 if [[ -s ${CURRENTWORKINGDIR}/adaptPraat.patch ]]; then
54 patch --strip=1 < ${CURRENTWORKINGDIR}/adaptPraat.patch
56 if [[ -s ${CURRENTWORKINGDIR}/sys_praat_name.patch ]]; then
57 patch --strip=1 < ${CURRENTWORKINGDIR}/sys_praat_name.patch
60 # Add demopraatapplication.h
61 cd main/
62 rm -f demopraatapplication.h
63 if [[ ${1:-Normal} == "MinGW" && ${2:-Normal} == "XP" ]]; then
64 cat ${CURRENTWORKINGDIR}/${APPLICATIONNAME}expanded.h | sed 's/\(\"build_SHA\$ \= \\\"[^\\]*\)/\1 XP/g' > ${CURRENTWORKINGDIR}/${APPLICATIONNAME}expandedXP.h
65 ln -s ${CURRENTWORKINGDIR}/${APPLICATIONNAME}expandedXP.h ./demopraatapplication.h
66 else
67 ln -s ${CURRENTWORKINGDIR}/${APPLICATIONNAME}expanded.h ./demopraatapplication.h
69 # Create a file containing the Build number
70 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
72 # Get the manual into the tutorials manual
73 cp ../fon/manual_tutorials.cpp ../fon/manual_tutorials.cppORIGINAL
74 NUMLINES=$(grep -n '}' ../fon/manual_tutorials.cpp|tail -1|sed 's/\:.*//g'|perl -ane 'print $_-1;')
75 TAILLINES=$(wc -l ../fon/manual_tutorials.cpp|perl -ane "print \$_ - ${NUMLINES}")
76 head -n ${NUMLINES} ../fon/manual_tutorials.cppORIGINAL > ../fon/manual_tutorials.cpp
77 cat ${CURRENTWORKINGDIR}/manual_${APPLICATIONNAME}.cpp >> ../fon/manual_tutorials.cpp
78 tail -${TAILLINES} ../fon/manual_tutorials.cppORIGINAL >> ../fon/manual_tutorials.cpp
80 touch main_Praat.cpp
82 # Patch main_Praat
83 if [[ -s ${CURRENTWORKINGDIR}/main_Praat.patch ]]; then
84 patch main_Praat.cpp ${CURRENTWORKINGDIR}/main_Praat.patch
87 cd ../
88 if [[ ${UNAME} == "Darwin" ]]; then
89 ${MAKECMD} OTHER_CFLAGS='$OTHER_CFLAGS -DDEMOAPP' 2>&1
90 else
91 ${MAKECMD} 2>&1
94 # Undo patches
95 if [[ -s ${CURRENTWORKINGDIR}/adaptPraat.patch ]]; then
96 patch -R --strip=1 < ${CURRENTWORKINGDIR}/adaptPraat.patch
98 if [[ -s ${CURRENTWORKINGDIR}/sys_praat_name.patch ]]; then
99 patch -R --strip=1 < ${CURRENTWORKINGDIR}/sys_praat_name.patch
102 cd main/
103 rm -f demopraatapplication.h ../fon/manual_tutorials.cpp
104 mv ../fon/manual_tutorials.cppORIGINAL ../fon/manual_tutorials.cpp
105 if [[ -s ${CURRENTWORKINGDIR}/main_Praat.patch ]]; then
106 patch -R main_Praat.cpp ${CURRENTWORKINGDIR}/main_Praat.patch
108 cd -
110 # Move result to correct directory
111 if [[ -d ${CURRENTWORKINGDIR}/${TARGETNAME} ]]; then
112 rm -r ${CURRENTWORKINGDIR}/${TARGETNAME}
114 mv ${EXECPATH} ${CURRENTWORKINGDIR}/${TARGETNAME}
117 cd ${CURRENTWORKINGDIR}
118 zip -r ${ZIPNAME}.zip ${TARGETNAME}
120 # Create MD5SUM
121 if [[ -n `which md5` ]] ; then
122 if [[ -f ${CURRENTWORKINGDIR}/${TARGETNAME} ]]; then
123 md5 ${CURRENTWORKINGDIR}/${TARGETNAME} > ${CURRENTWORKINGDIR}/${TARGETNAME}.md5
125 md5 ${CURRENTWORKINGDIR}/${ZIPNAME}.zip > ${CURRENTWORKINGDIR}/${ZIPNAME}.zip.md5
127 if [[ -n `which md5sum` ]] ; then
128 if [[ -f ${CURRENTWORKINGDIR}/${TARGETNAME} ]]; then
129 md5sum ${CURRENTWORKINGDIR}/${TARGETNAME} > ${CURRENTWORKINGDIR}/${TARGETNAME}.md5
131 md5sum ${CURRENTWORKINGDIR}/${ZIPNAME}.zip > ${CURRENTWORKINGDIR}/${ZIPNAME}.zip.md5