FIXED: crash when drawing axes with extreme height/width ratios in the data space...
[mldemos:allopens-mldemos.git] / packageOSX.sh
1 #!/bin/sh
2
3 appName='MLDemos'
4 myPath=$appName'.app/Contents/'
5 opencvPath='/Users/basilio/Code/OpenCV-2.3.1a/build/lib/'
6 qtPath='/Users/basilio/QtSDK/Desktop/Qt/4.8.0/gcc/lib/'
7
8 names=( libopencv_core libopencv_legacy libopencv_highgui libopencv_ml libopencv_features2d libopencv_imgproc libopencv_calib3d libopencv_video libopencv_flann libopencv_contrib libopencv_gpu libopencv_objdetect)
9 namesQT=( QtGui QtCore QtNetwork QtOpenGL OpenGL AGL QtSvg QtXml QtWebKit phonon QtDBus QtXmlPatterns)
10 namesQTadd=( QtWebKit phonon QtDBus QtXmlPatterns)
11 framework='@executable_path/../Frameworks/'
12 frameworkQT='.framework/Versions/4/'
13
14 #first we deploy
15 echo 'macdeployqt' $appName'.app'
16 eval 'macdeployqt' $appName'.app'
17
18 ##########################
19 #   LINKS IN EXECUTABLE  #
20 ##########################
21 # we start with changing the links in the executable
22 for name in ${names[@]}
23 do
24         echo 'install_name_tool -change lib/'$name'.2.3.dylib' $framework$name'.2.3.dylib' $myPath'MacOS/'$appName
25         eval 'install_name_tool -change lib/'$name'.2.3.dylib' $framework$name'.2.3.dylib' $myPath'MacOS/'$appName
26 #       echo 'install_name_tool -change '$opencvPath$name'.2.3.dylib' $framework$name'.2.3.dylib' $myPath'MacOS/'$appName
27 #       eval 'install_name_tool -change '$opencvPath$name'.2.3.dylib' $framework$name'.2.3.dylib' $myPath'MacOS/'$appName
28 done;
29 echo '\n'
30
31 ##########################
32 #      OPENCV FILES      #
33 ##########################
34 # then we copy the opencv library files
35 for name in ${names[@]}
36 do
37         echo 'cp '$opencvPath$name'.2.3.dylib ' $myPath'/Frameworks/'
38         eval 'cp '$opencvPath$name'.2.3.dylib ' $myPath'/Frameworks/'
39 done;
40 echo '\n'
41
42 # now we change the id on the libs we have copied inside the package
43 for name in ${names[@]}
44 do
45         echo 'install_name_tool -id '$framework$name'.2.3.dylib' $myPath'Frameworks/'$name'.2.3.dylib'
46         eval 'install_name_tool -id '$framework$name'.2.3.dylib' $myPath'Frameworks/'$name'.2.3.dylib'
47 done;
48 echo '\n'
49
50 # then we change the links in the libs we have copied inside the package
51 for name in ${names[@]}
52 do
53         for name2 in ${names[@]}
54         do
55                 echo 'install_name_tool -change '$opencvPath$name'.2.3.dylib' $framework$name'.2.3.dylib' $myPath'Frameworks/'$name2'.2.3.dylib'
56                 eval 'install_name_tool -change '$opencvPath$name'.2.3.dylib' $framework$name'.2.3.dylib' $myPath'Frameworks/'$name2'.2.3.dylib'
57         done;
58         echo '\n'
59 done;
60
61 # if highgui uses non-QT stuff
62 guiLibs=( libjpeg.8 libz.1 libpng14.14 libtiff.3 libjasper.1 libavcodec libavformat libavutil libswscale libbz2.1.0 libdirac_encoder.0 libdirac_decoder.0 libfaac.0 libfaad.2 libmp3lame.0 libschroedinger-1.0.0 libspeex.1 libtheoraenc.1 libtheoradec.1 libogg.0 libvorbisenc.2 libvorbis.0 libx264.98 liborc-0.4.0)
63 for name in ${guiLibs[@]}
64 do
65         echo 'cp /opt/local/lib/'$name'.dylib ' $myPath'/Frameworks/'
66         eval 'cp /opt/local/lib/'$name'.dylib ' $myPath'/Frameworks/'
67         echo 'install_name_tool -id '$framework$name'.dylib' $myPath'Frameworks/'$name'.dylib'
68         eval 'install_name_tool -id '$framework$name'.dylib' $myPath'Frameworks/'$name'.dylib'
69         echo 'install_name_tool -change /opt/local/lib/'$name'.dylib ' $framework$name'.dylib' $myPath'Frameworks/libopencv_highgui.2.3.dylib'
70         eval 'install_name_tool -change /opt/local/lib/'$name'.dylib ' $framework$name'.dylib' $myPath'Frameworks/libopencv_highgui.2.3.dylib'
71         for name2 in ${guiLibs[@]}
72         do
73                 echo 'install_name_tool -change /opt/local/lib/'$name2'.dylib ' $framework$name2'.dylib' $myPath'Frameworks/'$name'.dylib'
74                 eval 'install_name_tool -change /opt/local/lib/'$name2'.dylib ' $framework$name2'.dylib' $myPath'Frameworks/'$name'.dylib'
75         done;
76         echo '\n'
77 done;
78
79 #       /opt/local/lib/libjpeg.8.dylib (compatibility version 12.0.0, current version 12.0.0)
80 #       /opt/local/lib/libpng14.14.dylib (compatibility version 23.0.0, current version 23.0.0)
81 #       /opt/local/lib/libtiff.3.dylib (compatibility version 13.0.0, current version 13.5.0)
82 #       /opt/local/lib/libjasper.1.dylib (compatibility version 2.0.0, current version 2.0.0)
83 #       /opt/local/lib/libavcodec.dylib (compatibility version 52.0.0, current version 52.72.2)
84 #       /opt/local/lib/libavformat.dylib (compatibility version 52.0.0, current version 52.64.2)
85 #       /opt/local/lib/libavutil.dylib (compatibility version 50.0.0, current version 50.15.1)
86 #       /opt/local/lib/libswscale.dylib (compatibility version 1.0.0, current version 1.11.0)
87 #       /opt/local/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.6)
88 #       /opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
89 #       /opt/local/lib/libdirac_encoder.0.dylib (compatibility version 2.0.0, current version 2.0.0)
90 #       /opt/local/lib/libdirac_decoder.0.dylib (compatibility version 2.0.0, current version 2.0.0)
91 #       /opt/local/lib/libfaac.0.dylib (compatibility version 1.0.0, current version 1.0.0)
92 #       /opt/local/lib/libfaad.2.dylib (compatibility version 3.0.0, current version 3.0.0)
93 #       /opt/local/lib/libmp3lame.0.dylib (compatibility version 1.0.0, current version 1.0.0)
94 #       /opt/local/lib/libschroedinger-1.0.0.dylib (compatibility version 11.0.0, current version 11.0.0)
95 #       /opt/local/lib/libspeex.1.dylib (compatibility version 7.0.0, current version 7.0.0)
96 #       /opt/local/lib/libtheoraenc.1.dylib (compatibility version 3.0.0, current version 3.2.0)
97 #       /opt/local/lib/libtheoradec.1.dylib (compatibility version 3.0.0, current version 3.4.0)
98 #       /opt/local/lib/libogg.0.dylib (compatibility version 8.0.0, current version 8.1.0)
99 #       /opt/local/lib/libvorbisenc.2.dylib (compatibility version 3.0.0, current version 3.8.0)
100 #       /opt/local/lib/libvorbis.0.dylib (compatibility version 5.0.0, current version 5.5.0)
101 #       /opt/local/lib/libx264.98.dylib (compatibility version 0.0.0, current version 0.0.0)
102 #       /opt/local/lib/liborc-0.4.0.dylib (compatibility version 12.0.0, current version 12.0.0)
103
104
105 # if we built opencv using QT
106 for name in ${namesQT[@]}
107 do
108         for name2 in ${names[@]}
109         do
110                 echo 'install_name_tool -change '$name$frameworkQT$name $framework$name$frameworkQT$name $myPath'Frameworks/'$name2'.2.3.dylib'
111                 eval 'install_name_tool -change '$name$frameworkQT$name $framework$name$frameworkQT$name $myPath'Frameworks/'$name2'.2.3.dylib'
112         done;
113         echo '\n'
114 done;
115
116 ########################
117 #  QT FRAMEWORK FILES  #
118 ########################
119 # copy frameworks from namesQTadd to the package
120 # will need to create the folders Resources and Versions/4/ first
121 for name in ${namesQTadd[@]}
122 do
123                 echo 'mkdir '$myPath'Frameworks/'$name'.framework'
124                 eval 'mkdir '$myPath'Frameworks/'$name'.framework'
125                 echo 'mkdir '$myPath'Frameworks/'$name'.framework/Resources'
126                 eval 'mkdir '$myPath'Frameworks/'$name'.framework/Resources'
127                 echo 'mkdir '$myPath'Frameworks/'$name'.framework/Versions'
128                 eval 'mkdir '$myPath'Frameworks/'$name'.framework/Versions'
129                 echo 'mkdir '$myPath'Frameworks/'$name'.framework/Versions/4'
130                 eval 'mkdir '$myPath'Frameworks/'$name'.framework/Versions/4'
131                 echo 'cp /Library/Frameworks/'$name$frameworkQT$name $myPath'Frameworks/'$name$frameworkQT$name
132                 eval 'cp /Library/Frameworks/'$name$frameworkQT$name $myPath'Frameworks/'$name$frameworkQT$name
133 done;
134
135 for name in ${namesQT[@]}
136 do
137         for name2 in ${namesQTadd[@]}
138         do
139                 echo 'install_name_tool -change '$name$frameworkQT$name $framework$name$frameworkQT$name $myPath'Frameworks/'$name2$frameworkQT$name2
140                 eval 'install_name_tool -change '$name$frameworkQT$name $framework$name$frameworkQT$name $myPath'Frameworks/'$name2$frameworkQT$name2
141         done;
142         echo '\n'
143 done;
144
145
146 ##########################
147 #  LINKS TO THE PLUGINS  #
148 ##########################
149 # last we go through our plugins to change these guys as well
150 echo 'mkdir '$myPath'MacOS/plugins'
151 eval 'mkdir '$myPath'MacOS/plugins'
152 echo 'mkdir '$myPath'MacOS/help'
153 eval 'mkdir '$myPath'MacOS/help'
154 echo 'cp plugins/*.dylib '$myPath'MacOS/plugins/'
155 eval 'cp plugins/*.dylib '$myPath'MacOS/plugins/'
156 echo 'cp help/* '$myPath'MacOS/help/'
157 eval 'cp help/* '$myPath'MacOS/help/'
158
159 for filename in plugins/*.dylib
160 do
161         # copy the file in the proper folder
162         for name in ${names[@]}
163         do
164                 echo 'install_name_tool -change lib/'$name'.2.3.dylib' $framework$name'.2.3.dylib' $myPath'MacOS/'$filename
165                 eval 'install_name_tool -change lib/'$name'.2.3.dylib' $framework$name'.2.3.dylib' $myPath'MacOS/'$filename
166 #               echo 'install_name_tool -change '$opencvPath$name'.2.3.dylib' $framework$name'.2.3.dylib' $myPath'MacOS/'$filename
167 #               eval 'install_name_tool -change '$opencvPath$name'.2.3.dylib' $framework$name'.2.3.dylib' $myPath'MacOS/'$filename
168         done;
169         for name in ${namesQT[@]}
170         do
171                 echo 'install_name_tool -change '$qtPath$name$frameworkQT$name $framework$name$frameworkQT$name $myPath'MacOS/'$filename
172                 eval 'install_name_tool -change '$qtPath$name$frameworkQT$name $framework$name$frameworkQT$name $myPath'MacOS/'$filename
173         done;
174         echo '\n'
175 done;
176
177 #echo 'otool -L' $myPath'MacOS/'$appName
178 #eval 'otool -L' $myPath'MacOS/'$appName
179 #for filename in plugins/*.dylib
180 #do
181 #       echo 'otool -L' $myPath'Resources/'$filename
182 #       eval 'otool -L' $myPath'Resources/'$filename
183 #done;
184