Merge lp:~sergiusens/phablet-extras/qtmultimedia-opensource-src-touch-5.2 into lp:~phablet-team/phablet-extras/qtmultimedia-touch
- qtmultimedia-opensource-src-touch-5.2
- Merge into qtmultimedia-touch
Status: | Needs review |
---|---|
Proposed branch: | lp:~sergiusens/phablet-extras/qtmultimedia-opensource-src-touch-5.2 |
Merge into: | lp:~phablet-team/phablet-extras/qtmultimedia-touch |
Diff against target: |
1645 lines (+1343/-63) 10 files modified
debian/changelog (+14/-0) debian/control (+23/-21) debian/libqt5multimedia5-touch.postrm (+1/-1) debian/libqt5multimedia5-touch.preinst (+1/-1) debian/libqt5multimedia5-touch.symbols (+70/-35) debian/libqt5multimediaquick-p5-touch.postrm (+1/-1) debian/libqt5multimediaquick-p5-touch.preinst (+1/-1) debian/qtmultimedia5-touch-dev.install (+8/-3) debian/rules (+1/-0) debian/syncqt.pl (+1223/-0) |
To merge this branch: | bzr merge lp:~sergiusens/phablet-extras/qtmultimedia-opensource-src-touch-5.2 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Timo Jyrinki | Approve | ||
Ricardo Salveti | Pending | ||
Review via email: mp+208474@code.launchpad.net |
Commit message
* Updating for 5.2 migration:
- Depending on qt >= 5.2.1 for the ABI change
- Updating symbols (qreal in armhf)
- Adjusting diverts for 5.2.
- Fixing pri files to adapt to new paths
* Fixing qtdeclarative control file
* Updating standards to 3.9.5
* Adding syncqt.pl from qtbase-
during configure.
Description of the change
Don't push or merge until Qt 5.2 is ready
Timo Jyrinki (timo-jyrinki) wrote : | # |
Uploaded to the landing PPA: https:/
Unmerged revisions
- 93. By Sergio Schvezov
-
* Updating for 5.2 migration:
- Depending on qt >= 5.2.1 for the ABI change
- Updating symbols (qreal in armhf)
- Adjusting diverts for 5.2.
- Fixing pri files to adapt to new paths
* Fixing qtdeclarative control file
* Updating standards to 3.9.5
* Adding syncqt.pl from qtbase-opensource- src to sync headers and using in
during configure.
Preview Diff
1 | === modified file 'debian/changelog' | |||
2 | --- debian/changelog 2014-02-06 21:08:43 +0000 | |||
3 | +++ debian/changelog 2014-02-26 20:49:23 +0000 | |||
4 | @@ -1,3 +1,17 @@ | |||
5 | 1 | qtmultimedia-opensource-src-touch (5.1.1+git20131205+8230c02-0ubuntu4) UNRELEASED; urgency=medium | ||
6 | 2 | |||
7 | 3 | * Updating for 5.2 migration: | ||
8 | 4 | - Depending on qt >= 5.2.1 for the ABI change | ||
9 | 5 | - Updating symbols (qreal in armhf) | ||
10 | 6 | - Adjusting diverts for 5.2. | ||
11 | 7 | - Fixing pri files to adapt to new paths | ||
12 | 8 | * Fixing qtdeclarative control file | ||
13 | 9 | * Updating standards to 3.9.5 | ||
14 | 10 | * Adding syncqt.pl from qtbase-opensource-src to sync headers and using in | ||
15 | 11 | during configure. | ||
16 | 12 | |||
17 | 13 | -- Sergio Schvezov <sergio.schvezov@canonical.com> Wed, 26 Feb 2014 17:42:55 -0300 | ||
18 | 14 | |||
19 | 1 | qtmultimedia-opensource-src-touch (5.1.1+git20131205+8230c02-0ubuntu3) trusty; urgency=medium | 15 | qtmultimedia-opensource-src-touch (5.1.1+git20131205+8230c02-0ubuntu3) trusty; urgency=medium |
20 | 2 | 16 | ||
21 | 3 | * Fixing symbols table for libqgsttools-p1-touch. | 17 | * Fixing symbols table for libqgsttools-p1-touch. |
22 | 4 | 18 | ||
23 | === modified file 'debian/control' | |||
24 | --- debian/control 2013-10-02 23:44:09 +0000 | |||
25 | +++ debian/control 2014-02-26 20:49:23 +0000 | |||
26 | @@ -10,10 +10,10 @@ | |||
27 | 10 | Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>, | 10 | Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>, |
28 | 11 | Timo Jyrinki <timo@debian.org> | 11 | Timo Jyrinki <timo@debian.org> |
29 | 12 | Build-Depends: debhelper (>= 9.0.0), | 12 | Build-Depends: debhelper (>= 9.0.0), |
34 | 13 | qtbase5-dev (>= 5.0.2+dfsg1-6~), | 13 | qtbase5-dev (>= 5.2.1+dfsg~), |
35 | 14 | libqt5opengl5-dev (>= 5.0.2~), | 14 | libqt5opengl5-dev (>= 5.2.1+dfsg~), |
36 | 15 | qtbase5-private-dev (>= 5.0.2~), | 15 | qtbase5-private-dev (>= 5.2.1+dfsg~), |
37 | 16 | qtdeclarative5-private-dev (>= 5.0.2~), | 16 | qtdeclarative5-private-dev (>= 5.2.1~), |
38 | 17 | libasound2-dev [linux-any], | 17 | libasound2-dev [linux-any], |
39 | 18 | libpulse-dev, | 18 | libpulse-dev, |
40 | 19 | libgstreamer-plugins-base1.0-dev, | 19 | libgstreamer-plugins-base1.0-dev, |
41 | @@ -22,8 +22,8 @@ | |||
42 | 22 | zlib1g-dev, | 22 | zlib1g-dev, |
43 | 23 | pkg-kde-tools, | 23 | pkg-kde-tools, |
44 | 24 | Build-Depends-Indep: libqt5sql5-sqlite, | 24 | Build-Depends-Indep: libqt5sql5-sqlite, |
47 | 25 | qttools5-dev-tools (>= 5.0.2~) | 25 | qttools5-dev-tools (>= 5.2.1~) |
48 | 26 | Standards-Version: 3.9.4 | 26 | Standards-Version: 3.9.5 |
49 | 27 | Homepage: https://qt-project.org/ | 27 | Homepage: https://qt-project.org/ |
50 | 28 | Vcs-Git: git://github.com/jhodapp/qtmultimedia.git | 28 | Vcs-Git: git://github.com/jhodapp/qtmultimedia.git |
51 | 29 | Vcs-Browser: https://github.com/jhodapp/qtmultimedia | 29 | Vcs-Browser: https://github.com/jhodapp/qtmultimedia |
52 | @@ -148,21 +148,6 @@ | |||
53 | 148 | This package contains the development files needed to build Qt applications | 148 | This package contains the development files needed to build Qt applications |
54 | 149 | using Qt Multimedia libraries. | 149 | using Qt Multimedia libraries. |
55 | 150 | 150 | ||
56 | 151 | Package: qtmultimedia5-touch-private-dev | ||
57 | 152 | Architecture: any | ||
58 | 153 | Section: libdevel | ||
59 | 154 | Pre-Depends: dpkg (>= 1.15.6~) | ||
60 | 155 | Depends: qtmultimedia5-touch-dev (= ${binary:Version}), ${misc:Depends} | ||
61 | 156 | Conflicts: qtmultimedia5-private-dev | ||
62 | 157 | Description: APIs for multimedia functionality - private development files | ||
63 | 158 | Qt is a cross-platform C++ application framework. Qt's primary feature | ||
64 | 159 | is its rich set of widgets that provide standard GUI functionality. | ||
65 | 160 | . | ||
66 | 161 | This package contains the private header development files for building some | ||
67 | 162 | Qt 5 applications like Qt Creator QML Designer plugin. | ||
68 | 163 | . | ||
69 | 164 | Use at your own risk. | ||
70 | 165 | |||
71 | 166 | Package: qtmultimedia5-touch-dbg | 151 | Package: qtmultimedia5-touch-dbg |
72 | 167 | Architecture: any | 152 | Architecture: any |
73 | 168 | Multi-Arch: same | 153 | Multi-Arch: same |
74 | @@ -177,3 +162,20 @@ | |||
75 | 177 | . | 162 | . |
76 | 178 | This package contains the debugging symbols for the Qt 5 Multimedia | 163 | This package contains the debugging symbols for the Qt 5 Multimedia |
77 | 179 | libraries. | 164 | libraries. |
78 | 165 | |||
79 | 166 | Package: qtmultimedia5-touch-private-dev | ||
80 | 167 | Architecture: any | ||
81 | 168 | Section: libdevel | ||
82 | 169 | Pre-Depends: dpkg (>= 1.15.6~) | ||
83 | 170 | Depends: qtmultimedia5-touch-dev (= ${binary:Version}), ${misc:Depends} | ||
84 | 171 | Conflicts: qtmultimedia5-private-dev | ||
85 | 172 | Description: APIs for multimedia functionality - private development files | ||
86 | 173 | Qt is a cross-platform C++ application framework. Qt's primary feature | ||
87 | 174 | is its rich set of widgets that provide standard GUI functionality. | ||
88 | 175 | . | ||
89 | 176 | This package contains the private header development files for building some | ||
90 | 177 | Qt 5 applications like Qt Creator QML Designer plugin. | ||
91 | 178 | . | ||
92 | 179 | Use at your own risk. | ||
93 | 180 | |||
94 | 181 | |||
95 | 180 | 182 | ||
96 | === modified file 'debian/libqt5multimedia5-touch.postrm' | |||
97 | --- debian/libqt5multimedia5-touch.postrm 2013-09-20 20:15:35 +0000 | |||
98 | +++ debian/libqt5multimedia5-touch.postrm 2014-02-26 20:49:23 +0000 | |||
99 | @@ -2,7 +2,7 @@ | |||
100 | 2 | divert_dir="/var/lib/$pkg-diverted" | 2 | divert_dir="/var/lib/$pkg-diverted" |
101 | 3 | 3 | ||
102 | 4 | if [ remove = "$1" -o abort-install = "$1" -o disappear = "$1" -o purge = "$1" ]; then | 4 | if [ remove = "$1" -o abort-install = "$1" -o disappear = "$1" -o purge = "$1" ]; then |
104 | 5 | for version in 5.0.2 5.0 5; do | 5 | for version in 5.2.1 5.2 5; do |
105 | 6 | dpkg-divert --package "$pkg" --remove --rename \ | 6 | dpkg-divert --package "$pkg" --remove --rename \ |
106 | 7 | --divert \ | 7 | --divert \ |
107 | 8 | "$divert_dir"/libQt5Multimedia.so.$version.diverted-$pkg \ | 8 | "$divert_dir"/libQt5Multimedia.so.$version.diverted-$pkg \ |
108 | 9 | 9 | ||
109 | === modified file 'debian/libqt5multimedia5-touch.preinst' | |||
110 | --- debian/libqt5multimedia5-touch.preinst 2013-09-20 20:15:35 +0000 | |||
111 | +++ debian/libqt5multimedia5-touch.preinst 2014-02-26 20:49:23 +0000 | |||
112 | @@ -6,7 +6,7 @@ | |||
113 | 6 | mkdir -p "$divert_dir" | 6 | mkdir -p "$divert_dir" |
114 | 7 | fi | 7 | fi |
115 | 8 | 8 | ||
117 | 9 | for version in 5.0.2 5.0 5; do | 9 | for version in 5.2.1 5.2 5; do |
118 | 10 | dpkg-divert --package "$pkg" --add --rename \ | 10 | dpkg-divert --package "$pkg" --add --rename \ |
119 | 11 | --divert \ | 11 | --divert \ |
120 | 12 | "$divert_dir"/libQt5Multimedia.so.$version.diverted-$pkg \ | 12 | "$divert_dir"/libQt5Multimedia.so.$version.diverted-$pkg \ |
121 | 13 | 13 | ||
122 | === modified file 'debian/libqt5multimedia5-touch.symbols' | |||
123 | --- debian/libqt5multimedia5-touch.symbols 2013-09-20 08:12:11 +0000 | |||
124 | +++ debian/libqt5multimedia5-touch.symbols 2014-02-26 20:49:23 +0000 | |||
125 | @@ -30,7 +30,8 @@ | |||
126 | 30 | _ZN11QAudioInput6notifyEv@Base 5.0.2 | 30 | _ZN11QAudioInput6notifyEv@Base 5.0.2 |
127 | 31 | _ZN11QAudioInput6resumeEv@Base 5.0.2 | 31 | _ZN11QAudioInput6resumeEv@Base 5.0.2 |
128 | 32 | _ZN11QAudioInput7suspendEv@Base 5.0.2 | 32 | _ZN11QAudioInput7suspendEv@Base 5.0.2 |
130 | 33 | (subst)_ZN11QAudioInput9setVolumeE{qreal}@Base 5.0.2 | 33 | _ZN11QAudioInput9setVolumeEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
131 | 34 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN11QAudioInput9setVolumeE{qreal}@Base 5.0.2 | ||
132 | 34 | _ZN11QAudioInputC1ERK12QAudioFormatP7QObject@Base 5.0.2 | 35 | _ZN11QAudioInputC1ERK12QAudioFormatP7QObject@Base 5.0.2 |
133 | 35 | _ZN11QAudioInputC1ERK16QAudioDeviceInfoRK12QAudioFormatP7QObject@Base 5.0.2 | 36 | _ZN11QAudioInputC1ERK16QAudioDeviceInfoRK12QAudioFormatP7QObject@Base 5.0.2 |
134 | 36 | _ZN11QAudioInputC2ERK12QAudioFormatP7QObject@Base 5.0.2 | 37 | _ZN11QAudioInputC2ERK12QAudioFormatP7QObject@Base 5.0.2 |
135 | @@ -155,7 +156,8 @@ | |||
136 | 155 | _ZN12QAudioOutput6notifyEv@Base 5.0.2 | 156 | _ZN12QAudioOutput6notifyEv@Base 5.0.2 |
137 | 156 | _ZN12QAudioOutput6resumeEv@Base 5.0.2 | 157 | _ZN12QAudioOutput6resumeEv@Base 5.0.2 |
138 | 157 | _ZN12QAudioOutput7suspendEv@Base 5.0.2 | 158 | _ZN12QAudioOutput7suspendEv@Base 5.0.2 |
140 | 158 | (subst)_ZN12QAudioOutput9setVolumeE{qreal}@Base 5.0.2 | 159 | _ZN12QAudioOutput9setVolumeEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
141 | 160 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN12QAudioOutput9setVolumeE{qreal}@Base 5.0.2 | ||
142 | 159 | _ZN12QAudioOutputC1ERK12QAudioFormatP7QObject@Base 5.0.2 | 161 | _ZN12QAudioOutputC1ERK12QAudioFormatP7QObject@Base 5.0.2 |
143 | 160 | _ZN12QAudioOutputC1ERK16QAudioDeviceInfoRK12QAudioFormatP7QObject@Base 5.0.2 | 162 | _ZN12QAudioOutputC1ERK16QAudioDeviceInfoRK12QAudioFormatP7QObject@Base 5.0.2 |
144 | 161 | _ZN12QAudioOutputC2ERK12QAudioFormatP7QObject@Base 5.0.2 | 163 | _ZN12QAudioOutputC2ERK12QAudioFormatP7QObject@Base 5.0.2 |
145 | @@ -169,12 +171,17 @@ | |||
146 | 169 | _ZN12QCameraFocus16staticMetaObjectE@Base 5.0.2 | 171 | _ZN12QCameraFocus16staticMetaObjectE@Base 5.0.2 |
147 | 170 | _ZN12QCameraFocus17focusZonesChangedEv@Base 5.0.2 | 172 | _ZN12QCameraFocus17focusZonesChangedEv@Base 5.0.2 |
148 | 171 | _ZN12QCameraFocus17setFocusPointModeENS_14FocusPointModeE@Base 5.0.2 | 173 | _ZN12QCameraFocus17setFocusPointModeENS_14FocusPointModeE@Base 5.0.2 |
151 | 172 | (subst)_ZN12QCameraFocus18digitalZoomChangedE{qreal}@Base 5.0.2 | 174 | _ZN12QCameraFocus18digitalZoomChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
152 | 173 | (subst)_ZN12QCameraFocus18opticalZoomChangedE{qreal}@Base 5.0.2 | 175 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN12QCameraFocus18digitalZoomChangedE{qreal}@Base 5.0.2 |
153 | 176 | _ZN12QCameraFocus18opticalZoomChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 | ||
154 | 177 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN12QCameraFocus18opticalZoomChangedE{qreal}@Base 5.0.2 | ||
155 | 174 | _ZN12QCameraFocus19setCustomFocusPointERK7QPointF@Base 5.0.2 | 178 | _ZN12QCameraFocus19setCustomFocusPointERK7QPointF@Base 5.0.2 |
159 | 175 | (subst)_ZN12QCameraFocus25maximumDigitalZoomChangedE{qreal}@Base 5.0.2 | 179 | _ZN12QCameraFocus25maximumDigitalZoomChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
160 | 176 | (subst)_ZN12QCameraFocus25maximumOpticalZoomChangedE{qreal}@Base 5.0.2 | 180 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN12QCameraFocus25maximumDigitalZoomChangedE{qreal}@Base 5.0.2 |
161 | 177 | (subst)_ZN12QCameraFocus6zoomToE{qreal}{qreal}@Base 5.0.2 | 181 | _ZN12QCameraFocus25maximumOpticalZoomChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
162 | 182 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN12QCameraFocus25maximumOpticalZoomChangedE{qreal}@Base 5.0.2 | ||
163 | 183 | _ZN12QCameraFocus6zoomToEdd@Base 5.1.1+git20131205+8230c02-0ubuntu7 | ||
164 | 184 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN12QCameraFocus6zoomToE{qreal}{qreal}@Base 5.0.2 | ||
165 | 178 | _ZN12QCameraFocusC1EP7QCamera@Base 5.0.2 | 185 | _ZN12QCameraFocusC1EP7QCamera@Base 5.0.2 |
166 | 179 | _ZN12QCameraFocusC2EP7QCamera@Base 5.0.2 | 186 | _ZN12QCameraFocusC2EP7QCamera@Base 5.0.2 |
167 | 180 | _ZN12QCameraFocusD0Ev@Base 5.0.2 | 187 | _ZN12QCameraFocusD0Ev@Base 5.0.2 |
168 | @@ -217,13 +224,15 @@ | |||
169 | 217 | _ZN12QMediaPlayer15durationChangedEx@Base 5.0.2 | 224 | _ZN12QMediaPlayer15durationChangedEx@Base 5.0.2 |
170 | 218 | _ZN12QMediaPlayer15positionChangedEx@Base 5.0.2 | 225 | _ZN12QMediaPlayer15positionChangedEx@Base 5.0.2 |
171 | 219 | _ZN12QMediaPlayer15seekableChangedEb@Base 5.0.2 | 226 | _ZN12QMediaPlayer15seekableChangedEb@Base 5.0.2 |
173 | 220 | (subst)_ZN12QMediaPlayer15setPlaybackRateE{qreal}@Base 5.0.2 | 227 | _ZN12QMediaPlayer15setPlaybackRateEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
174 | 228 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN12QMediaPlayer15setPlaybackRateE{qreal}@Base 5.0.2 | ||
175 | 221 | _ZN12QMediaPlayer16staticMetaObjectE@Base 5.0.2 | 229 | _ZN12QMediaPlayer16staticMetaObjectE@Base 5.0.2 |
176 | 222 | _ZN12QMediaPlayer18mediaStatusChangedENS_11MediaStatusE@Base 5.0.2 | 230 | _ZN12QMediaPlayer18mediaStatusChangedENS_11MediaStatusE@Base 5.0.2 |
177 | 223 | _ZN12QMediaPlayer18supportedMimeTypesE6QFlagsINS_4FlagEE@Base 5.0.2 | 231 | _ZN12QMediaPlayer18supportedMimeTypesE6QFlagsINS_4FlagEE@Base 5.0.2 |
178 | 224 | _ZN12QMediaPlayer19bufferStatusChangedEi@Base 5.0.2 | 232 | _ZN12QMediaPlayer19bufferStatusChangedEi@Base 5.0.2 |
179 | 225 | _ZN12QMediaPlayer19currentMediaChangedERK13QMediaContent@Base 5.0.2 | 233 | _ZN12QMediaPlayer19currentMediaChangedERK13QMediaContent@Base 5.0.2 |
181 | 226 | (subst)_ZN12QMediaPlayer19playbackRateChangedE{qreal}@Base 5.0.2 | 234 | _ZN12QMediaPlayer19playbackRateChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
182 | 235 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN12QMediaPlayer19playbackRateChangedE{qreal}@Base 5.0.2 | ||
183 | 227 | _ZN12QMediaPlayer21audioAvailableChangedEb@Base 5.0.2 | 236 | _ZN12QMediaPlayer21audioAvailableChangedEb@Base 5.0.2 |
184 | 228 | _ZN12QMediaPlayer21videoAvailableChangedEb@Base 5.0.2 | 237 | _ZN12QMediaPlayer21videoAvailableChangedEb@Base 5.0.2 |
185 | 229 | _ZN12QMediaPlayer24setNetworkConfigurationsERK5QListI21QNetworkConfigurationE@Base 5.0.2 | 238 | _ZN12QMediaPlayer24setNetworkConfigurationsERK5QListI21QNetworkConfigurationE@Base 5.0.2 |
186 | @@ -278,7 +287,8 @@ | |||
187 | 278 | _ZN12QSoundEffect4stopEv@Base 5.0.2 | 287 | _ZN12QSoundEffect4stopEv@Base 5.0.2 |
188 | 279 | _ZN12QSoundEffect8setMutedEb@Base 5.0.2 | 288 | _ZN12QSoundEffect8setMutedEb@Base 5.0.2 |
189 | 280 | _ZN12QSoundEffect9setSourceERK4QUrl@Base 5.0.2 | 289 | _ZN12QSoundEffect9setSourceERK4QUrl@Base 5.0.2 |
191 | 281 | (subst)_ZN12QSoundEffect9setVolumeE{qreal}@Base 5.0.2 | 290 | _ZN12QSoundEffect9setVolumeEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
192 | 291 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN12QSoundEffect9setVolumeE{qreal}@Base 5.0.2 | ||
193 | 282 | _ZN12QSoundEffectC1EP7QObject@Base 5.0.2 | 292 | _ZN12QSoundEffectC1EP7QObject@Base 5.0.2 |
194 | 283 | _ZN12QSoundEffectC2EP7QObject@Base 5.0.2 | 293 | _ZN12QSoundEffectC2EP7QObject@Base 5.0.2 |
195 | 284 | _ZN12QSoundEffectD0Ev@Base 5.0.2 | 294 | _ZN12QSoundEffectD0Ev@Base 5.0.2 |
196 | @@ -502,7 +512,8 @@ | |||
197 | 502 | _ZN14QMediaRecorder12mutedChangedEb@Base 5.0.2 | 512 | _ZN14QMediaRecorder12mutedChangedEb@Base 5.0.2 |
198 | 503 | _ZN14QMediaRecorder12stateChangedENS_5StateE@Base 5.0.2 | 513 | _ZN14QMediaRecorder12stateChangedENS_5StateE@Base 5.0.2 |
199 | 504 | _ZN14QMediaRecorder13statusChangedENS_6StatusE@Base 5.0.2 | 514 | _ZN14QMediaRecorder13statusChangedENS_6StatusE@Base 5.0.2 |
201 | 505 | (subst)_ZN14QMediaRecorder13volumeChangedE{qreal}@Base 5.0.2 | 515 | _ZN14QMediaRecorder13volumeChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
202 | 516 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN14QMediaRecorder13volumeChangedE{qreal}@Base 5.0.2 | ||
203 | 506 | _ZN14QMediaRecorder14setMediaObjectEP12QMediaObject@Base 5.0.2 | 517 | _ZN14QMediaRecorder14setMediaObjectEP12QMediaObject@Base 5.0.2 |
204 | 507 | _ZN14QMediaRecorder15durationChangedEx@Base 5.0.2 | 518 | _ZN14QMediaRecorder15durationChangedEx@Base 5.0.2 |
205 | 508 | _ZN14QMediaRecorder15metaDataChangedERK7QStringRK8QVariant@Base 5.0.2 | 519 | _ZN14QMediaRecorder15metaDataChangedERK7QStringRK8QVariant@Base 5.0.2 |
206 | @@ -523,7 +534,8 @@ | |||
207 | 523 | _ZN14QMediaRecorder5pauseEv@Base 5.0.2 | 534 | _ZN14QMediaRecorder5pauseEv@Base 5.0.2 |
208 | 524 | _ZN14QMediaRecorder6recordEv@Base 5.0.2 | 535 | _ZN14QMediaRecorder6recordEv@Base 5.0.2 |
209 | 525 | _ZN14QMediaRecorder8setMutedEb@Base 5.0.2 | 536 | _ZN14QMediaRecorder8setMutedEb@Base 5.0.2 |
211 | 526 | (subst)_ZN14QMediaRecorder9setVolumeE{qreal}@Base 5.0.2 | 537 | _ZN14QMediaRecorder9setVolumeEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
212 | 538 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN14QMediaRecorder9setVolumeE{qreal}@Base 5.0.2 | ||
213 | 527 | _ZN14QMediaRecorderC1EP12QMediaObjectP7QObject@Base 5.0.2 | 539 | _ZN14QMediaRecorderC1EP12QMediaObjectP7QObject@Base 5.0.2 |
214 | 528 | _ZN14QMediaRecorderC1ER21QMediaRecorderPrivateP12QMediaObjectP7QObject@Base 5.0.2 | 540 | _ZN14QMediaRecorderC1ER21QMediaRecorderPrivateP12QMediaObjectP7QObject@Base 5.0.2 |
215 | 529 | _ZN14QMediaRecorderC2EP12QMediaObjectP7QObject@Base 5.0.2 | 541 | _ZN14QMediaRecorderC2EP12QMediaObjectP7QObject@Base 5.0.2 |
216 | @@ -556,23 +568,29 @@ | |||
217 | 556 | _ZN15QCameraExposure11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.0.2 | 568 | _ZN15QCameraExposure11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.0.2 |
218 | 557 | _ZN15QCameraExposure11qt_metacastEPKc@Base 5.0.2 | 569 | _ZN15QCameraExposure11qt_metacastEPKc@Base 5.0.2 |
219 | 558 | _ZN15QCameraExposure12setFlashModeE6QFlagsINS_9FlashModeEE@Base 5.0.2 | 570 | _ZN15QCameraExposure12setFlashModeE6QFlagsINS_9FlashModeEE@Base 5.0.2 |
221 | 559 | (subst)_ZN15QCameraExposure15apertureChangedE{qreal}@Base 5.0.2 | 571 | _ZN15QCameraExposure15apertureChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
222 | 572 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN15QCameraExposure15apertureChangedE{qreal}@Base 5.0.2 | ||
223 | 560 | _ZN15QCameraExposure15setAutoApertureEv@Base 5.0.2 | 573 | _ZN15QCameraExposure15setAutoApertureEv@Base 5.0.2 |
224 | 561 | _ZN15QCameraExposure15setExposureModeENS_12ExposureModeE@Base 5.0.2 | 574 | _ZN15QCameraExposure15setExposureModeENS_12ExposureModeE@Base 5.0.2 |
225 | 562 | _ZN15QCameraExposure15setMeteringModeENS_12MeteringModeE@Base 5.0.2 | 575 | _ZN15QCameraExposure15setMeteringModeENS_12MeteringModeE@Base 5.0.2 |
226 | 563 | _ZN15QCameraExposure16staticMetaObjectE@Base 5.0.2 | 576 | _ZN15QCameraExposure16staticMetaObjectE@Base 5.0.2 |
228 | 564 | (subst)_ZN15QCameraExposure17setManualApertureE{qreal}@Base 5.0.2 | 577 | _ZN15QCameraExposure17setManualApertureEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
229 | 578 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN15QCameraExposure17setManualApertureE{qreal}@Base 5.0.2 | ||
230 | 565 | _ZN15QCameraExposure19setAutoShutterSpeedEv@Base 5.0.2 | 579 | _ZN15QCameraExposure19setAutoShutterSpeedEv@Base 5.0.2 |
232 | 566 | (subst)_ZN15QCameraExposure19shutterSpeedChangedE{qreal}@Base 5.0.2 | 580 | _ZN15QCameraExposure19shutterSpeedChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
233 | 581 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN15QCameraExposure19shutterSpeedChangedE{qreal}@Base 5.0.2 | ||
234 | 567 | _ZN15QCameraExposure20apertureRangeChangedEv@Base 5.0.2 | 582 | _ZN15QCameraExposure20apertureRangeChangedEv@Base 5.0.2 |
235 | 568 | _ZN15QCameraExposure20setSpotMeteringPointERK7QPointF@Base 5.0.2 | 583 | _ZN15QCameraExposure20setSpotMeteringPointERK7QPointF@Base 5.0.2 |
236 | 569 | _ZN15QCameraExposure21isoSensitivityChangedEi@Base 5.0.2 | 584 | _ZN15QCameraExposure21isoSensitivityChangedEi@Base 5.0.2 |
237 | 570 | _ZN15QCameraExposure21setAutoIsoSensitivityEv@Base 5.0.2 | 585 | _ZN15QCameraExposure21setAutoIsoSensitivityEv@Base 5.0.2 |
240 | 571 | (subst)_ZN15QCameraExposure21setManualShutterSpeedE{qreal}@Base 5.0.2 | 586 | _ZN15QCameraExposure21setManualShutterSpeedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
241 | 572 | (subst)_ZN15QCameraExposure23setExposureCompensationE{qreal}@Base 5.0.2 | 587 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN15QCameraExposure21setManualShutterSpeedE{qreal}@Base 5.0.2 |
242 | 588 | _ZN15QCameraExposure23setExposureCompensationEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 | ||
243 | 589 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN15QCameraExposure23setExposureCompensationE{qreal}@Base 5.0.2 | ||
244 | 573 | _ZN15QCameraExposure23setManualIsoSensitivityEi@Base 5.0.2 | 590 | _ZN15QCameraExposure23setManualIsoSensitivityEi@Base 5.0.2 |
245 | 574 | _ZN15QCameraExposure24shutterSpeedRangeChangedEv@Base 5.0.2 | 591 | _ZN15QCameraExposure24shutterSpeedRangeChangedEv@Base 5.0.2 |
247 | 575 | (subst)_ZN15QCameraExposure27exposureCompensationChangedE{qreal}@Base 5.0.2 | 592 | _ZN15QCameraExposure27exposureCompensationChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
248 | 593 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN15QCameraExposure27exposureCompensationChangedE{qreal}@Base 5.0.2 | ||
249 | 576 | _ZN15QCameraExposureC1EP7QCamera@Base 5.0.2 | 594 | _ZN15QCameraExposureC1EP7QCamera@Base 5.0.2 |
250 | 577 | _ZN15QCameraExposureC2EP7QCamera@Base 5.0.2 | 595 | _ZN15QCameraExposureC2EP7QCamera@Base 5.0.2 |
251 | 578 | _ZN15QCameraExposureD0Ev@Base 5.0.2 | 596 | _ZN15QCameraExposureD0Ev@Base 5.0.2 |
252 | @@ -656,12 +674,18 @@ | |||
253 | 656 | _ZN18QCameraZoomControl11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.0.2 | 674 | _ZN18QCameraZoomControl11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.0.2 |
254 | 657 | _ZN18QCameraZoomControl11qt_metacastEPKc@Base 5.0.2 | 675 | _ZN18QCameraZoomControl11qt_metacastEPKc@Base 5.0.2 |
255 | 658 | _ZN18QCameraZoomControl16staticMetaObjectE@Base 5.0.2 | 676 | _ZN18QCameraZoomControl16staticMetaObjectE@Base 5.0.2 |
262 | 659 | (subst)_ZN18QCameraZoomControl25currentDigitalZoomChangedE{qreal}@Base 5.0.2 | 677 | _ZN18QCameraZoomControl25currentDigitalZoomChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
263 | 660 | (subst)_ZN18QCameraZoomControl25currentOpticalZoomChangedE{qreal}@Base 5.0.2 | 678 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN18QCameraZoomControl25currentDigitalZoomChangedE{qreal}@Base 5.0.2 |
264 | 661 | (subst)_ZN18QCameraZoomControl25maximumDigitalZoomChangedE{qreal}@Base 5.0.2 | 679 | _ZN18QCameraZoomControl25currentOpticalZoomChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
265 | 662 | (subst)_ZN18QCameraZoomControl25maximumOpticalZoomChangedE{qreal}@Base 5.0.2 | 680 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN18QCameraZoomControl25currentOpticalZoomChangedE{qreal}@Base 5.0.2 |
266 | 663 | (subst)_ZN18QCameraZoomControl27requestedDigitalZoomChangedE{qreal}@Base 5.0.2 | 681 | _ZN18QCameraZoomControl25maximumDigitalZoomChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
267 | 664 | (subst)_ZN18QCameraZoomControl27requestedOpticalZoomChangedE{qreal}@Base 5.0.2 | 682 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN18QCameraZoomControl25maximumDigitalZoomChangedE{qreal}@Base 5.0.2 |
268 | 683 | _ZN18QCameraZoomControl25maximumOpticalZoomChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 | ||
269 | 684 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN18QCameraZoomControl25maximumOpticalZoomChangedE{qreal}@Base 5.0.2 | ||
270 | 685 | _ZN18QCameraZoomControl27requestedDigitalZoomChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 | ||
271 | 686 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN18QCameraZoomControl27requestedDigitalZoomChangedE{qreal}@Base 5.0.2 | ||
272 | 687 | _ZN18QCameraZoomControl27requestedOpticalZoomChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 | ||
273 | 688 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN18QCameraZoomControl27requestedOpticalZoomChangedE{qreal}@Base 5.0.2 | ||
274 | 665 | _ZN18QCameraZoomControlC1EP7QObject@Base 5.0.2 | 689 | _ZN18QCameraZoomControlC1EP7QObject@Base 5.0.2 |
275 | 666 | _ZN18QCameraZoomControlC2EP7QObject@Base 5.0.2 | 690 | _ZN18QCameraZoomControlC2EP7QObject@Base 5.0.2 |
276 | 667 | _ZN18QCameraZoomControlD0Ev@Base 5.0.2 | 691 | _ZN18QCameraZoomControlD0Ev@Base 5.0.2 |
277 | @@ -780,7 +804,8 @@ | |||
278 | 780 | _ZN19QMediaPlayerControl16staticMetaObjectE@Base 5.0.2 | 804 | _ZN19QMediaPlayerControl16staticMetaObjectE@Base 5.0.2 |
279 | 781 | _ZN19QMediaPlayerControl18mediaStatusChangedEN12QMediaPlayer11MediaStatusE@Base 5.0.2 | 805 | _ZN19QMediaPlayerControl18mediaStatusChangedEN12QMediaPlayer11MediaStatusE@Base 5.0.2 |
280 | 782 | _ZN19QMediaPlayerControl19bufferStatusChangedEi@Base 5.0.2 | 806 | _ZN19QMediaPlayerControl19bufferStatusChangedEi@Base 5.0.2 |
282 | 783 | (subst)_ZN19QMediaPlayerControl19playbackRateChangedE{qreal}@Base 5.0.2 | 807 | _ZN19QMediaPlayerControl19playbackRateChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
283 | 808 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN19QMediaPlayerControl19playbackRateChangedE{qreal}@Base 5.0.2 | ||
284 | 784 | _ZN19QMediaPlayerControl21audioAvailableChangedEb@Base 5.0.2 | 809 | _ZN19QMediaPlayerControl21audioAvailableChangedEb@Base 5.0.2 |
285 | 785 | _ZN19QMediaPlayerControl21videoAvailableChangedEb@Base 5.0.2 | 810 | _ZN19QMediaPlayerControl21videoAvailableChangedEb@Base 5.0.2 |
286 | 786 | _ZN19QMediaPlayerControl30availablePlaybackRangesChangedERK15QMediaTimeRange@Base 5.0.2 | 811 | _ZN19QMediaPlayerControl30availablePlaybackRangesChangedERK15QMediaTimeRange@Base 5.0.2 |
287 | @@ -806,7 +831,8 @@ | |||
288 | 806 | _ZN19QPlaylistFileParserD2Ev@Base 5.0.2 | 831 | _ZN19QPlaylistFileParserD2Ev@Base 5.0.2 |
289 | 807 | _ZN19QVideoSurfaceFormat11setPropertyEPKcRK8QVariant@Base 5.0.2 | 832 | _ZN19QVideoSurfaceFormat11setPropertyEPKcRK8QVariant@Base 5.0.2 |
290 | 808 | _ZN19QVideoSurfaceFormat11setViewportERK5QRect@Base 5.0.2 | 833 | _ZN19QVideoSurfaceFormat11setViewportERK5QRect@Base 5.0.2 |
292 | 809 | (subst)_ZN19QVideoSurfaceFormat12setFrameRateE{qreal}@Base 5.0.2 | 834 | _ZN19QVideoSurfaceFormat12setFrameRateEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
293 | 835 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN19QVideoSurfaceFormat12setFrameRateE{qreal}@Base 5.0.2 | ||
294 | 810 | _ZN19QVideoSurfaceFormat12setFrameSizeERK5QSize@Base 5.0.2 | 836 | _ZN19QVideoSurfaceFormat12setFrameSizeERK5QSize@Base 5.0.2 |
295 | 811 | _ZN19QVideoSurfaceFormat12setFrameSizeEii@Base 5.0.2 | 837 | _ZN19QVideoSurfaceFormat12setFrameSizeEii@Base 5.0.2 |
296 | 812 | _ZN19QVideoSurfaceFormat18setYCbCrColorSpaceENS_15YCbCrColorSpaceE@Base 5.0.2 | 838 | _ZN19QVideoSurfaceFormat18setYCbCrColorSpaceENS_15YCbCrColorSpaceE@Base 5.0.2 |
297 | @@ -870,7 +896,8 @@ | |||
298 | 870 | _ZN20QAudioDecoderControlD0Ev@Base 5.0.2 | 896 | _ZN20QAudioDecoderControlD0Ev@Base 5.0.2 |
299 | 871 | _ZN20QAudioDecoderControlD1Ev@Base 5.0.2 | 897 | _ZN20QAudioDecoderControlD1Ev@Base 5.0.2 |
300 | 872 | _ZN20QAudioDecoderControlD2Ev@Base 5.0.2 | 898 | _ZN20QAudioDecoderControlD2Ev@Base 5.0.2 |
302 | 873 | (subst)_ZN20QAudioHelperInternal16qMultiplySamplesE{qreal}RK12QAudioFormatPKvPvi@Base 5.0.2 | 899 | _ZN20QAudioHelperInternal16qMultiplySamplesEdRK12QAudioFormatPKvPvi@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
303 | 900 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN20QAudioHelperInternal16qMultiplySamplesE{qreal}RK12QAudioFormatPKvPvi@Base 5.0.2 | ||
304 | 874 | _ZN20QImageEncoderControl11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.0.2 | 901 | _ZN20QImageEncoderControl11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.0.2 |
305 | 875 | _ZN20QImageEncoderControl11qt_metacastEPKc@Base 5.0.2 | 902 | _ZN20QImageEncoderControl11qt_metacastEPKc@Base 5.0.2 |
306 | 876 | _ZN20QImageEncoderControl16staticMetaObjectE@Base 5.0.2 | 903 | _ZN20QImageEncoderControl16staticMetaObjectE@Base 5.0.2 |
307 | @@ -958,7 +985,8 @@ | |||
308 | 958 | _ZN21QMediaRecorderControl12mutedChangedEb@Base 5.0.2 | 985 | _ZN21QMediaRecorderControl12mutedChangedEb@Base 5.0.2 |
309 | 959 | _ZN21QMediaRecorderControl12stateChangedEN14QMediaRecorder5StateE@Base 5.0.2 | 986 | _ZN21QMediaRecorderControl12stateChangedEN14QMediaRecorder5StateE@Base 5.0.2 |
310 | 960 | _ZN21QMediaRecorderControl13statusChangedEN14QMediaRecorder6StatusE@Base 5.0.2 | 987 | _ZN21QMediaRecorderControl13statusChangedEN14QMediaRecorder6StatusE@Base 5.0.2 |
312 | 961 | (subst)_ZN21QMediaRecorderControl13volumeChangedE{qreal}@Base 5.0.2 | 988 | _ZN21QMediaRecorderControl13volumeChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
313 | 989 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN21QMediaRecorderControl13volumeChangedE{qreal}@Base 5.0.2 | ||
314 | 962 | _ZN21QMediaRecorderControl15durationChangedEx@Base 5.0.2 | 990 | _ZN21QMediaRecorderControl15durationChangedEx@Base 5.0.2 |
315 | 963 | _ZN21QMediaRecorderControl16staticMetaObjectE@Base 5.0.2 | 991 | _ZN21QMediaRecorderControl16staticMetaObjectE@Base 5.0.2 |
316 | 964 | _ZN21QMediaRecorderControl21actualLocationChangedERK4QUrl@Base 5.0.2 | 992 | _ZN21QMediaRecorderControl21actualLocationChangedERK4QUrl@Base 5.0.2 |
317 | @@ -979,7 +1007,8 @@ | |||
318 | 979 | _ZN21QMediaServiceProviderD2Ev@Base 5.0.2 | 1007 | _ZN21QMediaServiceProviderD2Ev@Base 5.0.2 |
319 | 980 | _ZN21QVideoEncoderSettings10setBitRateEi@Base 5.0.2 | 1008 | _ZN21QVideoEncoderSettings10setBitRateEi@Base 5.0.2 |
320 | 981 | _ZN21QVideoEncoderSettings10setQualityEN11QMultimedia15EncodingQualityE@Base 5.0.2 | 1009 | _ZN21QVideoEncoderSettings10setQualityEN11QMultimedia15EncodingQualityE@Base 5.0.2 |
322 | 982 | (subst)_ZN21QVideoEncoderSettings12setFrameRateE{qreal}@Base 5.0.2 | 1010 | _ZN21QVideoEncoderSettings12setFrameRateEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
323 | 1011 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN21QVideoEncoderSettings12setFrameRateE{qreal}@Base 5.0.2 | ||
324 | 983 | _ZN21QVideoEncoderSettings13setResolutionERK5QSize@Base 5.0.2 | 1012 | _ZN21QVideoEncoderSettings13setResolutionERK5QSize@Base 5.0.2 |
325 | 984 | _ZN21QVideoEncoderSettings13setResolutionEii@Base 5.0.2 | 1013 | _ZN21QVideoEncoderSettings13setResolutionEii@Base 5.0.2 |
326 | 985 | _ZN21QVideoEncoderSettings15setEncodingModeEN11QMultimedia12EncodingModeE@Base 5.0.2 | 1014 | _ZN21QVideoEncoderSettings15setEncodingModeEN11QMultimedia12EncodingModeE@Base 5.0.2 |
327 | @@ -1022,13 +1051,18 @@ | |||
328 | 1022 | _ZN22QCameraFeedbackControlD2Ev@Base 5.0.2 | 1051 | _ZN22QCameraFeedbackControlD2Ev@Base 5.0.2 |
329 | 1023 | _ZN22QCameraImageProcessing11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.0.2 | 1052 | _ZN22QCameraImageProcessing11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.0.2 |
330 | 1024 | _ZN22QCameraImageProcessing11qt_metacastEPKc@Base 5.0.2 | 1053 | _ZN22QCameraImageProcessing11qt_metacastEPKc@Base 5.0.2 |
333 | 1025 | (subst)_ZN22QCameraImageProcessing11setContrastE{qreal}@Base 5.0.2 | 1054 | _ZN22QCameraImageProcessing11setContrastEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
334 | 1026 | (subst)_ZN22QCameraImageProcessing13setSaturationE{qreal}@Base 5.0.2 | 1055 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN22QCameraImageProcessing11setContrastE{qreal}@Base 5.0.2 |
335 | 1056 | _ZN22QCameraImageProcessing13setSaturationEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 | ||
336 | 1057 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN22QCameraImageProcessing13setSaturationE{qreal}@Base 5.0.2 | ||
337 | 1027 | _ZN22QCameraImageProcessing16staticMetaObjectE@Base 5.0.2 | 1058 | _ZN22QCameraImageProcessing16staticMetaObjectE@Base 5.0.2 |
340 | 1028 | (subst)_ZN22QCameraImageProcessing17setDenoisingLevelE{qreal}@Base 5.0.2 | 1059 | _ZN22QCameraImageProcessing17setDenoisingLevelEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
341 | 1029 | (subst)_ZN22QCameraImageProcessing18setSharpeningLevelE{qreal}@Base 5.0.2 | 1060 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN22QCameraImageProcessing17setDenoisingLevelE{qreal}@Base 5.0.2 |
342 | 1061 | _ZN22QCameraImageProcessing18setSharpeningLevelEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 | ||
343 | 1062 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN22QCameraImageProcessing18setSharpeningLevelE{qreal}@Base 5.0.2 | ||
344 | 1030 | _ZN22QCameraImageProcessing19setWhiteBalanceModeENS_16WhiteBalanceModeE@Base 5.0.2 | 1063 | _ZN22QCameraImageProcessing19setWhiteBalanceModeENS_16WhiteBalanceModeE@Base 5.0.2 |
346 | 1031 | (subst)_ZN22QCameraImageProcessing21setManualWhiteBalanceE{qreal}@Base 5.0.2 | 1064 | _ZN22QCameraImageProcessing21setManualWhiteBalanceEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
347 | 1065 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN22QCameraImageProcessing21setManualWhiteBalanceE{qreal}@Base 5.0.2 | ||
348 | 1032 | _ZN22QCameraImageProcessingC1EP7QCamera@Base 5.0.2 | 1066 | _ZN22QCameraImageProcessingC1EP7QCamera@Base 5.0.2 |
349 | 1033 | _ZN22QCameraImageProcessingC2EP7QCamera@Base 5.0.2 | 1067 | _ZN22QCameraImageProcessingC2EP7QCamera@Base 5.0.2 |
350 | 1034 | _ZN22QCameraImageProcessingD0Ev@Base 5.0.2 | 1068 | _ZN22QCameraImageProcessingD0Ev@Base 5.0.2 |
351 | @@ -1264,7 +1298,8 @@ | |||
352 | 1264 | _ZN28QMediaGaplessPlaybackControl16nextMediaChangedERK13QMediaContent@Base 5.0.2 | 1298 | _ZN28QMediaGaplessPlaybackControl16nextMediaChangedERK13QMediaContent@Base 5.0.2 |
353 | 1265 | _ZN28QMediaGaplessPlaybackControl16staticMetaObjectE@Base 5.0.2 | 1299 | _ZN28QMediaGaplessPlaybackControl16staticMetaObjectE@Base 5.0.2 |
354 | 1266 | _ZN28QMediaGaplessPlaybackControl19advancedToNextMediaEv@Base 5.0.2 | 1300 | _ZN28QMediaGaplessPlaybackControl19advancedToNextMediaEv@Base 5.0.2 |
356 | 1267 | (subst)_ZN28QMediaGaplessPlaybackControl20crossfadeTimeChangedE{qreal}@Base 5.0.2 | 1301 | _ZN28QMediaGaplessPlaybackControl20crossfadeTimeChangedEd@Base 5.1.1+git20131205+8230c02-0ubuntu7 |
357 | 1302 | #MISSING: 5.1.1+git20131205+8230c02-0ubuntu7# (subst)_ZN28QMediaGaplessPlaybackControl20crossfadeTimeChangedE{qreal}@Base 5.0.2 | ||
358 | 1268 | _ZN28QMediaGaplessPlaybackControlC1EP7QObject@Base 5.0.2 | 1303 | _ZN28QMediaGaplessPlaybackControlC1EP7QObject@Base 5.0.2 |
359 | 1269 | _ZN28QMediaGaplessPlaybackControlC2EP7QObject@Base 5.0.2 | 1304 | _ZN28QMediaGaplessPlaybackControlC2EP7QObject@Base 5.0.2 |
360 | 1270 | _ZN28QMediaGaplessPlaybackControlD0Ev@Base 5.0.2 | 1305 | _ZN28QMediaGaplessPlaybackControlD0Ev@Base 5.0.2 |
361 | 1271 | 1306 | ||
362 | === modified file 'debian/libqt5multimediaquick-p5-touch.postrm' | |||
363 | --- debian/libqt5multimediaquick-p5-touch.postrm 2013-09-20 20:15:35 +0000 | |||
364 | +++ debian/libqt5multimediaquick-p5-touch.postrm 2014-02-26 20:49:23 +0000 | |||
365 | @@ -2,7 +2,7 @@ | |||
366 | 2 | divert_dir="/var/lib/$pkg-diverted" | 2 | divert_dir="/var/lib/$pkg-diverted" |
367 | 3 | 3 | ||
368 | 4 | if [ remove = "$1" -o abort-install = "$1" -o disappear = "$1" -o purge = "$1" ]; then | 4 | if [ remove = "$1" -o abort-install = "$1" -o disappear = "$1" -o purge = "$1" ]; then |
370 | 5 | for version in 5.0.2 5.0 5; do | 5 | for version in 5.2.1 5.2 5; do |
371 | 6 | dpkg-divert --package "$pkg" --remove --rename \ | 6 | dpkg-divert --package "$pkg" --remove --rename \ |
372 | 7 | --divert \ | 7 | --divert \ |
373 | 8 | "$divert_dir"/libQt5MultimediaQuick_p.so.$version.diverted-$pkg \ | 8 | "$divert_dir"/libQt5MultimediaQuick_p.so.$version.diverted-$pkg \ |
374 | 9 | 9 | ||
375 | === modified file 'debian/libqt5multimediaquick-p5-touch.preinst' | |||
376 | --- debian/libqt5multimediaquick-p5-touch.preinst 2013-09-20 20:15:35 +0000 | |||
377 | +++ debian/libqt5multimediaquick-p5-touch.preinst 2014-02-26 20:49:23 +0000 | |||
378 | @@ -6,7 +6,7 @@ | |||
379 | 6 | mkdir -p "$divert_dir" | 6 | mkdir -p "$divert_dir" |
380 | 7 | fi | 7 | fi |
381 | 8 | 8 | ||
383 | 9 | for version in 5.0.2 5.0 5; do | 9 | for version in 5.2.1 5.2 5; do |
384 | 10 | dpkg-divert --package "$pkg" --add --rename \ | 10 | dpkg-divert --package "$pkg" --add --rename \ |
385 | 11 | --divert \ | 11 | --divert \ |
386 | 12 | "$divert_dir"/libQt5MultimediaQuick_p.so.$version.diverted-$pkg \ | 12 | "$divert_dir"/libQt5MultimediaQuick_p.so.$version.diverted-$pkg \ |
387 | 13 | 13 | ||
388 | === modified file 'debian/qtmultimedia5-touch-dev.install' | |||
389 | --- debian/qtmultimedia5-touch-dev.install 2013-09-19 11:12:34 +0000 | |||
390 | +++ debian/qtmultimedia5-touch-dev.install 2014-02-26 20:49:23 +0000 | |||
391 | @@ -193,6 +193,11 @@ | |||
392 | 193 | usr/lib/*/pkgconfig/Qt5Multimedia.pc | 193 | usr/lib/*/pkgconfig/Qt5Multimedia.pc |
393 | 194 | usr/lib/*/pkgconfig/Qt5MultimediaQuick_p.pc | 194 | usr/lib/*/pkgconfig/Qt5MultimediaQuick_p.pc |
394 | 195 | usr/lib/*/pkgconfig/Qt5MultimediaWidgets.pc | 195 | usr/lib/*/pkgconfig/Qt5MultimediaWidgets.pc |
398 | 196 | usr/share/qt5/mkspecs/modules/qt_lib_multimedia.pri | 196 | usr/lib/*/qt5/mkspecs/modules/qt_lib_multimedia.pri |
399 | 197 | usr/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri | 197 | usr/lib/*/qt5/mkspecs/modules/qt_lib_multimedia_private.pri |
400 | 198 | usr/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools.pri | 198 | usr/lib/*/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri |
401 | 199 | usr/lib/*/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri | ||
402 | 200 | usr/lib/*/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri | ||
403 | 201 | usr/include/qt5/QtMultimedia/QtMultimediaDepends | ||
404 | 202 | usr/include/qt5/QtMultimediaWidgets/QtMultimediaWidgetsDepends | ||
405 | 203 | usr/include/qt5/QtMultimediaQuick_p/QtMultimediaQuick_pDepends | ||
406 | 199 | 204 | ||
407 | === modified file 'debian/rules' | |||
408 | --- debian/rules 2013-11-25 14:42:05 +0000 | |||
409 | +++ debian/rules 2014-02-26 20:49:23 +0000 | |||
410 | @@ -56,6 +56,7 @@ | |||
411 | 56 | debian/libqt5multimedia5-touch-plugins.preinst | 56 | debian/libqt5multimedia5-touch-plugins.preinst |
412 | 57 | sed "s/__ARCH__/$(DEB_HOST_MULTIARCH)/g" -i \ | 57 | sed "s/__ARCH__/$(DEB_HOST_MULTIARCH)/g" -i \ |
413 | 58 | debian/libqt5multimedia5-touch-plugins.postrm | 58 | debian/libqt5multimedia5-touch-plugins.postrm |
414 | 59 | ./debian/syncqt.pl -version 5.1.1 | ||
415 | 59 | qmake CONFIG+=mir | 60 | qmake CONFIG+=mir |
416 | 60 | 61 | ||
417 | 61 | override_dh_auto_install-arch: | 62 | override_dh_auto_install-arch: |
418 | 62 | 63 | ||
419 | === added file 'debian/syncqt.pl' | |||
420 | --- debian/syncqt.pl 1970-01-01 00:00:00 +0000 | |||
421 | +++ debian/syncqt.pl 2014-02-26 20:49:23 +0000 | |||
422 | @@ -0,0 +1,1223 @@ | |||
423 | 1 | #!/usr/bin/env perl | ||
424 | 2 | ############################################################################# | ||
425 | 3 | ## | ||
426 | 4 | ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). | ||
427 | 5 | ## Contact: http://www.qt-project.org/legal | ||
428 | 6 | ## | ||
429 | 7 | ## This file is part of the build configuration tools of the Qt Toolkit. | ||
430 | 8 | ## | ||
431 | 9 | ## $QT_BEGIN_LICENSE:LGPL$ | ||
432 | 10 | ## Commercial License Usage | ||
433 | 11 | ## Licensees holding valid commercial Qt licenses may use this file in | ||
434 | 12 | ## accordance with the commercial license agreement provided with the | ||
435 | 13 | ## Software or, alternatively, in accordance with the terms contained in | ||
436 | 14 | ## a written agreement between you and Digia. For licensing terms and | ||
437 | 15 | ## conditions see http://qt.digia.com/licensing. For further information | ||
438 | 16 | ## use the contact form at http://qt.digia.com/contact-us. | ||
439 | 17 | ## | ||
440 | 18 | ## GNU Lesser General Public License Usage | ||
441 | 19 | ## Alternatively, this file may be used under the terms of the GNU Lesser | ||
442 | 20 | ## General Public License version 2.1 as published by the Free Software | ||
443 | 21 | ## Foundation and appearing in the file LICENSE.LGPL included in the | ||
444 | 22 | ## packaging of this file. Please review the following information to | ||
445 | 23 | ## ensure the GNU Lesser General Public License version 2.1 requirements | ||
446 | 24 | ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | ||
447 | 25 | ## | ||
448 | 26 | ## In addition, as a special exception, Digia gives you certain additional | ||
449 | 27 | ## rights. These rights are described in the Digia Qt LGPL Exception | ||
450 | 28 | ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | ||
451 | 29 | ## | ||
452 | 30 | ## GNU General Public License Usage | ||
453 | 31 | ## Alternatively, this file may be used under the terms of the GNU | ||
454 | 32 | ## General Public License version 3.0 as published by the Free Software | ||
455 | 33 | ## Foundation and appearing in the file LICENSE.GPL included in the | ||
456 | 34 | ## packaging of this file. Please review the following information to | ||
457 | 35 | ## ensure the GNU General Public License version 3.0 requirements will be | ||
458 | 36 | ## met: http://www.gnu.org/copyleft/gpl.html. | ||
459 | 37 | ## | ||
460 | 38 | ## | ||
461 | 39 | ## $QT_END_LICENSE$ | ||
462 | 40 | ## | ||
463 | 41 | ############################################################################# | ||
464 | 42 | |||
465 | 43 | # | ||
466 | 44 | # Synchronizes Qt header files - internal development tool. | ||
467 | 45 | # | ||
468 | 46 | |||
469 | 47 | # use packages ------------------------------------------------------- | ||
470 | 48 | use File::Basename; | ||
471 | 49 | use File::Path; | ||
472 | 50 | use File::Spec; | ||
473 | 51 | use Cwd; | ||
474 | 52 | use Cwd 'abs_path'; | ||
475 | 53 | use Config; | ||
476 | 54 | use strict; | ||
477 | 55 | use warnings; | ||
478 | 56 | use English qw(-no_match_vars ); | ||
479 | 57 | |||
480 | 58 | my $normalizePath_fixDrive = ($^O eq "msys" ? 1 : 0); | ||
481 | 59 | |||
482 | 60 | ###################################################################### | ||
483 | 61 | # Syntax: normalizePath(\$path) | ||
484 | 62 | # Params: Reference to a path that's going to be normalized. | ||
485 | 63 | # | ||
486 | 64 | # Purpose: Converts the path into a form that can be used as include | ||
487 | 65 | # path from C++ sources and qmake's .pro files. | ||
488 | 66 | # Only relevant on Windows. | ||
489 | 67 | # Returns: -none- | ||
490 | 68 | ###################################################################### | ||
491 | 69 | sub normalizePath { | ||
492 | 70 | my $s = shift; | ||
493 | 71 | $$s =~ s=\\=/=g; | ||
494 | 72 | if ($normalizePath_fixDrive && ($$s =~ m,^/([a-zA-Z])/(.*), || $$s =~ m,^([a-zA-Z]):/(.*),)) { | ||
495 | 73 | $$s = lc($1) . ":/$2"; | ||
496 | 74 | } | ||
497 | 75 | } | ||
498 | 76 | |||
499 | 77 | # set output basedir to be where ever syncqt is run from | ||
500 | 78 | our $out_basedir = getcwd(); | ||
501 | 79 | normalizePath(\$out_basedir); | ||
502 | 80 | our $basedir; | ||
503 | 81 | our $quoted_basedir; | ||
504 | 82 | |||
505 | 83 | # Make sure we use Windows line endings for chomp and friends on Windows. | ||
506 | 84 | $INPUT_RECORD_SEPARATOR = "\r\n" if ($^O eq "msys"); | ||
507 | 85 | |||
508 | 86 | # will be defined based on the modules sync.profile | ||
509 | 87 | our (%modules, %moduleheaders, @allmoduleheadersprivate, %classnames, %explicitheaders, %deprecatedheaders); | ||
510 | 88 | our @qpa_headers = (); | ||
511 | 89 | |||
512 | 90 | # global variables (modified by options) | ||
513 | 91 | my $isunix = 0; | ||
514 | 92 | my $module = 0; | ||
515 | 93 | my $showonly = 0; | ||
516 | 94 | my $verbose_level = 1; | ||
517 | 95 | my $remove_stale = 1; | ||
518 | 96 | my $force_win = 0; | ||
519 | 97 | my $force_relative = 0; | ||
520 | 98 | my $check_includes = 0; | ||
521 | 99 | my $copy_headers = 0; | ||
522 | 100 | my $create_private_headers = 1; | ||
523 | 101 | my $minimal = 0; | ||
524 | 102 | my $module_version = 0; | ||
525 | 103 | my @modules_to_sync ; | ||
526 | 104 | $force_relative = 1 if ( -d "/System/Library/Frameworks" ); | ||
527 | 105 | |||
528 | 106 | |||
529 | 107 | # functions ---------------------------------------------------------- | ||
530 | 108 | |||
531 | 109 | ###################################################################### | ||
532 | 110 | # Syntax: showUsage() | ||
533 | 111 | # Params: -none- | ||
534 | 112 | # | ||
535 | 113 | # Purpose: Show the usage of the script. | ||
536 | 114 | # Returns: -none- | ||
537 | 115 | ###################################################################### | ||
538 | 116 | sub showUsage | ||
539 | 117 | { | ||
540 | 118 | print "$0 usage:\n"; | ||
541 | 119 | print " <module directory> Specifies which module to sync header files for (required for shadow builds!)\n\n"; | ||
542 | 120 | |||
543 | 121 | print " -copy Copy headers instead of include-fwd(default: " . ($copy_headers ? "yes" : "no") . ")\n"; | ||
544 | 122 | print " -remove-stale Removes stale headers (default: " . ($remove_stale ? "yes" : "no") . ")\n"; | ||
545 | 123 | print " -relative Force relative symlinks (default: " . ($force_relative ? "yes" : "no") . ")\n"; | ||
546 | 124 | print " -windows Force platform to Windows (default: " . ($force_win ? "yes" : "no") . ")\n"; | ||
547 | 125 | print " -showonly Show action but not perform (default: " . ($showonly ? "yes" : "no") . ")\n"; | ||
548 | 126 | print " -minimal Do not create CamelCase headers (default: " . ($minimal ? "yes" : "no") . ")\n"; | ||
549 | 127 | print " -outdir <PATH> Specify output directory for sync (default: $out_basedir)\n"; | ||
550 | 128 | print " -version <VERSION> Specify the module's version (default: detect from qglobal.h)\n"; | ||
551 | 129 | print " -quiet Only report problems, not activity (same as -verbose 0)\n"; | ||
552 | 130 | print " -v, -verbose <level> Sets the verbosity level (max. 4) (default: $verbose_level)\n"; | ||
553 | 131 | print " The short form increases the level by +1\n"; | ||
554 | 132 | print " -separate-module <NAME>:<PROFILEDIR>:<HEADERDIR>\n"; | ||
555 | 133 | print " Create headers for <NAME> with original headers in\n"; | ||
556 | 134 | print " <HEADERDIR> relative to <PROFILEDIR> \n"; | ||
557 | 135 | print " -private Force copy private headers (default: " . ($create_private_headers ? "yes" : "no") . ")\n"; | ||
558 | 136 | print " -help This help\n"; | ||
559 | 137 | exit 0; | ||
560 | 138 | } | ||
561 | 139 | |||
562 | 140 | ###################################################################### | ||
563 | 141 | # Syntax: checkUnix() | ||
564 | 142 | # Params: -none- | ||
565 | 143 | # | ||
566 | 144 | # Purpose: Check if script runs on a Unix system or not. Cygwin | ||
567 | 145 | # systems are _not_ detected as Unix systems. | ||
568 | 146 | # Returns: 1 if a unix system, else 0. | ||
569 | 147 | ###################################################################### | ||
570 | 148 | sub checkUnix { | ||
571 | 149 | my ($r) = 0; | ||
572 | 150 | if ( $force_win != 0) { | ||
573 | 151 | return 0; | ||
574 | 152 | } elsif ( -f "/bin/uname" ) { | ||
575 | 153 | $r = 1; | ||
576 | 154 | (-f "\\bin\\uname") && ($r = 0); | ||
577 | 155 | } elsif ( -f "/usr/bin/uname" ) { | ||
578 | 156 | $r = 1; | ||
579 | 157 | (-f "\\usr\\bin\\uname") && ($r = 0); | ||
580 | 158 | } | ||
581 | 159 | if($r) { | ||
582 | 160 | $_ = $Config{'osname'}; | ||
583 | 161 | $r = 0 if( /(ms)|(cyg)win/i ); | ||
584 | 162 | } | ||
585 | 163 | return $r; | ||
586 | 164 | } | ||
587 | 165 | |||
588 | 166 | sub checkRelative { | ||
589 | 167 | my ($dir) = @_; | ||
590 | 168 | return 0 if($dir =~ /^\//); | ||
591 | 169 | return 0 if(!checkUnix() && $dir =~ /[a-zA-Z]:[\/\\]/); | ||
592 | 170 | return 1; | ||
593 | 171 | } | ||
594 | 172 | |||
595 | 173 | ###################################################################### | ||
596 | 174 | # Syntax: shouldMasterInclude(iheader) | ||
597 | 175 | # Params: iheader, string, filename to verify inclusion | ||
598 | 176 | # | ||
599 | 177 | # Purpose: Determines if header should be in the master include file. | ||
600 | 178 | # Returns: 0 if file contains "#pragma qt_no_master_include" or not | ||
601 | 179 | # able to open, else 1. | ||
602 | 180 | ###################################################################### | ||
603 | 181 | sub shouldMasterInclude { | ||
604 | 182 | my ($iheader) = @_; | ||
605 | 183 | return 0 if (basename($iheader) =~ /_/); | ||
606 | 184 | return 0 if (basename($iheader) =~ /qconfig/); | ||
607 | 185 | if (open(F, "<$iheader")) { | ||
608 | 186 | while (<F>) { | ||
609 | 187 | chomp; | ||
610 | 188 | return 0 if (/^\#pragma qt_no_master_include$/); | ||
611 | 189 | } | ||
612 | 190 | close(F); | ||
613 | 191 | } else { | ||
614 | 192 | return 0; | ||
615 | 193 | } | ||
616 | 194 | return 1; | ||
617 | 195 | } | ||
618 | 196 | |||
619 | 197 | ###################################################################### | ||
620 | 198 | # Syntax: classNames(iheader) | ||
621 | 199 | # Params: iheader, string, filename to parse for classname "symlinks" | ||
622 | 200 | # | ||
623 | 201 | # Purpose: Scans through iheader to find all classnames that should be | ||
624 | 202 | # synced into library's include structure. | ||
625 | 203 | # Returns: List of all class names in a file. | ||
626 | 204 | ###################################################################### | ||
627 | 205 | sub classNames { | ||
628 | 206 | my @ret; | ||
629 | 207 | my ($iheader) = @_; | ||
630 | 208 | |||
631 | 209 | my $classname = $classnames{basename($iheader)}; | ||
632 | 210 | push @ret, $classname if ($classname); | ||
633 | 211 | |||
634 | 212 | my $parsable = ""; | ||
635 | 213 | if(open(F, "<$iheader")) { | ||
636 | 214 | while(<F>) { | ||
637 | 215 | my $line = $_; | ||
638 | 216 | chomp $line; | ||
639 | 217 | chop $line if ($line =~ /\r$/); | ||
640 | 218 | if($line =~ /^\#/) { | ||
641 | 219 | return @ret if($line =~ m/^#pragma qt_sync_stop_processing/); | ||
642 | 220 | push(@ret, $1) if($line =~ m/^#pragma qt_class\(([^)]*)\)[\r\n]*$/); | ||
643 | 221 | $line = 0; | ||
644 | 222 | } | ||
645 | 223 | if($line) { | ||
646 | 224 | $line =~ s,//.*$,,; #remove c++ comments | ||
647 | 225 | $line .= ";" if($line =~ m/^Q_[A-Z_]*\(.*\)[\r\n]*$/); #qt macro | ||
648 | 226 | $line .= ";" if($line =~ m/^QT_(BEGIN|END)_HEADER[\r\n]*$/); #qt macro | ||
649 | 227 | $line .= ";" if($line =~ m/^QT_(BEGIN|END)_NAMESPACE(_[A-Z]+)*[\r\n]*$/); #qt macro | ||
650 | 228 | $line .= ";" if($line =~ m/^QT_MODULE\(.*\)[\r\n]*$/); # QT_MODULE macro | ||
651 | 229 | $parsable .= " " . $line; | ||
652 | 230 | } | ||
653 | 231 | } | ||
654 | 232 | close(F); | ||
655 | 233 | } | ||
656 | 234 | |||
657 | 235 | my $last_definition = 0; | ||
658 | 236 | my @namespaces; | ||
659 | 237 | for(my $i = 0; $i < length($parsable); $i++) { | ||
660 | 238 | my $definition = 0; | ||
661 | 239 | my $character = substr($parsable, $i, 1); | ||
662 | 240 | if($character eq "/" && substr($parsable, $i+1, 1) eq "*") { #I parse like this for greedy reasons | ||
663 | 241 | for($i+=2; $i < length($parsable); $i++) { | ||
664 | 242 | my $end = substr($parsable, $i, 2); | ||
665 | 243 | if($end eq "*/") { | ||
666 | 244 | $last_definition = $i+2; | ||
667 | 245 | $i++; | ||
668 | 246 | last; | ||
669 | 247 | } | ||
670 | 248 | } | ||
671 | 249 | } elsif($character eq "{") { | ||
672 | 250 | my $brace_depth = 1; | ||
673 | 251 | my $block_start = $i + 1; | ||
674 | 252 | BLOCK: for($i+=1; $i < length($parsable); $i++) { | ||
675 | 253 | my $ignore = substr($parsable, $i, 1); | ||
676 | 254 | if($ignore eq "{") { | ||
677 | 255 | $brace_depth++; | ||
678 | 256 | } elsif($ignore eq "}") { | ||
679 | 257 | $brace_depth--; | ||
680 | 258 | unless($brace_depth) { | ||
681 | 259 | for(my $i2 = $i+1; $i2 < length($parsable); $i2++) { | ||
682 | 260 | my $end = substr($parsable, $i2, 1); | ||
683 | 261 | if($end eq ";" || $end ne " ") { | ||
684 | 262 | $definition = substr($parsable, $last_definition, $block_start - $last_definition) . "}"; | ||
685 | 263 | $i = $i2 if($end eq ";"); | ||
686 | 264 | $last_definition = $i + 1; | ||
687 | 265 | last BLOCK; | ||
688 | 266 | } | ||
689 | 267 | } | ||
690 | 268 | } | ||
691 | 269 | } | ||
692 | 270 | } | ||
693 | 271 | } elsif($character eq ";") { | ||
694 | 272 | $definition = substr($parsable, $last_definition, $i - $last_definition + 1); | ||
695 | 273 | $last_definition = $i + 1; | ||
696 | 274 | } elsif($character eq "}") { | ||
697 | 275 | # a naked } must be a namespace ending | ||
698 | 276 | # if it's not a namespace, it's eaten by the loop above | ||
699 | 277 | pop @namespaces; | ||
700 | 278 | $last_definition = $i + 1; | ||
701 | 279 | } | ||
702 | 280 | |||
703 | 281 | if (substr($parsable, $last_definition, $i - $last_definition + 1) =~ m/ namespace ([^ ]*) / | ||
704 | 282 | && substr($parsable, $i+1, 1) eq "{") { | ||
705 | 283 | push @namespaces, $1; | ||
706 | 284 | |||
707 | 285 | # Eat the opening { so that the condensing loop above doesn't see it | ||
708 | 286 | $i++; | ||
709 | 287 | $last_definition = $i + 1; | ||
710 | 288 | } | ||
711 | 289 | |||
712 | 290 | if($definition) { | ||
713 | 291 | $definition =~ s=[\n\r]==g; | ||
714 | 292 | my @symbols; | ||
715 | 293 | my $post_kw = qr/Q_DECL_FINAL|final|sealed/; # add here macros and keywords that go after the class-name of a class definition | ||
716 | 294 | if($definition =~ m/^ *typedef *.*\(\*([^\)]*)\)\(.*\);$/) { | ||
717 | 295 | push @symbols, $1; | ||
718 | 296 | } elsif($definition =~ m/^ *typedef +(.*) +([^ ]*);$/) { | ||
719 | 297 | push @symbols, $2; | ||
720 | 298 | } elsif($definition =~ m/^ *(template *<.*> *)?(class|struct) +([^ ]* +)?((?!$post_kw)[^<\s]+) ?(<[^>]*> ?)?\s*(?:$post_kw)?\s*((,|:)\s*(public|protected|private) *.*)? *\{\}$/o) { | ||
721 | 299 | push @symbols, $4; | ||
722 | 300 | } elsif($definition =~ m/^ *Q_DECLARE_.*ITERATOR\((.*)\);$/) { | ||
723 | 301 | push @symbols, "Q" . $1 . "Iterator"; | ||
724 | 302 | push @symbols, "QMutable" . $1 . "Iterator"; | ||
725 | 303 | } | ||
726 | 304 | |||
727 | 305 | our $publicclassregexp; | ||
728 | 306 | foreach my $symbol (@symbols) { | ||
729 | 307 | $symbol = (join("::", @namespaces) . "::" . $symbol) if (scalar @namespaces); | ||
730 | 308 | |||
731 | 309 | if ($symbol =~ /^Q[^:]*$/) { # no-namespace, starting with Q | ||
732 | 310 | push @ret, $symbol; | ||
733 | 311 | } elsif (defined($publicclassregexp)) { | ||
734 | 312 | push @ret, $symbol if ($symbol =~ $publicclassregexp); | ||
735 | 313 | } | ||
736 | 314 | } | ||
737 | 315 | } | ||
738 | 316 | } | ||
739 | 317 | return @ret; | ||
740 | 318 | } | ||
741 | 319 | |||
742 | 320 | sub make_path { | ||
743 | 321 | my ($dir, $lib, $be_verbose) = @_; | ||
744 | 322 | unless(-e $dir) { | ||
745 | 323 | mkpath $dir; | ||
746 | 324 | $dir = "<outbase>" . substr($dir, length($out_basedir)) if ($be_verbose < 3); | ||
747 | 325 | print "$lib: mkpath $dir\n" if ($be_verbose > 1); | ||
748 | 326 | } | ||
749 | 327 | } | ||
750 | 328 | |||
751 | 329 | ###################################################################### | ||
752 | 330 | # Syntax: syncHeader(header, iheader, copy, timestamp) | ||
753 | 331 | # Params: header, string, filename to create "symlink" for | ||
754 | 332 | # iheader, string, destination name of symlink | ||
755 | 333 | # copy, forces header to be a copy of iheader | ||
756 | 334 | # timestamp, the requested modification time if copying | ||
757 | 335 | # | ||
758 | 336 | # Purpose: Syncronizes header to iheader | ||
759 | 337 | # Returns: 1 if successful, else 0. | ||
760 | 338 | ###################################################################### | ||
761 | 339 | sub syncHeader { | ||
762 | 340 | my ($lib, $header, $iheader, $copy, $ts) = @_; | ||
763 | 341 | normalizePath(\$iheader); | ||
764 | 342 | normalizePath(\$header); | ||
765 | 343 | return copyFile($lib, $iheader, $header) if($copy); | ||
766 | 344 | |||
767 | 345 | unless(-e $header) { | ||
768 | 346 | my $header_dir = dirname($header); | ||
769 | 347 | make_path($header_dir, $lib, $verbose_level); | ||
770 | 348 | |||
771 | 349 | #write it | ||
772 | 350 | my $iheader_out = fixPaths($iheader, $header_dir); | ||
773 | 351 | open(HEADER, ">$header") || die "Could not open $header for writing: $!\n"; | ||
774 | 352 | print HEADER "#include \"$iheader_out\"\n"; | ||
775 | 353 | close HEADER; | ||
776 | 354 | if(defined($ts)) { | ||
777 | 355 | utime(time, $ts, $header) or die "$iheader, $header"; | ||
778 | 356 | } | ||
779 | 357 | return 1; | ||
780 | 358 | } | ||
781 | 359 | return 0; | ||
782 | 360 | } | ||
783 | 361 | |||
784 | 362 | ###################################################################### | ||
785 | 363 | # Syntax: fixPaths(file, dir) | ||
786 | 364 | # Params: file, string, filepath to be made relative to dir | ||
787 | 365 | # dir, string, dirpath for point of origin | ||
788 | 366 | # | ||
789 | 367 | # Purpose: file is made relative (if possible) of dir. | ||
790 | 368 | # Returns: String with the above applied conversion. | ||
791 | 369 | ###################################################################### | ||
792 | 370 | |||
793 | 371 | sub cleanupPath { | ||
794 | 372 | my ($file) = @_; | ||
795 | 373 | normalizePath(\$file); | ||
796 | 374 | while ($file =~ s,/[^/]+/\.\./,/,) {} | ||
797 | 375 | return $file; | ||
798 | 376 | } | ||
799 | 377 | |||
800 | 378 | sub fixPaths { | ||
801 | 379 | my ($file, $dir) = @_; | ||
802 | 380 | |||
803 | 381 | my $out = File::Spec->abs2rel(cleanupPath($file), cleanupPath($dir)); | ||
804 | 382 | $out =~ s,\\,/,g; | ||
805 | 383 | return $out; | ||
806 | 384 | } | ||
807 | 385 | |||
808 | 386 | ###################################################################### | ||
809 | 387 | # Syntax: fileContents(filename) | ||
810 | 388 | # Params: filename, string, filename of file to return contents | ||
811 | 389 | # | ||
812 | 390 | # Purpose: Get the contents of a file. | ||
813 | 391 | # Returns: String with contents of the file, or empty string if file | ||
814 | 392 | # doens't exist. | ||
815 | 393 | # Warning: Dies if it does exist but script cannot get read access. | ||
816 | 394 | ###################################################################### | ||
817 | 395 | sub fileContents { | ||
818 | 396 | my ($filename) = @_; | ||
819 | 397 | my $filecontents = ""; | ||
820 | 398 | if (-e $filename) { | ||
821 | 399 | open(I, "< $filename") || die "Could not open $filename for reading, read block?"; | ||
822 | 400 | local $/; | ||
823 | 401 | binmode I; | ||
824 | 402 | $filecontents = <I>; | ||
825 | 403 | close I; | ||
826 | 404 | } | ||
827 | 405 | return $filecontents; | ||
828 | 406 | } | ||
829 | 407 | |||
830 | 408 | ###################################################################### | ||
831 | 409 | # Syntax: writeFile(filename, contents) | ||
832 | 410 | # Params: filename, string, filename of file to write | ||
833 | 411 | # contents, string, new contents for the file | ||
834 | 412 | # | ||
835 | 413 | # Purpose: Write file with given contents. If new contents match old | ||
836 | 414 | # ones, do no change the file's timestamp. | ||
837 | 415 | # Returns: 1 if the file's contents changed. | ||
838 | 416 | ###################################################################### | ||
839 | 417 | sub writeFile { | ||
840 | 418 | my ($filename, $contents, $lib, $what) = @_; | ||
841 | 419 | my $oldcontents = fileContents($filename); | ||
842 | 420 | $oldcontents =~ s/\r//g; # remove \r's , so comparison is ok on all platforms | ||
843 | 421 | if ($oldcontents ne $contents) { | ||
844 | 422 | open(O, "> " . $filename) || die "Could not open $filename for writing: $!\n"; | ||
845 | 423 | print O $contents; | ||
846 | 424 | close O; | ||
847 | 425 | if ($lib && $verbose_level) { | ||
848 | 426 | my $action = ($oldcontents eq "") ? "created" : "updated"; | ||
849 | 427 | print "$lib: $action $what\n"; | ||
850 | 428 | } | ||
851 | 429 | return 1; | ||
852 | 430 | } | ||
853 | 431 | return 0; | ||
854 | 432 | } | ||
855 | 433 | |||
856 | 434 | ###################################################################### | ||
857 | 435 | # Syntax: fileCompare(file1, file2) | ||
858 | 436 | # Params: file1, string, filename of first file | ||
859 | 437 | # file2, string, filename of second file | ||
860 | 438 | # | ||
861 | 439 | # Purpose: Determines if files are equal, and which one is newer. | ||
862 | 440 | # Returns: 0 if files are equal no matter the timestamp, -1 if file1 | ||
863 | 441 | # is newer, 1 if file2 is newer. | ||
864 | 442 | ###################################################################### | ||
865 | 443 | sub fileCompare { | ||
866 | 444 | my ($file1, $file2) = @_; | ||
867 | 445 | my $file1contents = fileContents($file1); | ||
868 | 446 | my $file2contents = fileContents($file2); | ||
869 | 447 | if (! -e $file1) { return 1; } | ||
870 | 448 | if (! -e $file2) { return -1; } | ||
871 | 449 | return $file1contents ne $file2contents ? (stat($file2))[9] <=> (stat($file1))[9] : 0; | ||
872 | 450 | } | ||
873 | 451 | |||
874 | 452 | ###################################################################### | ||
875 | 453 | # Syntax: copyFile(file, ifile) | ||
876 | 454 | # Params: file, string, filename to create duplicate for | ||
877 | 455 | # ifile, string, destination name of duplicate | ||
878 | 456 | # | ||
879 | 457 | # Purpose: Keeps files in sync so changes in the newer file will be | ||
880 | 458 | # written to the other. | ||
881 | 459 | # Returns: 1 if files were synced, else 0. | ||
882 | 460 | # Warning: Dies if script cannot get write access. | ||
883 | 461 | ###################################################################### | ||
884 | 462 | sub copyFile | ||
885 | 463 | { | ||
886 | 464 | my ($lib, $file,$ifile, $copy,$knowdiff,$filecontents,$ifilecontents) = @_; | ||
887 | 465 | # Bi-directional synchronization | ||
888 | 466 | open( I, "< " . $file ) || die "Could not open $file for reading"; | ||
889 | 467 | local $/; | ||
890 | 468 | binmode I; | ||
891 | 469 | $filecontents = <I>; | ||
892 | 470 | close I; | ||
893 | 471 | if ( open(I, "< " . $ifile) ) { | ||
894 | 472 | local $/; | ||
895 | 473 | binmode I; | ||
896 | 474 | $ifilecontents = <I>; | ||
897 | 475 | close I; | ||
898 | 476 | $copy = fileCompare($file, $ifile); | ||
899 | 477 | $knowdiff = 0, | ||
900 | 478 | } else { | ||
901 | 479 | $copy = -1; | ||
902 | 480 | $knowdiff = 1; | ||
903 | 481 | } | ||
904 | 482 | |||
905 | 483 | if ( $knowdiff || ($filecontents ne $ifilecontents) ) { | ||
906 | 484 | if ( $copy > 0 ) { | ||
907 | 485 | my $file_dir = dirname($file); | ||
908 | 486 | make_path($file_dir, $lib, $verbose_level); | ||
909 | 487 | open(O, "> " . $file) || die "Could not open $file for writing (no write permission?)"; | ||
910 | 488 | local $/; | ||
911 | 489 | binmode O; | ||
912 | 490 | print O $ifilecontents; | ||
913 | 491 | close O; | ||
914 | 492 | utime time, (stat($ifile))[9], $file; | ||
915 | 493 | return 1; | ||
916 | 494 | } elsif ( $copy < 0 ) { | ||
917 | 495 | my $ifile_dir = dirname($ifile); | ||
918 | 496 | make_path($ifile_dir, $lib, $verbose_level); | ||
919 | 497 | open(O, "> " . $ifile) || die "Could not open $ifile for writing (no write permission?)"; | ||
920 | 498 | local $/; | ||
921 | 499 | binmode O; | ||
922 | 500 | print O $filecontents; | ||
923 | 501 | close O; | ||
924 | 502 | utime time, (stat($file))[9], $ifile; | ||
925 | 503 | return 1; | ||
926 | 504 | } | ||
927 | 505 | } | ||
928 | 506 | return 0; | ||
929 | 507 | } | ||
930 | 508 | |||
931 | 509 | ###################################################################### | ||
932 | 510 | # Syntax: findFiles(dir, match, descend) | ||
933 | 511 | # Params: dir, string, directory to search for name | ||
934 | 512 | # match, string, regular expression to match in dir | ||
935 | 513 | # descend, integer, 0 = non-recursive search | ||
936 | 514 | # 1 = recurse search into subdirectories | ||
937 | 515 | # | ||
938 | 516 | # Purpose: Finds files matching a regular expression. | ||
939 | 517 | # Returns: List of matching files. | ||
940 | 518 | # | ||
941 | 519 | # Examples: | ||
942 | 520 | # findFiles("/usr","\.cpp$",1) - finds .cpp files in /usr and below | ||
943 | 521 | # findFiles("/tmp","^#",0) - finds #* files in /tmp | ||
944 | 522 | ###################################################################### | ||
945 | 523 | sub findFiles { | ||
946 | 524 | my ($dir,$match,$descend) = @_; | ||
947 | 525 | my ($file,$p,@files); | ||
948 | 526 | local(*D); | ||
949 | 527 | normalizePath(\$dir); | ||
950 | 528 | ($dir eq "") && ($dir = "."); | ||
951 | 529 | if ( opendir(D,$dir) ) { | ||
952 | 530 | if ( $dir eq "." ) { | ||
953 | 531 | $dir = ""; | ||
954 | 532 | } else { | ||
955 | 533 | ($dir =~ /\/$/) || ($dir .= "/"); | ||
956 | 534 | } | ||
957 | 535 | foreach $file ( sort readdir(D) ) { | ||
958 | 536 | next if ( $file =~ /^\.\.?$/ ); | ||
959 | 537 | $p = $file; | ||
960 | 538 | ($file =~ /$match/) && (push @files, $p); | ||
961 | 539 | if ( $descend && -d $p && ! -l $p ) { | ||
962 | 540 | push @files, &findFiles($p,$match,$descend); | ||
963 | 541 | } | ||
964 | 542 | } | ||
965 | 543 | closedir(D); | ||
966 | 544 | } | ||
967 | 545 | return @files; | ||
968 | 546 | } | ||
969 | 547 | |||
970 | 548 | sub listSubdirs { | ||
971 | 549 | my @subdirs = @_; | ||
972 | 550 | foreach my $subdir (@subdirs) { | ||
973 | 551 | opendir DIR, $subdir or die "Huh, directory ".$subdir." cannot be opened."; | ||
974 | 552 | foreach my $t (sort readdir(DIR)) { | ||
975 | 553 | push @subdirs, "$subdir/$t" if(-d "$subdir/$t" && !($t eq ".") && | ||
976 | 554 | !($t eq "..") && !($t eq ".obj") && | ||
977 | 555 | !($t eq ".moc") && !($t eq ".rcc") && | ||
978 | 556 | !($t eq ".uic") && !($t eq "build") && | ||
979 | 557 | !($t eq "doc")); | ||
980 | 558 | } | ||
981 | 559 | closedir DIR; | ||
982 | 560 | } | ||
983 | 561 | return @subdirs; | ||
984 | 562 | } | ||
985 | 563 | |||
986 | 564 | ###################################################################### | ||
987 | 565 | # Syntax: loadSyncProfile() | ||
988 | 566 | # | ||
989 | 567 | # Purpose: Locates the sync.profile. | ||
990 | 568 | # Returns: Hashmap of module name -> directory. | ||
991 | 569 | ###################################################################### | ||
992 | 570 | sub loadSyncProfile { | ||
993 | 571 | my ($srcbase, $outbase) = @_; | ||
994 | 572 | if ($verbose_level) { | ||
995 | 573 | print("<srcbase> = $$srcbase \n"); | ||
996 | 574 | print("<outbase> = $$outbase \n"); | ||
997 | 575 | } | ||
998 | 576 | |||
999 | 577 | my $syncprofile = "$$srcbase/sync.profile"; | ||
1000 | 578 | my $result; | ||
1001 | 579 | unless ($result = do "$syncprofile") { | ||
1002 | 580 | die "syncqt couldn't parse $syncprofile: $@" if $@; | ||
1003 | 581 | die "syncqt couldn't execute $syncprofile: $!" unless defined $result; | ||
1004 | 582 | } | ||
1005 | 583 | return $result; | ||
1006 | 584 | } | ||
1007 | 585 | |||
1008 | 586 | sub basePrettify { | ||
1009 | 587 | my ($arg) = @_; | ||
1010 | 588 | $$arg =~ s,^\Q$basedir\E,<srcbase>,; | ||
1011 | 589 | $$arg =~ s,^\Q$out_basedir\E,<outbase>,; | ||
1012 | 590 | } | ||
1013 | 591 | |||
1014 | 592 | sub cleanPath { | ||
1015 | 593 | my ($arg) = @_; | ||
1016 | 594 | while ($arg =~ s,[^/]+/\.\.(/|$),,) {} | ||
1017 | 595 | return $arg; | ||
1018 | 596 | } | ||
1019 | 597 | |||
1020 | 598 | sub locateSyncProfile | ||
1021 | 599 | { | ||
1022 | 600 | my ($directory) = @_; | ||
1023 | 601 | $directory = abs_path($directory); | ||
1024 | 602 | while (1) { | ||
1025 | 603 | my $file = $directory."/sync.profile"; | ||
1026 | 604 | return $file if (-e $file); | ||
1027 | 605 | my $odir = $directory; | ||
1028 | 606 | $directory = dirname($directory); | ||
1029 | 607 | return undef if ($directory eq $odir); | ||
1030 | 608 | } | ||
1031 | 609 | } | ||
1032 | 610 | |||
1033 | 611 | sub isQpaHeader | ||
1034 | 612 | { | ||
1035 | 613 | my ($header) = @_; | ||
1036 | 614 | foreach my $qpa_header (@qpa_headers) { | ||
1037 | 615 | return 1 if ($header =~ $qpa_header); | ||
1038 | 616 | } | ||
1039 | 617 | return 0; | ||
1040 | 618 | } | ||
1041 | 619 | |||
1042 | 620 | # check if this is an in-source build, and if so use that as the basedir too | ||
1043 | 621 | $basedir = locateSyncProfile($out_basedir); | ||
1044 | 622 | if ($basedir) { | ||
1045 | 623 | $basedir = dirname($basedir) ; | ||
1046 | 624 | normalizePath(\$basedir); | ||
1047 | 625 | $quoted_basedir = "\Q$basedir"; | ||
1048 | 626 | } | ||
1049 | 627 | |||
1050 | 628 | # -------------------------------------------------------------------- | ||
1051 | 629 | # "main" function | ||
1052 | 630 | # -------------------------------------------------------------------- | ||
1053 | 631 | |||
1054 | 632 | while ( @ARGV ) { | ||
1055 | 633 | my $var = 0; | ||
1056 | 634 | my $val = 0; | ||
1057 | 635 | |||
1058 | 636 | #parse | ||
1059 | 637 | my $arg = shift @ARGV; | ||
1060 | 638 | if ($arg eq "-h" || $arg eq "-help" || $arg eq "-?" || $arg eq "?") { | ||
1061 | 639 | $var = "show_help"; | ||
1062 | 640 | $val = "yes"; | ||
1063 | 641 | } elsif($arg eq "-copy") { | ||
1064 | 642 | $var = "copy"; | ||
1065 | 643 | $val = "yes"; | ||
1066 | 644 | } elsif($arg eq "-o" || $arg eq "-outdir") { | ||
1067 | 645 | $var = "output"; | ||
1068 | 646 | $val = shift @ARGV; | ||
1069 | 647 | } elsif($arg eq "-showonly" || $arg eq "-remove-stale" || $arg eq "-windows" || | ||
1070 | 648 | $arg eq "-relative" || $arg eq "-check-includes") { | ||
1071 | 649 | $var = substr($arg, 1); | ||
1072 | 650 | $val = "yes"; | ||
1073 | 651 | } elsif($arg =~ /^-no-(.*)$/) { | ||
1074 | 652 | $var = $1; | ||
1075 | 653 | $val = "no"; | ||
1076 | 654 | #these are for commandline compat | ||
1077 | 655 | } elsif($arg eq "-inc") { | ||
1078 | 656 | $var = "output"; | ||
1079 | 657 | $val = shift @ARGV; | ||
1080 | 658 | } elsif($arg eq "-module") { | ||
1081 | 659 | $var = "module"; | ||
1082 | 660 | $val = shift @ARGV; | ||
1083 | 661 | } elsif($arg eq "-separate-module") { | ||
1084 | 662 | $var = "separate-module"; | ||
1085 | 663 | $val = shift @ARGV; | ||
1086 | 664 | } elsif($arg eq "-show") { | ||
1087 | 665 | $var = "showonly"; | ||
1088 | 666 | $val = "yes"; | ||
1089 | 667 | } elsif($arg eq "-quiet") { | ||
1090 | 668 | $var = "verbose"; | ||
1091 | 669 | $val = "0"; | ||
1092 | 670 | } elsif($arg eq "-v") { | ||
1093 | 671 | $var = "verbose"; | ||
1094 | 672 | $val = "yes"; | ||
1095 | 673 | } elsif($arg eq "-verbose") { | ||
1096 | 674 | $var = "verbose"; | ||
1097 | 675 | $val = shift @ARGV; | ||
1098 | 676 | } elsif($arg eq "-minimal") { | ||
1099 | 677 | $var = "minimal"; | ||
1100 | 678 | $val = "yes"; | ||
1101 | 679 | } elsif($arg eq "-private") { | ||
1102 | 680 | $var = "create_private_headers"; | ||
1103 | 681 | $val = "yes"; | ||
1104 | 682 | } elsif($arg eq "-version") { | ||
1105 | 683 | $var = "version"; | ||
1106 | 684 | $val = shift @ARGV; | ||
1107 | 685 | } elsif($arg =~/^-/) { | ||
1108 | 686 | print "Unknown option: $arg\n\n" if(!$var); | ||
1109 | 687 | showUsage(); | ||
1110 | 688 | } else { | ||
1111 | 689 | $basedir = locateSyncProfile($arg); | ||
1112 | 690 | die "Could not find a sync.profile for '$arg'\n" if (!$basedir); | ||
1113 | 691 | $basedir = dirname($basedir); | ||
1114 | 692 | normalizePath(\$basedir); | ||
1115 | 693 | $quoted_basedir = "\Q$basedir"; | ||
1116 | 694 | $var = "ignore"; | ||
1117 | 695 | } | ||
1118 | 696 | |||
1119 | 697 | #do something | ||
1120 | 698 | if(!$var || $var eq "show_help") { | ||
1121 | 699 | print "Unknown option: $arg\n\n" if(!$var); | ||
1122 | 700 | showUsage(); | ||
1123 | 701 | } elsif ($var eq "copy") { | ||
1124 | 702 | if($val eq "yes") { | ||
1125 | 703 | $copy_headers++; | ||
1126 | 704 | } elsif($showonly) { | ||
1127 | 705 | $copy_headers--; | ||
1128 | 706 | } | ||
1129 | 707 | } elsif ($var eq "showonly") { | ||
1130 | 708 | if($val eq "yes") { | ||
1131 | 709 | $showonly++; | ||
1132 | 710 | } elsif($showonly) { | ||
1133 | 711 | $showonly--; | ||
1134 | 712 | } | ||
1135 | 713 | } elsif ($var eq "verbose") { | ||
1136 | 714 | if($val eq "yes") { | ||
1137 | 715 | $verbose_level++; | ||
1138 | 716 | } elsif($val eq "no" && $verbose_level) { | ||
1139 | 717 | $verbose_level--; | ||
1140 | 718 | } else { | ||
1141 | 719 | $verbose_level = int($val); | ||
1142 | 720 | } | ||
1143 | 721 | } elsif ($var eq "check-includes") { | ||
1144 | 722 | if($val eq "yes") { | ||
1145 | 723 | $check_includes++; | ||
1146 | 724 | } elsif($check_includes) { | ||
1147 | 725 | $check_includes--; | ||
1148 | 726 | } | ||
1149 | 727 | } elsif ($var eq "remove-stale") { | ||
1150 | 728 | if($val eq "yes") { | ||
1151 | 729 | $remove_stale++; | ||
1152 | 730 | } elsif($remove_stale) { | ||
1153 | 731 | $remove_stale--; | ||
1154 | 732 | } | ||
1155 | 733 | } elsif ($var eq "windows") { | ||
1156 | 734 | if($val eq "yes") { | ||
1157 | 735 | $force_win++; | ||
1158 | 736 | } elsif($force_win) { | ||
1159 | 737 | $force_win--; | ||
1160 | 738 | } | ||
1161 | 739 | } elsif ($var eq "relative") { | ||
1162 | 740 | if($val eq "yes") { | ||
1163 | 741 | $force_relative++; | ||
1164 | 742 | } elsif($force_relative) { | ||
1165 | 743 | $force_relative--; | ||
1166 | 744 | } | ||
1167 | 745 | } elsif ($var eq "minimal") { | ||
1168 | 746 | if($val eq "yes") { | ||
1169 | 747 | $minimal++; | ||
1170 | 748 | } elsif($minimal) { | ||
1171 | 749 | $minimal--; | ||
1172 | 750 | } | ||
1173 | 751 | } elsif ($var eq "module") { | ||
1174 | 752 | push @modules_to_sync, $val; | ||
1175 | 753 | } elsif ($var eq "separate-module") { | ||
1176 | 754 | my ($module, $prodir, $headerdir) = split(/:/, $val); | ||
1177 | 755 | $modules{$module} = $prodir; | ||
1178 | 756 | push @modules_to_sync, $module; | ||
1179 | 757 | $moduleheaders{$module} = $headerdir; | ||
1180 | 758 | } elsif ($var eq "version") { | ||
1181 | 759 | if($val) { | ||
1182 | 760 | $module_version = $val; | ||
1183 | 761 | } else { | ||
1184 | 762 | die "The -version option requires an argument"; | ||
1185 | 763 | } | ||
1186 | 764 | } elsif ($var eq "output") { | ||
1187 | 765 | my $outdir = $val; | ||
1188 | 766 | if(checkRelative($outdir)) { | ||
1189 | 767 | $out_basedir = getcwd(); | ||
1190 | 768 | chomp $out_basedir; | ||
1191 | 769 | $out_basedir .= "/" . $outdir; | ||
1192 | 770 | } else { | ||
1193 | 771 | $out_basedir = $outdir; | ||
1194 | 772 | } | ||
1195 | 773 | normalizePath(\$out_basedir); | ||
1196 | 774 | } | ||
1197 | 775 | } | ||
1198 | 776 | |||
1199 | 777 | # if we have no $basedir we cannot be sure which sources you want, so die | ||
1200 | 778 | die "Could not find any sync.profile for your module!\nPass <module directory> to syncqt to sync your header files.\nsyncqt failed" if (!$basedir); | ||
1201 | 779 | |||
1202 | 780 | my $class_lib_map_contents = ""; | ||
1203 | 781 | our @ignore_headers = (); | ||
1204 | 782 | our @ignore_for_master_contents = (); | ||
1205 | 783 | our @ignore_for_include_check = (); | ||
1206 | 784 | our @ignore_for_qt_begin_namespace_check = (); | ||
1207 | 785 | our @ignore_for_qt_module_check = (); | ||
1208 | 786 | our %inject_headers = (); | ||
1209 | 787 | |||
1210 | 788 | # load the module's sync.profile here, before we can | ||
1211 | 789 | loadSyncProfile(\$basedir, \$out_basedir); | ||
1212 | 790 | |||
1213 | 791 | @modules_to_sync = keys(%modules) if($#modules_to_sync == -1); | ||
1214 | 792 | |||
1215 | 793 | my %allmoduleheadersprivate = map { $_ => 1 } @allmoduleheadersprivate; | ||
1216 | 794 | |||
1217 | 795 | $isunix = checkUnix; #cache checkUnix | ||
1218 | 796 | |||
1219 | 797 | if (!$module_version) { | ||
1220 | 798 | my $filco = fileContents($basedir."/src/corelib/global/qglobal.h"); | ||
1221 | 799 | if ($filco !~ m,.*^#[ \t]*define[ \t]+QT_VERSION_STR[ \t]+"([^"]+)".*,sm) { | ||
1222 | 800 | die "Cannot determine Qt/Module version. Use -version.\n"; | ||
1223 | 801 | } | ||
1224 | 802 | $module_version = $1; | ||
1225 | 803 | } | ||
1226 | 804 | foreach my $lib (@modules_to_sync) { | ||
1227 | 805 | die "No such module: $lib" unless(defined $modules{$lib}); | ||
1228 | 806 | |||
1229 | 807 | #iteration info | ||
1230 | 808 | my $module = $modules{$lib}; | ||
1231 | 809 | my $is_qt = !($module =~ s/^!//); | ||
1232 | 810 | my @dirs = split(/;/, $module); | ||
1233 | 811 | my $dir = $dirs[0]; | ||
1234 | 812 | |||
1235 | 813 | my $pathtoheaders = ""; | ||
1236 | 814 | $pathtoheaders = $moduleheaders{$lib} if ($moduleheaders{$lib}); | ||
1237 | 815 | |||
1238 | 816 | my $allheadersprivate = 0; | ||
1239 | 817 | $allheadersprivate = 1 if $allmoduleheadersprivate{$lib}; | ||
1240 | 818 | |||
1241 | 819 | #information used after the syncing | ||
1242 | 820 | my $pri_install_classes = ""; | ||
1243 | 821 | my $pri_install_files = ""; | ||
1244 | 822 | my $pri_install_pfiles = ""; | ||
1245 | 823 | my $pri_install_qpafiles = ""; | ||
1246 | 824 | |||
1247 | 825 | my $libcapitals = uc($lib); | ||
1248 | 826 | my $master_contents = | ||
1249 | 827 | "#ifndef QT_".$libcapitals."_MODULE_H\n" . | ||
1250 | 828 | "#define QT_".$libcapitals."_MODULE_H\n" . | ||
1251 | 829 | "#include <$lib/${lib}Depends>\n"; | ||
1252 | 830 | |||
1253 | 831 | #remove the old files | ||
1254 | 832 | if($remove_stale) { | ||
1255 | 833 | my %injections = (); | ||
1256 | 834 | for my $p (keys %inject_headers) { | ||
1257 | 835 | next unless ($p =~ /^\Q$dir\E(\/|$)/); | ||
1258 | 836 | my $sp = $p; | ||
1259 | 837 | $sp =~ s,^\Q$basedir\E/,$out_basedir/,; | ||
1260 | 838 | for my $n (@{$inject_headers{$p}}) { | ||
1261 | 839 | $injections{$sp."/".$n} = 1; | ||
1262 | 840 | } | ||
1263 | 841 | } | ||
1264 | 842 | my @subdirs = ("$out_basedir/include/$lib"); | ||
1265 | 843 | foreach my $subdir (@subdirs) { | ||
1266 | 844 | if (opendir DIR, $subdir) { | ||
1267 | 845 | foreach my $t (sort { $b cmp $a } readdir(DIR)) { | ||
1268 | 846 | my $file = "$subdir/$t"; | ||
1269 | 847 | if(-d $file) { | ||
1270 | 848 | push @subdirs, $file unless($t eq "." || $t eq ".."); | ||
1271 | 849 | } else { | ||
1272 | 850 | my @files = ($file); | ||
1273 | 851 | #push @files, "$out_basedir/include/Qt/$t" if(-e "$out_basedir/include/Qt/$t"); | ||
1274 | 852 | foreach my $file (@files) { | ||
1275 | 853 | my $remove_file = 0; | ||
1276 | 854 | if(open(F, "<$file")) { | ||
1277 | 855 | while(my $line = <F>) { | ||
1278 | 856 | chomp $line; | ||
1279 | 857 | if($line =~ /^\#include \"([^\"]*)\"$/) { | ||
1280 | 858 | my $include = $1; | ||
1281 | 859 | $include = $subdir . "/" . $include unless(substr($include, 0, 1) eq "/"); | ||
1282 | 860 | $remove_file = 1 unless(-e $include or defined $injections{cleanPath($include)}); | ||
1283 | 861 | } else { | ||
1284 | 862 | $remove_file = 0; | ||
1285 | 863 | last; | ||
1286 | 864 | } | ||
1287 | 865 | } | ||
1288 | 866 | close(F); | ||
1289 | 867 | unlink $file if($remove_file); | ||
1290 | 868 | } | ||
1291 | 869 | } | ||
1292 | 870 | } | ||
1293 | 871 | } | ||
1294 | 872 | closedir DIR; | ||
1295 | 873 | } | ||
1296 | 874 | |||
1297 | 875 | } | ||
1298 | 876 | } | ||
1299 | 877 | |||
1300 | 878 | #create the new ones | ||
1301 | 879 | foreach my $current_dir (@dirs) { | ||
1302 | 880 | my $thisprivate = 0; | ||
1303 | 881 | ($current_dir =~ s/^\^//) and $thisprivate = 1; | ||
1304 | 882 | my @headers_paths = split(/;/, $pathtoheaders); | ||
1305 | 883 | if (@headers_paths) { | ||
1306 | 884 | @headers_paths = map { "$current_dir/$_" } @headers_paths; | ||
1307 | 885 | } else { | ||
1308 | 886 | push @headers_paths, $current_dir; | ||
1309 | 887 | } | ||
1310 | 888 | |||
1311 | 889 | foreach my $headers_dir (@headers_paths) { | ||
1312 | 890 | #calc subdirs | ||
1313 | 891 | my @subdirs = listSubdirs($headers_dir); | ||
1314 | 892 | |||
1315 | 893 | #calc files and "copy" them | ||
1316 | 894 | foreach my $subdir (@subdirs) { | ||
1317 | 895 | my @headers = findFiles($subdir, "^[-a-z0-9_]*\\.h\$" , 0); | ||
1318 | 896 | my $header_dirname = ""; | ||
1319 | 897 | foreach my $header (@headers) { | ||
1320 | 898 | $header = 0 if($header =~ /^ui_.*.h/); | ||
1321 | 899 | foreach (@ignore_headers) { | ||
1322 | 900 | $header = 0 if($header eq $_); | ||
1323 | 901 | } | ||
1324 | 902 | if($header) { | ||
1325 | 903 | my $header_copies = 0; | ||
1326 | 904 | #figure out if it is a public header | ||
1327 | 905 | my $public_header = $header; | ||
1328 | 906 | my $qpa_header = 0; | ||
1329 | 907 | if(isQpaHeader($public_header)) { | ||
1330 | 908 | $public_header = 0; | ||
1331 | 909 | $qpa_header = 1; | ||
1332 | 910 | } elsif($allheadersprivate || $thisprivate || $public_header =~ /_p.h$/ || $public_header =~ /_pch.h$/) { | ||
1333 | 911 | $public_header = 0; | ||
1334 | 912 | } else { | ||
1335 | 913 | foreach (@ignore_for_master_contents) { | ||
1336 | 914 | $public_header = 0 if($header eq $_); | ||
1337 | 915 | } | ||
1338 | 916 | } | ||
1339 | 917 | |||
1340 | 918 | my $iheader = $subdir . "/" . $header; | ||
1341 | 919 | my @classes = $public_header && (!$minimal && $is_qt) ? classNames($iheader) : (); | ||
1342 | 920 | if($showonly) { | ||
1343 | 921 | print "$header [$lib]\n"; | ||
1344 | 922 | foreach(@classes) { | ||
1345 | 923 | print "SYMBOL: $_\n"; | ||
1346 | 924 | } | ||
1347 | 925 | } else { | ||
1348 | 926 | my $ts = (stat($iheader))[9]; | ||
1349 | 927 | #find out all the places it goes.. | ||
1350 | 928 | my @headers; | ||
1351 | 929 | if ($public_header) { | ||
1352 | 930 | @headers = ( "$out_basedir/include/$lib/$header" ); | ||
1353 | 931 | foreach my $full_class (@classes) { | ||
1354 | 932 | my $header_base = basename($header); | ||
1355 | 933 | # Strip namespaces: | ||
1356 | 934 | my $class = $full_class; | ||
1357 | 935 | $class =~ s/^.*:://; | ||
1358 | 936 | # if ($class =~ m/::/) { | ||
1359 | 937 | # class =~ s,::,/,g; | ||
1360 | 938 | # } | ||
1361 | 939 | |||
1362 | 940 | if (defined $explicitheaders{$lib}{$class}) { | ||
1363 | 941 | $header_copies++ if(syncHeader($lib, "$out_basedir/include/$lib/$class", "$out_basedir/include/$lib/$explicitheaders{$lib}{$class}", 0, $ts)); | ||
1364 | 942 | } else { | ||
1365 | 943 | $class_lib_map_contents .= "QT_CLASS_LIB($full_class, $lib, $header_base)\n"; | ||
1366 | 944 | $header_copies++ if(syncHeader($lib, "$out_basedir/include/$lib/$class", "$out_basedir/include/$lib/$header", 0, $ts)); | ||
1367 | 945 | } | ||
1368 | 946 | } | ||
1369 | 947 | |||
1370 | 948 | if ($explicitheaders{$lib}{basename($header)}) { | ||
1371 | 949 | $header_copies++ if(syncHeader($lib, "$out_basedir/include/$lib/$explicitheaders{$lib}{basename($header)}", "$out_basedir/include/$lib/$header", 0, $ts)); | ||
1372 | 950 | } | ||
1373 | 951 | |||
1374 | 952 | } elsif ($create_private_headers && !$qpa_header) { | ||
1375 | 953 | @headers = ( "$out_basedir/include/$lib/$module_version/$lib/private/$header" ); | ||
1376 | 954 | } elsif ($create_private_headers) { | ||
1377 | 955 | @headers = ( "$out_basedir/include/$lib/$module_version/$lib/qpa/$header" ); | ||
1378 | 956 | } | ||
1379 | 957 | |||
1380 | 958 | foreach(@headers) { #sync them | ||
1381 | 959 | $header_copies++ if (syncHeader($lib, $_, $iheader, $copy_headers, $ts)); | ||
1382 | 960 | } | ||
1383 | 961 | |||
1384 | 962 | if($public_header) { | ||
1385 | 963 | #put it into the master file | ||
1386 | 964 | $master_contents .= "#include \"$public_header\"\n" if (shouldMasterInclude($iheader)); | ||
1387 | 965 | |||
1388 | 966 | #deal with the install directives | ||
1389 | 967 | if($public_header) { | ||
1390 | 968 | my $pri_install_iheader = fixPaths($iheader, $dir); | ||
1391 | 969 | foreach my $class (@classes) { | ||
1392 | 970 | # Strip namespaces: | ||
1393 | 971 | $class =~ s/^.*:://; | ||
1394 | 972 | # if ($class =~ m/::/) { | ||
1395 | 973 | # $class =~ s,::,/,g; | ||
1396 | 974 | # } | ||
1397 | 975 | my $class_header = fixPaths("$out_basedir/include/$lib/$class", | ||
1398 | 976 | $dir) . " "; | ||
1399 | 977 | $pri_install_classes .= $class_header | ||
1400 | 978 | unless($pri_install_classes =~ $class_header); | ||
1401 | 979 | } | ||
1402 | 980 | if ($explicitheaders{$lib}{basename($iheader)}) { | ||
1403 | 981 | my $compat_header = fixPaths("$out_basedir/include/$lib/$explicitheaders{$lib}{basename($iheader)}", | ||
1404 | 982 | $dir) . " "; | ||
1405 | 983 | $pri_install_files .= $compat_header unless($pri_install_files =~ $compat_header); | ||
1406 | 984 | } | ||
1407 | 985 | $pri_install_files.= "$pri_install_iheader ";; | ||
1408 | 986 | } | ||
1409 | 987 | } | ||
1410 | 988 | elsif ($qpa_header) { | ||
1411 | 989 | my $pri_install_iheader = fixPaths($iheader, $dir); | ||
1412 | 990 | $pri_install_qpafiles.= "$pri_install_iheader ";; | ||
1413 | 991 | } | ||
1414 | 992 | else { | ||
1415 | 993 | my $pri_install_iheader = fixPaths($iheader, $dir); | ||
1416 | 994 | $pri_install_pfiles.= "$pri_install_iheader ";; | ||
1417 | 995 | } | ||
1418 | 996 | } | ||
1419 | 997 | |||
1420 | 998 | if ($verbose_level && $header_copies) { | ||
1421 | 999 | my $new_header_dirname = dirname($iheader); | ||
1422 | 1000 | basePrettify(\$new_header_dirname) if ($new_header_dirname && $verbose_level < 2); | ||
1423 | 1001 | my $header_base = basename($iheader); | ||
1424 | 1002 | if ($verbose_level < 3) { | ||
1425 | 1003 | my $line_prefix = ","; | ||
1426 | 1004 | if ($new_header_dirname ne $header_dirname) { | ||
1427 | 1005 | $line_prefix = "$lib: created fwd-include header(s) for $new_header_dirname/ {"; | ||
1428 | 1006 | $line_prefix = " }\n".$line_prefix if ($header_dirname); | ||
1429 | 1007 | $header_dirname = $new_header_dirname; | ||
1430 | 1008 | } else { | ||
1431 | 1009 | $line_prefix = ","; | ||
1432 | 1010 | } | ||
1433 | 1011 | print "$line_prefix $header_base ($header_copies)"; | ||
1434 | 1012 | } else { # $verbose_level >= 3 | ||
1435 | 1013 | basePrettify(\$iheader) if ($verbose_level == 3); | ||
1436 | 1014 | print "$lib: created $header_copies fwd-include headers for $iheader\n"; | ||
1437 | 1015 | } | ||
1438 | 1016 | } | ||
1439 | 1017 | } | ||
1440 | 1018 | } | ||
1441 | 1019 | print " }\n" if ($header_dirname && $verbose_level > 0 && $verbose_level < 3); | ||
1442 | 1020 | } | ||
1443 | 1021 | } | ||
1444 | 1022 | } | ||
1445 | 1023 | |||
1446 | 1024 | # close the master include: | ||
1447 | 1025 | $master_contents .= | ||
1448 | 1026 | "#include \"".lc($lib)."version.h\"\n" . | ||
1449 | 1027 | "#endif\n"; | ||
1450 | 1028 | |||
1451 | 1029 | unless ($showonly || $minimal || !$is_qt) { | ||
1452 | 1030 | # create deprecated headers | ||
1453 | 1031 | my $first = 1; | ||
1454 | 1032 | while (my ($header, $include) = each %{$deprecatedheaders{$lib}}) { | ||
1455 | 1033 | my $public_header = 0; | ||
1456 | 1034 | $public_header = 1 unless ($allheadersprivate || ($header =~ /_p\.h$/)); | ||
1457 | 1035 | next unless ($public_header || $create_private_headers); | ||
1458 | 1036 | |||
1459 | 1037 | my $header_path = "$out_basedir/include/$lib/"; | ||
1460 | 1038 | unless ($public_header) { | ||
1461 | 1039 | $header_path .= "$module_version/$lib/private/"; | ||
1462 | 1040 | } | ||
1463 | 1041 | $header_path .= "$header"; | ||
1464 | 1042 | |||
1465 | 1043 | unless (-e $header_path) { | ||
1466 | 1044 | my $guard = "DEPRECATED_HEADER_" . $lib . "_" . $header; | ||
1467 | 1045 | $guard =~ s/([^a-zA-Z0-9_])/_/g; | ||
1468 | 1046 | |||
1469 | 1047 | my $header_dir = dirname($header_path); | ||
1470 | 1048 | make_path($header_dir, $lib, $verbose_level); | ||
1471 | 1049 | |||
1472 | 1050 | my $hdrcont = | ||
1473 | 1051 | "#ifndef $guard\n" . | ||
1474 | 1052 | "#define $guard\n"; | ||
1475 | 1053 | my $warning = "Header <$lib/"; | ||
1476 | 1054 | $warning .= "private/" unless ($public_header); | ||
1477 | 1055 | $warning .= "$header> is deprecated. Please include <$include> instead."; | ||
1478 | 1056 | $hdrcont .= | ||
1479 | 1057 | "#if defined(__GNUC__)\n" . | ||
1480 | 1058 | "# warning $warning\n" . | ||
1481 | 1059 | "#elif defined(_MSC_VER)\n" . | ||
1482 | 1060 | "# pragma message (\"$warning\")\n" . | ||
1483 | 1061 | "#endif\n" . | ||
1484 | 1062 | "#include <$include>\n"; | ||
1485 | 1063 | if ($public_header) { | ||
1486 | 1064 | $hdrcont .= | ||
1487 | 1065 | "#if 0\n" . | ||
1488 | 1066 | "#pragma qt_no_master_include\n" . | ||
1489 | 1067 | "#endif\n"; | ||
1490 | 1068 | } | ||
1491 | 1069 | $hdrcont .= | ||
1492 | 1070 | "#endif\n"; | ||
1493 | 1071 | if (writeFile($header_path, $hdrcont)) { | ||
1494 | 1072 | if ($verbose_level < 3) { | ||
1495 | 1073 | my $line_prefix = ","; | ||
1496 | 1074 | $line_prefix = "$lib: created deprecated header(s) {" if ($first); | ||
1497 | 1075 | print "$line_prefix $header"; | ||
1498 | 1076 | } else { | ||
1499 | 1077 | print "$lib: created deprecated header $header => $include\n"; | ||
1500 | 1078 | } | ||
1501 | 1079 | $first = 0; | ||
1502 | 1080 | } | ||
1503 | 1081 | } | ||
1504 | 1082 | |||
1505 | 1083 | my $addendum = fixPaths($header_path, $dir) . " "; | ||
1506 | 1084 | if ($public_header) { | ||
1507 | 1085 | $pri_install_files .= $addendum; | ||
1508 | 1086 | } else { | ||
1509 | 1087 | $pri_install_pfiles .= $addendum; | ||
1510 | 1088 | } | ||
1511 | 1089 | } | ||
1512 | 1090 | if ($verbose_level < 3) { | ||
1513 | 1091 | print " }\n" unless ($first); | ||
1514 | 1092 | } | ||
1515 | 1093 | |||
1516 | 1094 | # module version header | ||
1517 | 1095 | my $vheader = "$out_basedir/include/$lib/".lc($lib)."version.h"; | ||
1518 | 1096 | my $VHeader = "$out_basedir/include/$lib/${lib}Version"; | ||
1519 | 1097 | syncHeader($lib, $VHeader, $vheader, 0); | ||
1520 | 1098 | $pri_install_files .= fixPaths($vheader, $dir) . " "; | ||
1521 | 1099 | $pri_install_classes .= fixPaths($VHeader, $dir) . " "; | ||
1522 | 1100 | my @versions = split(/\./, $module_version); | ||
1523 | 1101 | my $modulehexstring = sprintf("0x%02X%02X%02X", $versions[0], $versions[1], $versions[2]); | ||
1524 | 1102 | my $vhdrcont = | ||
1525 | 1103 | "/* This file was generated by syncqt. */\n". | ||
1526 | 1104 | "#ifndef QT_".uc($lib)."_VERSION_H\n". | ||
1527 | 1105 | "#define QT_".uc($lib)."_VERSION_H\n". | ||
1528 | 1106 | "\n". | ||
1529 | 1107 | "#define ".uc($lib)."_VERSION_STR \"".$module_version."\"\n". | ||
1530 | 1108 | "\n". | ||
1531 | 1109 | "#define ".uc($lib)."_VERSION ".$modulehexstring."\n". | ||
1532 | 1110 | "\n". | ||
1533 | 1111 | "#endif // QT_".uc($lib)."_VERSION_H\n"; | ||
1534 | 1112 | writeFile($vheader, $vhdrcont, $lib, "version header"); | ||
1535 | 1113 | |||
1536 | 1114 | my $master_include = "$out_basedir/include/$lib/$lib"; | ||
1537 | 1115 | $pri_install_files .= fixPaths($master_include, $dir) . " "; | ||
1538 | 1116 | writeFile($master_include, $master_contents, $lib, "master header"); | ||
1539 | 1117 | } | ||
1540 | 1118 | |||
1541 | 1119 | unless ($showonly || $minimal) { | ||
1542 | 1120 | #handle the headers.pri for each module | ||
1543 | 1121 | my $headers_pri_contents = ""; | ||
1544 | 1122 | $headers_pri_contents .= "SYNCQT.HEADER_FILES = $pri_install_files\n"; | ||
1545 | 1123 | $headers_pri_contents .= "SYNCQT.HEADER_CLASSES = $pri_install_classes\n"; | ||
1546 | 1124 | $headers_pri_contents .= "SYNCQT.PRIVATE_HEADER_FILES = $pri_install_pfiles\n"; | ||
1547 | 1125 | $headers_pri_contents .= "SYNCQT.QPA_HEADER_FILES = $pri_install_qpafiles\n"; | ||
1548 | 1126 | my $headers_pri_file = "$out_basedir/include/$lib/headers.pri"; | ||
1549 | 1127 | writeFile($headers_pri_file, $headers_pri_contents, $lib, "headers.pri file"); | ||
1550 | 1128 | } | ||
1551 | 1129 | } | ||
1552 | 1130 | |||
1553 | 1131 | if($check_includes) { | ||
1554 | 1132 | foreach my $lib (@modules_to_sync) { | ||
1555 | 1133 | next if ($modules{$lib} =~ /^!/); | ||
1556 | 1134 | #calc subdirs | ||
1557 | 1135 | my @subdirs = listSubdirs(map { s/^\^//; $_ } split(/;/, $modules{$lib})); | ||
1558 | 1136 | |||
1559 | 1137 | foreach my $subdir (@subdirs) { | ||
1560 | 1138 | my @headers = findFiles($subdir, "^[-a-z0-9_]*\\.h\$" , 0); | ||
1561 | 1139 | foreach my $header (@headers) { | ||
1562 | 1140 | my $header_skip_qt_begin_namespace_test = 0; | ||
1563 | 1141 | $header = 0 if($header =~ /^ui_.*.h/); | ||
1564 | 1142 | $header = 0 if ($header eq lc($lib)."version.h"); | ||
1565 | 1143 | foreach (@ignore_headers) { | ||
1566 | 1144 | $header = 0 if($header eq $_); | ||
1567 | 1145 | } | ||
1568 | 1146 | if($header) { | ||
1569 | 1147 | my $public_header = $header; | ||
1570 | 1148 | if($public_header =~ /_p.h$/ || $public_header =~ /_pch.h$/) { | ||
1571 | 1149 | $public_header = 0; | ||
1572 | 1150 | } elsif (isQpaHeader($public_header)) { | ||
1573 | 1151 | $public_header = 0; | ||
1574 | 1152 | } else { | ||
1575 | 1153 | foreach (@ignore_for_master_contents) { | ||
1576 | 1154 | $public_header = 0 if($header eq $_); | ||
1577 | 1155 | } | ||
1578 | 1156 | if($public_header) { | ||
1579 | 1157 | foreach (@ignore_for_include_check) { | ||
1580 | 1158 | $public_header = 0 if($header eq $_); | ||
1581 | 1159 | } | ||
1582 | 1160 | foreach(@ignore_for_qt_begin_namespace_check) { | ||
1583 | 1161 | $header_skip_qt_begin_namespace_test = 1 if ($header eq $_); | ||
1584 | 1162 | } | ||
1585 | 1163 | } | ||
1586 | 1164 | } | ||
1587 | 1165 | |||
1588 | 1166 | my $iheader = $subdir . "/" . $header; | ||
1589 | 1167 | if($public_header) { | ||
1590 | 1168 | if(open(F, "<$iheader")) { | ||
1591 | 1169 | my $qt_begin_namespace_found = 0; | ||
1592 | 1170 | my $qt_end_namespace_found = 0; | ||
1593 | 1171 | my $qt_namespace_suffix = ""; | ||
1594 | 1172 | my $line; | ||
1595 | 1173 | my $stop_processing = 0; | ||
1596 | 1174 | while($line = <F>) { | ||
1597 | 1175 | chomp $line; | ||
1598 | 1176 | my $output_line = 1; | ||
1599 | 1177 | if($line =~ /^ *\# *pragma (qt_no_included_check|qt_sync_stop_processing)/) { | ||
1600 | 1178 | $stop_processing = 1; | ||
1601 | 1179 | last; | ||
1602 | 1180 | } elsif($line =~ /^ *\# *include/) { | ||
1603 | 1181 | my $include = $line; | ||
1604 | 1182 | if($line =~ /<.*>/) { | ||
1605 | 1183 | $include =~ s,.*<(.*)>.*,$1,; | ||
1606 | 1184 | } elsif($line =~ /".*"/) { | ||
1607 | 1185 | $include =~ s,.*"(.*)".*,$1,; | ||
1608 | 1186 | } else { | ||
1609 | 1187 | $include = 0; | ||
1610 | 1188 | } | ||
1611 | 1189 | if($include) { | ||
1612 | 1190 | for my $trylib (keys(%modules)) { | ||
1613 | 1191 | if(-e "$out_basedir/include/$trylib/$include") { | ||
1614 | 1192 | print "$lib: WARNING: $iheader includes $include when it should include $trylib/$include\n"; | ||
1615 | 1193 | } | ||
1616 | 1194 | } | ||
1617 | 1195 | } | ||
1618 | 1196 | } elsif ($header_skip_qt_begin_namespace_test == 0 and $line =~ /^QT_BEGIN_NAMESPACE(_[A-Z_]+)?\s*$/) { | ||
1619 | 1197 | $qt_namespace_suffix = defined($1) ? $1 : ""; | ||
1620 | 1198 | $qt_begin_namespace_found = 1; | ||
1621 | 1199 | } elsif ($header_skip_qt_begin_namespace_test == 0 and $line =~ /^QT_END_NAMESPACE$qt_namespace_suffix\s*$/) { | ||
1622 | 1200 | $qt_end_namespace_found = 1; | ||
1623 | 1201 | } | ||
1624 | 1202 | } | ||
1625 | 1203 | |||
1626 | 1204 | if ($header_skip_qt_begin_namespace_test == 0 and $stop_processing == 0) { | ||
1627 | 1205 | if ($qt_begin_namespace_found == 0) { | ||
1628 | 1206 | print "$lib: WARNING: $iheader does not include QT_BEGIN_NAMESPACE\n"; | ||
1629 | 1207 | } | ||
1630 | 1208 | |||
1631 | 1209 | if ($qt_begin_namespace_found && $qt_end_namespace_found == 0) { | ||
1632 | 1210 | print "$lib: WARNING: $iheader has QT_BEGIN_NAMESPACE$qt_namespace_suffix but no QT_END_NAMESPACE$qt_namespace_suffix\n"; | ||
1633 | 1211 | } | ||
1634 | 1212 | } | ||
1635 | 1213 | |||
1636 | 1214 | close(F); | ||
1637 | 1215 | } | ||
1638 | 1216 | } | ||
1639 | 1217 | } | ||
1640 | 1218 | } | ||
1641 | 1219 | } | ||
1642 | 1220 | } | ||
1643 | 1221 | } | ||
1644 | 1222 | |||
1645 | 1223 | exit 0; |
Functional testing shows this works great:
- Audio and video playback possible on device
- Installation on top of earlier Qt 5.2 upgraded device works
- Dist-upgrade from 5.0.2 continues to work, while now the qtmultimedia-touch packages don't need removal
Awesome!