Merge lp:~ulatekh/mixxx/mingw into lp:~mixxxdevelopers/mixxx/trunk

Proposed by Steven Boswell
Status: Needs review
Proposed branch: lp:~ulatekh/mixxx/mingw
Merge into: lp:~mixxxdevelopers/mixxx/trunk
Diff against target: 2508 lines (+946/-486)
34 files modified
mixxx/build/crossmingw.py (+2/-0)
mixxx/build/depends.py (+20/-6)
mixxx/build/features.py (+2/-0)
mixxx/build/mixxx.py (+21/-10)
mixxx/build/nsis/Mixxx.nsi (+6/-0)
mixxx/build/qtcreator/mixxx.pro (+616/-367)
mixxx/build/qtcreator/protobuf.pri (+39/-0)
mixxx/build/unused/create_mixxx_dmg.sh (+0/-10)
mixxx/build/unused/mixxx_dmg.sh (+14/-22)
mixxx/lib/fidlib-0.9.10/fidlib.c (+2/-2)
mixxx/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp (+2/-1)
mixxx/lib/soundtouch-1.6.0/TDStretch.cpp (+2/-1)
mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp (+4/-3)
mixxx/lib/xwax/lut.cpp (+5/-1)
mixxx/lib/xwax/timecoder.h (+8/-0)
mixxx/lib/xwax/timecoder_win32.cpp (+4/-0)
mixxx/src/SConscript (+141/-50)
mixxx/src/analyserbeats.cpp (+8/-1)
mixxx/src/analyserqueue.cpp (+4/-0)
mixxx/src/controllers/controllermanager.cpp (+2/-0)
mixxx/src/dlgprefbeats.cpp (+8/-0)
mixxx/src/dlgprefbeats.h (+2/-0)
mixxx/src/dlgpreferences.cpp (+2/-0)
mixxx/src/library/basesqltablemodel.cpp (+2/-2)
mixxx/src/library/browse/foldertreemodel.cpp (+2/-2)
mixxx/src/library/treeitemmodel.cpp (+6/-0)
mixxx/src/sampleutil.cpp (+3/-2)
mixxx/src/util/stat.h (+1/-1)
mixxx/src/vamp/vampanalyser.h (+4/-1)
mixxx/src/widget/wspinny.cpp (+10/-0)
mixxx/vamp-plugins/SConscript (+1/-1)
mixxx/vamp-plugins/dsp/DownBeat.h (+1/-1)
mixxx/vamp-plugins/dsp/GetKeyMode.h (+1/-1)
mixxx/vamp-plugins/dsp/TempoTrackV2.h (+1/-1)
To merge this branch: bzr merge lp:~ulatekh/mixxx/mingw
Reviewer Review Type Date Requested Status
Mixxx Development Team Pending
Review via email: mp+167075@code.launchpad.net

Description of the change

These changes, plus the contents of https://github.com/ulatekh/fedora-mingw-ardour , allow one to build the MS Windows version of Mixxx, using scons, from Fedora Core. That includes making an installer! Finally, the lament on http://mixxx.org/wiki/doku.php/build_windows_installer , i.e. "Now, doesn't this make you long for a MinGW build?", has been answered!

To post a comment you must log in.
lp:~ulatekh/mixxx/mingw updated
3383. By Steven Boswell

Now the MinGW build supports vamp, vinylcontrol, and hid, i.e. mingw{32,64}-phonon.

3384. By Steven Boswell

Now the MinGW build supports shoutcast.

3385. By Steven Boswell

Now copies the libid3tag DLL.

Unmerged revisions

3385. By Steven Boswell

Now copies the libid3tag DLL.

3384. By Steven Boswell

Now the MinGW build supports shoutcast.

3383. By Steven Boswell

Now the MinGW build supports vamp, vinylcontrol, and hid, i.e. mingw{32,64}-phonon.

3382. By Steven Boswell

Compared this branch to trunk, cleaned up some oversights.
Also made sure this branch still compiles and runs on Linux.

3381. By Steven Boswell

Updated the MinGW build for new dependencies libchromaprint and fftw.
Fixed non-VAMP compilation in WSpinny.

3380. By Steven Boswell

Merged with lp:mixxx

3379. By Steven Boswell

Fixed the MinGW 64-bit build and the MinGW NSIS installer generation!

3378. By Steven Boswell

The scons-driven MinGW build of Mixxx now links, runs, and creates a proper dist32 directory!

My command line thus far:
scons ladspa=0 shoutcast=0 hifieq=1 script=0 optimize=0 ffmpeg=0 target=windows crosscompile_root=/usr/i686-w64-mingw32/sys-root/mingw hss1394=0 vamp=0 vinylcontrol=0 hid=0 sqlitedll=1

This is working under Fedora Core 18.

I've made a repository for all the files needed to build Mixxx's dependencies under Fedora Core with MinGW:
https://github.com/ulatekh/fedora-mingw-ardour.git

3377. By Steven Boswell

Now a MinGW build can be made under Linux, with SCons!

3376. By Steven Boswell

Fixed the display of tracks in the track view!
Now the MinGW build of Mixxx appears to be functional! Further testing will have to reveal problems, because it looks fine!

Also removed references to Qt libraries that aren't used any more (Qt3Support, QtSvg, and QtXmlPatterns).

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'mixxx/build/crossmingw.py'
2--- mixxx/build/crossmingw.py 2010-10-05 02:00:00 +0000
3+++ mixxx/build/crossmingw.py 2013-06-13 22:06:31 +0000
4@@ -17,6 +17,8 @@
5 """)
6
7 def find(env):
8+ if 'CROSSMINGW_PREFIX' in env:
9+ prefixes.insert(0, env['CROSSMINGW_PREFIX'])
10 for prefix in prefixes:
11 # First search in the SCons path and then the OS path:
12 if env.WhereIs(prefix + 'gcc') or SCons.Util.WhereIs(prefix + 'gcc'):
13
14=== modified file 'mixxx/build/depends.py'
15--- mixxx/build/depends.py 2013-05-22 07:25:25 +0000
16+++ mixxx/build/depends.py 2013-06-13 22:06:31 +0000
17@@ -11,6 +11,8 @@
18 libs = ['portaudio']
19 if build.msvcdebug:
20 libs = ['portaudiod','portaudio-debug']
21+ if build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu:
22+ libs = ['portaudio', 'portaudio.dll', 'portaudio-2']
23 if not conf.CheckLib(libs):
24 raise Exception('Did not find libportaudio.a, portaudio.lib, or the PortAudio-v19 development header files.')
25
26@@ -187,8 +189,8 @@
27 # times.
28
29 qt_modules = [
30- 'QtCore', 'QtGui', 'QtOpenGL', 'QtXml', 'QtSvg',
31- 'QtSql', 'QtScript', 'QtXmlPatterns', 'QtNetwork'
32+ 'QtCore', 'QtGui', 'QtOpenGL', 'QtXml', 'QtSql', 'QtScript',
33+ 'QtNetwork'
34 #'QtUiTools', #'QtDesigner',
35 ]
36
37@@ -238,7 +240,6 @@
38 'QtOpenGL4',
39 'QtXml4',
40 'QtNetwork4',
41- 'QtXmlPatterns4',
42 'QtSql4',
43 'QtScript4',]
44 if use_qtwebkit:
45@@ -378,10 +379,13 @@
46 env.Append(CPPPATH=['#lib/%s' % self.SOUNDTOUCH_PATH])
47
48 # Check if the compiler has SSE extention enabled
49- # Allways the case on x64 (core instructions)
50+ # Always the case on x64 (core instructions)
51 optimize = int(util.get_flags(env, 'optimize', 1))
52 if self.sse_enabled(build):
53 env.Append(CPPDEFINES='SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS')
54+ build.env.Append(CCFLAGS = '-mmmx -msse')
55+ env.Append(CPPDEFINES='__MMX__')
56+ env.Append(CPPDEFINES='__SSE__')
57
58 class TagLib(Dependence):
59 def configure(self, build, conf):
60@@ -830,6 +834,9 @@
61 build.env.Append(CPPPATH=mixxx_lib_path)
62 build.env.Append(LIBPATH=mixxx_lib_path)
63
64+ # Find executables (e.g. protoc) in the winlib path
65+ build.env.AppendENVPath('PATH', mixxx_lib_path)
66+
67 #Ugh, MSVC-only hack :( see
68 #http://www.qtforum.org/article/17883/problem-using-qstring-fromstdwstring.html
69 build.env.Append(CXXFLAGS = '/Zc:wchar_t-')
70@@ -949,5 +956,12 @@
71 build.env.Append(LINKFLAGS = '/manifest') #Force MSVS to generate a manifest (MSVC2010)
72 elif build.toolchain_is_gnu:
73 # Makes the program not launch a shell first
74- build.env.Append(LINKFLAGS = '--subsystem,windows')
75- build.env.Append(LINKFLAGS = '-mwindows')
76+ build.env.Append(LINKFLAGS = '-Wl,-subsystem,windows')
77+ build.env.Append(CCFLAGS = '-mwindows')
78+ # Enable the use of threads
79+ build.env.Append(CCFLAGS = '-mthreads')
80+ # Linking won't succeed without this
81+ build.env.Append(CCFLAGS = '-fno-keep-inline-dllexport')
82+ # Link in libz at the end, so dependent libraries find it
83+ build.env.Append(LIBS = 'z');
84+
85
86=== modified file 'mixxx/build/features.py'
87--- mixxx/build/features.py 2013-05-19 09:50:56 +0000
88+++ mixxx/build/features.py 2013-06-13 22:06:31 +0000
89@@ -446,6 +446,8 @@
90 if not self.enabled(build):
91 return
92
93+ build.env.Append(CPPDEFINES = '__VAMP__')
94+
95 # If there is no system vamp-hostdk installed, then we'll directly link
96 # the vamp-hostsdk.
97 if not conf.CheckLib(['vamp-hostsdk']):
98
99=== modified file 'mixxx/build/mixxx.py'
100--- mixxx/build/mixxx.py 2013-06-13 02:52:49 +0000
101+++ mixxx/build/mixxx.py 2013-06-13 22:06:31 +0000
102@@ -128,6 +128,15 @@
103 default_qtdir = depends.Qt.DEFAULT_QTDIRS.get(self.platform, '')
104 qtdir = Script.ARGUMENTS.get('qtdir',
105 os.environ.get('QTDIR', default_qtdir))
106+ if self.crosscompile:
107+ crosscompile_root = Script.ARGUMENTS.get('crosscompile_root', '')
108+
109+ if crosscompile_root == '':
110+ print "Your build setup indicates this is a cross-compile, but you did not specify 'crosscompile_root', which is required."
111+ Script.Exit(1)
112+
113+ self.crosscompile_root = os.path.abspath(crosscompile_root)
114+ qtdir = self.crosscompile_root
115
116 # Validate the specified qtdir exists
117 if not os.path.exists(qtdir):
118@@ -156,6 +165,15 @@
119 if self.crosscompile:
120 if self.platform_is_windows:
121 tools.append('crossmingw')
122+
123+ # Find the toolchain when building under Fedora.
124+ if self.toolchain_is_gnu:
125+ if self.machine_is_64bit:
126+ extra_arguments['CROSSMINGW_PREFIX'] \
127+ = 'x86_64-w64-mingw32-'
128+ else:
129+ extra_arguments['CROSSMINGW_PREFIX'] \
130+ = 'i686-w64-mingw32-'
131 if self.platform == 'osx':
132 tools.append('crossosx')
133
134@@ -183,16 +201,9 @@
135 self.env.Append(LINKFLAGS = '-arch x86_64')
136
137 if self.crosscompile:
138- crosscompile_root = Script.ARGUMENTS.get('crosscompile_root', '')
139-
140- if crosscompile_root == '':
141- print "Your build setup indicates this is a cross-compile, but you did not specify 'crosscompile_root', which is required."
142- Script.Exit(1)
143-
144- crosscompile_root = os.path.abspath(crosscompile_root)
145- self.env.Append(CPPPATH=os.path.join(crosscompile_root, 'include'))
146- self.env.Append(LIBPATH=os.path.join(crosscompile_root, 'lib'))
147- self.env.Append(LIBPATH=os.path.join(crosscompile_root, 'bin'))
148+ self.env.Append(CPPPATH=os.path.join(self.crosscompile_root, 'include'))
149+ self.env.Append(LIBPATH=os.path.join(self.crosscompile_root, 'lib'))
150+ self.env.Append(LIBPATH=os.path.join(self.crosscompile_root, 'bin'))
151
152 self.install_options()
153 self.virtualize_build_dir()
154
155=== modified file 'mixxx/build/nsis/Mixxx.nsi'
156--- mixxx/build/nsis/Mixxx.nsi 2013-06-13 03:13:53 +0000
157+++ mixxx/build/nsis/Mixxx.nsi 2013-06-13 22:06:31 +0000
158@@ -109,6 +109,8 @@
159
160 FunctionEnd
161
162+!ifdef WINLIB_PATH
163+
164 ;-------------------------------
165 ; Install the VC 2010 redistributable DLLs if they're not already.
166 Function InstallVCRedist
167@@ -187,6 +189,8 @@
168
169 FunctionEnd
170
171+!endif ; WINLIB_PATH
172+
173 ;--------------------------------
174 ; The stuff to install
175
176@@ -194,7 +198,9 @@
177
178 SectionIn RO
179
180+!ifdef WINLIB_PATH
181 Call InstallVCRedist
182+!endif ; WINLIB_PATH
183
184 ; Set output path to the installation directory.
185 SetOutPath $INSTDIR
186
187=== modified file 'mixxx/build/qtcreator/mixxx.pro'
188--- mixxx/build/qtcreator/mixxx.pro 2013-06-13 03:13:53 +0000
189+++ mixxx/build/qtcreator/mixxx.pro 2013-06-13 22:06:31 +0000
190@@ -1,5 +1,5 @@
191-CONFIG += debug link_pkgconfig portmidi script vinylcontrol m4a
192-# ladspa
193+CONFIG += debug link_pkgconfig portmidi script vinylcontrol mad
194+#CONFIG += m4a hss1394 ladspa
195 DEFINES += QMAKE \ # define QMAKE for not-SCons specific ifdefs like ui_scriptstudio.h
196 __PORTAUDIO__ \
197 __SNDFILE__ \
198@@ -61,7 +61,7 @@
199 OBJECTS_DIR = $$BUILDDIR/obj
200
201 win32-g++ { # Bit ugly, but you can thank MS-DOS shell for f-ing up the normal way of parsing.
202- QMAKE_CXXFLAGS += "\"-DSETTINGS_PATH=\\\"Local\\ Settings/Application\\ Data/Mixxx/\\\"\""
203+ QMAKE_CXXFLAGS += "\"-DSETTINGS_PATH=\\\"Local Settings/Application Data/Mixxx/\\\"\""
204 DEFINES += __WINDOWS__
205 } else {
206 win32 { # i586-mingw32msvc-g++ -- cross compiling
207@@ -76,14 +76,11 @@
208 TARGET = mixxx
209 QT += core \
210 gui \
211- sql \
212- xmlpatterns \
213- xml \
214 network \
215- svg \
216 opengl \
217 script \
218- qt3support
219+ sql \
220+ xml
221
222 CONFIG(debug) { # gdbmacros is required for inspecting Qt datatypes using gdb within QtC
223 exists($$(QTDIR)/../share/qtcreator/gdbmacros/gdbmacros.cpp) {
224@@ -97,9 +94,15 @@
225 }
226 }
227
228-HEADERS += $$UI_DIR/ui_dlgaboutdlg.h \
229- $$UI_DIR/ui_dlgmidilearning.h \
230+HEADERS += $$UI_DIR/ui_dlgpreferencesdlg.h \
231+ $$UI_DIR/ui_dlgprefsounddlg.h \
232+ $$UI_DIR/controllers/ui_dlgprefcontrollerdlg.h \
233+ $$UI_DIR/controllers/ui_dlgprefmappablecontrollerdlg.h \
234+ $$UI_DIR/controllers/ui_dlgcontrollerlearning.h \
235+ $$UI_DIR/controllers/ui_dlgprefnocontrollersdlg.h \
236+ $$UI_DIR/ui_dlgprefplaylistdlg.h \
237 $$UI_DIR/ui_dlgprefcontrolsdlg.h \
238+ $$UI_DIR/ui_dlgprefeqdlg.h \
239 $$UI_DIR/ui_dlgprefcrossfaderdlg.h \
240 $$UI_DIR/ui_dlgprefeqdlg.h \
241 $$UI_DIR/ui_dlgpreferencesdlg.h \
242@@ -110,7 +113,15 @@
243 $$UI_DIR/ui_dlgprefsounddlg.h \
244 $$UI_DIR/ui_dlgprefvinyldlg.h \
245 $$UI_DIR/ui_dlgprefnovinyldlg.h \
246- $$UI_DIR/ui_dlgprefnomididlg.h
247+ $$UI_DIR/ui_dlgprefrecorddlg.h \
248+ $$UI_DIR/ui_dlgaboutdlg.h \
249+ $$UI_DIR/ui_dlgtrackinfo.h \
250+ $$UI_DIR/ui_dlgprepare.h \
251+ $$UI_DIR/ui_dlgautodj.h \
252+ $$UI_DIR/ui_dlgprefsounditem.h \
253+ $$UI_DIR/ui_dlgrecording.h \
254+ $$UI_DIR/ui_dlghidden.h \
255+ $$UI_DIR/ui_dlgmissing.h
256
257 INCLUDEPATH += src \
258 lib/replaygain \
259@@ -131,18 +142,47 @@
260
261 HEADERS += \
262 $$BASE_DIR/src/analyser.h \
263+$$BASE_DIR/src/analyserbeats.h \
264 $$BASE_DIR/src/analyserqueue.h \
265+$$BASE_DIR/src/analyserrg.h \
266 $$BASE_DIR/src/analyserwaveform.h \
267-$$BASE_DIR/src/analyserwavesummary.h \
268-$$BASE_DIR/src/bpm/bpmreceiver.h \
269+$$BASE_DIR/src/audiotagger.h \
270+$$BASE_DIR/src/baseplayer.h \
271+$$BASE_DIR/src/basetrackplayer.h \
272 $$BASE_DIR/src/bpm/bpmscheme.h \
273 $$BASE_DIR/src/bpm/wavesegmentation.h \
274 $$BASE_DIR/src/build.h \
275 $$BASE_DIR/src/cachingreader.h \
276+$$BASE_DIR/src/circularbuffer.h \
277 $$BASE_DIR/src/configobject.h \
278 $$BASE_DIR/src/controlbeat.h \
279 $$BASE_DIR/src/controlevent.h \
280-$$BASE_DIR/src/controlgroupdelegate.h \
281+$$BASE_DIR/src/controllers/controller.h \
282+$$BASE_DIR/src/controllers/controllerengine.h \
283+$$BASE_DIR/src/controllers/controllerenumerator.h \
284+$$BASE_DIR/src/controllers/controllerlearningeventfilter.h \
285+$$BASE_DIR/src/controllers/controllermanager.h \
286+$$BASE_DIR/src/controllers/controllerpreset.h \
287+$$BASE_DIR/src/controllers/controllerpresetfilehandler.h \
288+$$BASE_DIR/src/controllers/controllerpresetinfo.h \
289+$$BASE_DIR/src/controllers/controllerpresetvisitor.h \
290+$$BASE_DIR/src/controllers/defs_controllers.h \
291+$$BASE_DIR/src/controllers/dlgcontrollerlearning.h \
292+$$BASE_DIR/src/controllers/dlgprefcontroller.h \
293+$$BASE_DIR/src/controllers/dlgprefmappablecontroller.h \
294+$$BASE_DIR/src/controllers/dlgprefnocontrollers.h \
295+$$BASE_DIR/src/controllers/midi/midicontroller.h \
296+$$BASE_DIR/src/controllers/midi/midicontrollerpreset.h \
297+$$BASE_DIR/src/controllers/midi/midicontrollerpresetfilehandler.h \
298+$$BASE_DIR/src/controllers/midi/midienumerator.h \
299+$$BASE_DIR/src/controllers/midi/midimessage.h \
300+$$BASE_DIR/src/controllers/midi/midioutputhandler.h \
301+$$BASE_DIR/src/controllers/mixxxcontrol.h \
302+$$BASE_DIR/src/controllers/pitchfilter.h \
303+$$BASE_DIR/src/controllers/qtscript-bytearray/bytearrayclass.h \
304+$$BASE_DIR/src/controllers/qtscript-bytearray/bytearrayprototype.h \
305+$$BASE_DIR/src/controllers/softtakeover.h \
306+$$BASE_DIR/src/controllinpotmeter.h \
307 $$BASE_DIR/src/controllogpotmeter.h \
308 $$BASE_DIR/src/controlnull.h \
309 $$BASE_DIR/src/controlobject.h \
310@@ -152,199 +192,236 @@
311 $$BASE_DIR/src/controlpotmeter.h \
312 $$BASE_DIR/src/controlpushbutton.h \
313 $$BASE_DIR/src/controlttrotary.h \
314-$$BASE_DIR/src/controlvaluedelegate.h \
315-$$BASE_DIR/src/defs_audiofiles.h \
316+$$BASE_DIR/src/deck.h \
317 $$BASE_DIR/src/defs.h \
318 $$BASE_DIR/src/defs_promo.h \
319 $$BASE_DIR/src/defs_urls.h \
320 $$BASE_DIR/src/defs_version.h \
321 $$BASE_DIR/src/dlgabout.h \
322 $$BASE_DIR/src/dlgautodj.h \
323-$$BASE_DIR/src/dlgladspa.h \
324-$$BASE_DIR/src/dlgmidilearning.h \
325+$$BASE_DIR/src/dlghidden.h \
326+$$BASE_DIR/src/dlgmissing.h \
327+$$BASE_DIR/src/dlgprefbeats.h \
328 $$BASE_DIR/src/dlgprefcontrols.h \
329 $$BASE_DIR/src/dlgprefcrossfader.h \
330 $$BASE_DIR/src/dlgprefeq.h \
331 $$BASE_DIR/src/dlgpreferences.h \
332-$$BASE_DIR/src/dlgprefmidibindings.h \
333-$$BASE_DIR/src/dlgprefnomidi.h \
334 $$BASE_DIR/src/dlgprefplaylist.h \
335 $$BASE_DIR/src/dlgprefrecord.h \
336+$$BASE_DIR/src/dlgprefreplaygain.h \
337 $$BASE_DIR/src/dlgprefsound.h \
338-$$BASE_DIR/src/dlgprefvinyl.h \
339+$$BASE_DIR/src/dlgprefsounditem.h \
340 $$BASE_DIR/src/dlgprepare.h \
341+$$BASE_DIR/src/dlgrecording.h \
342 $$BASE_DIR/src/dlgtrackinfo.h \
343-$$BASE_DIR/src/encoder.h \
344 $$BASE_DIR/src/engine/bpmcontrol.h \
345+$$BASE_DIR/src/engine/clockcontrol.h \
346 $$BASE_DIR/src/engine/cuecontrol.h \
347-$$BASE_DIR/src/engine/engineabstractrecord.h \
348 $$BASE_DIR/src/engine/enginebuffer.h \
349+$$BASE_DIR/src/engine/enginebufferscale.h \
350 $$BASE_DIR/src/engine/enginebufferscaledummy.h \
351-$$BASE_DIR/src/engine/enginebufferscale.h \
352 $$BASE_DIR/src/engine/enginebufferscalelinear.h \
353-$$BASE_DIR/src/engine/enginebufferscalereal.h \
354 $$BASE_DIR/src/engine/enginebufferscalest.h \
355 $$BASE_DIR/src/engine/enginechannel.h \
356 $$BASE_DIR/src/engine/engineclipping.h \
357 $$BASE_DIR/src/engine/enginecontrol.h \
358+$$BASE_DIR/src/engine/enginedeck.h \
359 $$BASE_DIR/src/engine/enginedelay.h \
360+$$BASE_DIR/src/engine/enginefilter.h \
361 $$BASE_DIR/src/engine/enginefilterblock.h \
362 $$BASE_DIR/src/engine/enginefilterbutterworth8.h \
363-$$BASE_DIR/src/engine/enginefilter.h \
364 $$BASE_DIR/src/engine/enginefilteriir.h \
365 $$BASE_DIR/src/engine/engineflanger.h \
366-$$BASE_DIR/src/engine/engineladspa.h \
367 $$BASE_DIR/src/engine/enginemaster.h \
368+$$BASE_DIR/src/engine/enginemicrophone.h \
369 $$BASE_DIR/src/engine/engineobject.h \
370+$$BASE_DIR/src/engine/enginepassthrough.h \
371 $$BASE_DIR/src/engine/enginepregain.h \
372-$$BASE_DIR/src/engine/enginesidechain.h \
373-$$BASE_DIR/src/engine/enginespectralfwd.h \
374-$$BASE_DIR/src/engine/enginevinylcontrol.h \
375+$$BASE_DIR/src/engine/sidechain/enginesidechain.h \
376+$$BASE_DIR/src/engine/sidechain/enginerecord.h \
377 $$BASE_DIR/src/engine/enginevinylsoundemu.h \
378-$$BASE_DIR/src/engine/enginevolume.h \
379 $$BASE_DIR/src/engine/enginevumeter.h \
380+$$BASE_DIR/src/engine/engineworker.h \
381+$$BASE_DIR/src/engine/engineworkerscheduler.h \
382 $$BASE_DIR/src/engine/enginexfader.h \
383 $$BASE_DIR/src/engine/loopingcontrol.h \
384+$$BASE_DIR/src/engine/positionscratchcontroller.h \
385+$$BASE_DIR/src/engine/quantizecontrol.h \
386 $$BASE_DIR/src/engine/ratecontrol.h \
387 $$BASE_DIR/src/engine/readaheadmanager.h \
388-$$BASE_DIR/src/errordialog.h \
389-$$BASE_DIR/src/imgcolor.h \
390-$$BASE_DIR/src/imginvert.h \
391-$$BASE_DIR/src/imgloader.h \
392-$$BASE_DIR/src/imgsource.h \
393-$$BASE_DIR/src/input.h \
394-$$BASE_DIR/src/ladspa/ladspacontrol.h \
395-$$BASE_DIR/src/ladspa/ladspainstance.h \
396-$$BASE_DIR/src/ladspa/ladspainstancemono.h \
397-$$BASE_DIR/src/ladspa/ladspainstancestereo.h \
398-$$BASE_DIR/src/ladspa/ladspalibrary.h \
399-$$BASE_DIR/src/ladspa/ladspaloader.h \
400-$$BASE_DIR/src/ladspa/ladspaplugin.h \
401-$$BASE_DIR/src/ladspa/ladspapreset.h \
402-$$BASE_DIR/src/ladspa/ladspapresetinstance.h \
403-$$BASE_DIR/src/ladspa/ladspapresetknob.h \
404-$$BASE_DIR/src/ladspa/ladspapresetmanager.h \
405-$$BASE_DIR/src/ladspa/ladspapresetslot.h \
406-$$BASE_DIR/src/ladspaview.h \
407-$$BASE_DIR/src/library/abstractxmltrackmodel.h \
408+$$BASE_DIR/src/engine/syncworker.h \
409+$$BASE_DIR/src/errordialoghandler.h \
410 $$BASE_DIR/src/library/autodjfeature.h \
411-$$BASE_DIR/src/library/browsefeature.h \
412-$$BASE_DIR/src/library/browsefilter.h \
413-$$BASE_DIR/src/library/browsetablemodel.h \
414+$$BASE_DIR/src/library/baseexternallibraryfeature.h \
415+$$BASE_DIR/src/library/baseexternalplaylistmodel.h \
416+$$BASE_DIR/src/library/baseexternaltrackmodel.h \
417+$$BASE_DIR/src/library/baseplaylistfeature.h \
418+$$BASE_DIR/src/library/basesqltablemodel.h \
419+$$BASE_DIR/src/library/basetrackcache.h \
420+$$BASE_DIR/src/library/browse/browsefeature.h \
421+$$BASE_DIR/src/library/browse/browsetablemodel.h \
422+$$BASE_DIR/src/library/browse/browsethread.h \
423+$$BASE_DIR/src/library/browse/foldertreemodel.h \
424 $$BASE_DIR/src/library/cratefeature.h \
425 $$BASE_DIR/src/library/cratetablemodel.h \
426+$$BASE_DIR/src/library/dao/analysisdao.h \
427 $$BASE_DIR/src/library/dao/cratedao.h \
428+$$BASE_DIR/src/library/dao/cue.h \
429 $$BASE_DIR/src/library/dao/cuedao.h \
430-$$BASE_DIR/src/library/dao/cue.h \
431 $$BASE_DIR/src/library/dao/dao.h \
432 $$BASE_DIR/src/library/dao/libraryhashdao.h \
433 $$BASE_DIR/src/library/dao/playlistdao.h \
434 $$BASE_DIR/src/library/dao/settingsdao.h \
435 $$BASE_DIR/src/library/dao/trackdao.h \
436-$$BASE_DIR/src/library/itunesfeature.h \
437-$$BASE_DIR/src/library/itunesplaylistmodel.h \
438-$$BASE_DIR/src/library/itunestrackmodel.h \
439+$$BASE_DIR/src/library/hiddentablemodel.h \
440+$$BASE_DIR/src/library/itunes/itunesfeature.h \
441 $$BASE_DIR/src/library/legacylibraryimporter.h \
442+$$BASE_DIR/src/library/library.h \
443+$$BASE_DIR/src/library/librarycontrol.h \
444 $$BASE_DIR/src/library/libraryfeature.h \
445-$$BASE_DIR/src/library/library.h \
446-$$BASE_DIR/src/library/librarymidicontrol.h \
447+$$BASE_DIR/src/library/libraryscanner.h \
448 $$BASE_DIR/src/library/libraryscannerdlg.h \
449-$$BASE_DIR/src/library/libraryscanner.h \
450 $$BASE_DIR/src/library/librarytablemodel.h \
451 $$BASE_DIR/src/library/libraryview.h \
452 $$BASE_DIR/src/library/missingtablemodel.h \
453 $$BASE_DIR/src/library/mixxxlibraryfeature.h \
454+$$BASE_DIR/src/library/parser.h \
455+$$BASE_DIR/src/library/parsercsv.h \
456+$$BASE_DIR/src/library/parserm3u.h \
457+$$BASE_DIR/src/library/parserpls.h \
458 $$BASE_DIR/src/library/playlistfeature.h \
459 $$BASE_DIR/src/library/playlisttablemodel.h \
460 $$BASE_DIR/src/library/preparecratedelegate.h \
461 $$BASE_DIR/src/library/preparefeature.h \
462 $$BASE_DIR/src/library/preparelibrarytablemodel.h \
463+$$BASE_DIR/src/library/previewbuttondelegate.h \
464 $$BASE_DIR/src/library/proxytrackmodel.h \
465-$$BASE_DIR/src/library/rhythmboxfeature.h \
466-$$BASE_DIR/src/library/rhythmboxplaylistmodel.h \
467-$$BASE_DIR/src/library/rhythmboxtrackmodel.h \
468+$$BASE_DIR/src/library/queryutil.h \
469+$$BASE_DIR/src/library/recording/recordingfeature.h \
470+$$BASE_DIR/src/library/rhythmbox/rhythmboxfeature.h \
471 $$BASE_DIR/src/library/schemamanager.h \
472+$$BASE_DIR/src/library/searchqueryparser.h \
473 $$BASE_DIR/src/library/searchthread.h \
474+$$BASE_DIR/src/library/setlogfeature.h \
475 $$BASE_DIR/src/library/sidebarmodel.h \
476+$$BASE_DIR/src/library/songdownloader.h \
477+$$BASE_DIR/src/library/stardelegate.h \
478+$$BASE_DIR/src/library/stareditor.h \
479+$$BASE_DIR/src/library/bpmdelegate.h \
480+$$BASE_DIR/src/library/bpmeditor.h \
481+$$BASE_DIR/src/library/starrating.h \
482 $$BASE_DIR/src/library/trackcollection.h \
483 $$BASE_DIR/src/library/trackmodel.h \
484-$$BASE_DIR/src/m4a/comment.h \
485-$$BASE_DIR/src/m4a/ip.h \
486-$$BASE_DIR/src/m4a/sf.h \
487+$$BASE_DIR/src/library/traktor/traktorfeature.h \
488+$$BASE_DIR/src/library/treeitem.h \
489+$$BASE_DIR/src/library/treeitemmodel.h \
490 $$BASE_DIR/src/mathstuff.h \
491-$$BASE_DIR/src/midi/midichanneldelegate.h \
492-$$BASE_DIR/src/midi/mididevicedummy.h \
493-$$BASE_DIR/src/midi/mididevice.h \
494-$$BASE_DIR/src/midi/mididevicemanager.h \
495-$$BASE_DIR/src/midi/midideviceportmidi.h \
496-$$BASE_DIR/src/midi/midiinputmapping.h \
497-$$BASE_DIR/src/midi/midiinputmappingtablemodel.h \
498-$$BASE_DIR/src/midi/midiledhandler.h \
499-$$BASE_DIR/src/midi/midimapping.h \
500-$$BASE_DIR/src/midi/midimessage.h \
501-$$BASE_DIR/src/midi/midinodelegate.h \
502-$$BASE_DIR/src/midi/midioptiondelegate.h \
503-$$BASE_DIR/src/midi/midioutputmapping.h \
504-$$BASE_DIR/src/midi/midioutputmappingtablemodel.h \
505-$$BASE_DIR/src/midi/midiscriptengine.h \
506-$$BASE_DIR/src/midi/midistatusdelegate.h \
507-$$BASE_DIR/src/mixxxcontrol.h \
508+$$BASE_DIR/src/mixxx.h \
509 $$BASE_DIR/src/mixxxevent.h \
510-$$BASE_DIR/src/mixxx.h \
511 $$BASE_DIR/src/mixxxkeyboard.h \
512-$$BASE_DIR/src/mixxxview.h \
513-$$BASE_DIR/src/parser.h \
514-$$BASE_DIR/src/parserm3u.h \
515-$$BASE_DIR/src/parserpls.h \
516-$$BASE_DIR/src/peaklist.h \
517-$$BASE_DIR/src/player.h \
518 $$BASE_DIR/src/playerinfo.h \
519-$$BASE_DIR/src/probabilityvector.h \
520+$$BASE_DIR/src/playermanager.h \
521+$$BASE_DIR/src/previewdeck.h \
522 $$BASE_DIR/src/recording/defs_recording.h \
523-$$BASE_DIR/src/recording/enginerecord.h \
524-$$BASE_DIR/src/recording/writeaudiofile.h \
525+$$BASE_DIR/src/recording/recordingmanager.h \
526 $$BASE_DIR/src/rotary.h \
527-$$BASE_DIR/src/rtthread.h \
528+$$BASE_DIR/src/sampler.h \
529+$$BASE_DIR/src/samplerbank.h \
530+$$BASE_DIR/src/sampleutil.h \
531 $$BASE_DIR/src/segmentation.h \
532+$$BASE_DIR/src/sharedglcontext.h \
533+$$BASE_DIR/src/singleton.h \
534+$$BASE_DIR/src/skin/colorschemeparser.h \
535+$$BASE_DIR/src/skin/imgcolor.h \
536+$$BASE_DIR/src/skin/imginvert.h \
537+$$BASE_DIR/src/skin/imgloader.h \
538+$$BASE_DIR/src/skin/imgsource.h \
539+$$BASE_DIR/src/skin/legacyskinparser.h \
540+$$BASE_DIR/src/skin/propertybinder.h \
541+$$BASE_DIR/src/skin/skinloader.h \
542+$$BASE_DIR/src/skin/skinparser.h \
543+$$BASE_DIR/src/skin/tooltips.h \
544 $$BASE_DIR/src/sounddevice.h \
545 $$BASE_DIR/src/sounddeviceportaudio.h \
546 $$BASE_DIR/src/soundmanager.h \
547+$$BASE_DIR/src/soundmanagerconfig.h \
548+$$BASE_DIR/src/soundmanagerutil.h \
549 $$BASE_DIR/src/soundsource.h \
550-$$BASE_DIR/src/soundsourcem4a.h \
551-$$BASE_DIR/src/soundsourcemp3.h \
552+$$BASE_DIR/src/soundsourcecoreaudio.h \
553+$$BASE_DIR/src/soundsourceffmpeg.h \
554+$$BASE_DIR/src/soundsourceflac.h \
555 $$BASE_DIR/src/soundsourceoggvorbis.h \
556 $$BASE_DIR/src/soundsourceproxy.h \
557 $$BASE_DIR/src/soundsourcesndfile.h \
558+$$BASE_DIR/src/tapfilter.h \
559+$$BASE_DIR/src/test/mixxxtest.h \
560+$$BASE_DIR/src/tonal/tonalanalyser.h \
561+$$BASE_DIR/src/track/beat_preferences.h \
562+$$BASE_DIR/src/track/beatfactory.h \
563+$$BASE_DIR/src/track/beatgrid.h \
564+$$BASE_DIR/src/track/beatmap.h \
565+$$BASE_DIR/src/track/beats.h \
566+$$BASE_DIR/src/track/beatutils.h \
567 $$BASE_DIR/src/trackinfoobject.h \
568 $$BASE_DIR/src/transposeproxymodel.h \
569 $$BASE_DIR/src/upgrade.h \
570-$$BASE_DIR/src/vinylcontrol.h \
571-$$BASE_DIR/src/vinylcontrolproxy.h \
572-$$BASE_DIR/src/vinylcontrolscratchlib.h \
573-$$BASE_DIR/src/vinylcontrolsignalwidget.h \
574-$$BASE_DIR/src/vinylcontrolxwax.h \
575-$$BASE_DIR/src/waveform/glwaveformrenderer.h \
576-$$BASE_DIR/src/waveform/renderobject.h \
577-$$BASE_DIR/src/waveformviewerfactory.h \
578-$$BASE_DIR/src/waveform/waveformrenderbackground.h \
579-$$BASE_DIR/src/waveform/waveformrenderbeat.h \
580-$$BASE_DIR/src/waveform/waveformrenderer.h \
581-$$BASE_DIR/src/waveform/waveformrendermark.h \
582-$$BASE_DIR/src/waveform/waveformrendermarkrange.h \
583-$$BASE_DIR/src/waveform/waveformrendersignal.h \
584-$$BASE_DIR/src/waveform/waveformrendersignalpixmap.h \
585+$$BASE_DIR/src/util.h \
586+$$BASE_DIR/src/util/cmdlineargs.h \
587+$$BASE_DIR/src/util/counter.h \
588+$$BASE_DIR/src/util/debug.h \
589+$$BASE_DIR/src/util/fifo.h \
590+$$BASE_DIR/src/util/lcs.h \
591+$$BASE_DIR/src/util/pa_memorybarrier.h \
592+$$BASE_DIR/src/util/pa_ringbuffer.h \
593+$$BASE_DIR/src/util/performancetimer.h \
594+$$BASE_DIR/src/util/sleepableqthread.h \
595+$$BASE_DIR/src/util/stat.h \
596+$$BASE_DIR/src/util/statsmanager.h \
597+$$BASE_DIR/src/util/timer.h \
598+$$BASE_DIR/src/util/trace.h \
599+$$BASE_DIR/src/waveform/renderers/glslwaveformrenderersignal.h \
600+$$BASE_DIR/src/waveform/renderers/glwaveformrendererfilteredsignal.h \
601+$$BASE_DIR/src/waveform/renderers/glwaveformrenderersimplesignal.h \
602+$$BASE_DIR/src/waveform/renderers/qtwaveformrendererfilteredsignal.h \
603+$$BASE_DIR/src/waveform/renderers/qtwaveformrenderersimplesignal.h \
604+$$BASE_DIR/src/waveform/renderers/waveformmark.h \
605+$$BASE_DIR/src/waveform/renderers/waveformmarkrange.h \
606+$$BASE_DIR/src/waveform/renderers/waveformmarkset.h \
607+$$BASE_DIR/src/waveform/renderers/waveformrenderbackground.h \
608+$$BASE_DIR/src/waveform/renderers/waveformrenderbeat.h \
609+$$BASE_DIR/src/waveform/renderers/waveformrendererabstract.h \
610+$$BASE_DIR/src/waveform/renderers/waveformrendererendoftrack.h \
611+$$BASE_DIR/src/waveform/renderers/waveformrendererfilteredsignal.h \
612+$$BASE_DIR/src/waveform/renderers/waveformrendererhsv.h \
613+$$BASE_DIR/src/waveform/renderers/waveformrendererpreroll.h \
614+$$BASE_DIR/src/waveform/renderers/waveformrenderersignalbase.h \
615+$$BASE_DIR/src/waveform/renderers/waveformrendermark.h \
616+$$BASE_DIR/src/waveform/renderers/waveformrendermarkrange.h \
617+$$BASE_DIR/src/waveform/renderers/waveformsignalcolors.h \
618+$$BASE_DIR/src/waveform/renderers/waveformwidgetrenderer.h \
619+$$BASE_DIR/src/waveform/waveform.h \
620+$$BASE_DIR/src/waveform/waveformfactory.h \
621+$$BASE_DIR/src/waveform/waveformwidgetfactory.h \
622+$$BASE_DIR/src/waveform/widgets/emptywaveformwidget.h \
623+$$BASE_DIR/src/waveform/widgets/glsimplewaveformwidget.h \
624+$$BASE_DIR/src/waveform/widgets/glslwaveformwidget.h \
625+$$BASE_DIR/src/waveform/widgets/glwaveformwidget.h \
626+$$BASE_DIR/src/waveform/widgets/hsvwaveformwidget.h \
627+$$BASE_DIR/src/waveform/widgets/qtsimplewaveformwidget.h \
628+$$BASE_DIR/src/waveform/widgets/qtwaveformwidget.h \
629+$$BASE_DIR/src/waveform/widgets/softwarewaveformwidget.h \
630+$$BASE_DIR/src/waveform/widgets/waveformwidgetabstract.h \
631+$$BASE_DIR/src/waveform/widgets/waveformwidgettype.h \
632 $$BASE_DIR/src/widget/hexspinbox.h \
633 $$BASE_DIR/src/widget/wabstractcontrol.h \
634-$$BASE_DIR/src/widget/wbrowsetableview.h \
635 $$BASE_DIR/src/widget/wdisplay.h \
636-$$BASE_DIR/src/widget/wglwaveformviewer.h \
637+$$BASE_DIR/src/widget/wimagestore.h \
638 $$BASE_DIR/src/widget/wknob.h \
639 $$BASE_DIR/src/widget/wlabel.h \
640 $$BASE_DIR/src/widget/wlibrary.h \
641 $$BASE_DIR/src/widget/wlibrarysidebar.h \
642 $$BASE_DIR/src/widget/wlibrarytableview.h \
643 $$BASE_DIR/src/widget/wlibrarytextbrowser.h \
644-$$BASE_DIR/src/widget/wnumberbpm.h \
645 $$BASE_DIR/src/widget/wnumber.h \
646 $$BASE_DIR/src/widget/wnumberpos.h \
647 $$BASE_DIR/src/widget/wnumberrate.h \
648@@ -355,249 +432,308 @@
649 $$BASE_DIR/src/widget/wpushbutton.h \
650 $$BASE_DIR/src/widget/wsearchlineedit.h \
651 $$BASE_DIR/src/widget/wskincolor.h \
652+$$BASE_DIR/src/widget/wslider.h \
653 $$BASE_DIR/src/widget/wslidercomposed.h \
654-$$BASE_DIR/src/widget/wslider.h \
655+$$BASE_DIR/src/widget/wspinny.h \
656 $$BASE_DIR/src/widget/wstatuslight.h \
657+$$BASE_DIR/src/widget/wtime.h \
658+$$BASE_DIR/src/widget/wtrackproperty.h \
659+$$BASE_DIR/src/widget/wtracktableview.h \
660 $$BASE_DIR/src/widget/wtracktableviewheader.h \
661-$$BASE_DIR/src/widget/wvisualsimple.h \
662+$$BASE_DIR/src/widget/wtracktext.h \
663 $$BASE_DIR/src/widget/wvumeter.h \
664 $$BASE_DIR/src/widget/wwaveformviewer.h \
665 $$BASE_DIR/src/widget/wwidget.h \
666-$$BASE_DIR/src/windowkaiser.h \
667-$$BASE_DIR/src/wtracktableview.h \
668+$$BASE_DIR/src/widget/wwidgetgroup.h \
669+$$BASE_DIR/src/widget/wwidgetstack.h \
670 $$BASE_DIR/src/xmlparse.h
671
672-
673 SOURCES += \
674-$$BASE_DIR/src/analyserqueue.cpp \
675-$$BASE_DIR/src/analyserwaveform.cpp \
676-$$BASE_DIR/src/analyserwavesummary.cpp \
677-$$BASE_DIR/src/bpm/bpmscheme.cpp \
678-$$BASE_DIR/src/bpm/wavesegmentation.cpp \
679-$$BASE_DIR/src/cachingreader.cpp \
680+$$BASE_DIR/src/mixxxkeyboard.cpp \
681 $$BASE_DIR/src/configobject.cpp \
682-$$BASE_DIR/src/controlbeat.cpp \
683+$$BASE_DIR/src/controlobjectthread.cpp \
684+$$BASE_DIR/src/controlobjectthreadwidget.cpp \
685+$$BASE_DIR/src/controlobjectthreadmain.cpp \
686 $$BASE_DIR/src/controlevent.cpp \
687-$$BASE_DIR/src/controlgroupdelegate.cpp \
688 $$BASE_DIR/src/controllogpotmeter.cpp \
689+$$BASE_DIR/src/controlobject.cpp \
690 $$BASE_DIR/src/controlnull.cpp \
691-$$BASE_DIR/src/controlobject.cpp \
692-$$BASE_DIR/src/controlobjectthread.cpp \
693-$$BASE_DIR/src/controlobjectthreadmain.cpp \
694-$$BASE_DIR/src/controlobjectthreadwidget.cpp \
695 $$BASE_DIR/src/controlpotmeter.cpp \
696+$$BASE_DIR/src/controllinpotmeter.cpp \
697 $$BASE_DIR/src/controlpushbutton.cpp \
698 $$BASE_DIR/src/controlttrotary.cpp \
699-$$BASE_DIR/src/controlvaluedelegate.cpp \
700+$$BASE_DIR/src/controlbeat.cpp \
701+$$BASE_DIR/src/dlgpreferences.cpp \
702+$$BASE_DIR/src/dlgprefsound.cpp \
703+$$BASE_DIR/src/dlgprefsounditem.cpp \
704+$$BASE_DIR/src/controllers/dlgprefcontroller.cpp \
705+$$BASE_DIR/src/controllers/dlgprefmappablecontroller.cpp \
706+$$BASE_DIR/src/controllers/dlgcontrollerlearning.cpp \
707+$$BASE_DIR/src/controllers/dlgprefnocontrollers.cpp \
708+$$BASE_DIR/src/dlgprefbeats.cpp \
709+$$BASE_DIR/src/dlgprefplaylist.cpp \
710+$$BASE_DIR/src/dlgprefcontrols.cpp \
711+$$BASE_DIR/src/dlgprefreplaygain.cpp \
712+$$BASE_DIR/src/dlgprefnovinyl.cpp \
713 $$BASE_DIR/src/dlgabout.cpp \
714-$$BASE_DIR/src/dlgautodj.cpp \
715-$$BASE_DIR/src/dlgladspa.cpp \
716-$$BASE_DIR/src/dlgmidilearning.cpp \
717-$$BASE_DIR/src/dlgprefcontrols.cpp \
718+$$BASE_DIR/src/dlgprefeq.cpp \
719 $$BASE_DIR/src/dlgprefcrossfader.cpp \
720-$$BASE_DIR/src/dlgprefeq.cpp \
721-$$BASE_DIR/src/dlgpreferences.cpp \
722-$$BASE_DIR/src/dlgprefmidibindings.cpp \
723-$$BASE_DIR/src/dlgprefnomidi.cpp \
724-$$BASE_DIR/src/dlgprefplaylist.cpp \
725-$$BASE_DIR/src/dlgprefrecord.cpp \
726-$$BASE_DIR/src/dlgprefsound.cpp \
727-$$BASE_DIR/src/dlgprefvinyl.cpp \
728+$$BASE_DIR/src/dlgtrackinfo.cpp \
729 $$BASE_DIR/src/dlgprepare.cpp \
730-$$BASE_DIR/src/dlgtrackinfo.cpp \
731-$$BASE_DIR/src/encoder.cpp \
732-$$BASE_DIR/src/engine/bpmcontrol.cpp \
733-$$BASE_DIR/src/engine/cuecontrol.cpp \
734+$$BASE_DIR/src/dlgautodj.cpp \
735+$$BASE_DIR/src/dlghidden.cpp \
736+$$BASE_DIR/src/dlgmissing.cpp \
737+$$BASE_DIR/src/engine/engineworker.cpp \
738+$$BASE_DIR/src/engine/engineworkerscheduler.cpp \
739+$$BASE_DIR/src/engine/syncworker.cpp \
740 $$BASE_DIR/src/engine/enginebuffer.cpp \
741 $$BASE_DIR/src/engine/enginebufferscale.cpp \
742 $$BASE_DIR/src/engine/enginebufferscaledummy.cpp \
743 $$BASE_DIR/src/engine/enginebufferscalelinear.cpp \
744-$$BASE_DIR/src/engine/enginebufferscalereal.cpp \
745-$$BASE_DIR/src/engine/enginebufferscalest.cpp \
746-$$BASE_DIR/src/engine/enginechannel.cpp \
747 $$BASE_DIR/src/engine/engineclipping.cpp \
748-$$BASE_DIR/src/engine/enginecontrol.cpp \
749-$$BASE_DIR/src/engine/enginedelay.cpp \
750 $$BASE_DIR/src/engine/enginefilterblock.cpp \
751-$$BASE_DIR/src/engine/enginefilterbutterworth8.cpp \
752+$$BASE_DIR/src/engine/enginefilteriir.cpp \
753 $$BASE_DIR/src/engine/enginefilter.cpp \
754-$$BASE_DIR/src/engine/enginefilteriir.cpp \
755-$$BASE_DIR/src/engine/engineflanger.cpp \
756-$$BASE_DIR/src/engine/engineladspa.cpp \
757-$$BASE_DIR/src/engine/enginemaster.cpp \
758 $$BASE_DIR/src/engine/engineobject.cpp \
759 $$BASE_DIR/src/engine/enginepregain.cpp \
760-$$BASE_DIR/src/engine/enginesidechain.cpp \
761-$$BASE_DIR/src/engine/enginespectralfwd.cpp \
762-$$BASE_DIR/src/engine/enginevinylcontrol.cpp \
763+$$BASE_DIR/src/engine/enginechannel.cpp \
764+$$BASE_DIR/src/engine/enginemaster.cpp \
765+$$BASE_DIR/src/engine/enginedelay.cpp \
766+$$BASE_DIR/src/engine/engineflanger.cpp \
767+$$BASE_DIR/src/engine/enginevumeter.cpp \
768 $$BASE_DIR/src/engine/enginevinylsoundemu.cpp \
769-$$BASE_DIR/src/engine/enginevolume.cpp \
770-$$BASE_DIR/src/engine/enginevumeter.cpp \
771+$$BASE_DIR/src/engine/sidechain/enginesidechain.cpp \
772+$$BASE_DIR/src/engine/enginefilterbutterworth8.cpp \
773 $$BASE_DIR/src/engine/enginexfader.cpp \
774+$$BASE_DIR/src/engine/enginemicrophone.cpp \
775+$$BASE_DIR/src/engine/enginedeck.cpp \
776+$$BASE_DIR/src/engine/enginepassthrough.cpp \
777+$$BASE_DIR/src/engine/enginecontrol.cpp \
778+$$BASE_DIR/src/engine/ratecontrol.cpp \
779+$$BASE_DIR/src/engine/positionscratchcontroller.cpp \
780 $$BASE_DIR/src/engine/loopingcontrol.cpp \
781-$$BASE_DIR/src/engine/ratecontrol.cpp \
782+$$BASE_DIR/src/engine/bpmcontrol.cpp \
783+$$BASE_DIR/src/engine/cuecontrol.cpp \
784+$$BASE_DIR/src/engine/quantizecontrol.cpp \
785+$$BASE_DIR/src/engine/clockcontrol.cpp \
786 $$BASE_DIR/src/engine/readaheadmanager.cpp \
787-$$BASE_DIR/src/errordialog.cpp \
788-$$BASE_DIR/src/imgcolor.cpp \
789-$$BASE_DIR/src/imginvert.cpp \
790-$$BASE_DIR/src/imgloader.cpp \
791-$$BASE_DIR/src/input.cpp \
792-$$BASE_DIR/src/ladspa/ladspacontrol.cpp \
793-$$BASE_DIR/src/ladspa/ladspainstance.cpp \
794-$$BASE_DIR/src/ladspa/ladspainstancemono.cpp \
795-$$BASE_DIR/src/ladspa/ladspainstancestereo.cpp \
796-$$BASE_DIR/src/ladspa/ladspalibrary.cpp \
797-$$BASE_DIR/src/ladspa/ladspaloader.cpp \
798-$$BASE_DIR/src/ladspa/ladspaplugin.cpp \
799-$$BASE_DIR/src/ladspa/ladspapreset.cpp \
800-$$BASE_DIR/src/ladspa/ladspapresetinstance.cpp \
801-$$BASE_DIR/src/ladspa/ladspapresetknob.cpp \
802-$$BASE_DIR/src/ladspa/ladspapresetmanager.cpp \
803-$$BASE_DIR/src/ladspa/ladspapresetslot.cpp \
804-$$BASE_DIR/src/ladspaview.cpp \
805-$$BASE_DIR/src/library/abstractxmltrackmodel.cpp \
806-$$BASE_DIR/src/library/autodjfeature.cpp \
807-$$BASE_DIR/src/library/browsefeature.cpp \
808-$$BASE_DIR/src/library/browsefilter.cpp \
809-$$BASE_DIR/src/library/browsetablemodel.cpp \
810-$$BASE_DIR/src/library/cratefeature.cpp \
811-$$BASE_DIR/src/library/cratetablemodel.cpp \
812-$$BASE_DIR/src/library/dao/cratedao.cpp \
813-$$BASE_DIR/src/library/dao/cue.cpp \
814-$$BASE_DIR/src/library/dao/cuedao.cpp \
815-$$BASE_DIR/src/library/dao/libraryhashdao.cpp \
816-$$BASE_DIR/src/library/dao/playlistdao.cpp \
817-$$BASE_DIR/src/library/dao/settingsdao.cpp \
818-$$BASE_DIR/src/library/dao/trackdao.cpp \
819-$$BASE_DIR/src/library/itunesfeature.cpp \
820-$$BASE_DIR/src/library/itunesplaylistmodel.cpp \
821-$$BASE_DIR/src/library/itunestrackmodel.cpp \
822-$$BASE_DIR/src/library/legacylibraryimporter.cpp \
823-$$BASE_DIR/src/library/library.cpp \
824-$$BASE_DIR/src/library/libraryfeature.cpp \
825-$$BASE_DIR/src/library/librarymidicontrol.cpp \
826-$$BASE_DIR/src/library/libraryscanner.cpp \
827-$$BASE_DIR/src/library/libraryscannerdlg.cpp \
828-$$BASE_DIR/src/library/librarytablemodel.cpp \
829-$$BASE_DIR/src/library/missingtablemodel.cpp \
830-$$BASE_DIR/src/library/mixxxlibraryfeature.cpp \
831-$$BASE_DIR/src/library/playlistfeature.cpp \
832-$$BASE_DIR/src/library/playlisttablemodel.cpp \
833-$$BASE_DIR/src/library/preparecratedelegate.cpp \
834-$$BASE_DIR/src/library/preparefeature.cpp \
835-$$BASE_DIR/src/library/preparelibrarytablemodel.cpp \
836-$$BASE_DIR/src/library/proxytrackmodel.cpp \
837-$$BASE_DIR/src/library/rhythmboxfeature.cpp \
838-$$BASE_DIR/src/library/rhythmboxplaylistmodel.cpp \
839-$$BASE_DIR/src/library/rhythmboxtrackmodel.cpp \
840-$$BASE_DIR/src/library/schemamanager.cpp \
841-$$BASE_DIR/src/library/searchthread.cpp \
842-$$BASE_DIR/src/library/sidebarmodel.cpp \
843-$$BASE_DIR/src/library/trackcollection.cpp \
844-$$BASE_DIR/src/m4a/mp4-mixxx.cpp \
845+$$BASE_DIR/src/cachingreader.cpp \
846+$$BASE_DIR/src/analyserrg.cpp \
847+$$BASE_DIR/src/analyserbeats.cpp \
848+$$BASE_DIR/src/analyserqueue.cpp \
849+$$BASE_DIR/src/analyserwaveform.cpp \
850+$$BASE_DIR/src/controllers/controller.cpp \
851+$$BASE_DIR/src/controllers/controllerengine.cpp \
852+$$BASE_DIR/src/controllers/controllerenumerator.cpp \
853+$$BASE_DIR/src/controllers/controllerlearningeventfilter.cpp \
854+$$BASE_DIR/src/controllers/controllermanager.cpp \
855+$$BASE_DIR/src/controllers/controllerpresetfilehandler.cpp \
856+$$BASE_DIR/src/controllers/controllerpresetinfo.cpp \
857+$$BASE_DIR/src/controllers/midi/midicontroller.cpp \
858+$$BASE_DIR/src/controllers/midi/midicontrollerpresetfilehandler.cpp \
859+$$BASE_DIR/src/controllers/midi/midienumerator.cpp \
860+$$BASE_DIR/src/controllers/midi/midioutputhandler.cpp \
861+$$BASE_DIR/src/controllers/mixxxcontrol.cpp \
862+$$BASE_DIR/src/controllers/qtscript-bytearray/bytearrayclass.cpp \
863+$$BASE_DIR/src/controllers/qtscript-bytearray/bytearrayprototype.cpp \
864+$$BASE_DIR/src/controllers/softtakeover.cpp \
865 $$BASE_DIR/src/main.cpp \
866-$$BASE_DIR/src/mathstuff.cpp \
867-$$BASE_DIR/src/midi/midichanneldelegate.cpp \
868-$$BASE_DIR/src/midi/mididevice.cpp \
869-$$BASE_DIR/src/midi/mididevicemanager.cpp \
870-$$BASE_DIR/src/midi/midideviceportmidi.cpp \
871-$$BASE_DIR/src/midi/midiinputmappingtablemodel.cpp \
872-$$BASE_DIR/src/midi/midiledhandler.cpp \
873-$$BASE_DIR/src/midi/midimapping.cpp \
874-$$BASE_DIR/src/midi/midimessage.cpp \
875-$$BASE_DIR/src/midi/midinodelegate.cpp \
876-$$BASE_DIR/src/midi/midioptiondelegate.cpp \
877-$$BASE_DIR/src/midi/midioutputmappingtablemodel.cpp \
878-$$BASE_DIR/src/midi/midiscriptengine.cpp \
879-$$BASE_DIR/src/midi/midistatusdelegate.cpp \
880-$$BASE_DIR/src/mixxxcontrol.cpp \
881 $$BASE_DIR/src/mixxx.cpp \
882-$$BASE_DIR/src/mixxxkeyboard.cpp \
883-$$BASE_DIR/src/mixxxview.cpp \
884-$$BASE_DIR/src/parser.cpp \
885-$$BASE_DIR/src/parserm3u.cpp \
886-$$BASE_DIR/src/parserpls.cpp \
887-$$BASE_DIR/src/peaklist.cpp \
888-$$BASE_DIR/src/player.cpp \
889-$$BASE_DIR/src/playerinfo.cpp \
890-$$BASE_DIR/src/probabilityvector.cpp \
891-$$BASE_DIR/src/recording/enginerecord.cpp \
892-$$BASE_DIR/src/recording/writeaudiofile.cpp \
893-$$BASE_DIR/src/rotary.cpp \
894-$$BASE_DIR/src/rtthread.cpp \
895-$$BASE_DIR/src/segmentation.cpp \
896-$$BASE_DIR/src/sounddevice.cpp \
897-$$BASE_DIR/src/sounddeviceportaudio.cpp \
898-$$BASE_DIR/src/soundmanager.cpp \
899+$$BASE_DIR/src/errordialoghandler.cpp \
900+$$BASE_DIR/src/upgrade.cpp \
901 $$BASE_DIR/src/soundsource.cpp \
902-$$BASE_DIR/src/soundsourcem4a.cpp \
903-$$BASE_DIR/src/soundsourcemp3.cpp \
904 $$BASE_DIR/src/soundsourceoggvorbis.cpp \
905-$$BASE_DIR/src/soundsourceproxy.cpp \
906+$$BASE_DIR/src/soundsourceflac.cpp \
907 $$BASE_DIR/src/soundsourcesndfile.cpp \
908-$$BASE_DIR/src/trackinfoobject.cpp \
909-$$BASE_DIR/src/upgrade.cpp \
910-$$BASE_DIR/src/vinylcontrol.cpp \
911-$$BASE_DIR/src/vinylcontrolproxy.cpp \
912-$$BASE_DIR/src/vinylcontrolscratchlib.cpp \
913-$$BASE_DIR/src/vinylcontrolsignalwidget.cpp \
914-$$BASE_DIR/src/vinylcontrolxwax.cpp \
915-$$BASE_DIR/src/waveform/glwaveformrenderer.cpp \
916-$$BASE_DIR/src/waveform/renderobject.cpp \
917-$$BASE_DIR/src/waveformviewerfactory.cpp \
918-$$BASE_DIR/src/waveform/waveformrenderbackground.cpp \
919-$$BASE_DIR/src/waveform/waveformrenderbeat.cpp \
920-$$BASE_DIR/src/waveform/waveformrenderer.cpp \
921-$$BASE_DIR/src/waveform/waveformrendermark.cpp \
922-$$BASE_DIR/src/waveform/waveformrendermarkrange.cpp \
923-$$BASE_DIR/src/waveform/waveformrendersignal.cpp \
924-$$BASE_DIR/src/waveform/waveformrendersignalpixmap.cpp \
925-$$BASE_DIR/src/widget/hexspinbox.cpp \
926-$$BASE_DIR/src/widget/wabstractcontrol.cpp \
927-$$BASE_DIR/src/widget/wbrowsetableview.cpp \
928-$$BASE_DIR/src/widget/wdisplay.cpp \
929-$$BASE_DIR/src/widget/wglwaveformviewer.cpp \
930-$$BASE_DIR/src/widget/wknob.cpp \
931+$$BASE_DIR/src/sharedglcontext.cpp \
932+$$BASE_DIR/src/widget/wwidget.cpp \
933+$$BASE_DIR/src/widget/wwidgetgroup.cpp \
934+$$BASE_DIR/src/widget/wwidgetstack.cpp \
935 $$BASE_DIR/src/widget/wlabel.cpp \
936-$$BASE_DIR/src/widget/wlibrary.cpp \
937-$$BASE_DIR/src/widget/wlibrarysidebar.cpp \
938-$$BASE_DIR/src/widget/wlibrarytableview.cpp \
939-$$BASE_DIR/src/widget/wlibrarytextbrowser.cpp \
940-$$BASE_DIR/src/widget/wnumberbpm.cpp \
941+$$BASE_DIR/src/widget/wtracktext.cpp \
942 $$BASE_DIR/src/widget/wnumber.cpp \
943 $$BASE_DIR/src/widget/wnumberpos.cpp \
944 $$BASE_DIR/src/widget/wnumberrate.cpp \
945-$$BASE_DIR/src/widget/woverview.cpp \
946-$$BASE_DIR/src/widget/wpixmapstore.cpp \
947-$$BASE_DIR/src/widget/wpreparecratestableview.cpp \
948-$$BASE_DIR/src/widget/wpreparelibrarytableview.cpp \
949+$$BASE_DIR/src/widget/wknob.cpp \
950+$$BASE_DIR/src/widget/wdisplay.cpp \
951+$$BASE_DIR/src/widget/wvumeter.cpp \
952 $$BASE_DIR/src/widget/wpushbutton.cpp \
953-$$BASE_DIR/src/widget/wsearchlineedit.cpp \
954-$$BASE_DIR/src/widget/wskincolor.cpp \
955 $$BASE_DIR/src/widget/wslidercomposed.cpp \
956 $$BASE_DIR/src/widget/wslider.cpp \
957 $$BASE_DIR/src/widget/wstatuslight.cpp \
958+$$BASE_DIR/src/widget/woverview.cpp \
959+$$BASE_DIR/src/widget/wspinny.cpp \
960+$$BASE_DIR/src/widget/wskincolor.cpp \
961+$$BASE_DIR/src/widget/wabstractcontrol.cpp \
962+$$BASE_DIR/src/widget/wsearchlineedit.cpp \
963+$$BASE_DIR/src/widget/wpixmapstore.cpp \
964+$$BASE_DIR/src/widget/wimagestore.cpp \
965+$$BASE_DIR/src/widget/hexspinbox.cpp \
966+$$BASE_DIR/src/widget/wtrackproperty.cpp \
967+$$BASE_DIR/src/widget/wtime.cpp \
968+$$BASE_DIR/src/mathstuff.cpp \
969+$$BASE_DIR/src/rotary.cpp \
970+$$BASE_DIR/src/widget/wtracktableview.cpp \
971 $$BASE_DIR/src/widget/wtracktableviewheader.cpp \
972-$$BASE_DIR/src/widget/wvisualsimple.cpp \
973-$$BASE_DIR/src/widget/wvumeter.cpp \
974+$$BASE_DIR/src/widget/wlibrarysidebar.cpp \
975+$$BASE_DIR/src/widget/wlibrary.cpp \
976+$$BASE_DIR/src/widget/wlibrarytableview.cpp \
977+$$BASE_DIR/src/widget/wpreparelibrarytableview.cpp \
978+$$BASE_DIR/src/widget/wpreparecratestableview.cpp \
979+$$BASE_DIR/src/widget/wlibrarytextbrowser.cpp \
980+$$BASE_DIR/src/library/preparecratedelegate.cpp \
981+$$BASE_DIR/src/library/trackcollection.cpp \
982+$$BASE_DIR/src/library/basesqltablemodel.cpp \
983+$$BASE_DIR/src/library/basetrackcache.cpp \
984+$$BASE_DIR/src/library/librarytablemodel.cpp \
985+$$BASE_DIR/src/library/searchqueryparser.cpp \
986+$$BASE_DIR/src/library/preparelibrarytablemodel.cpp \
987+$$BASE_DIR/src/library/missingtablemodel.cpp \
988+$$BASE_DIR/src/library/hiddentablemodel.cpp \
989+$$BASE_DIR/src/library/proxytrackmodel.cpp \
990+$$BASE_DIR/src/library/playlisttablemodel.cpp \
991+$$BASE_DIR/src/library/libraryfeature.cpp \
992+$$BASE_DIR/src/library/preparefeature.cpp \
993+$$BASE_DIR/src/library/autodjfeature.cpp \
994+$$BASE_DIR/src/library/mixxxlibraryfeature.cpp \
995+$$BASE_DIR/src/library/baseplaylistfeature.cpp \
996+$$BASE_DIR/src/library/playlistfeature.cpp \
997+$$BASE_DIR/src/library/setlogfeature.cpp \
998+$$BASE_DIR/src/library/browse/browsetablemodel.cpp \
999+$$BASE_DIR/src/library/browse/browsethread.cpp \
1000+$$BASE_DIR/src/library/browse/browsefeature.cpp \
1001+$$BASE_DIR/src/library/browse/foldertreemodel.cpp \
1002+$$BASE_DIR/src/library/recording/recordingfeature.cpp \
1003+$$BASE_DIR/src/dlgrecording.cpp \
1004+$$BASE_DIR/src/recording/recordingmanager.cpp \
1005+$$BASE_DIR/src/engine/sidechain/enginerecord.cpp \
1006+$$BASE_DIR/src/library/baseexternallibraryfeature.cpp \
1007+$$BASE_DIR/src/library/baseexternaltrackmodel.cpp \
1008+$$BASE_DIR/src/library/baseexternalplaylistmodel.cpp \
1009+$$BASE_DIR/src/library/rhythmbox/rhythmboxfeature.cpp \
1010+$$BASE_DIR/src/library/itunes/itunesfeature.cpp \
1011+$$BASE_DIR/src/library/traktor/traktorfeature.cpp \
1012+$$BASE_DIR/src/library/cratefeature.cpp \
1013+$$BASE_DIR/src/library/sidebarmodel.cpp \
1014+$$BASE_DIR/src/library/libraryscanner.cpp \
1015+$$BASE_DIR/src/library/libraryscannerdlg.cpp \
1016+$$BASE_DIR/src/library/legacylibraryimporter.cpp \
1017+$$BASE_DIR/src/library/library.cpp \
1018+$$BASE_DIR/src/library/searchthread.cpp \
1019+$$BASE_DIR/src/library/dao/cratedao.cpp \
1020+$$BASE_DIR/src/library/cratetablemodel.cpp \
1021+$$BASE_DIR/src/library/dao/cuedao.cpp \
1022+$$BASE_DIR/src/library/dao/cue.cpp \
1023+$$BASE_DIR/src/library/dao/trackdao.cpp \
1024+$$BASE_DIR/src/library/dao/playlistdao.cpp \
1025+$$BASE_DIR/src/library/dao/libraryhashdao.cpp \
1026+$$BASE_DIR/src/library/dao/settingsdao.cpp \
1027+$$BASE_DIR/src/library/dao/analysisdao.cpp \
1028+$$BASE_DIR/src/library/librarycontrol.cpp \
1029+$$BASE_DIR/src/library/schemamanager.cpp \
1030+$$BASE_DIR/src/library/songdownloader.cpp \
1031+$$BASE_DIR/src/library/starrating.cpp \
1032+$$BASE_DIR/src/library/stardelegate.cpp \
1033+$$BASE_DIR/src/library/stareditor.cpp \
1034+$$BASE_DIR/src/library/bpmdelegate.cpp \
1035+$$BASE_DIR/src/library/bpmeditor.cpp \
1036+$$BASE_DIR/src/library/previewbuttondelegate.cpp \
1037+$$BASE_DIR/src/audiotagger.cpp \
1038+$$BASE_DIR/src/library/treeitemmodel.cpp \
1039+$$BASE_DIR/src/library/treeitem.cpp \
1040+$$BASE_DIR/src/xmlparse.cpp \
1041+$$BASE_DIR/src/library/parser.cpp \
1042+$$BASE_DIR/src/library/parserpls.cpp \
1043+$$BASE_DIR/src/library/parserm3u.cpp \
1044+$$BASE_DIR/src/library/parsercsv.cpp \
1045+$$BASE_DIR/src/bpm/bpmscheme.cpp \
1046+$$BASE_DIR/src/soundsourceproxy.cpp \
1047 $$BASE_DIR/src/widget/wwaveformviewer.cpp \
1048-$$BASE_DIR/src/widget/wwidget.cpp \
1049-$$BASE_DIR/src/windowkaiser.cpp \
1050-$$BASE_DIR/src/wtracktableview.cpp \
1051-$$BASE_DIR/src/xmlparse.cpp
1052+$$BASE_DIR/src/waveform/waveform.cpp \
1053+$$BASE_DIR/src/waveform/waveformfactory.cpp \
1054+$$BASE_DIR/src/waveform/waveformwidgetfactory.cpp \
1055+$$BASE_DIR/src/waveform/renderers/waveformwidgetrenderer.cpp \
1056+$$BASE_DIR/src/waveform/renderers/waveformrendererabstract.cpp \
1057+$$BASE_DIR/src/waveform/renderers/waveformrenderbackground.cpp \
1058+$$BASE_DIR/src/waveform/renderers/waveformrendermark.cpp \
1059+$$BASE_DIR/src/waveform/renderers/waveformrendermarkrange.cpp \
1060+$$BASE_DIR/src/waveform/renderers/waveformrenderbeat.cpp \
1061+$$BASE_DIR/src/waveform/renderers/waveformrendererendoftrack.cpp \
1062+$$BASE_DIR/src/waveform/renderers/waveformrendererpreroll.cpp \
1063+$$BASE_DIR/src/waveform/renderers/waveformrendererfilteredsignal.cpp \
1064+$$BASE_DIR/src/waveform/renderers/waveformrendererhsv.cpp \
1065+$$BASE_DIR/src/waveform/renderers/qtwaveformrendererfilteredsignal.cpp \
1066+$$BASE_DIR/src/waveform/renderers/qtwaveformrenderersimplesignal.cpp \
1067+$$BASE_DIR/src/waveform/renderers/glwaveformrendererfilteredsignal.cpp \
1068+$$BASE_DIR/src/waveform/renderers/glwaveformrenderersimplesignal.cpp \
1069+$$BASE_DIR/src/waveform/renderers/glslwaveformrenderersignal.cpp \
1070+$$BASE_DIR/src/waveform/renderers/waveformsignalcolors.cpp \
1071+$$BASE_DIR/src/waveform/renderers/waveformrenderersignalbase.cpp \
1072+$$BASE_DIR/src/waveform/renderers/waveformmark.cpp \
1073+$$BASE_DIR/src/waveform/renderers/waveformmarkset.cpp \
1074+$$BASE_DIR/src/waveform/renderers/waveformmarkrange.cpp \
1075+$$BASE_DIR/src/waveform/widgets/waveformwidgetabstract.cpp \
1076+$$BASE_DIR/src/waveform/widgets/emptywaveformwidget.cpp \
1077+$$BASE_DIR/src/waveform/widgets/softwarewaveformwidget.cpp \
1078+$$BASE_DIR/src/waveform/widgets/hsvwaveformwidget.cpp \
1079+$$BASE_DIR/src/waveform/widgets/qtwaveformwidget.cpp \
1080+$$BASE_DIR/src/waveform/widgets/qtsimplewaveformwidget.cpp \
1081+$$BASE_DIR/src/waveform/widgets/glwaveformwidget.cpp \
1082+$$BASE_DIR/src/waveform/widgets/glsimplewaveformwidget.cpp \
1083+$$BASE_DIR/src/waveform/widgets/glslwaveformwidget.cpp \
1084+$$BASE_DIR/src/skin/imginvert.cpp \
1085+$$BASE_DIR/src/skin/imgloader.cpp \
1086+$$BASE_DIR/src/skin/imgcolor.cpp \
1087+$$BASE_DIR/src/skin/skinloader.cpp \
1088+$$BASE_DIR/src/skin/legacyskinparser.cpp \
1089+$$BASE_DIR/src/skin/colorschemeparser.cpp \
1090+$$BASE_DIR/src/skin/propertybinder.cpp \
1091+$$BASE_DIR/src/skin/tooltips.cpp \
1092+$$BASE_DIR/src/sampleutil.cpp \
1093+$$BASE_DIR/src/trackinfoobject.cpp \
1094+$$BASE_DIR/src/track/beatgrid.cpp \
1095+$$BASE_DIR/src/track/beatmap.cpp \
1096+$$BASE_DIR/src/track/beatfactory.cpp \
1097+$$BASE_DIR/src/track/beatutils.cpp \
1098+$$BASE_DIR/src/baseplayer.cpp \
1099+$$BASE_DIR/src/basetrackplayer.cpp \
1100+$$BASE_DIR/src/deck.cpp \
1101+$$BASE_DIR/src/sampler.cpp \
1102+$$BASE_DIR/src/previewdeck.cpp \
1103+$$BASE_DIR/src/playermanager.cpp \
1104+$$BASE_DIR/src/samplerbank.cpp \
1105+$$BASE_DIR/src/sounddevice.cpp \
1106+$$BASE_DIR/src/sounddeviceportaudio.cpp \
1107+$$BASE_DIR/src/soundmanager.cpp \
1108+$$BASE_DIR/src/soundmanagerconfig.cpp \
1109+$$BASE_DIR/src/soundmanagerutil.cpp \
1110+$$BASE_DIR/src/dlgprefrecord.cpp \
1111+$$BASE_DIR/src/playerinfo.cpp \
1112+$$BASE_DIR/src/encoder/encoder.cpp \
1113+$$BASE_DIR/src/encoder/encodermp3.cpp \
1114+$$BASE_DIR/src/encoder/encodervorbis.cpp \
1115+$$BASE_DIR/src/segmentation.cpp \
1116+$$BASE_DIR/src/tapfilter.cpp \
1117+$$BASE_DIR/src/util/pa_ringbuffer.c \
1118+$$BASE_DIR/src/util/sleepableqthread.cpp \
1119+$$BASE_DIR/src/util/statsmanager.cpp \
1120+$$BASE_DIR/src/util/stat.cpp \
1121+$$BASE_DIR/src/util/timer.cpp \
1122+$$BASE_DIR/src/util/performancetimer.cpp
1123
1124
1125 # Soundtouch
1126-INCLUDEPATH += $$BASE_DIR/lib/soundtouch-1.4.1
1127-SOURCES += $$BASE_DIR/lib/soundtouch-1.4.1/SoundTouch.cpp \
1128- $$BASE_DIR/lib/soundtouch-1.4.1/TDStretch.cpp \
1129- $$BASE_DIR/lib/soundtouch-1.4.1/RateTransposer.cpp \
1130- $$BASE_DIR/lib/soundtouch-1.4.1/AAFilter.cpp \
1131- $$BASE_DIR/lib/soundtouch-1.4.1/FIFOSampleBuffer.cpp \
1132- $$BASE_DIR/lib/soundtouch-1.4.1/FIRFilter.cpp \
1133- $$BASE_DIR/lib/soundtouch-1.4.1/PeakFinder.cpp \
1134- $$BASE_DIR/lib/soundtouch-1.4.1/BPMDetect.cpp \
1135- $$BASE_DIR/lib/soundtouch-1.4.1/cpu_detect_x86_gcc.cpp
1136+INCLUDEPATH += $$BASE_DIR/lib/soundtouch-1.6.0
1137+SOURCES += $$BASE_DIR/src/engine/enginebufferscalest.cpp \
1138+ $$BASE_DIR/lib/soundtouch-1.6.0/SoundTouch.cpp \
1139+ $$BASE_DIR/lib/soundtouch-1.6.0/TDStretch.cpp \
1140+ $$BASE_DIR/lib/soundtouch-1.6.0/RateTransposer.cpp \
1141+ $$BASE_DIR/lib/soundtouch-1.6.0/AAFilter.cpp \
1142+ $$BASE_DIR/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp \
1143+ $$BASE_DIR/lib/soundtouch-1.6.0/FIRFilter.cpp \
1144+ $$BASE_DIR/lib/soundtouch-1.6.0/PeakFinder.cpp \
1145+ $$BASE_DIR/lib/soundtouch-1.6.0/BPMDetect.cpp \
1146+ $$BASE_DIR/lib/soundtouch-1.6.0/cpu_detect_x86_gcc.cpp
1147
1148 # Fidlib
1149 SOURCES += $$BASE_DIR/lib/fidlib-0.9.10/fidlib.c
1150@@ -610,25 +746,32 @@
1151
1152 # ReplayGain
1153
1154-SOURCES += $$BASE_DIR/lib/replaygain/replaygain_analysis.c
1155+SOURCES += $$BASE_DIR/lib/replaygain/replaygain.cpp
1156
1157 FORMS += \
1158+$$BASE_DIR/src/controllers/dlgcontrollerlearning.ui \
1159+$$BASE_DIR/src/controllers/dlgprefcontrollerdlg.ui \
1160+$$BASE_DIR/src/controllers/dlgprefmappablecontrollerdlg.ui \
1161+$$BASE_DIR/src/controllers/dlgprefnocontrollersdlg.ui \
1162 $$BASE_DIR/src/dlgaboutdlg.ui \
1163 $$BASE_DIR/src/dlgautodj.ui \
1164-$$BASE_DIR/src/dlgmidilearning.ui \
1165+$$BASE_DIR/src/dlghidden.ui \
1166+$$BASE_DIR/src/dlgmissing.ui \
1167+$$BASE_DIR/src/dlgplugindownloader.ui \
1168+$$BASE_DIR/src/dlgprefbeatsdlg.ui \
1169 $$BASE_DIR/src/dlgprefcontrolsdlg.ui \
1170 $$BASE_DIR/src/dlgprefcrossfaderdlg.ui \
1171 $$BASE_DIR/src/dlgprefeqdlg.ui \
1172 $$BASE_DIR/src/dlgpreferencesdlg.ui \
1173-$$BASE_DIR/src/dlgprefmidibindingsdlg.ui \
1174-$$BASE_DIR/src/dlgprefnomididlg.ui \
1175+$$BASE_DIR/src/dlgprefnovinyldlg.ui \
1176 $$BASE_DIR/src/dlgprefplaylistdlg.ui \
1177-$$BASE_DIR/src/dlgprefrecorddlg.ui \
1178+$$BASE_DIR/src/dlgprefreplaygaindlg.ui \
1179 $$BASE_DIR/src/dlgprefsounddlg.ui \
1180+$$BASE_DIR/src/dlgprefsounditem.ui \
1181 $$BASE_DIR/src/dlgprefvinyldlg.ui \
1182 $$BASE_DIR/src/dlgprepare.ui \
1183-$$BASE_DIR/src/dlgtrackinfo.ui \
1184-$$BASE_DIR/src/script/scriptstudio.ui
1185+$$BASE_DIR/src/dlgrecording.ui \
1186+$$BASE_DIR/src/dlgtrackinfo.ui
1187
1188
1189 RESOURCES += $$BASE_DIR/src/../res/mixxx.qrc
1190@@ -677,24 +820,35 @@
1191 }
1192 win32 {
1193 DEFINES += __WINMIDI__
1194- HEADERS += $$BASE_DIR/src/midiobjectwin.h
1195- SOURCES += $$BASE_DIR/src/midiobjectwin.cpp
1196- LIBS += $$BASE_DIR/../mixxx-winlib/libsndfile-1.dll \
1197- $$BASE_DIR/../mixxx-winlib/portaudio_x86.dll \
1198- $$BASE_DIR/../mixxx-winlib/libmad.a \ # libmad-0.15.1b
1199- $$BASE_DIR/../mixxx-winlib/libid3tag.a \ # libid3tag-0.15.1b
1200- $$BASE_DIR/../mixxx-winlib/libvorbisfile.dll \
1201- $$BASE_DIR/../mixxx-winlib/libvorbis.dll \
1202-# $$BASE_DIR/../mixxx-winlib/libfftw3-3.dll \
1203- $$BASE_DIR/../mixxx-winlib/libogg.dll \
1204- -lwinmm
1205- INCLUDEPATH += $$BASE_DIR/../mixxx-winlib
1206-}
1207+ CONFIG(portmidi) {
1208+ LIBS += -lportmidi_s
1209+ }
1210+ LIBS += \
1211+ -L$$BASE_DIR/../mixxx-mingw/lib -lFLAC -logg -lvorbis \
1212+ -lvorbisenc -lvorbisfile
1213+ CONFIG(mad) {
1214+ LIBS += -lmad -lid3tag
1215+ }
1216+ LIBS += \
1217+ -lz -lprotobuf-lite -lsndfile \
1218+ -lportaudio.dll -ltag.dll -lwinmm -lws2_32 -lmingw32
1219+ INCLUDEPATH += $$BASE_DIR/../mixxx-mingw/include
1220+}
1221+
1222+CONFIG(portmidi) {
1223+ DEFINES += __PORTMIDI__
1224+ HEADERS += \
1225+ $$BASE_DIR/src/controllers/midi/portmidicontroller.h \
1226+ $$BASE_DIR/src/controllers/midi/portmidienumerator.h
1227+ SOURCES += \
1228+ $$BASE_DIR/src/controllers/midi/portmidienumerator.cpp \
1229+ $$BASE_DIR/src/controllers/midi/portmidicontroller.cpp
1230+}
1231+
1232 CONFIG(ladspa) {
1233 DEFINES += __LADSPA__
1234 HEADERS += $$BASE_DIR/src/engine/engineladspa.h \
1235 $$BASE_DIR/src/dlgladspa.h \
1236- $$BASE_DIR/src/ladspaview.h \
1237 $$BASE_DIR/src/ladspa/ladspacontrol.h \
1238 $$BASE_DIR/src/ladspa/ladspainstance.h \
1239 $$BASE_DIR/src/ladspa/ladspainstancemono.h \
1240@@ -706,7 +860,8 @@
1241 $$BASE_DIR/src/ladspa/ladspapresetinstance.h \
1242 $$BASE_DIR/src/ladspa/ladspapresetknob.h \
1243 $$BASE_DIR/src/ladspa/ladspapresetmanager.h \
1244- $$BASE_DIR/src/ladspa/ladspapresetslot.h
1245+ $$BASE_DIR/src/ladspa/ladspapresetslot.h \
1246+ $$BASE_DIR/src/ladspaview.h
1247 SOURCES += $$BASE_DIR/src/engine/engineladspa.cpp \
1248 $$BASE_DIR/src/dlgladspa.cpp \
1249 $$BASE_DIR/src/ladspaview.cpp \
1250@@ -732,25 +887,31 @@
1251
1252 CONFIG(Vamp) {
1253 DEFINES += __VAMP__
1254-INCLUDEPATH += $$BASE_DIR/lib/vamp
1255-HEADERS += $$BASE_DIR/src/vamp/vampanalyser.h \
1256+INCLUDEPATH += $$BASE_DIR/lib/vamp-2.3
1257+HEADERS +=
1258+ $$BASE_DIR/src/vamp/vamppluginloader.h \
1259+ $$BASE_DIR/src/dlgprefbeats.h \
1260+ $$BASE_DIR/src/vamp/vampanalyser.h \
1261+ $$UI_DIR/ui_dlgprefbeatsdlg.h \
1262 $$BASE_DIR/src/analyservamptest.h \
1263 $$BASE_DIR/src/analyservampkeytest.h \
1264 $$BASE_DIR/lib/vamp/vamp/vamp.h \
1265- $$BASE_DIR/lib/vamp/vamp-hostsdk/hostguard.h \
1266+ $$BASE_DIR/lib/vamp/vamp-hostsdk/hostguard.h
1267 SOURCES += $$BASE_DIR/src/vamp/vampanalyser.cpp \
1268 $$BASE_DIR/src/analyservamptest.cpp \
1269 $$BASE_DIR/src/analyservampkeytest.cpp \
1270 $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginBufferingAdapter.cpp \
1271- $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginChannelAdapter.cpp \
1272- $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginHostAdapter.cpp \
1273- $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginInputDomainAdapter.cpp \
1274- $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginLoader.cpp \
1275- $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginSummarisingAdapter.cpp \
1276- $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginWrapper.cpp \
1277- $$BASE_DIR/lib/vamp/src/vamp-hostsdk/RealTime.cpp \
1278- $$BASE_DIR/lib/vamp/src/vamp-sdk/PluginAdapter.cpp \
1279- $$BASE_DIR/lib/vamp/src/vamp-sdk/RealTime.cpp
1280+ $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginChannelAdapter.cpp \
1281+ $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginHostAdapter.cpp \
1282+ $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginInputDomainAdapter.cpp \
1283+ $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginLoader.cpp \
1284+ $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginSummarisingAdapter.cpp \
1285+ $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginWrapper.cpp \
1286+ $$BASE_DIR/lib/vamp/src/vamp-hostsdk/RealTime.cpp \
1287+ $$BASE_DIR/lib/vamp/src/vamp-sdk/PluginAdapter.cpp \
1288+ $$BASE_DIR/lib/vamp/src/vamp-sdk/RealTime.cpp
1289+FORMS += \
1290+ $$BASE_DIR/src/dlgprefbeatsdlg.ui
1291 }
1292
1293 CONFIG(tonal) {
1294@@ -795,28 +956,55 @@
1295 -lfaad
1296 }
1297 }
1298+
1299+CONFIG(mad) {
1300+ DEFINES += __MAD__
1301+ HEADERS += \
1302+ $$BASE_DIR/src/soundsourcemp3.h
1303+ SOURCES += \
1304+ $$BASE_DIR/src/soundsourcemp3.cpp
1305+}
1306 CONFIG(vinylcontrol) {
1307 DEFINES += __VINYLCONTROL__
1308 HEADERS += \
1309- $$BASE_DIR/lib/scratchlib/DAnalyse.h \
1310- $$BASE_DIR/lib/xwax/timecoder.h
1311+ $$BASE_DIR/lib/xwax/timecoder.h \
1312+ $$BASE_DIR/src/dlgprefnovinyl.h \
1313+ $$BASE_DIR/src/dlgprefvinyl.h \
1314+ $$BASE_DIR/src/engine/enginevinylsoundemu.h \
1315+ $$BASE_DIR/src/engine/vinylcontrolcontrol.h \
1316+ $$BASE_DIR/src/vinylcontrol/steadypitch.h \
1317+ $$BASE_DIR/src/vinylcontrol/vinylcontrol.h \
1318+ $$BASE_DIR/src/vinylcontrol/vinylcontrolmanager.h \
1319+ $$BASE_DIR/src/vinylcontrol/vinylcontrolproxy.h \
1320+ $$BASE_DIR/src/vinylcontrol/vinylcontrolsignalwidget.h \
1321+ $$BASE_DIR/src/vinylcontrol/vinylcontrolxwax.h
1322 SOURCES += \
1323- $$BASE_DIR/lib/scratchlib/DAnalyse.cpp
1324+ $$BASE_DIR/src/vinylcontrol/vinylcontrol.cpp \
1325+ $$BASE_DIR/src/vinylcontrol/vinylcontrolproxy.cpp \
1326+ $$BASE_DIR/src/vinylcontrol/vinylcontrolxwax.cpp \
1327+ $$BASE_DIR/src/dlgprefvinyl.cpp \
1328+ $$BASE_DIR/src/vinylcontrol/vinylcontrolsignalwidget.cpp \
1329+ $$BASE_DIR/src/vinylcontrol/vinylcontrolmanager.cpp \
1330+ $$BASE_DIR/src/vinylcontrol/steadypitch.cpp \
1331+ $$BASE_DIR/src/engine/vinylcontrolcontrol.cpp
1332
1333- INCLUDEPATH += $$BASE_DIR/lib/scratchlib \
1334- $$BASE_DIR/lib/xwax
1335- win32:SOURCES += $$BASE_DIR/lib/xwax/timecoder_win32.c
1336+ INCLUDEPATH += $$BASE_DIR/lib/xwax
1337+ win32:SOURCES += $$BASE_DIR/lib/xwax/timecoder_win32.cpp
1338+ win32:SOURCES += $$BASE_DIR/lib/xwax/lut.cpp
1339 !win32:SOURCES += $$BASE_DIR/lib/xwax/timecoder.c
1340+ !win32:SOURCES += $$BASE_DIR/lib/xwax/lut.c
1341 }
1342 !CONFIG(hifieq):CXXFLAGS += -D__LOFI__ \
1343 -D__NO_INTTYPES__
1344 CONFIG(shoutcast) {
1345 DEFINES += __SHOUTCAST__
1346 HEADERS += $$BASE_DIR/src/dlgprefshoutcast.h \
1347- $$BASE_DIR/src/encodervorbis.h \
1348- $$BASE_DIR/src/engine/engineshoutcast.h
1349+ $$BASE_DIR/src/recording/encodermp3.h \
1350+ $$BASE_DIR/src/recording/encodervorbis.h \
1351+ $$BASE_DIR/src/engine/engineshoutcast.h \
1352+ $$BASE_DIR/src/shoutcast/defs_shoutcast.h
1353 SOURCES += $$BASE_DIR/src/dlgprefshoutcast.cpp \
1354- $$BASE_DIR/src/encodervorbis.cpp \
1355+ $$BASE_DIR/src/recording/encodervorbis.cpp \
1356 $$BASE_DIR/src/engine/engineshoutcast.cpp
1357 LIBS += shout \
1358 vorbisenc
1359@@ -826,7 +1014,6 @@
1360 # CONFIG(record) {
1361 # DEFINES += __RECORD__
1362 # HEADERS += $$BASE_DIR/src/recording/defs_recording.h \
1363-# $$BASE_DIR/src/recording/enginerecord.h \
1364 # $$BASE_DIR/src/recording/writeaudiofile.h \
1365 # $$BASE_DIR/src/dlgprefrecord.h
1366 # SOURCES += $$BASE_DIR/src/recording/enginerecord.cpp \
1367@@ -856,17 +1043,73 @@
1368 -logg
1369 }
1370
1371+CONFIG(hid) {
1372+ HIDAPI_INTERNAL_PATH = $$BASE_DIR/../mixxx-winlib/lib/hidapi-0.8.0-pre
1373+ DEFINES += __HID__
1374+ SOURCES += \
1375+ $$BASE_DIR/src/controllers/hid/hidcontroller.cpp \
1376+ $$BASE_DIR/src/controllers/hid/hidenumerator.cpp \
1377+ $$BASE_DIR/src/controllers/hid/hidcontrollerpresetfilehandler.cpp
1378+ HEADERS += \
1379+ $$BASE_DIR/src/controllers/hid/hidblacklist.h \
1380+ $$BASE_DIR/src/controllers/hid/hidcontroller.h \
1381+ $$BASE_DIR/src/controllers/hid/hidcontrollerpreset.h \
1382+ $$BASE_DIR/src/controllers/hid/hidcontrollerpresetfilehandler.h \
1383+ $$BASE_DIR/src/controllers/hid/hidenumerator.h
1384+ win32 {
1385+ SOURCES += $$HIDAPI_INTERNAL_PATH/windows/hid.c
1386+ } macx {
1387+ SOURCES += $$HIDAPI_INTERNAL_PATH/mac/hid.c
1388+ } else {
1389+ SOURCES += $$HIDAPI_INTERNAL_PATH/linux/hid-libusb.c
1390+ }
1391+}
1392+
1393+CONFIG(bulk) {
1394+ DEFINES += __BULK__
1395+ SOURCES += \
1396+ $$BASE_DIR/src/controllers/bulk/bulkcontroller.cpp \
1397+ $$BASE_DIR/src/controllers/bulk/bulkenumerator.cpp
1398+ HEADERS += \
1399+ $$BASE_DIR/src/controllers/bulk/bulkcontroller.h \
1400+ $$BASE_DIR/src/controllers/bulk/bulkenumerator.h \
1401+ $$BASE_DIR/src/controllers/bulk/bulksupported.h
1402+ !CONFIG(hid) {
1403+ SOURCES += \
1404+ $$BASE_DIR/src/controllers/hid/hidcontrollerpresetfilehandler.cpp
1405+ }
1406+}
1407+
1408+CONFIG(PromoTracks) {
1409+ DEFINES += __PROMO__
1410+ HEADERS += \
1411+ $$BASE_DIR/src/library/promotracksfeature.h \
1412+ $$BASE_DIR/src/library/bundledsongswebview.h \
1413+ $$BASE_DIR/src/library/featuredartistswebview.h
1414+ SOURCES += \
1415+ $$BASE_DIR/src/library/promotracksfeature.cpp \
1416+ $$BASE_DIR/src/library/bundledsongswebview.cpp \
1417+ $$BASE_DIR/src/library/featuredartistswebview.cpp
1418+}
1419+
1420+CONFIG(hss1394) {
1421+ HEADERS += \
1422+ $$BASE_DIR/src/controllers/midi/hss1394controller.h \
1423+ $$BASE_DIR/src/controllers/midi/hss1394enumerator.h
1424+}
1425+
1426 # Copy Windows dependencies to DESTDIR.
1427 win32 {
1428 !exists($$DESTDIR):system( mkdir \"$$replace(DESTDIR, /,$$DIR_SEPARATOR)\" )
1429 # MinGW run-time
1430- DLLs += $$(QTDIR)/../mingw/bin/mingwm10.dll $$(QTDIR)/../mingw/bin/libexpat-1.dll
1431+ DLLs += $$(QTDIR)/../mingw/bin/mingwm10.dll \
1432+ $$(QTDIR)/../mingw/bin/libstdc++-6.dll \
1433+ $$(QTDIR)/../mingw/bin/libexpat-1.dll
1434 CONFIG(m4a): DLLs += $$BASE_DIR/../mixxx-winlib/mp4v2/mingw-bin/libmp4v2-0.dll \
1435 $$BASE_DIR/../mixxx-winlib/libfaad2.dll
1436 # Qt4 libraries
1437 debug {
1438- DLLs += $$(QTDIR)/bin/Qt3Supportd4.dll \
1439- $$(QTDIR)/bin/QtCored4.dll \
1440+ DLLs += $$(QTDIR)/bin/QtCored4.dll \
1441 $$(QTDIR)/bin/QtGuid4.dll \
1442 $$(QTDIR)/bin/QtNetworkd4.dll \
1443 $$(QTDIR)/bin/QtSqld4.dll \
1444@@ -876,8 +1119,7 @@
1445 # include GNU Debugger in debug distros
1446 DLLs += $$(QTDIR)/../mingw/bin/gdb.exe
1447 } else {
1448- DLLs += $$(QTDIR)/bin/Qt3Support4.dll \
1449- $$(QTDIR)/bin/QtCore4.dll \
1450+ DLLs += $$(QTDIR)/bin/QtCore4.dll \
1451 $$(QTDIR)/bin/QtGui4.dll \
1452 $$(QTDIR)/bin/QtNetwork4.dll \
1453 $$(QTDIR)/bin/QtSql4.dll \
1454@@ -885,14 +1127,15 @@
1455 $$(QTDIR)/bin/QtOpenGL4.dll \
1456 $$(QTDIR)/bin/QtScript4.dll
1457 }
1458- # mixxx-winlibs DLLs
1459- DLLs += $$BASE_DIR/../mixxx-winlib/libogg.dll \
1460- $$BASE_DIR/../mixxx-winlib/portaudio_x86.dll \
1461-# $$BASE_DIR/../mixxx-winlib/portaudio.dll \
1462- $$BASE_DIR/../mixxx-winlib/libsndfile-1.dll \
1463-# $$BASE_DIR/../mixxx-winlib/sndfile.dll \
1464- $$BASE_DIR/../mixxx-winlib/libvorbis.dll \
1465- $$BASE_DIR/../mixxx-winlib/libvorbisfile.dll
1466+ # mixxx-mingw DLLs
1467+ DLLs += \
1468+ $$BASE_DIR/../mixxx-mingw/lib/libogg-0.dll \
1469+ $$BASE_DIR/../mixxx-mingw/lib/libportaudio-2.dll \
1470+ $$BASE_DIR/../mixxx-mingw/lib/libprotobuf-lite-8.dll \
1471+ $$BASE_DIR/../mixxx-mingw/lib/libsndfile-1.dll \
1472+ $$BASE_DIR/../mixxx-mingw/lib/libtag.dll \
1473+ $$BASE_DIR/../mixxx-mingw/lib/libvorbis-0.dll \
1474+ $$BASE_DIR/../mixxx-mingw/lib/libvorbisfile-3.dll
1475
1476 # check if DLL exists at target, if not copy it there
1477 for(DLL, DLLs):!exists( $$DESTDIR/$$basename(DLL) ) {
1478@@ -937,9 +1180,9 @@
1479 # SH Usage: make -f Makefile.Debug nsis
1480 nsis.target = nsis
1481 exists($$BUILDDIR/gdb.exe):INCLUDE_GDB = -DINCLUDE_GDB
1482- nsis.commands = \"$$(PROGRAMFILES)\NSIS\makensis.exe\" -NOCD -DGCC -DBINDIR=\"$$BUILDDIR\" -DBUILD_REV=\"$$VCS_BRANCH_NAME-$$VCS_REVNO\" $$INCLUDE_GDB build\\\\nsis\\\\Mixxx.nsi
1483+ nsis.commands = \"$$(PROGRAMFILES)\\\\NSIS\\\\makensis.exe\" -NOCD -DGCC -DBINDIR=\"$$BUILDDIR\" -DBUILD_REV=\"$$VCS_BRANCH_NAME-$$VCS_REVNO\" $$INCLUDE_GDB build\\\\nsis\\\\Mixxx.nsi
1484 # nsis.depends =
1485- QMAKE_EXTRA_UNIX_TARGETS += nsis
1486+ QMAKE_EXTRA_TARGETS += nsis
1487 }
1488
1489 # build.h
1490@@ -949,3 +1192,9 @@
1491 message( Generating src$${DIR_SEPARATOR}build.h with contents: $${LITERAL_HASH}define BUILD_REV '"'$$BUILD_REV'"' )
1492 system( echo $${LITERAL_HASH}define BUILD_REV '"'$$BUILD_REV'"'>src$${DIR_SEPARATOR}build.h )
1493 system( echo $${LITERAL_HASH}define BUILD_FLAGS '"'$$replace(DEFINES,__,)'"'>>src$${DIR_SEPARATOR}build.h )
1494+
1495+PROTOS += \
1496+ src/proto/waveform.proto \
1497+ src/proto/skin.proto \
1498+ src/proto/beats.proto
1499+include(protobuf.pri)
1500
1501=== added file 'mixxx/build/qtcreator/protobuf.pri'
1502--- mixxx/build/qtcreator/protobuf.pri 1970-01-01 00:00:00 +0000
1503+++ mixxx/build/qtcreator/protobuf.pri 2013-06-13 22:06:31 +0000
1504@@ -0,0 +1,39 @@
1505+#
1506+# Qt qmake integration with Google Protocol Buffers compiler protoc
1507+#
1508+# To compile protocol buffers with qt qmake, specify PROTOS variable and
1509+# include this file
1510+#
1511+# Example:
1512+# LIBS += /usr/local/lib/libprotobuf.so
1513+# PROTOS = a.proto b.proto
1514+# include(protobuf.pri)
1515+#
1516+# By default protoc looks for .proto files (including the imported ones) in
1517+# the current directory where protoc is run. If you need to include additional
1518+# paths specify the PROTOPATH variable
1519+#
1520+# Found at http://www.kieltech.de/uweswiki/Google%20Protocol%20Buffers
1521+#
1522+
1523+PROTOPATH += .
1524+#PROTOPATH += $$BASE_DIR/src/proto
1525+PROTOPATH += ./src/proto
1526+PROTOPATHS =
1527+for(p, PROTOPATH):PROTOPATHS += --proto_path=$${p}
1528+
1529+protobuf_decl.name = protobuf header
1530+protobuf_decl.input = PROTOS
1531+protobuf_decl.output = ${QMAKE_FILE_BASE}.pb.h
1532+protobuf_decl.commands = protoc --cpp_out="." $${PROTOPATHS} ${QMAKE_FILE_NAME}
1533+protobuf_decl.variable_out = GENERATED_FILES
1534+QMAKE_EXTRA_COMPILERS += protobuf_decl
1535+
1536+protobuf_impl.name = protobuf implementation
1537+protobuf_impl.input = PROTOS
1538+protobuf_impl.output = ${QMAKE_FILE_BASE}.pb.cc
1539+protobuf_impl.depends = ${QMAKE_FILE_BASE}.pb.h
1540+protobuf_impl.commands = $$escape_expand(\n)
1541+protobuf_impl.variable_out = GENERATED_SOURCES
1542+QMAKE_EXTRA_COMPILERS += protobuf_impl
1543+
1544
1545=== modified file 'mixxx/build/unused/create_mixxx_dmg.sh'
1546--- mixxx/build/unused/create_mixxx_dmg.sh 2009-02-18 18:46:42 +0000
1547+++ mixxx/build/unused/create_mixxx_dmg.sh 2013-06-13 22:06:31 +0000
1548@@ -24,7 +24,6 @@
1549 cp $QT4_PATH/lib/libQtCore.4.dylib .
1550 cp $QT4_PATH/lib/libQtOpenGL.4.dylib .
1551 cp $QT4_PATH/lib/libQtXml.4.dylib .
1552-cp $QT4_PATH/lib/libQt3Support.4.dylib .
1553 cp $QT4_PATH/lib/libQtNetwork.4.dylib .
1554 cp $QT4_PATH/lib/libQtSql.4.dylib .
1555 cp /usr/local/lib/libportaudio.2.dylib .
1556@@ -40,7 +39,6 @@
1557 install_name_tool -id @executable_path/../Frameworks/libQtGui.4.dylib libQtGui.4.dylib
1558 install_name_tool -id @executable_path/../Frameworks/libQtCore.4.dylib libQtCore.4.dylib
1559 install_name_tool -id @executable_path/../Frameworks/libQtOpenGL.4.dylib libQtOpenGL.4.dylib
1560-install_name_tool -id @executable_path/../Frameworks/libQt3Support.4.dylib libQt3Support.4.dylib
1561 install_name_tool -id @executable_path/../Frameworks/libQtXml.4.dylib libQtXml.4.dylib
1562 install_name_tool -id @executable_path/../Frameworks/libQtNetwork.4.dylib libQtNetwork.4.dylib
1563 install_name_tool -id @executable_path/../Frameworks/libQtSql.4.dylib libQtSql.4.dylib
1564@@ -60,7 +58,6 @@
1565 install_name_tool -change $QT4_PATH/lib/libQtGui.4.dylib @executable_path/../Frameworks/libQtGui.4.dylib $MIXXX_PATH
1566 install_name_tool -change $QT4_PATH/lib/libQtCore.4.dylib @executable_path/../Frameworks/libQtCore.4.dylib $MIXXX_PATH
1567 install_name_tool -change $QT4_PATH/lib/libQtOpenGL.4.dylib @executable_path/../Frameworks/libQtOpenGL.4.dylib $MIXXX_PATH
1568-install_name_tool -change $QT4_PATH/lib/libQt3Support.4.dylib @executable_path/../Frameworks/libQt3Support.4.dylib $MIXXX_PATH
1569 install_name_tool -change $QT4_PATH/lib/libQtXml.4.dylib @executable_path/../Frameworks/libQtXml.4.dylib $MIXXX_PATH
1570 install_name_tool -change $QT4_PATH/lib/libQtNetwork.4.dylib @executable_path/../Frameworks/libQtNetwork.4.dylib $MIXXX_PATH
1571 install_name_tool -change $QT4_PATH/lib/libQtSql.4.dylib @executable_path/../Frameworks/libQtSql.4.dylib $MIXXX_PATH
1572@@ -81,11 +78,6 @@
1573 install_name_tool -change $QT4_PATH/lib/libQtCore.4.dylib @executable_path/../Frameworks/libQtCore.4.dylib libQtSql.4.dylib
1574 install_name_tool -change $QT4_PATH/lib/libQtCore.4.dylib @executable_path/../Frameworks/libQtCore.4.dylib libQtNetwork.4.dylib
1575 install_name_tool -change $QT4_PATH/lib/libQtCore.4.dylib @executable_path/../Frameworks/libQtCore.4.dylib libQtXml.4.dylib
1576-install_name_tool -change $QT4_PATH/lib/libQtGui.4.dylib @executable_path/../Frameworks/libQtGui.4.dylib libQt3Support.4.dylib
1577-install_name_tool -change $QT4_PATH/lib/libQtCore.4.dylib @executable_path/../Frameworks/libQtCore.4.dylib libQt3Support.4.dylib
1578-install_name_tool -change $QT4_PATH/lib/libQtSql.4.dylib @executable_path/../Frameworks/libQtSql.4.dylib libQt3Support.4.dylib
1579-install_name_tool -change $QT4_PATH/lib/libQtXml.4.dylib @executable_path/../Frameworks/libQtXml.4.dylib libQt3Support.4.dylib
1580-install_name_tool -change $QT4_PATH/lib/libQtNetwork.4.dylib @executable_path/../Frameworks/libQtNetwork.4.dylib libQt3Support.4.dylib
1581
1582
1583 echo "Changing library ids within Vorbis lib"
1584@@ -123,7 +115,6 @@
1585 install_name_tool -change $QT4_PATH/lib/libQtGui.4.dylib @executable_path/../Frameworks/libQtGui.4.dylib $lib
1586 install_name_tool -change $QT4_PATH/lib/libQtSql.4.dylib @executable_path/../Frameworks/libQtSql.4.dylib $lib
1587 install_name_tool -change $QT4_PATH/lib/libQtXml.4.dylib @executable_path/../Frameworks/libQtXml.4.dylib $lib
1588- install_name_tool -change $QT4_PATH/lib/libQtSvg.4.dylib @executable_path/../Frameworks/libQtSvg.4.dylib $lib
1589 install_name_tool -change $QT4_PATH/lib/libQtNetwork.4.dylib @executable_path/../Frameworks/libQtNetwork.4.dylib $lib
1590 done
1591 echo "Stripping debugging symbols from QT4 imageformat plugins"
1592@@ -143,7 +134,6 @@
1593 install_name_tool -change $QT4_PATH/lib/libQtGui.4.dylib @executable_path/../Frameworks/libQtGui.4.dylib $lib
1594 install_name_tool -change $QT4_PATH/lib/libQtSql.4.dylib @executable_path/../Frameworks/libQtSql.4.dylib $lib
1595 install_name_tool -change $QT4_PATH/lib/libQtXml.4.dylib @executable_path/../Frameworks/libQtXml.4.dylib $lib
1596- install_name_tool -change $QT4_PATH/lib/libQtSvg.4.dylib @executable_path/../Frameworks/libQtSvg.4.dylib $lib
1597 install_name_tool -change $QT4_PATH/lib/libQtNetwork.4.dylib @executable_path/../Frameworks/libQtNetwork.4.dylib $lib
1598 done
1599 echo "Stripping debugging symbols from QT4 iconengine plugins"
1600
1601=== modified file 'mixxx/build/unused/mixxx_dmg.sh'
1602--- mixxx/build/unused/mixxx_dmg.sh 2009-02-18 18:46:42 +0000
1603+++ mixxx/build/unused/mixxx_dmg.sh 2013-06-13 22:06:31 +0000
1604@@ -29,7 +29,7 @@
1605 #XXX we should really do this by like, declaring the frameworks and dylibs we're using at the top and then being smart about all this
1606 #FRAMEWORKS are shared libraries with an Apple-esque naming convention. DYLIBS are classical .so object files.
1607 #(ASSUMPTION: every dylibg is under /usr/local/lib. Anything under /usr/lib should be already on any systems we package for. The one exception to this might be things in /opt or /sw which darwinports and fink use :/... bah when we rewrite this for SCons we can make it smarter
1608-FRAMEWORKS="QtCore QtGui QtOpenGL QtXml Qt3Support QtNetwork QtSvg QtSql QtScript" #XXX should only do this if mixxx was built with scripting... oh well, a TODO
1609+FRAMEWORKS="QtCore QtGui QtOpenGL QtXml QtNetwork QtSql QtScript" #XXX should only do this if mixxx was built with scripting... oh well, a TODO
1610 DYLIBS="portaudio mad id3tag vorbis vorbisfile ogg sndfile FLAC"
1611
1612
1613@@ -67,11 +67,11 @@
1614 TAB=`printf "\t"` #because I can't write \t to get a tab in shell :(
1615 path=`otool -L $1 | tail +2 | cut -f 2 -d "$TAB" | cut -f 1 -d "(" | grep "$2\..*"` #SHELL_FUUUUUUU!!!!! (the last bit is important, it makes sure we only get the libs ending in the given name)
1616 if [ x"$path" = x ]; then
1617- #echo "$1 does not reference $2, skipping";
1618- echo -n;
1619+ #echo "$1 does not reference $2, skipping";
1620+ echo -n;
1621 else
1622- #echo "DEBUG: " install_name_tool -change $path @executable_path/../Frameworks/$3 $1
1623- install_name_tool -change $path @executable_path/../Frameworks/$3 $1
1624+ #echo "DEBUG: " install_name_tool -change $path @executable_path/../Frameworks/$3 $1
1625+ install_name_tool -change $path @executable_path/../Frameworks/$3 $1
1626 fi
1627 }
1628
1629@@ -199,13 +199,6 @@
1630 reref_framework QtSql QtCore
1631 reref_framework QtNetwork QtCore
1632 reref_framework QtXml QtCore
1633-reref_framework QtSvg QtCore
1634-reref_framework QtSvg QtGui
1635-reref_framework Qt3Support QtGui
1636-reref_framework Qt3Support QtCore
1637-reref_framework Qt3Support QtSql
1638-reref_framework Qt3Support QtXml
1639-reref_framework Qt3Support QtNetwork
1640 reref_framework QtScript QtCore
1641
1642
1643@@ -238,17 +231,16 @@
1644 mkdir $plugin
1645 cd $plugin
1646 for lib in $libs; do
1647- lib=lib$lib.dylib #yay
1648- cp $QT4_PLUGINS/imageformats/$lib $lib
1649+ lib=lib$lib.dylib #yay
1650+ cp $QT4_PLUGINS/imageformats/$lib $lib
1651
1652- echo "Changing library ids within QT4 $plugin plugin: $lib"
1653- relink_lib $lib
1654- #XXX this list really needs to be generated on the fly from otool ....
1655- reref $lib QtCore QtCore #not using reref_framework because I don't think it means the same thing. in reref $2 is a search string, $3 is a filename. reref_frameworks assumes both are identical.
1656- reref $lib QtGui QtGui
1657- reref $lib QtXml QtXml
1658- reref $lib QtSvg QtSvg
1659- reref $lib QtNetwork QtNetwork
1660+ echo "Changing library ids within QT4 $plugin plugin: $lib"
1661+ relink_lib $lib
1662+ #XXX this list really needs to be generated on the fly from otool ....
1663+ reref $lib QtCore QtCore #not using reref_framework because I don't think it means the same thing. in reref $2 is a search string, $3 is a filename. reref_frameworks assumes both are identical.
1664+ reref $lib QtGui QtGui
1665+ reref $lib QtXml QtXml
1666+ reref $lib QtNetwork QtNetwork
1667 done
1668 echo "Stripping debugging symbols from QT4 $plugin plugins"
1669 strip *.dylib
1670
1671=== modified file 'mixxx/lib/fidlib-0.9.10/fidlib.c'
1672--- mixxx/lib/fidlib-0.9.10/fidlib.c 2011-07-25 01:49:54 +0000
1673+++ mixxx/lib/fidlib-0.9.10/fidlib.c 2013-06-13 22:06:31 +0000
1674@@ -259,10 +259,10 @@
1675 //
1676
1677 // Macro for local inline routines that shouldn't be visible externally
1678-#ifdef T_MSVC
1679+#if defined(T_MINGW) || defined(T_MSVC)
1680 #define STATIC_INLINE static __inline
1681 #else
1682- #define STATIC_INLINE static inline
1683+ #define STATIC_INLINE static inline
1684 #endif
1685
1686 // MinGW and MSVC fixes
1687
1688=== modified file 'mixxx/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp'
1689--- mixxx/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp 2011-07-24 21:06:29 +0000
1690+++ mixxx/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp 2013-06-13 22:06:31 +0000
1691@@ -44,6 +44,7 @@
1692 ////////////////////////////////////////////////////////////////////////////////
1693
1694 #include <stdlib.h>
1695+#include <stdint.h>
1696 #include <memory.h>
1697 #include <string.h>
1698 #include <assert.h>
1699@@ -178,7 +179,7 @@
1700 throw std::runtime_error("Couldn't allocate memory!\n");
1701 }
1702 // Align the buffer to begin at 16byte cache line boundary for optimal performance
1703- temp = (SAMPLETYPE *)(((ulong)tempUnaligned + 15) & (ulong)-16);
1704+ temp = (SAMPLETYPE *)(((uintptr_t)tempUnaligned + 15) & (uintptr_t)-16);
1705 if (samplesInBuffer)
1706 {
1707 memcpy(temp, ptrBegin(), samplesInBuffer * channels * sizeof(SAMPLETYPE));
1708
1709=== modified file 'mixxx/lib/soundtouch-1.6.0/TDStretch.cpp'
1710--- mixxx/lib/soundtouch-1.6.0/TDStretch.cpp 2011-07-24 21:06:29 +0000
1711+++ mixxx/lib/soundtouch-1.6.0/TDStretch.cpp 2013-06-13 22:06:31 +0000
1712@@ -43,6 +43,7 @@
1713
1714 #include <string.h>
1715 #include <limits.h>
1716+#include <stdint.h>
1717 #include <assert.h>
1718 #include <math.h>
1719 #include <float.h>
1720@@ -721,7 +722,7 @@
1721
1722 pRefMidBufferUnaligned = new SAMPLETYPE[2 * overlapLength + 16 / sizeof(SAMPLETYPE)];
1723 // ensure that 'pRefMidBuffer' is aligned to 16 byte boundary for efficiency
1724- pRefMidBuffer = (SAMPLETYPE *)((((ulong)pRefMidBufferUnaligned) + 15) & (ulong)-16);
1725+ pRefMidBuffer = (SAMPLETYPE *)((((uintptr_t)pRefMidBufferUnaligned) + 15) & (uintptr_t)-16);
1726 }
1727 }
1728
1729
1730=== modified file 'mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp'
1731--- mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp 2011-07-24 21:06:29 +0000
1732+++ mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp 2013-06-13 22:06:31 +0000
1733@@ -53,6 +53,7 @@
1734
1735 #include "cpu_detect.h"
1736 #include "STTypes.h"
1737+#include <stdint.h>
1738
1739 using namespace soundtouch;
1740
1741@@ -93,7 +94,7 @@
1742
1743 #define _MM_LOAD _mm_load_ps
1744
1745- if (((ulong)pV1) & 15) return -1e50; // skip unaligned locations
1746+ if (((uintptr_t)pV1) & 15) return -1e50; // skip unaligned locations
1747
1748 #else
1749 // No cheating allowed, use unaligned load & take the resulting
1750@@ -285,7 +286,7 @@
1751 // Ensure that filter coeffs array is aligned to 16-byte boundary
1752 delete[] filterCoeffsUnalign;
1753 filterCoeffsUnalign = new float[2 * newLength + 4];
1754- filterCoeffsAlign = (float *)(((unsigned long)filterCoeffsUnalign + 15) & (ulong)-16);
1755+ filterCoeffsAlign = (float *)(((uintptr_t)filterCoeffsUnalign + 15) & (uintptr_t)-16);
1756
1757 fDivider = (float)resultDivider;
1758
1759@@ -313,7 +314,7 @@
1760 assert(dest != NULL);
1761 assert((length % 8) == 0);
1762 assert(filterCoeffsAlign != NULL);
1763- assert(((ulong)filterCoeffsAlign) % 16 == 0);
1764+ assert(((uintptr_t)filterCoeffsAlign) % 16 == 0);
1765
1766 // filter is evaluated for two stereo samples with each iteration, thus use of 'j += 2'
1767 for (j = 0; j < count; j += 2)
1768
1769=== modified file 'mixxx/lib/xwax/lut.cpp'
1770--- mixxx/lib/xwax/lut.cpp 2012-09-26 17:15:11 +0000
1771+++ mixxx/lib/xwax/lut.cpp 2013-06-13 22:06:31 +0000
1772@@ -17,6 +17,8 @@
1773 *
1774 */
1775
1776+extern "C" {
1777+
1778 #include <stdio.h>
1779 #include <stdlib.h>
1780
1781@@ -43,7 +45,7 @@
1782 bytes = sizeof(struct slot) * nslots + sizeof(slot_no_t) * hashes;
1783
1784 fprintf(stderr, "Lookup table has %d hashes to %d slots"
1785- " (%d slots per hash, %zuKb)\n",
1786+ " (%d slots per hash, %u Kb)\n",
1787 hashes, nslots, nslots / hashes, bytes / 1024);
1788
1789 lut->slot = (struct slot*)malloc(sizeof(struct slot) * nslots);
1790@@ -109,3 +111,5 @@
1791
1792 return (unsigned)-1;
1793 }
1794+
1795+}; // extern "C"
1796
1797=== modified file 'mixxx/lib/xwax/timecoder.h'
1798--- mixxx/lib/xwax/timecoder.h 2012-09-26 16:41:26 +0000
1799+++ mixxx/lib/xwax/timecoder.h 2013-06-13 22:06:31 +0000
1800@@ -29,6 +29,10 @@
1801
1802 #define TIMECODER_CHANNELS 2
1803
1804+#ifdef __cplusplus
1805+extern "C" {
1806+#endif // __cplusplus
1807+
1808 typedef unsigned int bits_t;
1809
1810 struct timecode_def {
1811@@ -142,4 +146,8 @@
1812 return (33.0 + 1.0 / 3) * tc->speed / 60;
1813 }
1814
1815+#ifdef __cplusplus
1816+};
1817+#endif // __cplusplus
1818+
1819 #endif
1820
1821=== modified file 'mixxx/lib/xwax/timecoder_win32.cpp'
1822--- mixxx/lib/xwax/timecoder_win32.cpp 2012-11-03 13:45:25 +0000
1823+++ mixxx/lib/xwax/timecoder_win32.cpp 2013-06-13 22:06:31 +0000
1824@@ -17,6 +17,8 @@
1825 *
1826 */
1827
1828+extern "C" {
1829+
1830 #include <assert.h>
1831 #include <stdio.h>
1832 #include <stdlib.h>
1833@@ -613,3 +615,5 @@
1834
1835 return -1;
1836 }
1837+
1838+}; // extern "C"
1839
1840=== modified file 'mixxx/src/SConscript'
1841--- mixxx/src/SConscript 2013-06-13 03:13:53 +0000
1842+++ mixxx/src/SConscript 2013-06-13 22:06:31 +0000
1843@@ -40,11 +40,15 @@
1844 str_list.append('#define VER_FILEVERSION ')
1845 # Remove anything after ~ or - in the version number and replace the dots with commas
1846 str_list.append(mixxx_version.partition('~')[0].partition('-')[0].replace('.',','))
1847- str_list.append(','+str(vcs_revision)+'\n')
1848+ if vcs_revision:
1849+ str_list.append(','+str(vcs_revision))
1850+ str_list.append('\n')
1851
1852 str_list.append('#define VER_PRODUCTVERSION ')
1853 str_list.append(mixxx_version.partition('~')[0].partition('-')[0].replace('.',','))
1854- str_list.append(','+str(vcs_revision)+'\n')
1855+ if vcs_revision:
1856+ str_list.append(','+str(vcs_revision))
1857+ str_list.append('\n')
1858
1859 import datetime
1860 now = datetime.datetime.now()
1861@@ -58,9 +62,37 @@
1862 fo.write(''.join(str_list))
1863 fo.close()
1864
1865- mixxx_bin = env.Program('mixxx',
1866- [sources, env.RES('#src/mixxx.rc')],
1867- LINKCOM = [env['LINKCOM'], 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;1'])
1868+ if build.crosscompile:
1869+ # Taken from http://scons.org/wiki/EmbedManifestIntoTarget
1870+ manifest_template = '''\
1871+<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
1872+<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
1873+ <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
1874+ <security>
1875+ <requestedPrivileges>
1876+ <requestedExecutionLevel level='asInvoker' uiAccess='false' />
1877+ </requestedPrivileges>
1878+ </security>
1879+ </trustInfo>
1880+</assembly>
1881+'''
1882+ manifest_path = "mixxx.manifest"
1883+ fout = open (manifest_path, "w");
1884+ fout.write (manifest_template)
1885+ fout.close()
1886+ fout = open ("manifest.rc", "w");
1887+ fout.write ("""
1888+#include "winuser.h"
1889+1 RT_MANIFEST %s
1890+""" % manifest_path)
1891+ fout.close()
1892+ mixxx_bin = env.Program('mixxx',
1893+ [sources, env.RES('#src/mixxx.rc'),
1894+ env.RES("manifest.rc")]);
1895+ else:
1896+ mixxx_bin = env.Program('mixxx',
1897+ [sources, env.RES('#src/mixxx.rc')],
1898+ LINKCOM = [env['LINKCOM'], 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;1'])
1899 else:
1900 mixxx_bin = env.Program('mixxx', sources)
1901
1902@@ -192,9 +224,36 @@
1903 # skip the MSVC DLLs incase they're in there too
1904 dll_files = Glob('%s/[!"msvc"]*.dll' % mixxx_winlib_path)
1905 elif build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu:
1906- # We're cross-compiling, grab these from the crosscompile bin
1907- # folder. How should we be doing this?
1908- dll_files = Glob('#/../../mixxx-win%slib-crossmingw' % build.bitwidth)
1909+ # We're cross-compiling; grab these from the crosscompile bin
1910+ # folder.
1911+ # TODO(XXX): Rebuild the dependent libraries as static, and
1912+ # figure out how to tell scons to prefer static libraries.
1913+ crosscompile_bin_path = os.path.join (build.crosscompile_root, \
1914+ 'bin')
1915+ dll_files = [ os.path.join (crosscompile_bin_path, \
1916+ s) for s in [ 'libchromaprint.dll', 'libfftw3-3.dll',
1917+ 'libFLAC-8.dll', 'libid3tag-0.dll', 'libogg-0.dll',
1918+ 'libportaudio-2.dll', 'libportmidi_s.dll',
1919+ 'libprotobuf-lite-7.dll', 'libsndfile-1.dll',
1920+ 'libsqlite3-0.dll', 'libstdc++-6.dll', 'libtag.dll',
1921+ 'libvorbis-0.dll', 'libvorbisenc-2.dll',
1922+ 'libvorbisfile-3.dll', 'pthreadGC2.dll' ] ];
1923+
1924+ # The shoutcast build requires a few more DLLs.
1925+ if int(build.flags['shoutcast']):
1926+ dll_files += [ os.path.join (crosscompile_bin_path, \
1927+ s) for s in [ 'libshout-3.dll', 'libspeex-1.dll',
1928+ 'libtheora-0.dll' ] ];
1929+
1930+ # The ffmpeg build requires a few more DLLs.
1931+ if int(build.flags['ffmpeg']):
1932+ dll_files += [ os.path.join (crosscompile_bin_path, \
1933+ s) for s in [ 'avcodec-54.dll', 'avformat-54.dll',
1934+ 'avutil-51.dll', 'swresample-0.dll', 'libbz2-1.dll',
1935+ 'libgcrypt-11.dll', 'libgpg-error-0.dll',
1936+ 'libgnutls-26.dll', 'libp11-kit-0.dll',
1937+ 'libtasn1-3.dll' ] ];
1938+
1939 elif build.crosscompile and build.platform_is_osx:
1940 # Glob appropriate dylib files. We have 4 different library types,
1941 # x86_64, x86, powerpc, powerpc64
1942@@ -202,40 +261,63 @@
1943 else:
1944 dll_files = list() # dll_files += on the next line required dll_files to exist
1945
1946-if build.msvcdebug:
1947- dll_files += Split("""$QTDIR/lib/QtWebKitd4.dll""")
1948-else:
1949- dll_files += Split("""$QTDIR/lib/QtWebKit4.dll""")
1950+if int(build.flags['vinylcontrol']) or int(build.flags['hid']):
1951+ if build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu:
1952+ # mingw{32,64}-phonon only has one DLL.
1953+ dll_files += Split("""$QTDIR/bin/libphonon.dll""")
1954+ else:
1955+ if build.msvcdebug:
1956+ dll_files += Split("""$QTDIR/lib/phonond4.dll""")
1957+ else:
1958+ dll_files += Split("""$QTDIR/lib/phonon4.dll""")
1959
1960 if build.msvcdebug:
1961- dll_files += Split("""$QTDIR/lib/QtCored4.dll
1962- $QTDIR/lib/QtGuid4.dll
1963- $QTDIR/lib/QtNetworkd4.dll
1964- $QTDIR/lib/QtOpenGLd4.dll
1965- $QTDIR/lib/QtSqld4.dll
1966- $QTDIR/lib/QtXmld4.dll
1967- $QTDIR/lib/QtXmlPatternsd4.dll
1968- $QTDIR/lib/QtSvgd4.dll
1969- $QTDIR/lib/phonond4.dll
1970- $QTDIR/lib/QtScriptd4.dll""")
1971+ if build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu:
1972+ dll_files += Split("""$QTDIR/bin/QtCored4.dll
1973+ $QTDIR/bin/QtGuid4.dll
1974+ $QTDIR/bin/QtNetworkd4.dll
1975+ $QTDIR/bin/QtOpenGLd4.dll
1976+ $QTDIR/bin/QtSqld4.dll
1977+ $QTDIR/bin/QtXmld4.dll
1978+ $QTDIR/bin/QtScriptd4.dll""")
1979+ else:
1980+ dll_files += Split("""$QTDIR/lib/QtCored4.dll
1981+ $QTDIR/lib/QtGuid4.dll
1982+ $QTDIR/lib/QtNetworkd4.dll
1983+ $QTDIR/lib/QtOpenGLd4.dll
1984+ $QTDIR/lib/QtSqld4.dll
1985+ $QTDIR/lib/QtXmld4.dll
1986+ $QTDIR/lib/QtScriptd4.dll""")
1987 else:
1988 # if not int(build.flags['staticlibs']):
1989- dll_files += Split("""$QTDIR/lib/QtCore4.dll
1990- $QTDIR/lib/QtGui4.dll
1991- $QTDIR/lib/QtNetwork4.dll
1992- $QTDIR/lib/QtOpenGL4.dll
1993- $QTDIR/lib/QtSql4.dll
1994- $QTDIR/lib/QtXml4.dll
1995- $QTDIR/lib/QtXmlPatterns4.dll
1996- $QTDIR/lib/QtSvg4.dll
1997- $QTDIR/lib/phonon4.dll
1998- $QTDIR/lib/QtScript4.dll""")
1999+ if build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu:
2000+ dll_files += Split("""$QTDIR/bin/QtCore4.dll
2001+ $QTDIR/bin/QtGui4.dll
2002+ $QTDIR/bin/QtNetwork4.dll
2003+ $QTDIR/bin/QtOpenGL4.dll
2004+ $QTDIR/bin/QtSql4.dll
2005+ $QTDIR/bin/QtXml4.dll
2006+ $QTDIR/bin/QtScript4.dll""")
2007+ else:
2008+ dll_files += Split("""$QTDIR/lib/QtCore4.dll
2009+ $QTDIR/lib/QtGui4.dll
2010+ $QTDIR/lib/QtNetwork4.dll
2011+ $QTDIR/lib/QtOpenGL4.dll
2012+ $QTDIR/lib/QtSql4.dll
2013+ $QTDIR/lib/QtXml4.dll
2014+ $QTDIR/lib/QtScript4.dll""")
2015
2016 if int(flags.get('sqlitedll', 0)):
2017- if build.msvcdebug:
2018- sqldll_files = Split("""$QTDIR/plugins/sqldrivers/qsqlited4.dll""") #Qt SQLite plugin
2019+ if build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu:
2020+ if build.msvcdebug:
2021+ sqldll_files = Split("""$QTDIR/lib/qt4/plugins/sqldrivers/qsqlited4.dll""") #Qt SQLite plugin
2022+ else:
2023+ sqldll_files = Split("""$QTDIR/lib/qt4/plugins/sqldrivers/qsqlite4.dll""") #Qt SQLite plugin
2024 else:
2025- sqldll_files = Split("""$QTDIR/plugins/sqldrivers/qsqlite4.dll""") #Qt SQLite plugin
2026+ if build.msvcdebug:
2027+ sqldll_files = Split("""$QTDIR/plugins/sqldrivers/qsqlited4.dll""") #Qt SQLite plugin
2028+ else:
2029+ sqldll_files = Split("""$QTDIR/plugins/sqldrivers/qsqlite4.dll""") #Qt SQLite plugin
2030
2031 if build.platform_is_linux or build.platform_is_bsd:
2032 flags['prefix'] = ARGUMENTS.get('prefix', '/usr/local')
2033@@ -256,7 +338,7 @@
2034 binary = env.Install(unix_bin_path, binary_files)
2035 resource = env.Install(os.path.join(unix_share_path, 'mixxx'), resource_files)
2036 skins = env.Install(os.path.join(unix_share_path, 'mixxx', 'skins'), skin_files)
2037- vamp_plugin = env.Install(
2038+ vamp_plugin = env.Install(
2039 os.path.join(unix_lib_path, 'mixxx', 'plugins', 'vamp'),
2040 libmixxxminimal_vamp_plugin)
2041
2042@@ -288,7 +370,7 @@
2043 env.Alias('install', dotdesktop)
2044 env.Alias('install', icon)
2045 env.Alias('install', promotracks)
2046- env.Alias('install', vamp_plugin)
2047+ env.Alias('install', vamp_plugin)
2048
2049 #Delete the old Mixxx installation (because SCONS won't overwrite it)
2050 #if 'install' in COMMAND_LINE_TARGETS:
2051@@ -325,7 +407,7 @@
2052 for x in soundsource_plugins:
2053 plugins.append(x.get_abspath())
2054
2055- for x in mixxxminimal_plugins:
2056+ for x in mixxxminimal_plugins:
2057 plugins.append(x.get_abspath())
2058
2059 resource_map = {}
2060@@ -450,7 +532,7 @@
2061 env.Alias('mixxx', docs)
2062 env.Alias('mixxx', dlls)
2063 env.Alias('mixxx', soundsource_plugins)
2064- env.Alias('mixxx', vamp_plugins)
2065+ env.Alias('mixxx', vamp_plugins)
2066 #env.Alias('mixxx', icon)
2067 env.Alias('mixxx', binary)
2068
2069@@ -496,7 +578,7 @@
2070 print "YOU ARE ABOUT TO PACKAGE A DEBUG BUILD!!"
2071 print
2072 print "Binary has size ",
2073- if build.platform_is_windows:
2074+ if build.platform_is_windows and not build.crosscompile:
2075 os.system('for %I in ('+dist_dir+'\mixxx.exe) do @echo %~zI')
2076 else:
2077 os.system('ls -lh '+dist_dir+'/mixxx.exe | cut -d \' \' -f 5')
2078@@ -511,13 +593,13 @@
2079 print exe_name
2080 print
2081 print "Top line of README, check version:"
2082- if build.platform_is_windows:
2083+ if build.platform_is_windows and not build.crosscompile:
2084 os.system('for /l %l in (1,1,1) do @for /f "tokens=1,2* delims=:" %a in (\'findstr /n /r "^" README ^| findstr /r "^%l:"\') do @echo %b')
2085 else:
2086 os.system('head -n 1 README')
2087 print
2088 print "Top 2 lines of LICENSE, check version and copyright dates:"
2089- if build.platform_is_windows:
2090+ if build.platform_is_windows and not build.crosscompile:
2091 os.system('for /l %l in (1,1,2) do @for /f "tokens=1,2* delims=:" %a in (\'findstr /n /r "^" LICENSE ^| findstr /r "^%l:"\') do @echo %b')
2092 else:
2093 os.system('head -n 2 LICENSE')
2094@@ -576,14 +658,23 @@
2095 print "Cannot find NSIS. Do you have it installed?"
2096 else:
2097 # Call the NSIS build
2098- buildwin64 = "/Dx64=1" if build.machine_is_64bit else ''
2099- command = '%(path)s /DPACKAGE_NAME=%(package_name)s /DPRODUCT_VERSION=%(version)s /DQTDIR=%(qtpath)s /DWINLIB_PATH=%(winlibpath)s %(64bit)s build\\nsis\\Mixxx.nsi' % \
2100- {'path': nsis_path,
2101- 'package_name': exe_name,
2102- 'version': mixxx_version,
2103- 'qtpath': os.environ['QTDIR'],
2104- 'winlibpath': mixxx_winlib_path,
2105- '64bit': buildwin64}
2106+ if build.crosscompile:
2107+ buildwin64 = "-Dx64=1" if build.machine_is_64bit else ''
2108+ command = '%(path)s -DPACKAGE_NAME=%(package_name)s -DPRODUCT_VERSION=%(version)s -DQTDIR=%(qtpath)s %(64bit)s build/nsis/Mixxx.nsi' % \
2109+ {'path': nsis_path,
2110+ 'package_name': exe_name,
2111+ 'version': mixxx_version,
2112+ 'qtpath': os.environ['QTDIR'],
2113+ '64bit': buildwin64}
2114+ else:
2115+ buildwin64 = "/Dx64=1" if build.machine_is_64bit else ''
2116+ command = '%(path)s /DPACKAGE_NAME=%(package_name)s /DPRODUCT_VERSION=%(version)s /DQTDIR=%(qtpath)s /DWINLIB_PATH=%(winlibpath)s %(64bit)s build\\nsis\\Mixxx.nsi' % \
2117+ {'path': nsis_path,
2118+ 'package_name': exe_name,
2119+ 'version': mixxx_version,
2120+ 'qtpath': os.environ['QTDIR'],
2121+ 'winlibpath': mixxx_winlib_path,
2122+ '64bit': buildwin64}
2123 print "Using command: " + command
2124 subprocess.check_call(command)
2125 else:
2126
2127=== modified file 'mixxx/src/analyserbeats.cpp'
2128--- mixxx/src/analyserbeats.cpp 2012-12-22 08:17:20 +0000
2129+++ mixxx/src/analyserbeats.cpp 2013-06-13 22:06:31 +0000
2130@@ -139,6 +139,7 @@
2131 }
2132 qDebug() << "Beat calculation started with plugin" << pluginID;
2133
2134+ #ifdef __VAMP__
2135 m_pVamp = new VampAnalyser(m_pConfig);
2136 m_bShouldAnalyze = m_pVamp->Init(library, pluginID, m_iSampleRate, totalSamples,
2137 m_bPreferencesFastAnalysis);
2138@@ -146,6 +147,7 @@
2139 delete m_pVamp;
2140 m_pVamp = NULL;
2141 }
2142+ #endif // __VAMP__
2143 return m_bShouldAnalyze;
2144 }
2145
2146@@ -239,6 +241,7 @@
2147
2148
2149 void AnalyserBeats::process(const CSAMPLE *pIn, const int iLen) {
2150+ #ifdef __VAMP__
2151 if (!m_bShouldAnalyze || m_pVamp == NULL)
2152 return;
2153 m_bShouldAnalyze = m_pVamp->Process(pIn, iLen);
2154@@ -246,6 +249,7 @@
2155 delete m_pVamp;
2156 m_pVamp = NULL;
2157 }
2158+ #endif // __VAMP__
2159 }
2160
2161 void AnalyserBeats::cleanup(TrackPointer tio)
2162@@ -265,10 +269,12 @@
2163
2164 // Call End() here, because the number of total samples may have been
2165 // estimated incorrectly.
2166+ QVector<double> beats;
2167+ #ifdef __VAMP__
2168 bool success = m_pVamp->End();
2169 qDebug() << "Beat Calculation" << (success ? "complete" : "failed");
2170
2171- QVector<double> beats = m_pVamp->GetInitFramesVector();
2172+ beats = m_pVamp->GetInitFramesVector();
2173 delete m_pVamp;
2174 m_pVamp = NULL;
2175
2176@@ -276,6 +282,7 @@
2177 qDebug() << "Could not detect beat positions from Vamp.";
2178 return;
2179 }
2180+ #endif // __VAMP__
2181
2182 QHash<QString, QString> extraVersionInfo;
2183 extraVersionInfo["vamp_plugin_id"] = m_pluginId;
2184
2185=== modified file 'mixxx/src/analyserqueue.cpp'
2186--- mixxx/src/analyserqueue.cpp 2013-05-18 16:23:08 +0000
2187+++ mixxx/src/analyserqueue.cpp 2013-06-13 22:06:31 +0000
2188@@ -404,8 +404,10 @@
2189
2190 ret->addAnalyser(new AnalyserWaveform(_config));
2191 ret->addAnalyser(new AnalyserGain(_config));
2192+ #ifdef __VAMP__
2193 VampAnalyser::initializePluginPaths();
2194 ret->addAnalyser(new AnalyserBeats(_config));
2195+ #endif // __VAMP__
2196 //ret->addAnalyser(new AnalyserVampKeyTest(_config));
2197
2198 ret->start(QThread::IdlePriority);
2199@@ -419,8 +421,10 @@
2200
2201 ret->addAnalyser(new AnalyserWaveform(_config));
2202 ret->addAnalyser(new AnalyserGain(_config));
2203+ #ifdef __VAMP__
2204 VampAnalyser::initializePluginPaths();
2205 ret->addAnalyser(new AnalyserBeats(_config));
2206+ #endif // __VAMP__
2207 //ret->addAnalyser(new AnalyserVampKeyTest(_config));
2208
2209 ret->start(QThread::IdlePriority);
2210
2211=== modified file 'mixxx/src/controllers/controllermanager.cpp'
2212--- mixxx/src/controllers/controllermanager.cpp 2013-03-16 21:58:40 +0000
2213+++ mixxx/src/controllers/controllermanager.cpp 2013-06-13 22:06:31 +0000
2214@@ -78,7 +78,9 @@
2215 m_pPresetInfoManager = new PresetInfoEnumerator(m_pConfig);
2216
2217 // Instantiate all enumerators
2218+#ifdef __PORTMIDI__
2219 m_enumerators.append(new PortMidiEnumerator());
2220+#endif // __PORTMIDI__
2221 #ifdef __HSS1394__
2222 m_enumerators.append(new Hss1394Enumerator());
2223 #endif
2224
2225=== modified file 'mixxx/src/dlgprefbeats.cpp'
2226--- mixxx/src/dlgprefbeats.cpp 2012-12-22 08:17:20 +0000
2227+++ mixxx/src/dlgprefbeats.cpp 2013-06-13 22:06:31 +0000
2228@@ -14,18 +14,24 @@
2229 #include <QVector>
2230 #include <QList>
2231 #include <QtCore>
2232+#ifdef __VAMP__
2233 #include <vamp-hostsdk/vamp-hostsdk.h>
2234+#endif // __VAMP__
2235
2236 #include "track/beat_preferences.h"
2237 #include "controlobject.h"
2238 #include "dlgprefbeats.h"
2239+#ifdef __VAMP__
2240 #include "vamp/vampanalyser.h"
2241+#endif // __VAMP__
2242
2243+#ifdef __VAMP__
2244 using Vamp::Plugin;
2245 using Vamp::PluginHostAdapter;
2246 using Vamp::HostExt::PluginLoader;
2247 using Vamp::HostExt::PluginWrapper;
2248 using Vamp::HostExt::PluginInputDomainAdapter;
2249+#endif // __VAMP__
2250
2251 DlgPrefBeats::DlgPrefBeats(QWidget *parent, ConfigObject<ConfigValue> *_config)
2252 : QWidget(parent),
2253@@ -225,6 +231,7 @@
2254 }
2255
2256 void DlgPrefBeats::populate() {
2257+#ifdef __VAMP__
2258 VampAnalyser::initializePluginPaths();
2259 m_listIdentifier.clear();
2260 m_listName.clear();
2261@@ -269,5 +276,6 @@
2262 }
2263 }
2264 // m_selectedAnalyser = selectedAnalyser;
2265+#endif // __VAMP__
2266 }
2267
2268
2269=== modified file 'mixxx/src/dlgprefbeats.h'
2270--- mixxx/src/dlgprefbeats.h 2012-12-22 08:17:20 +0000
2271+++ mixxx/src/dlgprefbeats.h 2013-06-13 22:06:31 +0000
2272@@ -10,7 +10,9 @@
2273 #include <QList>
2274
2275 #include "ui_dlgprefbeatsdlg.h"
2276+#ifdef __VAMP__
2277 #include "vamp/vamppluginloader.h"
2278+#endif // __VAMP__
2279 #include "configobject.h"
2280
2281 class DlgPrefBeats : public QWidget, public Ui::DlgBeatsDlg {
2282
2283=== modified file 'mixxx/src/dlgpreferences.cpp'
2284--- mixxx/src/dlgpreferences.cpp 2013-05-12 10:15:29 +0000
2285+++ mixxx/src/dlgpreferences.cpp 2013-06-13 22:06:31 +0000
2286@@ -87,8 +87,10 @@
2287 m_wcrossfader = new DlgPrefCrossfader(this, config);
2288 addPageWidget(m_wcrossfader);
2289
2290+ #ifdef __VAMP__
2291 m_wbeats = new DlgPrefBeats(this, config);
2292 addPageWidget (m_wbeats);
2293+ #endif // __VAMP__
2294 m_wreplaygain = new DlgPrefReplayGain(this, config);
2295 addPageWidget(m_wreplaygain);
2296 m_wrecord = new DlgPrefRecord(this, config);
2297
2298=== modified file 'mixxx/src/library/basesqltablemodel.cpp'
2299--- mixxx/src/library/basesqltablemodel.cpp 2013-05-22 19:42:09 +0000
2300+++ mixxx/src/library/basesqltablemodel.cpp 2013-06-13 22:06:31 +0000
2301@@ -201,10 +201,10 @@
2302 // table query has succeeded. See Bug #1090888.
2303 // TODO(rryan) we could edit the table in place instead of clearing it?
2304 if (m_rowInfo.size() > 0) {
2305- beginRemoveRows(QModelIndex(), 0, m_rowInfo.size()-1);
2306+ beginResetModel();
2307 m_rowInfo.clear();
2308 m_trackIdToRows.clear();
2309- endRemoveRows();
2310+ endResetModel();
2311 }
2312
2313 QSqlRecord record = query.record();
2314
2315=== modified file 'mixxx/src/library/browse/foldertreemodel.cpp'
2316--- mixxx/src/library/browse/foldertreemodel.cpp 2012-07-18 21:22:53 +0000
2317+++ mixxx/src/library/browse/foldertreemodel.cpp 2013-06-13 22:06:31 +0000
2318@@ -1,7 +1,7 @@
2319 #if defined (__WINDOWS__)
2320 #include <windows.h>
2321-#include <Shellapi.h>
2322-#include <Shobjidl.h>
2323+#include <shellapi.h>
2324+#include <shlobj.h>
2325 #else
2326 #include <sys/types.h>
2327 #include <sys/stat.h>
2328
2329=== modified file 'mixxx/src/library/treeitemmodel.cpp'
2330--- mixxx/src/library/treeitemmodel.cpp 2013-05-22 19:14:25 +0000
2331+++ mixxx/src/library/treeitemmodel.cpp 2013-06-13 22:06:31 +0000
2332@@ -138,6 +138,9 @@
2333 * make sure you have initialized
2334 */
2335 bool TreeItemModel::insertRows(QList<TreeItem*> &data, int position, int rows, const QModelIndex &parent) {
2336+ if (rows == 0)
2337+ return true;
2338+
2339 TreeItem *parentItem = getItem(parent);
2340 bool success;
2341
2342@@ -149,6 +152,9 @@
2343 }
2344
2345 bool TreeItemModel::removeRows(int position, int rows, const QModelIndex &parent) {
2346+ if (rows == 0)
2347+ return true;
2348+
2349 TreeItem *parentItem = getItem(parent);
2350 bool success = true;
2351
2352
2353=== modified file 'mixxx/src/sampleutil.cpp'
2354--- mixxx/src/sampleutil.cpp 2011-12-08 11:47:54 +0000
2355+++ mixxx/src/sampleutil.cpp 2013-06-13 22:06:31 +0000
2356@@ -7,8 +7,9 @@
2357
2358 #ifdef __WINDOWS__
2359 #pragma intrinsic(fabs)sc
2360-typedef __int64 int64_t;
2361-typedef __int32 int32_t;
2362+#include <QtGlobal>
2363+typedef qint64 int64_t;
2364+typedef qint32 int32_t;
2365 #endif
2366
2367 #include <QtDebug>
2368
2369=== modified file 'mixxx/src/util/stat.h'
2370--- mixxx/src/util/stat.h 2012-12-24 09:54:25 +0000
2371+++ mixxx/src/util/stat.h 2013-06-13 22:06:31 +0000
2372@@ -5,7 +5,7 @@
2373 #include <QVector>
2374 #include <QString>
2375
2376-class StatReport;
2377+struct StatReport;
2378
2379 class Stat {
2380 public:
2381
2382=== modified file 'mixxx/src/vamp/vampanalyser.h'
2383--- mixxx/src/vamp/vampanalyser.h 2012-04-12 05:48:40 +0000
2384+++ mixxx/src/vamp/vampanalyser.h 2013-06-13 22:06:31 +0000
2385@@ -11,9 +11,10 @@
2386 #include <QString>
2387 #include <QList>
2388 #include <QVector>
2389+#ifdef __VAMP__
2390 #include <vamp-hostsdk/vamp-hostsdk.h>
2391-
2392 #include "vamp/vamppluginloader.h"
2393+#endif // __VAMP__
2394 #include "sampleutil.h"
2395 #include "configobject.h"
2396
2397@@ -43,6 +44,7 @@
2398 private:
2399 void SelectOutput(const int outputnumber);
2400
2401+ #ifdef __VAMP__
2402 Vamp::HostExt::PluginLoader::PluginKey m_key;
2403 int m_iSampleCount, m_iOUT, m_iRemainingSamples,
2404 m_iBlockSize, m_iStepSize, m_rate, m_iOutput;
2405@@ -50,6 +52,7 @@
2406 Vamp::Plugin *m_plugin;
2407 Vamp::Plugin::ParameterList mParameters;
2408 Vamp::Plugin::FeatureList m_Results;
2409+ #endif // __VAMP__
2410
2411 bool m_bDoNotAnalyseMoreSamples;
2412 bool m_FastAnalysisEnabled;
2413
2414=== modified file 'mixxx/src/widget/wspinny.cpp'
2415--- mixxx/src/widget/wspinny.cpp 2013-05-19 09:50:56 +0000
2416+++ mixxx/src/widget/wspinny.cpp 2013-06-13 22:06:31 +0000
2417@@ -349,6 +349,7 @@
2418 void WSpinny::updateVinylControlSignalEnabled(double enabled) {
2419 m_bSignalActive = enabled;
2420
2421+#ifdef __VINYLCONTROL__
2422 if (enabled && m_iVinylInput != -1) {
2423 m_pVCManager->addSignalQualityListener(this);
2424 } else {
2425@@ -356,6 +357,10 @@
2426 // fill with transparent black
2427 m_qImage.fill(qRgba(0,0,0,0));
2428 }
2429+#else // __VINYLCONTROL__
2430+ // fill with transparent black
2431+ m_qImage.fill(qRgba(0,0,0,0));
2432+#endif // __VINYLCONTROL__
2433 }
2434
2435 void WSpinny::updateVinylControlEnabled(double enabled) {
2436@@ -470,16 +475,21 @@
2437 void WSpinny::showEvent(QShowEvent* event) {
2438 // If we want to draw the VC signal on this widget then register for
2439 // updates.
2440+ #ifdef __VINYLCONTROL__
2441 if (m_bSignalActive && m_iVinylInput != -1 && m_pVCManager) {
2442 m_pVCManager->addSignalQualityListener(this);
2443 }
2444+ #endif // __VINYLCONTROL__
2445 }
2446
2447 void WSpinny::hideEvent(QHideEvent* event) {
2448 // When we are hidden we do not want signal quality updates.
2449+ #ifdef __VINYLCONTROL__
2450 if (m_pVCManager) {
2451 m_pVCManager->removeSignalQualityListener(this);
2452 }
2453+ #endif // __VINYLCONTROL__
2454+
2455 // fill with transparent black
2456 m_qImage.fill(qRgba(0,0,0,0));
2457 }
2458
2459=== modified file 'mixxx/vamp-plugins/SConscript'
2460--- mixxx/vamp-plugins/SConscript 2013-06-13 02:53:33 +0000
2461+++ mixxx/vamp-plugins/SConscript 2013-06-13 22:06:31 +0000
2462@@ -67,7 +67,7 @@
2463 env = conf.Finish()
2464 if build.platform_is_linux:
2465 env["LINKFLAGS"].append("-Wl,--version-script=vamp-plugins/vamp-plugin.map")
2466- if build.platform_is_windows:
2467+ if build.platform_is_windows and not build.crosscompile:
2468 env["LINKFLAGS"].remove("/entry:mainCRTStartup")
2469 env["LINKFLAGS"].append("/EXPORT:vampGetPluginDescriptor")
2470 #this will reduce DLL dependencies; no need to depend on MSVCRT.dll, etc
2471
2472=== modified file 'mixxx/vamp-plugins/dsp/DownBeat.h'
2473--- mixxx/vamp-plugins/dsp/DownBeat.h 2011-10-30 19:57:22 +0000
2474+++ mixxx/vamp-plugins/dsp/DownBeat.h 2013-06-13 22:06:31 +0000
2475@@ -18,7 +18,7 @@
2476
2477 #include <vector>
2478
2479-#ifdef __LINUX__
2480+#ifdef __GNUC__
2481 #include <stddef.h> //resolves size_t compile error on Ubuntu 11.10
2482 #endif
2483
2484
2485=== modified file 'mixxx/vamp-plugins/dsp/GetKeyMode.h'
2486--- mixxx/vamp-plugins/dsp/GetKeyMode.h 2012-07-07 23:09:24 +0000
2487+++ mixxx/vamp-plugins/dsp/GetKeyMode.h 2013-06-13 22:06:31 +0000
2488@@ -39,7 +39,7 @@
2489 #ifdef WIN64
2490 #define lrint(dbl) ((int)(dbl))
2491 #define lrintf(flt) ((int)(flt))
2492- #else
2493+ #elif !defined (__GNUC__)
2494
2495 /* Win32 doesn't seem to have these functions.
2496 ** Therefore implement inline versions of them here.
2497
2498=== modified file 'mixxx/vamp-plugins/dsp/TempoTrackV2.h'
2499--- mixxx/vamp-plugins/dsp/TempoTrackV2.h 2011-10-30 19:57:22 +0000
2500+++ mixxx/vamp-plugins/dsp/TempoTrackV2.h 2013-06-13 22:06:31 +0000
2501@@ -18,7 +18,7 @@
2502 #define TEMPOTRACKV2_H
2503
2504 #include <vector>
2505-#ifdef __LINUX__
2506+#ifdef __GNUC__
2507 #include <stddef.h> //resolves size_t compile error on Ubuntu 11.10
2508 #endif
2509