From 2c373e61c5ca4fb407f9eca40a2e676158b4ca14 Mon Sep 17 00:00:00 2001 From: Steven Boswell Date: Thu, 16 May 2013 11:11:25 -0700 Subject: [PATCH 01/15] First version of trying to get Mixxx to build with MinGW. I've built it under both MS Windows and Fedora Core 18 with MinGW and qmake. Neither are working yet, but the FC18 build is running better. This is nowhere near stable. Don't try to use it unless you like pain. --- mixxx/build/depends.py | 4 + mixxx/build/nsis/Mixxx.nsi | 3 - mixxx/build/qtcreator/mixxx.pro | 940 ++++++++++++------- mixxx/build/qtcreator/protobuf.pri | 39 + mixxx/lib/fidlib-0.9.10/fidlib.c | 4 +- mixxx/lib/xwax/lut.cpp | 6 +- mixxx/lib/xwax/timecoder.h | 8 + mixxx/lib/xwax/timecoder_win32.cpp | 4 + mixxx/src/SConscript | 52 +- mixxx/src/controllers/controllermanager.cpp | 2 + mixxx/src/library/basesqltablemodel.cpp | 2 +- mixxx/src/library/browse/foldertreemodel.cpp | 4 +- mixxx/src/library/treeitemmodel.cpp | 6 + mixxx/src/sampleutil.cpp | 5 +- mixxx/src/util/stat.h | 2 +- 15 files changed, 698 insertions(+), 383 deletions(-) create mode 100644 mixxx/build/qtcreator/protobuf.pri diff --git a/mixxx/build/depends.py b/mixxx/build/depends.py index e1473d518f7f..2174809153ab 100644 --- a/mixxx/build/depends.py +++ b/mixxx/build/depends.py @@ -810,6 +810,10 @@ def configure(self, build, conf): # Set include and library paths to work with this build.env.Append(CPPPATH=mixxx_lib_path) build.env.Append(LIBPATH=mixxx_lib_path) + + # Find executables (e.g. protoc) in the winlib path + #build.env['ENV']['PATH'] += ";" + mixxx_lib_path + build.env.AppendENVPath('PATH', mixxx_lib_path) #Ugh, MSVC-only hack :( see #http://www.qtforum.org/article/17883/problem-using-qstring-fromstdwstring.html diff --git a/mixxx/build/nsis/Mixxx.nsi b/mixxx/build/nsis/Mixxx.nsi index df941073b466..41aea8262262 100644 --- a/mixxx/build/nsis/Mixxx.nsi +++ b/mixxx/build/nsis/Mixxx.nsi @@ -123,15 +123,12 @@ Function InstallVCRedist ; Put the VC redist installer files there File ${WINLIB_PATH}\VC_redist\vc_red.cab File ${WINLIB_PATH}\VC_redist\vc_red.msi - File ${WINLIB_PATH}\VC_redist\msp_kb2565063.msp ClearErrors ; Call it & wait for it to install ExecWait 'msiexec /i $TEMP\vc_red.msi' - ExecWait 'msiexec /update $TEMP\msp_kb2565063.msp' Delete "$TEMP\vc_red.cab" Delete "$TEMP\vc_red.msi" - Delete "$TEMP\msp_kb2565063.msp" IfErrors 0 VCRedistDone MessageBox MB_ICONSTOP|MB_OK "There was a problem installing the Microsoft Visual C++ libraries.$\r$\nYou may need to run this installer as an administrator." Abort diff --git a/mixxx/build/qtcreator/mixxx.pro b/mixxx/build/qtcreator/mixxx.pro index 423d1ae36d2d..5de006970788 100644 --- a/mixxx/build/qtcreator/mixxx.pro +++ b/mixxx/build/qtcreator/mixxx.pro @@ -1,4 +1,5 @@ -CONFIG += debug link_pkgconfig portmidi script vinylcontrol m4a +CONFIG += debug link_pkgconfig portmidi script vinylcontrol +#CONFIG += m4a hss1394 # ladspa DEFINES += QMAKE \ # define QMAKE for not-SCons specific ifdefs like ui_scriptstudio.h __PORTAUDIO__ \ @@ -61,7 +62,7 @@ MOC_DIR = $$BUILDDIR/moc OBJECTS_DIR = $$BUILDDIR/obj win32-g++ { # Bit ugly, but you can thank MS-DOS shell for f-ing up the normal way of parsing. - QMAKE_CXXFLAGS += "\"-DSETTINGS_PATH=\\\"Local\\ Settings/Application\\ Data/Mixxx/\\\"\"" + QMAKE_CXXFLAGS += "\"-DSETTINGS_PATH=\\\"Local Settings/Application Data/Mixxx/\\\"\"" DEFINES += __WINDOWS__ } else { win32 { # i586-mingw32msvc-g++ -- cross compiling @@ -97,19 +98,31 @@ CONFIG(debug) { # gdbmacros is required for inspecting Qt datatypes using gdb wi } } -HEADERS += $$UI_DIR/ui_dlgaboutdlg.h \ - $$UI_DIR/ui_dlgmidilearning.h \ +HEADERS += $$UI_DIR/ui_dlgpreferencesdlg.h \ + $$UI_DIR/ui_dlgprefsounddlg.h \ + $$UI_DIR/controllers/ui_dlgprefcontrollerdlg.h \ + $$UI_DIR/controllers/ui_dlgprefmappablecontrollerdlg.h \ + $$UI_DIR/controllers/ui_dlgcontrollerlearning.h \ + $$UI_DIR/controllers/ui_dlgprefnocontrollersdlg.h \ + $$UI_DIR/ui_dlgprefplaylistdlg.h \ $$UI_DIR/ui_dlgprefcontrolsdlg.h \ - $$UI_DIR/ui_dlgprefcrossfaderdlg.h \ $$UI_DIR/ui_dlgprefeqdlg.h \ - $$UI_DIR/ui_dlgpreferencesdlg.h \ - $$UI_DIR/ui_dlgprefmidibindingsdlg.h \ - $$UI_DIR/ui_dlgprefplaylistdlg.h \ - $$UI_DIR/ui_dlgprefrecorddlg.h \ - $$UI_DIR/ui_dlgprefsounddlg.h \ + $$UI_DIR/ui_dlgprefcrossfaderdlg.h \ + $$UI_DIR/ui_dlgprefbpmdlg.h \ + $$UI_DIR/ui_dlgprefreplaygaindlg.h \ + $$UI_DIR/ui_dlgbpmschemedlg.h \ $$UI_DIR/ui_dlgprefvinyldlg.h \ $$UI_DIR/ui_dlgprefnovinyldlg.h \ - $$UI_DIR/ui_dlgprefnomididlg.h + $$UI_DIR/ui_dlgprefrecorddlg.h \ + $$UI_DIR/ui_dlgaboutdlg.h \ + $$UI_DIR/ui_dlgtrackinfo.h \ + $$UI_DIR/ui_dlgprepare.h \ + $$UI_DIR/ui_dlgautodj.h \ + $$UI_DIR/ui_dlgprefsounditem.h \ + $$UI_DIR/ui_dlglibraryscanner.h \ + $$UI_DIR/ui_dlgrecording.h \ + $$UI_DIR/ui_dlghidden.h \ + $$UI_DIR/ui_dlgmissing.h INCLUDEPATH += src \ lib/replaygain \ @@ -130,18 +143,48 @@ INCLUDEPATH += src \ HEADERS += \ $$BASE_DIR/src/analyser.h \ +$$BASE_DIR/src/analyserbeats.h \ +$$BASE_DIR/src/analyserbpm.h \ $$BASE_DIR/src/analyserqueue.h \ +$$BASE_DIR/src/analyserrg.h \ $$BASE_DIR/src/analyserwaveform.h \ -$$BASE_DIR/src/analyserwavesummary.h \ -$$BASE_DIR/src/bpm/bpmreceiver.h \ +$$BASE_DIR/src/audiotagger.h \ +$$BASE_DIR/src/baseplayer.h \ +$$BASE_DIR/src/basetrackplayer.h \ $$BASE_DIR/src/bpm/bpmscheme.h \ $$BASE_DIR/src/bpm/wavesegmentation.h \ $$BASE_DIR/src/build.h \ $$BASE_DIR/src/cachingreader.h \ +$$BASE_DIR/src/circularbuffer.h \ $$BASE_DIR/src/configobject.h \ $$BASE_DIR/src/controlbeat.h \ $$BASE_DIR/src/controlevent.h \ -$$BASE_DIR/src/controlgroupdelegate.h \ +$$BASE_DIR/src/controllers/controller.h \ +$$BASE_DIR/src/controllers/controllerengine.h \ +$$BASE_DIR/src/controllers/controllerenumerator.h \ +$$BASE_DIR/src/controllers/controllerlearningeventfilter.h \ +$$BASE_DIR/src/controllers/controllermanager.h \ +$$BASE_DIR/src/controllers/controllerpreset.h \ +$$BASE_DIR/src/controllers/controllerpresetfilehandler.h \ +$$BASE_DIR/src/controllers/controllerpresetinfo.h \ +$$BASE_DIR/src/controllers/controllerpresetvisitor.h \ +$$BASE_DIR/src/controllers/defs_controllers.h \ +$$BASE_DIR/src/controllers/dlgcontrollerlearning.h \ +$$BASE_DIR/src/controllers/dlgprefcontroller.h \ +$$BASE_DIR/src/controllers/dlgprefmappablecontroller.h \ +$$BASE_DIR/src/controllers/dlgprefnocontrollers.h \ +$$BASE_DIR/src/controllers/midi/midicontroller.h \ +$$BASE_DIR/src/controllers/midi/midicontrollerpreset.h \ +$$BASE_DIR/src/controllers/midi/midicontrollerpresetfilehandler.h \ +$$BASE_DIR/src/controllers/midi/midienumerator.h \ +$$BASE_DIR/src/controllers/midi/midimessage.h \ +$$BASE_DIR/src/controllers/midi/midioutputhandler.h \ +$$BASE_DIR/src/controllers/mixxxcontrol.h \ +$$BASE_DIR/src/controllers/pitchfilter.h \ +$$BASE_DIR/src/controllers/qtscript-bytearray/bytearrayclass.h \ +$$BASE_DIR/src/controllers/qtscript-bytearray/bytearrayprototype.h \ +$$BASE_DIR/src/controllers/softtakeover.h \ +$$BASE_DIR/src/controllinpotmeter.h \ $$BASE_DIR/src/controllogpotmeter.h \ $$BASE_DIR/src/controlnull.h \ $$BASE_DIR/src/controlobject.h \ @@ -151,199 +194,239 @@ $$BASE_DIR/src/controlobjectthreadwidget.h \ $$BASE_DIR/src/controlpotmeter.h \ $$BASE_DIR/src/controlpushbutton.h \ $$BASE_DIR/src/controlttrotary.h \ -$$BASE_DIR/src/controlvaluedelegate.h \ -$$BASE_DIR/src/defs_audiofiles.h \ +$$BASE_DIR/src/deck.h \ $$BASE_DIR/src/defs.h \ $$BASE_DIR/src/defs_promo.h \ $$BASE_DIR/src/defs_urls.h \ $$BASE_DIR/src/defs_version.h \ $$BASE_DIR/src/dlgabout.h \ $$BASE_DIR/src/dlgautodj.h \ -$$BASE_DIR/src/dlgladspa.h \ -$$BASE_DIR/src/dlgmidilearning.h \ +$$BASE_DIR/src/dlgbpmscheme.h \ +$$BASE_DIR/src/dlghidden.h \ +$$BASE_DIR/src/dlgmissing.h \ +$$BASE_DIR/src/dlgprefbpm.h \ $$BASE_DIR/src/dlgprefcontrols.h \ $$BASE_DIR/src/dlgprefcrossfader.h \ $$BASE_DIR/src/dlgprefeq.h \ $$BASE_DIR/src/dlgpreferences.h \ -$$BASE_DIR/src/dlgprefmidibindings.h \ -$$BASE_DIR/src/dlgprefnomidi.h \ $$BASE_DIR/src/dlgprefplaylist.h \ $$BASE_DIR/src/dlgprefrecord.h \ +$$BASE_DIR/src/dlgprefreplaygain.h \ $$BASE_DIR/src/dlgprefsound.h \ -$$BASE_DIR/src/dlgprefvinyl.h \ +$$BASE_DIR/src/dlgprefsounditem.h \ $$BASE_DIR/src/dlgprepare.h \ +$$BASE_DIR/src/dlgrecording.h \ $$BASE_DIR/src/dlgtrackinfo.h \ -$$BASE_DIR/src/encoder.h \ $$BASE_DIR/src/engine/bpmcontrol.h \ +$$BASE_DIR/src/engine/clockcontrol.h \ $$BASE_DIR/src/engine/cuecontrol.h \ $$BASE_DIR/src/engine/engineabstractrecord.h \ $$BASE_DIR/src/engine/enginebuffer.h \ -$$BASE_DIR/src/engine/enginebufferscaledummy.h \ $$BASE_DIR/src/engine/enginebufferscale.h \ +$$BASE_DIR/src/engine/enginebufferscaledummy.h \ $$BASE_DIR/src/engine/enginebufferscalelinear.h \ -$$BASE_DIR/src/engine/enginebufferscalereal.h \ $$BASE_DIR/src/engine/enginebufferscalest.h \ $$BASE_DIR/src/engine/enginechannel.h \ $$BASE_DIR/src/engine/engineclipping.h \ $$BASE_DIR/src/engine/enginecontrol.h \ +$$BASE_DIR/src/engine/enginedeck.h \ $$BASE_DIR/src/engine/enginedelay.h \ +$$BASE_DIR/src/engine/enginefilter.h \ $$BASE_DIR/src/engine/enginefilterblock.h \ $$BASE_DIR/src/engine/enginefilterbutterworth8.h \ -$$BASE_DIR/src/engine/enginefilter.h \ $$BASE_DIR/src/engine/enginefilteriir.h \ $$BASE_DIR/src/engine/engineflanger.h \ -$$BASE_DIR/src/engine/engineladspa.h \ $$BASE_DIR/src/engine/enginemaster.h \ +$$BASE_DIR/src/engine/enginemicrophone.h \ $$BASE_DIR/src/engine/engineobject.h \ +$$BASE_DIR/src/engine/enginepassthrough.h \ $$BASE_DIR/src/engine/enginepregain.h \ $$BASE_DIR/src/engine/enginesidechain.h \ -$$BASE_DIR/src/engine/enginespectralfwd.h \ -$$BASE_DIR/src/engine/enginevinylcontrol.h \ $$BASE_DIR/src/engine/enginevinylsoundemu.h \ -$$BASE_DIR/src/engine/enginevolume.h \ $$BASE_DIR/src/engine/enginevumeter.h \ +$$BASE_DIR/src/engine/engineworker.h \ +$$BASE_DIR/src/engine/engineworkerscheduler.h \ $$BASE_DIR/src/engine/enginexfader.h \ $$BASE_DIR/src/engine/loopingcontrol.h \ +$$BASE_DIR/src/engine/positionscratchcontroller.h \ +$$BASE_DIR/src/engine/quantizecontrol.h \ $$BASE_DIR/src/engine/ratecontrol.h \ $$BASE_DIR/src/engine/readaheadmanager.h \ -$$BASE_DIR/src/errordialog.h \ -$$BASE_DIR/src/imgcolor.h \ -$$BASE_DIR/src/imginvert.h \ -$$BASE_DIR/src/imgloader.h \ -$$BASE_DIR/src/imgsource.h \ -$$BASE_DIR/src/input.h \ -$$BASE_DIR/src/ladspa/ladspacontrol.h \ -$$BASE_DIR/src/ladspa/ladspainstance.h \ -$$BASE_DIR/src/ladspa/ladspainstancemono.h \ -$$BASE_DIR/src/ladspa/ladspainstancestereo.h \ -$$BASE_DIR/src/ladspa/ladspalibrary.h \ -$$BASE_DIR/src/ladspa/ladspaloader.h \ -$$BASE_DIR/src/ladspa/ladspaplugin.h \ -$$BASE_DIR/src/ladspa/ladspapreset.h \ -$$BASE_DIR/src/ladspa/ladspapresetinstance.h \ -$$BASE_DIR/src/ladspa/ladspapresetknob.h \ -$$BASE_DIR/src/ladspa/ladspapresetmanager.h \ -$$BASE_DIR/src/ladspa/ladspapresetslot.h \ -$$BASE_DIR/src/ladspaview.h \ -$$BASE_DIR/src/library/abstractxmltrackmodel.h \ +$$BASE_DIR/src/engine/syncworker.h \ +$$BASE_DIR/src/errordialoghandler.h \ $$BASE_DIR/src/library/autodjfeature.h \ -$$BASE_DIR/src/library/browsefeature.h \ -$$BASE_DIR/src/library/browsefilter.h \ -$$BASE_DIR/src/library/browsetablemodel.h \ +$$BASE_DIR/src/library/baseexternallibraryfeature.h \ +$$BASE_DIR/src/library/baseexternalplaylistmodel.h \ +$$BASE_DIR/src/library/baseexternaltrackmodel.h \ +$$BASE_DIR/src/library/baseplaylistfeature.h \ +$$BASE_DIR/src/library/basesqltablemodel.h \ +$$BASE_DIR/src/library/basetrackcache.h \ +$$BASE_DIR/src/library/browse/browsefeature.h \ +$$BASE_DIR/src/library/browse/browsetablemodel.h \ +$$BASE_DIR/src/library/browse/browsethread.h \ +$$BASE_DIR/src/library/browse/foldertreemodel.h \ $$BASE_DIR/src/library/cratefeature.h \ $$BASE_DIR/src/library/cratetablemodel.h \ +$$BASE_DIR/src/library/dao/analysisdao.h \ +$$BASE_DIR/src/library/dao/autodjcratesdao.h \ $$BASE_DIR/src/library/dao/cratedao.h \ -$$BASE_DIR/src/library/dao/cuedao.h \ $$BASE_DIR/src/library/dao/cue.h \ +$$BASE_DIR/src/library/dao/cuedao.h \ $$BASE_DIR/src/library/dao/dao.h \ $$BASE_DIR/src/library/dao/libraryhashdao.h \ $$BASE_DIR/src/library/dao/playlistdao.h \ $$BASE_DIR/src/library/dao/settingsdao.h \ $$BASE_DIR/src/library/dao/trackdao.h \ -$$BASE_DIR/src/library/itunesfeature.h \ -$$BASE_DIR/src/library/itunesplaylistmodel.h \ -$$BASE_DIR/src/library/itunestrackmodel.h \ +$$BASE_DIR/src/library/hiddentablemodel.h \ +$$BASE_DIR/src/library/itunes/itunesfeature.h \ $$BASE_DIR/src/library/legacylibraryimporter.h \ -$$BASE_DIR/src/library/libraryfeature.h \ $$BASE_DIR/src/library/library.h \ -$$BASE_DIR/src/library/librarymidicontrol.h \ -$$BASE_DIR/src/library/libraryscannerdlg.h \ +$$BASE_DIR/src/library/librarycontrol.h \ +$$BASE_DIR/src/library/libraryfeature.h \ $$BASE_DIR/src/library/libraryscanner.h \ +$$BASE_DIR/src/library/libraryscannerdlg.h \ $$BASE_DIR/src/library/librarytablemodel.h \ $$BASE_DIR/src/library/libraryview.h \ $$BASE_DIR/src/library/missingtablemodel.h \ $$BASE_DIR/src/library/mixxxlibraryfeature.h \ +$$BASE_DIR/src/library/parser.h \ +$$BASE_DIR/src/library/parsercsv.h \ +$$BASE_DIR/src/library/parserm3u.h \ +$$BASE_DIR/src/library/parserpls.h \ $$BASE_DIR/src/library/playlistfeature.h \ $$BASE_DIR/src/library/playlisttablemodel.h \ $$BASE_DIR/src/library/preparecratedelegate.h \ $$BASE_DIR/src/library/preparefeature.h \ $$BASE_DIR/src/library/preparelibrarytablemodel.h \ +$$BASE_DIR/src/library/previewbuttondelegate.h \ $$BASE_DIR/src/library/proxytrackmodel.h \ -$$BASE_DIR/src/library/rhythmboxfeature.h \ -$$BASE_DIR/src/library/rhythmboxplaylistmodel.h \ -$$BASE_DIR/src/library/rhythmboxtrackmodel.h \ +$$BASE_DIR/src/library/queryutil.h \ +$$BASE_DIR/src/library/recording/recordingfeature.h \ +$$BASE_DIR/src/library/rhythmbox/rhythmboxfeature.h \ $$BASE_DIR/src/library/schemamanager.h \ +$$BASE_DIR/src/library/searchqueryparser.h \ $$BASE_DIR/src/library/searchthread.h \ +$$BASE_DIR/src/library/setlogfeature.h \ $$BASE_DIR/src/library/sidebarmodel.h \ +$$BASE_DIR/src/library/songdownloader.h \ +$$BASE_DIR/src/library/stardelegate.h \ +$$BASE_DIR/src/library/stareditor.h \ +$$BASE_DIR/src/library/starrating.h \ $$BASE_DIR/src/library/trackcollection.h \ $$BASE_DIR/src/library/trackmodel.h \ -$$BASE_DIR/src/m4a/comment.h \ -$$BASE_DIR/src/m4a/ip.h \ -$$BASE_DIR/src/m4a/sf.h \ +$$BASE_DIR/src/library/traktor/traktorfeature.h \ +$$BASE_DIR/src/library/treeitem.h \ +$$BASE_DIR/src/library/treeitemmodel.h \ $$BASE_DIR/src/mathstuff.h \ -$$BASE_DIR/src/midi/midichanneldelegate.h \ -$$BASE_DIR/src/midi/mididevicedummy.h \ -$$BASE_DIR/src/midi/mididevice.h \ -$$BASE_DIR/src/midi/mididevicemanager.h \ -$$BASE_DIR/src/midi/midideviceportmidi.h \ -$$BASE_DIR/src/midi/midiinputmapping.h \ -$$BASE_DIR/src/midi/midiinputmappingtablemodel.h \ -$$BASE_DIR/src/midi/midiledhandler.h \ -$$BASE_DIR/src/midi/midimapping.h \ -$$BASE_DIR/src/midi/midimessage.h \ -$$BASE_DIR/src/midi/midinodelegate.h \ -$$BASE_DIR/src/midi/midioptiondelegate.h \ -$$BASE_DIR/src/midi/midioutputmapping.h \ -$$BASE_DIR/src/midi/midioutputmappingtablemodel.h \ -$$BASE_DIR/src/midi/midiscriptengine.h \ -$$BASE_DIR/src/midi/midistatusdelegate.h \ -$$BASE_DIR/src/mixxxcontrol.h \ -$$BASE_DIR/src/mixxxevent.h \ $$BASE_DIR/src/mixxx.h \ +$$BASE_DIR/src/mixxxevent.h \ $$BASE_DIR/src/mixxxkeyboard.h \ -$$BASE_DIR/src/mixxxview.h \ -$$BASE_DIR/src/parser.h \ -$$BASE_DIR/src/parserm3u.h \ -$$BASE_DIR/src/parserpls.h \ -$$BASE_DIR/src/peaklist.h \ -$$BASE_DIR/src/player.h \ $$BASE_DIR/src/playerinfo.h \ -$$BASE_DIR/src/probabilityvector.h \ +$$BASE_DIR/src/playermanager.h \ +$$BASE_DIR/src/previewdeck.h \ $$BASE_DIR/src/recording/defs_recording.h \ +$$BASE_DIR/src/recording/encoder.h \ $$BASE_DIR/src/recording/enginerecord.h \ -$$BASE_DIR/src/recording/writeaudiofile.h \ +$$BASE_DIR/src/recording/recordingmanager.h \ $$BASE_DIR/src/rotary.h \ -$$BASE_DIR/src/rtthread.h \ +$$BASE_DIR/src/sampler.h \ +$$BASE_DIR/src/samplerbank.h \ +$$BASE_DIR/src/sampleutil.h \ $$BASE_DIR/src/segmentation.h \ +$$BASE_DIR/src/sharedglcontext.h \ +$$BASE_DIR/src/singleton.h \ +$$BASE_DIR/src/skin/colorschemeparser.h \ +$$BASE_DIR/src/skin/imgcolor.h \ +$$BASE_DIR/src/skin/imginvert.h \ +$$BASE_DIR/src/skin/imgloader.h \ +$$BASE_DIR/src/skin/imgsource.h \ +$$BASE_DIR/src/skin/legacyskinparser.h \ +$$BASE_DIR/src/skin/propertybinder.h \ +$$BASE_DIR/src/skin/skinloader.h \ +$$BASE_DIR/src/skin/skinparser.h \ +$$BASE_DIR/src/skin/tooltips.h \ $$BASE_DIR/src/sounddevice.h \ $$BASE_DIR/src/sounddeviceportaudio.h \ $$BASE_DIR/src/soundmanager.h \ +$$BASE_DIR/src/soundmanagerconfig.h \ +$$BASE_DIR/src/soundmanagerutil.h \ $$BASE_DIR/src/soundsource.h \ -$$BASE_DIR/src/soundsourcem4a.h \ +$$BASE_DIR/src/soundsourcecoreaudio.h \ +$$BASE_DIR/src/soundsourceffmpeg.h \ +$$BASE_DIR/src/soundsourceflac.h \ $$BASE_DIR/src/soundsourcemp3.h \ $$BASE_DIR/src/soundsourceoggvorbis.h \ $$BASE_DIR/src/soundsourceproxy.h \ $$BASE_DIR/src/soundsourcesndfile.h \ +$$BASE_DIR/src/tapfilter.h \ +$$BASE_DIR/src/test/mixxxtest.h \ +$$BASE_DIR/src/tonal/tonalanalyser.h \ +$$BASE_DIR/src/track/beat_preferences.h \ +$$BASE_DIR/src/track/beatfactory.h \ +$$BASE_DIR/src/track/beatgrid.h \ +$$BASE_DIR/src/track/beatmap.h \ +$$BASE_DIR/src/track/beats.h \ +$$BASE_DIR/src/track/beatutils.h \ $$BASE_DIR/src/trackinfoobject.h \ $$BASE_DIR/src/transposeproxymodel.h \ $$BASE_DIR/src/upgrade.h \ -$$BASE_DIR/src/vinylcontrol.h \ -$$BASE_DIR/src/vinylcontrolproxy.h \ -$$BASE_DIR/src/vinylcontrolscratchlib.h \ -$$BASE_DIR/src/vinylcontrolsignalwidget.h \ -$$BASE_DIR/src/vinylcontrolxwax.h \ -$$BASE_DIR/src/waveform/glwaveformrenderer.h \ -$$BASE_DIR/src/waveform/renderobject.h \ -$$BASE_DIR/src/waveformviewerfactory.h \ -$$BASE_DIR/src/waveform/waveformrenderbackground.h \ -$$BASE_DIR/src/waveform/waveformrenderbeat.h \ -$$BASE_DIR/src/waveform/waveformrenderer.h \ -$$BASE_DIR/src/waveform/waveformrendermark.h \ -$$BASE_DIR/src/waveform/waveformrendermarkrange.h \ -$$BASE_DIR/src/waveform/waveformrendersignal.h \ -$$BASE_DIR/src/waveform/waveformrendersignalpixmap.h \ +$$BASE_DIR/src/util.h \ +$$BASE_DIR/src/util/cmdlineargs.h \ +$$BASE_DIR/src/util/counter.h \ +$$BASE_DIR/src/util/debug.h \ +$$BASE_DIR/src/util/fifo.h \ +$$BASE_DIR/src/util/lcs.h \ +$$BASE_DIR/src/util/pa_memorybarrier.h \ +$$BASE_DIR/src/util/pa_ringbuffer.h \ +$$BASE_DIR/src/util/performancetimer.h \ +$$BASE_DIR/src/util/sleepableqthread.h \ +$$BASE_DIR/src/util/stat.h \ +$$BASE_DIR/src/util/statsmanager.h \ +$$BASE_DIR/src/util/timer.h \ +$$BASE_DIR/src/util/trace.h \ +$$BASE_DIR/src/waveform/renderers/glslwaveformrenderersignal.h \ +$$BASE_DIR/src/waveform/renderers/glwaveformrendererfilteredsignal.h \ +$$BASE_DIR/src/waveform/renderers/glwaveformrenderersimplesignal.h \ +$$BASE_DIR/src/waveform/renderers/qtwaveformrendererfilteredsignal.h \ +$$BASE_DIR/src/waveform/renderers/qtwaveformrenderersimplesignal.h \ +$$BASE_DIR/src/waveform/renderers/waveformmark.h \ +$$BASE_DIR/src/waveform/renderers/waveformmarkrange.h \ +$$BASE_DIR/src/waveform/renderers/waveformmarkset.h \ +$$BASE_DIR/src/waveform/renderers/waveformrenderbackground.h \ +$$BASE_DIR/src/waveform/renderers/waveformrenderbeat.h \ +$$BASE_DIR/src/waveform/renderers/waveformrendererabstract.h \ +$$BASE_DIR/src/waveform/renderers/waveformrendererendoftrack.h \ +$$BASE_DIR/src/waveform/renderers/waveformrendererfilteredsignal.h \ +$$BASE_DIR/src/waveform/renderers/waveformrendererhsv.h \ +$$BASE_DIR/src/waveform/renderers/waveformrendererpreroll.h \ +$$BASE_DIR/src/waveform/renderers/waveformrenderersignalbase.h \ +$$BASE_DIR/src/waveform/renderers/waveformrendermark.h \ +$$BASE_DIR/src/waveform/renderers/waveformrendermarkrange.h \ +$$BASE_DIR/src/waveform/renderers/waveformsignalcolors.h \ +$$BASE_DIR/src/waveform/renderers/waveformwidgetrenderer.h \ +$$BASE_DIR/src/waveform/waveform.h \ +$$BASE_DIR/src/waveform/waveformfactory.h \ +$$BASE_DIR/src/waveform/waveformwidgetfactory.h \ +$$BASE_DIR/src/waveform/widgets/emptywaveformwidget.h \ +$$BASE_DIR/src/waveform/widgets/glsimplewaveformwidget.h \ +$$BASE_DIR/src/waveform/widgets/glslwaveformwidget.h \ +$$BASE_DIR/src/waveform/widgets/glwaveformwidget.h \ +$$BASE_DIR/src/waveform/widgets/hsvwaveformwidget.h \ +$$BASE_DIR/src/waveform/widgets/qtsimplewaveformwidget.h \ +$$BASE_DIR/src/waveform/widgets/qtwaveformwidget.h \ +$$BASE_DIR/src/waveform/widgets/softwarewaveformwidget.h \ +$$BASE_DIR/src/waveform/widgets/waveformwidgetabstract.h \ +$$BASE_DIR/src/waveform/widgets/waveformwidgettype.h \ $$BASE_DIR/src/widget/hexspinbox.h \ $$BASE_DIR/src/widget/wabstractcontrol.h \ -$$BASE_DIR/src/widget/wbrowsetableview.h \ $$BASE_DIR/src/widget/wdisplay.h \ -$$BASE_DIR/src/widget/wglwaveformviewer.h \ +$$BASE_DIR/src/widget/wimagestore.h \ $$BASE_DIR/src/widget/wknob.h \ $$BASE_DIR/src/widget/wlabel.h \ $$BASE_DIR/src/widget/wlibrary.h \ $$BASE_DIR/src/widget/wlibrarysidebar.h \ $$BASE_DIR/src/widget/wlibrarytableview.h \ $$BASE_DIR/src/widget/wlibrarytextbrowser.h \ -$$BASE_DIR/src/widget/wnumberbpm.h \ $$BASE_DIR/src/widget/wnumber.h \ $$BASE_DIR/src/widget/wnumberpos.h \ $$BASE_DIR/src/widget/wnumberrate.h \ @@ -354,249 +437,307 @@ $$BASE_DIR/src/widget/wpreparelibrarytableview.h \ $$BASE_DIR/src/widget/wpushbutton.h \ $$BASE_DIR/src/widget/wsearchlineedit.h \ $$BASE_DIR/src/widget/wskincolor.h \ -$$BASE_DIR/src/widget/wslidercomposed.h \ $$BASE_DIR/src/widget/wslider.h \ +$$BASE_DIR/src/widget/wslidercomposed.h \ +$$BASE_DIR/src/widget/wspinny.h \ $$BASE_DIR/src/widget/wstatuslight.h \ +$$BASE_DIR/src/widget/wtime.h \ +$$BASE_DIR/src/widget/wtrackproperty.h \ +$$BASE_DIR/src/widget/wtracktableview.h \ $$BASE_DIR/src/widget/wtracktableviewheader.h \ -$$BASE_DIR/src/widget/wvisualsimple.h \ +$$BASE_DIR/src/widget/wtracktext.h \ $$BASE_DIR/src/widget/wvumeter.h \ $$BASE_DIR/src/widget/wwaveformviewer.h \ $$BASE_DIR/src/widget/wwidget.h \ -$$BASE_DIR/src/windowkaiser.h \ -$$BASE_DIR/src/wtracktableview.h \ +$$BASE_DIR/src/widget/wwidgetgroup.h \ +$$BASE_DIR/src/widget/wwidgetstack.h \ $$BASE_DIR/src/xmlparse.h - SOURCES += \ -$$BASE_DIR/src/analyserqueue.cpp \ -$$BASE_DIR/src/analyserwaveform.cpp \ -$$BASE_DIR/src/analyserwavesummary.cpp \ -$$BASE_DIR/src/bpm/bpmscheme.cpp \ -$$BASE_DIR/src/bpm/wavesegmentation.cpp \ -$$BASE_DIR/src/cachingreader.cpp \ +$$BASE_DIR/src/mixxxkeyboard.cpp \ $$BASE_DIR/src/configobject.cpp \ -$$BASE_DIR/src/controlbeat.cpp \ +$$BASE_DIR/src/controlobjectthread.cpp \ +$$BASE_DIR/src/controlobjectthreadwidget.cpp \ +$$BASE_DIR/src/controlobjectthreadmain.cpp \ $$BASE_DIR/src/controlevent.cpp \ -$$BASE_DIR/src/controlgroupdelegate.cpp \ $$BASE_DIR/src/controllogpotmeter.cpp \ -$$BASE_DIR/src/controlnull.cpp \ $$BASE_DIR/src/controlobject.cpp \ -$$BASE_DIR/src/controlobjectthread.cpp \ -$$BASE_DIR/src/controlobjectthreadmain.cpp \ -$$BASE_DIR/src/controlobjectthreadwidget.cpp \ +$$BASE_DIR/src/controlnull.cpp \ $$BASE_DIR/src/controlpotmeter.cpp \ +$$BASE_DIR/src/controllinpotmeter.cpp \ $$BASE_DIR/src/controlpushbutton.cpp \ $$BASE_DIR/src/controlttrotary.cpp \ -$$BASE_DIR/src/controlvaluedelegate.cpp \ -$$BASE_DIR/src/dlgabout.cpp \ -$$BASE_DIR/src/dlgautodj.cpp \ -$$BASE_DIR/src/dlgladspa.cpp \ -$$BASE_DIR/src/dlgmidilearning.cpp \ -$$BASE_DIR/src/dlgprefcontrols.cpp \ -$$BASE_DIR/src/dlgprefcrossfader.cpp \ -$$BASE_DIR/src/dlgprefeq.cpp \ +$$BASE_DIR/src/controlbeat.cpp \ $$BASE_DIR/src/dlgpreferences.cpp \ -$$BASE_DIR/src/dlgprefmidibindings.cpp \ -$$BASE_DIR/src/dlgprefnomidi.cpp \ -$$BASE_DIR/src/dlgprefplaylist.cpp \ -$$BASE_DIR/src/dlgprefrecord.cpp \ $$BASE_DIR/src/dlgprefsound.cpp \ -$$BASE_DIR/src/dlgprefvinyl.cpp \ -$$BASE_DIR/src/dlgprepare.cpp \ +$$BASE_DIR/src/dlgprefsounditem.cpp \ +$$BASE_DIR/src/controllers/dlgprefcontroller.cpp \ +$$BASE_DIR/src/controllers/dlgprefmappablecontroller.cpp \ +$$BASE_DIR/src/controllers/dlgcontrollerlearning.cpp \ +$$BASE_DIR/src/controllers/dlgprefnocontrollers.cpp \ +$$BASE_DIR/src/dlgprefplaylist.cpp \ +$$BASE_DIR/src/dlgprefcontrols.cpp \ +$$BASE_DIR/src/dlgprefbpm.cpp \ +$$BASE_DIR/src/dlgprefreplaygain.cpp \ +$$BASE_DIR/src/dlgprefnovinyl.cpp \ +$$BASE_DIR/src/dlgbpmscheme.cpp \ +$$BASE_DIR/src/dlgabout.cpp \ +$$BASE_DIR/src/dlgprefeq.cpp \ +$$BASE_DIR/src/dlgprefcrossfader.cpp \ $$BASE_DIR/src/dlgtrackinfo.cpp \ -$$BASE_DIR/src/encoder.cpp \ -$$BASE_DIR/src/engine/bpmcontrol.cpp \ -$$BASE_DIR/src/engine/cuecontrol.cpp \ +$$BASE_DIR/src/dlgprepare.cpp \ +$$BASE_DIR/src/dlgautodj.cpp \ +$$BASE_DIR/src/dlghidden.cpp \ +$$BASE_DIR/src/dlgmissing.cpp \ +$$BASE_DIR/src/engine/engineworker.cpp \ +$$BASE_DIR/src/engine/engineworkerscheduler.cpp \ +$$BASE_DIR/src/engine/syncworker.cpp \ $$BASE_DIR/src/engine/enginebuffer.cpp \ $$BASE_DIR/src/engine/enginebufferscale.cpp \ $$BASE_DIR/src/engine/enginebufferscaledummy.cpp \ $$BASE_DIR/src/engine/enginebufferscalelinear.cpp \ -$$BASE_DIR/src/engine/enginebufferscalereal.cpp \ -$$BASE_DIR/src/engine/enginebufferscalest.cpp \ -$$BASE_DIR/src/engine/enginechannel.cpp \ $$BASE_DIR/src/engine/engineclipping.cpp \ -$$BASE_DIR/src/engine/enginecontrol.cpp \ -$$BASE_DIR/src/engine/enginedelay.cpp \ $$BASE_DIR/src/engine/enginefilterblock.cpp \ -$$BASE_DIR/src/engine/enginefilterbutterworth8.cpp \ -$$BASE_DIR/src/engine/enginefilter.cpp \ $$BASE_DIR/src/engine/enginefilteriir.cpp \ -$$BASE_DIR/src/engine/engineflanger.cpp \ -$$BASE_DIR/src/engine/engineladspa.cpp \ -$$BASE_DIR/src/engine/enginemaster.cpp \ +$$BASE_DIR/src/engine/enginefilter.cpp \ $$BASE_DIR/src/engine/engineobject.cpp \ $$BASE_DIR/src/engine/enginepregain.cpp \ -$$BASE_DIR/src/engine/enginesidechain.cpp \ -$$BASE_DIR/src/engine/enginespectralfwd.cpp \ -$$BASE_DIR/src/engine/enginevinylcontrol.cpp \ -$$BASE_DIR/src/engine/enginevinylsoundemu.cpp \ -$$BASE_DIR/src/engine/enginevolume.cpp \ +$$BASE_DIR/src/engine/enginechannel.cpp \ +$$BASE_DIR/src/engine/enginemaster.cpp \ +$$BASE_DIR/src/engine/enginedelay.cpp \ +$$BASE_DIR/src/engine/engineflanger.cpp \ $$BASE_DIR/src/engine/enginevumeter.cpp \ +$$BASE_DIR/src/engine/enginevinylsoundemu.cpp \ +$$BASE_DIR/src/engine/enginesidechain.cpp \ +$$BASE_DIR/src/engine/enginefilterbutterworth8.cpp \ $$BASE_DIR/src/engine/enginexfader.cpp \ -$$BASE_DIR/src/engine/loopingcontrol.cpp \ +$$BASE_DIR/src/engine/enginemicrophone.cpp \ +$$BASE_DIR/src/engine/enginedeck.cpp \ +$$BASE_DIR/src/engine/enginepassthrough.cpp \ +$$BASE_DIR/src/engine/enginecontrol.cpp \ $$BASE_DIR/src/engine/ratecontrol.cpp \ +$$BASE_DIR/src/engine/positionscratchcontroller.cpp \ +$$BASE_DIR/src/engine/loopingcontrol.cpp \ +$$BASE_DIR/src/engine/bpmcontrol.cpp \ +$$BASE_DIR/src/engine/cuecontrol.cpp \ +$$BASE_DIR/src/engine/quantizecontrol.cpp \ +$$BASE_DIR/src/engine/clockcontrol.cpp \ $$BASE_DIR/src/engine/readaheadmanager.cpp \ -$$BASE_DIR/src/errordialog.cpp \ -$$BASE_DIR/src/imgcolor.cpp \ -$$BASE_DIR/src/imginvert.cpp \ -$$BASE_DIR/src/imgloader.cpp \ -$$BASE_DIR/src/input.cpp \ -$$BASE_DIR/src/ladspa/ladspacontrol.cpp \ -$$BASE_DIR/src/ladspa/ladspainstance.cpp \ -$$BASE_DIR/src/ladspa/ladspainstancemono.cpp \ -$$BASE_DIR/src/ladspa/ladspainstancestereo.cpp \ -$$BASE_DIR/src/ladspa/ladspalibrary.cpp \ -$$BASE_DIR/src/ladspa/ladspaloader.cpp \ -$$BASE_DIR/src/ladspa/ladspaplugin.cpp \ -$$BASE_DIR/src/ladspa/ladspapreset.cpp \ -$$BASE_DIR/src/ladspa/ladspapresetinstance.cpp \ -$$BASE_DIR/src/ladspa/ladspapresetknob.cpp \ -$$BASE_DIR/src/ladspa/ladspapresetmanager.cpp \ -$$BASE_DIR/src/ladspa/ladspapresetslot.cpp \ -$$BASE_DIR/src/ladspaview.cpp \ -$$BASE_DIR/src/library/abstractxmltrackmodel.cpp \ -$$BASE_DIR/src/library/autodjfeature.cpp \ -$$BASE_DIR/src/library/browsefeature.cpp \ -$$BASE_DIR/src/library/browsefilter.cpp \ -$$BASE_DIR/src/library/browsetablemodel.cpp \ -$$BASE_DIR/src/library/cratefeature.cpp \ -$$BASE_DIR/src/library/cratetablemodel.cpp \ -$$BASE_DIR/src/library/dao/cratedao.cpp \ -$$BASE_DIR/src/library/dao/cue.cpp \ -$$BASE_DIR/src/library/dao/cuedao.cpp \ -$$BASE_DIR/src/library/dao/libraryhashdao.cpp \ -$$BASE_DIR/src/library/dao/playlistdao.cpp \ -$$BASE_DIR/src/library/dao/settingsdao.cpp \ -$$BASE_DIR/src/library/dao/trackdao.cpp \ -$$BASE_DIR/src/library/itunesfeature.cpp \ -$$BASE_DIR/src/library/itunesplaylistmodel.cpp \ -$$BASE_DIR/src/library/itunestrackmodel.cpp \ -$$BASE_DIR/src/library/legacylibraryimporter.cpp \ -$$BASE_DIR/src/library/library.cpp \ -$$BASE_DIR/src/library/libraryfeature.cpp \ -$$BASE_DIR/src/library/librarymidicontrol.cpp \ -$$BASE_DIR/src/library/libraryscanner.cpp \ -$$BASE_DIR/src/library/libraryscannerdlg.cpp \ -$$BASE_DIR/src/library/librarytablemodel.cpp \ -$$BASE_DIR/src/library/missingtablemodel.cpp \ -$$BASE_DIR/src/library/mixxxlibraryfeature.cpp \ -$$BASE_DIR/src/library/playlistfeature.cpp \ -$$BASE_DIR/src/library/playlisttablemodel.cpp \ -$$BASE_DIR/src/library/preparecratedelegate.cpp \ -$$BASE_DIR/src/library/preparefeature.cpp \ -$$BASE_DIR/src/library/preparelibrarytablemodel.cpp \ -$$BASE_DIR/src/library/proxytrackmodel.cpp \ -$$BASE_DIR/src/library/rhythmboxfeature.cpp \ -$$BASE_DIR/src/library/rhythmboxplaylistmodel.cpp \ -$$BASE_DIR/src/library/rhythmboxtrackmodel.cpp \ -$$BASE_DIR/src/library/schemamanager.cpp \ -$$BASE_DIR/src/library/searchthread.cpp \ -$$BASE_DIR/src/library/sidebarmodel.cpp \ -$$BASE_DIR/src/library/trackcollection.cpp \ -$$BASE_DIR/src/m4a/mp4-mixxx.cpp \ +$$BASE_DIR/src/cachingreader.cpp \ +$$BASE_DIR/src/analyserrg.cpp \ +$$BASE_DIR/src/analyserqueue.cpp \ +$$BASE_DIR/src/analyserbpm.cpp \ +$$BASE_DIR/src/analyserwaveform.cpp \ +$$BASE_DIR/src/controllers/controller.cpp \ +$$BASE_DIR/src/controllers/controllerengine.cpp \ +$$BASE_DIR/src/controllers/controllerenumerator.cpp \ +$$BASE_DIR/src/controllers/controllerlearningeventfilter.cpp \ +$$BASE_DIR/src/controllers/controllermanager.cpp \ +$$BASE_DIR/src/controllers/controllerpresetfilehandler.cpp \ +$$BASE_DIR/src/controllers/controllerpresetinfo.cpp \ +$$BASE_DIR/src/controllers/midi/midicontroller.cpp \ +$$BASE_DIR/src/controllers/midi/midicontrollerpresetfilehandler.cpp \ +$$BASE_DIR/src/controllers/midi/midienumerator.cpp \ +$$BASE_DIR/src/controllers/midi/midioutputhandler.cpp \ +$$BASE_DIR/src/controllers/mixxxcontrol.cpp \ +$$BASE_DIR/src/controllers/qtscript-bytearray/bytearrayclass.cpp \ +$$BASE_DIR/src/controllers/qtscript-bytearray/bytearrayprototype.cpp \ +$$BASE_DIR/src/controllers/softtakeover.cpp \ $$BASE_DIR/src/main.cpp \ -$$BASE_DIR/src/mathstuff.cpp \ -$$BASE_DIR/src/midi/midichanneldelegate.cpp \ -$$BASE_DIR/src/midi/mididevice.cpp \ -$$BASE_DIR/src/midi/mididevicemanager.cpp \ -$$BASE_DIR/src/midi/midideviceportmidi.cpp \ -$$BASE_DIR/src/midi/midiinputmappingtablemodel.cpp \ -$$BASE_DIR/src/midi/midiledhandler.cpp \ -$$BASE_DIR/src/midi/midimapping.cpp \ -$$BASE_DIR/src/midi/midimessage.cpp \ -$$BASE_DIR/src/midi/midinodelegate.cpp \ -$$BASE_DIR/src/midi/midioptiondelegate.cpp \ -$$BASE_DIR/src/midi/midioutputmappingtablemodel.cpp \ -$$BASE_DIR/src/midi/midiscriptengine.cpp \ -$$BASE_DIR/src/midi/midistatusdelegate.cpp \ -$$BASE_DIR/src/mixxxcontrol.cpp \ $$BASE_DIR/src/mixxx.cpp \ -$$BASE_DIR/src/mixxxkeyboard.cpp \ -$$BASE_DIR/src/mixxxview.cpp \ -$$BASE_DIR/src/parser.cpp \ -$$BASE_DIR/src/parserm3u.cpp \ -$$BASE_DIR/src/parserpls.cpp \ -$$BASE_DIR/src/peaklist.cpp \ -$$BASE_DIR/src/player.cpp \ -$$BASE_DIR/src/playerinfo.cpp \ -$$BASE_DIR/src/probabilityvector.cpp \ -$$BASE_DIR/src/recording/enginerecord.cpp \ -$$BASE_DIR/src/recording/writeaudiofile.cpp \ -$$BASE_DIR/src/rotary.cpp \ -$$BASE_DIR/src/rtthread.cpp \ -$$BASE_DIR/src/segmentation.cpp \ -$$BASE_DIR/src/sounddevice.cpp \ -$$BASE_DIR/src/sounddeviceportaudio.cpp \ -$$BASE_DIR/src/soundmanager.cpp \ +$$BASE_DIR/src/errordialoghandler.cpp \ +$$BASE_DIR/src/upgrade.cpp \ $$BASE_DIR/src/soundsource.cpp \ -$$BASE_DIR/src/soundsourcem4a.cpp \ -$$BASE_DIR/src/soundsourcemp3.cpp \ $$BASE_DIR/src/soundsourceoggvorbis.cpp \ -$$BASE_DIR/src/soundsourceproxy.cpp \ +$$BASE_DIR/src/soundsourceflac.cpp \ $$BASE_DIR/src/soundsourcesndfile.cpp \ -$$BASE_DIR/src/trackinfoobject.cpp \ -$$BASE_DIR/src/upgrade.cpp \ -$$BASE_DIR/src/vinylcontrol.cpp \ -$$BASE_DIR/src/vinylcontrolproxy.cpp \ -$$BASE_DIR/src/vinylcontrolscratchlib.cpp \ -$$BASE_DIR/src/vinylcontrolsignalwidget.cpp \ -$$BASE_DIR/src/vinylcontrolxwax.cpp \ -$$BASE_DIR/src/waveform/glwaveformrenderer.cpp \ -$$BASE_DIR/src/waveform/renderobject.cpp \ -$$BASE_DIR/src/waveformviewerfactory.cpp \ -$$BASE_DIR/src/waveform/waveformrenderbackground.cpp \ -$$BASE_DIR/src/waveform/waveformrenderbeat.cpp \ -$$BASE_DIR/src/waveform/waveformrenderer.cpp \ -$$BASE_DIR/src/waveform/waveformrendermark.cpp \ -$$BASE_DIR/src/waveform/waveformrendermarkrange.cpp \ -$$BASE_DIR/src/waveform/waveformrendersignal.cpp \ -$$BASE_DIR/src/waveform/waveformrendersignalpixmap.cpp \ -$$BASE_DIR/src/widget/hexspinbox.cpp \ -$$BASE_DIR/src/widget/wabstractcontrol.cpp \ -$$BASE_DIR/src/widget/wbrowsetableview.cpp \ -$$BASE_DIR/src/widget/wdisplay.cpp \ -$$BASE_DIR/src/widget/wglwaveformviewer.cpp \ -$$BASE_DIR/src/widget/wknob.cpp \ +$$BASE_DIR/src/sharedglcontext.cpp \ +$$BASE_DIR/src/widget/wwidget.cpp \ +$$BASE_DIR/src/widget/wwidgetgroup.cpp \ +$$BASE_DIR/src/widget/wwidgetstack.cpp \ $$BASE_DIR/src/widget/wlabel.cpp \ -$$BASE_DIR/src/widget/wlibrary.cpp \ -$$BASE_DIR/src/widget/wlibrarysidebar.cpp \ -$$BASE_DIR/src/widget/wlibrarytableview.cpp \ -$$BASE_DIR/src/widget/wlibrarytextbrowser.cpp \ -$$BASE_DIR/src/widget/wnumberbpm.cpp \ +$$BASE_DIR/src/widget/wtracktext.cpp \ $$BASE_DIR/src/widget/wnumber.cpp \ $$BASE_DIR/src/widget/wnumberpos.cpp \ $$BASE_DIR/src/widget/wnumberrate.cpp \ -$$BASE_DIR/src/widget/woverview.cpp \ -$$BASE_DIR/src/widget/wpixmapstore.cpp \ -$$BASE_DIR/src/widget/wpreparecratestableview.cpp \ -$$BASE_DIR/src/widget/wpreparelibrarytableview.cpp \ +$$BASE_DIR/src/widget/wknob.cpp \ +$$BASE_DIR/src/widget/wdisplay.cpp \ +$$BASE_DIR/src/widget/wvumeter.cpp \ $$BASE_DIR/src/widget/wpushbutton.cpp \ -$$BASE_DIR/src/widget/wsearchlineedit.cpp \ -$$BASE_DIR/src/widget/wskincolor.cpp \ $$BASE_DIR/src/widget/wslidercomposed.cpp \ $$BASE_DIR/src/widget/wslider.cpp \ $$BASE_DIR/src/widget/wstatuslight.cpp \ +$$BASE_DIR/src/widget/woverview.cpp \ +$$BASE_DIR/src/widget/wspinny.cpp \ +$$BASE_DIR/src/widget/wskincolor.cpp \ +$$BASE_DIR/src/widget/wabstractcontrol.cpp \ +$$BASE_DIR/src/widget/wsearchlineedit.cpp \ +$$BASE_DIR/src/widget/wpixmapstore.cpp \ +$$BASE_DIR/src/widget/wimagestore.cpp \ +$$BASE_DIR/src/widget/hexspinbox.cpp \ +$$BASE_DIR/src/widget/wtrackproperty.cpp \ +$$BASE_DIR/src/widget/wtime.cpp \ +$$BASE_DIR/src/mathstuff.cpp \ +$$BASE_DIR/src/rotary.cpp \ +$$BASE_DIR/src/widget/wtracktableview.cpp \ $$BASE_DIR/src/widget/wtracktableviewheader.cpp \ -$$BASE_DIR/src/widget/wvisualsimple.cpp \ -$$BASE_DIR/src/widget/wvumeter.cpp \ +$$BASE_DIR/src/widget/wlibrarysidebar.cpp \ +$$BASE_DIR/src/widget/wlibrary.cpp \ +$$BASE_DIR/src/widget/wlibrarytableview.cpp \ +$$BASE_DIR/src/widget/wpreparelibrarytableview.cpp \ +$$BASE_DIR/src/widget/wpreparecratestableview.cpp \ +$$BASE_DIR/src/widget/wlibrarytextbrowser.cpp \ +$$BASE_DIR/src/library/preparecratedelegate.cpp \ +$$BASE_DIR/src/library/trackcollection.cpp \ +$$BASE_DIR/src/library/basesqltablemodel.cpp \ +$$BASE_DIR/src/library/basetrackcache.cpp \ +$$BASE_DIR/src/library/librarytablemodel.cpp \ +$$BASE_DIR/src/library/searchqueryparser.cpp \ +$$BASE_DIR/src/library/preparelibrarytablemodel.cpp \ +$$BASE_DIR/src/library/missingtablemodel.cpp \ +$$BASE_DIR/src/library/hiddentablemodel.cpp \ +$$BASE_DIR/src/library/proxytrackmodel.cpp \ +$$BASE_DIR/src/library/playlisttablemodel.cpp \ +$$BASE_DIR/src/library/libraryfeature.cpp \ +$$BASE_DIR/src/library/preparefeature.cpp \ +$$BASE_DIR/src/library/autodjfeature.cpp \ +$$BASE_DIR/src/library/mixxxlibraryfeature.cpp \ +$$BASE_DIR/src/library/baseplaylistfeature.cpp \ +$$BASE_DIR/src/library/playlistfeature.cpp \ +$$BASE_DIR/src/library/setlogfeature.cpp \ +$$BASE_DIR/src/library/browse/browsetablemodel.cpp \ +$$BASE_DIR/src/library/browse/browsethread.cpp \ +$$BASE_DIR/src/library/browse/browsefeature.cpp \ +$$BASE_DIR/src/library/browse/foldertreemodel.cpp \ +$$BASE_DIR/src/library/recording/recordingfeature.cpp \ +$$BASE_DIR/src/dlgrecording.cpp \ +$$BASE_DIR/src/recording/recordingmanager.cpp \ +# External Library Features +$$BASE_DIR/src/library/baseexternallibraryfeature.cpp \ +$$BASE_DIR/src/library/baseexternaltrackmodel.cpp \ +$$BASE_DIR/src/library/baseexternalplaylistmodel.cpp \ +$$BASE_DIR/src/library/rhythmbox/rhythmboxfeature.cpp \ +$$BASE_DIR/src/library/itunes/itunesfeature.cpp \ +$$BASE_DIR/src/library/traktor/traktorfeature.cpp \ +$$BASE_DIR/src/library/cratefeature.cpp \ +$$BASE_DIR/src/library/sidebarmodel.cpp \ +$$BASE_DIR/src/library/libraryscanner.cpp \ +$$BASE_DIR/src/library/libraryscannerdlg.cpp \ +$$BASE_DIR/src/library/legacylibraryimporter.cpp \ +$$BASE_DIR/src/library/library.cpp \ +$$BASE_DIR/src/library/searchthread.cpp \ +$$BASE_DIR/src/library/dao/autodjcratesdao.cpp \ +$$BASE_DIR/src/library/dao/cratedao.cpp \ +$$BASE_DIR/src/library/cratetablemodel.cpp \ +$$BASE_DIR/src/library/dao/cuedao.cpp \ +$$BASE_DIR/src/library/dao/cue.cpp \ +$$BASE_DIR/src/library/dao/trackdao.cpp \ +$$BASE_DIR/src/library/dao/playlistdao.cpp \ +$$BASE_DIR/src/library/dao/libraryhashdao.cpp \ +$$BASE_DIR/src/library/dao/settingsdao.cpp \ +$$BASE_DIR/src/library/dao/analysisdao.cpp \ +$$BASE_DIR/src/library/librarycontrol.cpp \ +$$BASE_DIR/src/library/schemamanager.cpp \ +$$BASE_DIR/src/library/songdownloader.cpp \ +$$BASE_DIR/src/library/starrating.cpp \ +$$BASE_DIR/src/library/stardelegate.cpp \ +$$BASE_DIR/src/library/stareditor.cpp \ +$$BASE_DIR/src/library/previewbuttondelegate.cpp \ +$$BASE_DIR/src/audiotagger.cpp \ +$$BASE_DIR/src/library/treeitemmodel.cpp \ +$$BASE_DIR/src/library/treeitem.cpp \ +$$BASE_DIR/src/xmlparse.cpp \ +$$BASE_DIR/src/library/parser.cpp \ +$$BASE_DIR/src/library/parserpls.cpp \ +$$BASE_DIR/src/library/parserm3u.cpp \ +$$BASE_DIR/src/library/parsercsv.cpp \ +$$BASE_DIR/src/bpm/bpmscheme.cpp \ +$$BASE_DIR/src/soundsourceproxy.cpp \ $$BASE_DIR/src/widget/wwaveformviewer.cpp \ -$$BASE_DIR/src/widget/wwidget.cpp \ -$$BASE_DIR/src/windowkaiser.cpp \ -$$BASE_DIR/src/wtracktableview.cpp \ -$$BASE_DIR/src/xmlparse.cpp +$$BASE_DIR/src/waveform/waveform.cpp \ +$$BASE_DIR/src/waveform/waveformfactory.cpp \ +$$BASE_DIR/src/waveform/waveformwidgetfactory.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformwidgetrenderer.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformrendererabstract.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformrenderbackground.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformrendermark.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformrendermarkrange.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformrenderbeat.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformrendererendoftrack.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformrendererpreroll.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformrendererfilteredsignal.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformrendererhsv.cpp \ +$$BASE_DIR/src/waveform/renderers/qtwaveformrendererfilteredsignal.cpp \ +$$BASE_DIR/src/waveform/renderers/qtwaveformrenderersimplesignal.cpp \ +$$BASE_DIR/src/waveform/renderers/glwaveformrendererfilteredsignal.cpp \ +$$BASE_DIR/src/waveform/renderers/glwaveformrenderersimplesignal.cpp \ +$$BASE_DIR/src/waveform/renderers/glslwaveformrenderersignal.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformsignalcolors.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformrenderersignalbase.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformmark.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformmarkset.cpp \ +$$BASE_DIR/src/waveform/renderers/waveformmarkrange.cpp \ +$$BASE_DIR/src/waveform/widgets/waveformwidgetabstract.cpp \ +$$BASE_DIR/src/waveform/widgets/emptywaveformwidget.cpp \ +$$BASE_DIR/src/waveform/widgets/softwarewaveformwidget.cpp \ +$$BASE_DIR/src/waveform/widgets/hsvwaveformwidget.cpp \ +$$BASE_DIR/src/waveform/widgets/qtwaveformwidget.cpp \ +$$BASE_DIR/src/waveform/widgets/qtsimplewaveformwidget.cpp \ +$$BASE_DIR/src/waveform/widgets/glwaveformwidget.cpp \ +$$BASE_DIR/src/waveform/widgets/glsimplewaveformwidget.cpp \ +$$BASE_DIR/src/waveform/widgets/glslwaveformwidget.cpp \ +$$BASE_DIR/src/skin/imginvert.cpp \ +$$BASE_DIR/src/skin/imgloader.cpp \ +$$BASE_DIR/src/skin/imgcolor.cpp \ +$$BASE_DIR/src/skin/skinloader.cpp \ +$$BASE_DIR/src/skin/legacyskinparser.cpp \ +$$BASE_DIR/src/skin/colorschemeparser.cpp \ +$$BASE_DIR/src/skin/propertybinder.cpp \ +$$BASE_DIR/src/skin/tooltips.cpp \ +$$BASE_DIR/src/sampleutil.cpp \ +$$BASE_DIR/src/trackinfoobject.cpp \ +$$BASE_DIR/src/track/beatgrid.cpp \ +$$BASE_DIR/src/track/beatmap.cpp \ +$$BASE_DIR/src/track/beatfactory.cpp \ +$$BASE_DIR/src/track/beatutils.cpp \ +$$BASE_DIR/src/baseplayer.cpp \ +$$BASE_DIR/src/basetrackplayer.cpp \ +$$BASE_DIR/src/deck.cpp \ +$$BASE_DIR/src/sampler.cpp \ +$$BASE_DIR/src/previewdeck.cpp \ +$$BASE_DIR/src/playermanager.cpp \ +$$BASE_DIR/src/samplerbank.cpp \ +$$BASE_DIR/src/sounddevice.cpp \ +$$BASE_DIR/src/sounddeviceportaudio.cpp \ +$$BASE_DIR/src/soundmanager.cpp \ +$$BASE_DIR/src/soundmanagerconfig.cpp \ +$$BASE_DIR/src/soundmanagerutil.cpp \ +$$BASE_DIR/src/dlgprefrecord.cpp \ +$$BASE_DIR/src/playerinfo.cpp \ +$$BASE_DIR/src/recording/enginerecord.cpp \ +$$BASE_DIR/src/recording/encoder.cpp \ +$$BASE_DIR/src/segmentation.cpp \ +$$BASE_DIR/src/tapfilter.cpp \ +$$BASE_DIR/src/util/pa_ringbuffer.c \ +$$BASE_DIR/src/util/sleepableqthread.cpp \ +$$BASE_DIR/src/util/statsmanager.cpp \ +$$BASE_DIR/src/util/stat.cpp \ +$$BASE_DIR/src/util/timer.cpp \ +$$BASE_DIR/src/util/performancetimer.cpp # Soundtouch -INCLUDEPATH += $$BASE_DIR/lib/soundtouch-1.4.1 -SOURCES += $$BASE_DIR/lib/soundtouch-1.4.1/SoundTouch.cpp \ - $$BASE_DIR/lib/soundtouch-1.4.1/TDStretch.cpp \ - $$BASE_DIR/lib/soundtouch-1.4.1/RateTransposer.cpp \ - $$BASE_DIR/lib/soundtouch-1.4.1/AAFilter.cpp \ - $$BASE_DIR/lib/soundtouch-1.4.1/FIFOSampleBuffer.cpp \ - $$BASE_DIR/lib/soundtouch-1.4.1/FIRFilter.cpp \ - $$BASE_DIR/lib/soundtouch-1.4.1/PeakFinder.cpp \ - $$BASE_DIR/lib/soundtouch-1.4.1/BPMDetect.cpp \ - $$BASE_DIR/lib/soundtouch-1.4.1/cpu_detect_x86_gcc.cpp +INCLUDEPATH += $$BASE_DIR/lib/soundtouch-1.6.0 +SOURCES += $$BASE_DIR/src/engine/enginebufferscalest.cpp \ + $$BASE_DIR/lib/soundtouch-1.6.0/SoundTouch.cpp \ + $$BASE_DIR/lib/soundtouch-1.6.0/TDStretch.cpp \ + $$BASE_DIR/lib/soundtouch-1.6.0/RateTransposer.cpp \ + $$BASE_DIR/lib/soundtouch-1.6.0/AAFilter.cpp \ + $$BASE_DIR/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp \ + $$BASE_DIR/lib/soundtouch-1.6.0/FIRFilter.cpp \ + $$BASE_DIR/lib/soundtouch-1.6.0/PeakFinder.cpp \ + $$BASE_DIR/lib/soundtouch-1.6.0/BPMDetect.cpp \ + $$BASE_DIR/lib/soundtouch-1.6.0/cpu_detect_x86_gcc.cpp # Fidlib SOURCES += $$BASE_DIR/lib/fidlib-0.9.10/fidlib.c @@ -609,25 +750,34 @@ win32-g++ { # ReplayGain -SOURCES += $$BASE_DIR/lib/replaygain/replaygain_analysis.c +SOURCES += $$BASE_DIR/lib/replaygain/replaygain.cpp FORMS += \ +$$BASE_DIR/src/controllers/dlgcontrollerlearning.ui \ +$$BASE_DIR/src/controllers/dlgprefcontrollerdlg.ui \ +$$BASE_DIR/src/controllers/dlgprefmappablecontrollerdlg.ui \ +$$BASE_DIR/src/controllers/dlgprefnocontrollersdlg.ui \ $$BASE_DIR/src/dlgaboutdlg.ui \ $$BASE_DIR/src/dlgautodj.ui \ -$$BASE_DIR/src/dlgmidilearning.ui \ +$$BASE_DIR/src/dlgbpmschemedlg.ui \ +$$BASE_DIR/src/dlghidden.ui \ +$$BASE_DIR/src/dlglibraryscanner.ui \ +$$BASE_DIR/src/dlgmissing.ui \ +$$BASE_DIR/src/dlgplugindownloader.ui \ +$$BASE_DIR/src/dlgprefbpmdlg.ui \ $$BASE_DIR/src/dlgprefcontrolsdlg.ui \ $$BASE_DIR/src/dlgprefcrossfaderdlg.ui \ $$BASE_DIR/src/dlgprefeqdlg.ui \ $$BASE_DIR/src/dlgpreferencesdlg.ui \ -$$BASE_DIR/src/dlgprefmidibindingsdlg.ui \ -$$BASE_DIR/src/dlgprefnomididlg.ui \ +$$BASE_DIR/src/dlgprefnovinyldlg.ui \ $$BASE_DIR/src/dlgprefplaylistdlg.ui \ -$$BASE_DIR/src/dlgprefrecorddlg.ui \ +$$BASE_DIR/src/dlgprefreplaygaindlg.ui \ $$BASE_DIR/src/dlgprefsounddlg.ui \ +$$BASE_DIR/src/dlgprefsounditem.ui \ $$BASE_DIR/src/dlgprefvinyldlg.ui \ $$BASE_DIR/src/dlgprepare.ui \ -$$BASE_DIR/src/dlgtrackinfo.ui \ -$$BASE_DIR/src/script/scriptstudio.ui +$$BASE_DIR/src/dlgrecording.ui \ +$$BASE_DIR/src/dlgtrackinfo.ui RESOURCES += $$BASE_DIR/src/../res/mixxx.qrc @@ -676,24 +826,30 @@ macx { } win32 { DEFINES += __WINMIDI__ - HEADERS += $$BASE_DIR/src/midiobjectwin.h - SOURCES += $$BASE_DIR/src/midiobjectwin.cpp - LIBS += $$BASE_DIR/../mixxx-winlib/libsndfile-1.dll \ - $$BASE_DIR/../mixxx-winlib/portaudio_x86.dll \ - $$BASE_DIR/../mixxx-winlib/libmad.a \ # libmad-0.15.1b - $$BASE_DIR/../mixxx-winlib/libid3tag.a \ # libid3tag-0.15.1b - $$BASE_DIR/../mixxx-winlib/libvorbisfile.dll \ - $$BASE_DIR/../mixxx-winlib/libvorbis.dll \ -# $$BASE_DIR/../mixxx-winlib/libfftw3-3.dll \ - $$BASE_DIR/../mixxx-winlib/libogg.dll \ - -lwinmm - INCLUDEPATH += $$BASE_DIR/../mixxx-winlib + CONFIG(portmidi) { + LIBS += -lportmidi_s + } + LIBS += \ + -L$$BASE_DIR/../mixxx-mingw/lib -lFLAC -logg -lvorbis -lvorbisenc \ + -lvorbisfile -lz -lprotobuf-lite -lsndfile -lportaudio.dll -ltag.dll \ + -lwinmm -lws2_32 -lmingw32 + INCLUDEPATH += $$BASE_DIR/../mixxx-mingw/include } + +CONFIG(portmidi) { + DEFINES += __PORTMIDI__ + HEADERS += \ + $$BASE_DIR/src/controllers/midi/portmidicontroller.h \ + $$BASE_DIR/src/controllers/midi/portmidienumerator.h + SOURCES += \ + $$BASE_DIR/src/controllers/midi/portmidienumerator.cpp \ + $$BASE_DIR/src/controllers/midi/portmidicontroller.cpp +} + CONFIG(ladspa) { DEFINES += __LADSPA__ HEADERS += $$BASE_DIR/src/engine/engineladspa.h \ $$BASE_DIR/src/dlgladspa.h \ - $$BASE_DIR/src/ladspaview.h \ $$BASE_DIR/src/ladspa/ladspacontrol.h \ $$BASE_DIR/src/ladspa/ladspainstance.h \ $$BASE_DIR/src/ladspa/ladspainstancemono.h \ @@ -705,7 +861,8 @@ CONFIG(ladspa) { $$BASE_DIR/src/ladspa/ladspapresetinstance.h \ $$BASE_DIR/src/ladspa/ladspapresetknob.h \ $$BASE_DIR/src/ladspa/ladspapresetmanager.h \ - $$BASE_DIR/src/ladspa/ladspapresetslot.h + $$BASE_DIR/src/ladspa/ladspapresetslot.h \ + $$BASE_DIR/src/ladspaview.h SOURCES += $$BASE_DIR/src/engine/engineladspa.cpp \ $$BASE_DIR/src/dlgladspa.cpp \ $$BASE_DIR/src/ladspaview.cpp \ @@ -732,11 +889,15 @@ CONFIG(script) { CONFIG(Vamp) { DEFINES += __VAMP__ INCLUDEPATH += $$BASE_DIR/lib/vamp -HEADERS += $$BASE_DIR/src/vamp/vampanalyser.h \ +HEADERS += + $$BASE_DIR/src/vamp/vamppluginloader.h \ + $$BASE_DIR/src/dlgprefbeats.h \ + $$BASE_DIR/src/vamp/vampanalyser.h \ + $$UI_DIR/ui_dlgprefbeatsdlg.h \ $$BASE_DIR/src/analyservamptest.h \ $$BASE_DIR/src/analyservampkeytest.h \ $$BASE_DIR/lib/vamp/vamp/vamp.h \ - $$BASE_DIR/lib/vamp/vamp-hostsdk/hostguard.h \ + $$BASE_DIR/lib/vamp/vamp-hostsdk/hostguard.h SOURCES += $$BASE_DIR/src/vamp/vampanalyser.cpp \ $$BASE_DIR/src/analyservamptest.cpp \ $$BASE_DIR/src/analyservampkeytest.cpp \ @@ -750,6 +911,8 @@ SOURCES += $$BASE_DIR/src/vamp/vampanalyser.cpp \ $$BASE_DIR/lib/vamp/src/vamp-hostsdk/RealTime.cpp \ $$BASE_DIR/lib/vamp/src/vamp-sdk/PluginAdapter.cpp \ $$BASE_DIR/lib/vamp/src/vamp-sdk/RealTime.cpp +FORMS += \ + $$BASE_DIR/src/dlgprefbeatsdlg.ui } CONFIG(tonal) { @@ -797,25 +960,44 @@ CONFIG(m4a) { CONFIG(vinylcontrol) { DEFINES += __VINYLCONTROL__ HEADERS += \ - $$BASE_DIR/lib/scratchlib/DAnalyse.h \ - $$BASE_DIR/lib/xwax/timecoder.h + $$BASE_DIR/lib/xwax/timecoder.h \ + $$BASE_DIR/src/dlgprefnovinyl.h \ + $$BASE_DIR/src/dlgprefvinyl.h \ + $$BASE_DIR/src/engine/enginevinylsoundemu.h \ + $$BASE_DIR/src/engine/vinylcontrolcontrol.h \ + $$BASE_DIR/src/vinylcontrol/steadypitch.h \ + $$BASE_DIR/src/vinylcontrol/vinylcontrol.h \ + $$BASE_DIR/src/vinylcontrol/vinylcontrolmanager.h \ + $$BASE_DIR/src/vinylcontrol/vinylcontrolproxy.h \ + $$BASE_DIR/src/vinylcontrol/vinylcontrolsignalwidget.h \ + $$BASE_DIR/src/vinylcontrol/vinylcontrolxwax.h SOURCES += \ - $$BASE_DIR/lib/scratchlib/DAnalyse.cpp + $$BASE_DIR/src/vinylcontrol/vinylcontrol.cpp \ + $$BASE_DIR/src/vinylcontrol/vinylcontrolproxy.cpp \ + $$BASE_DIR/src/vinylcontrol/vinylcontrolxwax.cpp \ + $$BASE_DIR/src/dlgprefvinyl.cpp \ + $$BASE_DIR/src/vinylcontrol/vinylcontrolsignalwidget.cpp \ + $$BASE_DIR/src/vinylcontrol/vinylcontrolmanager.cpp \ + $$BASE_DIR/src/vinylcontrol/steadypitch.cpp \ + $$BASE_DIR/src/engine/vinylcontrolcontrol.cpp - INCLUDEPATH += $$BASE_DIR/lib/scratchlib \ - $$BASE_DIR/lib/xwax - win32:SOURCES += $$BASE_DIR/lib/xwax/timecoder_win32.c + INCLUDEPATH += $$BASE_DIR/lib/xwax + win32:SOURCES += $$BASE_DIR/lib/xwax/timecoder_win32.cpp + win32:SOURCES += $$BASE_DIR/lib/xwax/lut.cpp !win32:SOURCES += $$BASE_DIR/lib/xwax/timecoder.c + !win32:SOURCES += $$BASE_DIR/lib/xwax/lut.c } !CONFIG(hifieq):CXXFLAGS += -D__LOFI__ \ -D__NO_INTTYPES__ CONFIG(shoutcast) { DEFINES += __SHOUTCAST__ HEADERS += $$BASE_DIR/src/dlgprefshoutcast.h \ - $$BASE_DIR/src/encodervorbis.h \ - $$BASE_DIR/src/engine/engineshoutcast.h + $$BASE_DIR/src/recording/encodermp3.h \ + $$BASE_DIR/src/recording/encodervorbis.h \ + $$BASE_DIR/src/engine/engineshoutcast.h \ + $$BASE_DIR/src/shoutcast/defs_shoutcast.h SOURCES += $$BASE_DIR/src/dlgprefshoutcast.cpp \ - $$BASE_DIR/src/encodervorbis.cpp \ + $$BASE_DIR/src/recording/encodervorbis.cpp \ $$BASE_DIR/src/engine/engineshoutcast.cpp LIBS += shout \ vorbisenc @@ -855,11 +1037,68 @@ CONFIG(ffmpeg) { -logg } +CONFIG(hid) { + HIDAPI_INTERNAL_PATH = $$BASE_DIR/../mixxx-winlib/lib/hidapi-0.8.0-pre + DEFINES += __HID__ + SOURCES += \ + $$BASE_DIR/src/controllers/hid/hidcontroller.cpp \ + $$BASE_DIR/src/controllers/hid/hidenumerator.cpp \ + $$BASE_DIR/src/controllers/hid/hidcontrollerpresetfilehandler.cpp + HEADERS += \ + $$BASE_DIR/src/controllers/hid/hidblacklist.h \ + $$BASE_DIR/src/controllers/hid/hidcontroller.h \ + $$BASE_DIR/src/controllers/hid/hidcontrollerpreset.h \ + $$BASE_DIR/src/controllers/hid/hidcontrollerpresetfilehandler.h \ + $$BASE_DIR/src/controllers/hid/hidenumerator.h + win32 { + SOURCES += $$HIDAPI_INTERNAL_PATH/windows/hid.c + } macx { + SOURCES += $$HIDAPI_INTERNAL_PATH/mac/hid.c + } else { + SOURCES += $$HIDAPI_INTERNAL_PATH/linux/hid-libusb.c + } +} + +CONFIG(bulk) { + DEFINES += __BULK__ + SOURCES += \ + $$BASE_DIR/src/controllers/bulk/bulkcontroller.cpp \ + $$BASE_DIR/src/controllers/bulk/bulkenumerator.cpp + HEADERS += \ + $$BASE_DIR/src/controllers/bulk/bulkcontroller.h \ + $$BASE_DIR/src/controllers/bulk/bulkenumerator.h \ + $$BASE_DIR/src/controllers/bulk/bulksupported.h + !CONFIG(hid) { + SOURCES += \ + $$BASE_DIR/src/controllers/hid/hidcontrollerpresetfilehandler.cpp + } +} + +CONFIG(PromoTracks) { + DEFINES += __PROMO__ + HEADERS += \ + $$BASE_DIR/src/library/promotracksfeature.h \ + $$BASE_DIR/src/library/bundledsongswebview.h \ + $$BASE_DIR/src/library/featuredartistswebview.h + SOURCES += \ + $$BASE_DIR/src/library/promotracksfeature.cpp \ + $$BASE_DIR/src/library/bundledsongswebview.cpp \ + $$BASE_DIR/src/library/featuredartistswebview.cpp +} + +CONFIG(hss1394) { + HEADERS += \ + $$BASE_DIR/src/controllers/midi/hss1394controller.h \ + $$BASE_DIR/src/controllers/midi/hss1394enumerator.h +} + # Copy Windows dependencies to DESTDIR. win32 { !exists($$DESTDIR):system( mkdir \"$$replace(DESTDIR, /,$$DIR_SEPARATOR)\" ) # MinGW run-time - DLLs += $$(QTDIR)/../mingw/bin/mingwm10.dll $$(QTDIR)/../mingw/bin/libexpat-1.dll + DLLs += $$(QTDIR)/../mingw/bin/mingwm10.dll \ + $$(QTDIR)/../mingw/bin/libstdc++-6.dll \ + $$(QTDIR)/../mingw/bin/libexpat-1.dll CONFIG(m4a): DLLs += $$BASE_DIR/../mixxx-winlib/mp4v2/mingw-bin/libmp4v2-0.dll \ $$BASE_DIR/../mixxx-winlib/libfaad2.dll # Qt4 libraries @@ -884,14 +1123,15 @@ win32 { $$(QTDIR)/bin/QtOpenGL4.dll \ $$(QTDIR)/bin/QtScript4.dll } - # mixxx-winlibs DLLs - DLLs += $$BASE_DIR/../mixxx-winlib/libogg.dll \ - $$BASE_DIR/../mixxx-winlib/portaudio_x86.dll \ -# $$BASE_DIR/../mixxx-winlib/portaudio.dll \ - $$BASE_DIR/../mixxx-winlib/libsndfile-1.dll \ -# $$BASE_DIR/../mixxx-winlib/sndfile.dll \ - $$BASE_DIR/../mixxx-winlib/libvorbis.dll \ - $$BASE_DIR/../mixxx-winlib/libvorbisfile.dll + # mixxx-mingw DLLs + DLLs += \ + $$BASE_DIR/../mixxx-mingw/lib/libogg-0.dll \ + $$BASE_DIR/../mixxx-mingw/lib/libportaudio-2.dll \ + $$BASE_DIR/../mixxx-mingw/lib/libprotobuf-lite-8.dll \ + $$BASE_DIR/../mixxx-mingw/lib/libsndfile-1.dll \ + $$BASE_DIR/../mixxx-mingw/lib/libtag.dll \ + $$BASE_DIR/../mixxx-mingw/lib/libvorbis-0.dll \ + $$BASE_DIR/../mixxx-mingw/lib/libvorbisfile-3.dll # check if DLL exists at target, if not copy it there for(DLL, DLLs):!exists( $$DESTDIR/$$basename(DLL) ) { @@ -922,9 +1162,9 @@ win32 { # SH Usage: make -f Makefile.Debug nsis nsis.target = nsis exists($$BUILDDIR/gdb.exe):INCLUDE_GDB = -DINCLUDE_GDB - nsis.commands = \"$$(PROGRAMFILES)\NSIS\makensis.exe\" -NOCD -DGCC -DBINDIR=\"$$BUILDDIR\" -DBUILD_REV=\"$$BZR_BRANCH_NAME-$$BZR_REVNO\" $$INCLUDE_GDB build\\\\nsis\\\\Mixxx.nsi + nsis.commands = \"$$(PROGRAMFILES)\\\\NSIS\\\\makensis.exe\" -NOCD -DGCC -DBINDIR=\"$$BUILDDIR\" -DBUILD_REV=\"$$BZR_BRANCH_NAME-$$BZR_REVNO\" $$INCLUDE_GDB build\\\\nsis\\\\Mixxx.nsi # nsis.depends = - QMAKE_EXTRA_UNIX_TARGETS += nsis + QMAKE_EXTRA_TARGETS += nsis } # build.h @@ -934,3 +1174,9 @@ BUILD_REV += - built via qmake/Qt Creator message( Generating src$${DIR_SEPARATOR}build.h with contents: $${LITERAL_HASH}define BUILD_REV '"'$$BUILD_REV'"' ) system( echo $${LITERAL_HASH}define BUILD_REV '"'$$BUILD_REV'"'>src$${DIR_SEPARATOR}build.h ) system( echo $${LITERAL_HASH}define BUILD_FLAGS '"'$$replace(DEFINES,__,)'"'>>src$${DIR_SEPARATOR}build.h ) + +PROTOS += \ + src/proto/waveform.proto \ + src/proto/skin.proto \ + src/proto/beats.proto +include(protobuf.pri) diff --git a/mixxx/build/qtcreator/protobuf.pri b/mixxx/build/qtcreator/protobuf.pri new file mode 100644 index 000000000000..e2370d2c6cf4 --- /dev/null +++ b/mixxx/build/qtcreator/protobuf.pri @@ -0,0 +1,39 @@ +# +# Qt qmake integration with Google Protocol Buffers compiler protoc +# +# To compile protocol buffers with qt qmake, specify PROTOS variable and +# include this file +# +# Example: +# LIBS += /usr/local/lib/libprotobuf.so +# PROTOS = a.proto b.proto +# include(protobuf.pri) +# +# By default protoc looks for .proto files (including the imported ones) in +# the current directory where protoc is run. If you need to include additional +# paths specify the PROTOPATH variable +# +# Found at http://www.kieltech.de/uweswiki/Google%20Protocol%20Buffers +# + +PROTOPATH += . +#PROTOPATH += $$BASE_DIR/src/proto +PROTOPATH += ..\mixxx-winsrc\src\proto +PROTOPATHS = +for(p, PROTOPATH):PROTOPATHS += --proto_path=$${p} + +protobuf_decl.name = protobuf header +protobuf_decl.input = PROTOS +protobuf_decl.output = ${QMAKE_FILE_BASE}.pb.h +protobuf_decl.commands = protoc --cpp_out="." $${PROTOPATHS} ${QMAKE_FILE_NAME} +protobuf_decl.variable_out = GENERATED_FILES +QMAKE_EXTRA_COMPILERS += protobuf_decl + +protobuf_impl.name = protobuf implementation +protobuf_impl.input = PROTOS +protobuf_impl.output = ${QMAKE_FILE_BASE}.pb.cc +protobuf_impl.depends = ${QMAKE_FILE_BASE}.pb.h +protobuf_impl.commands = $$escape_expand(\n) +protobuf_impl.variable_out = GENERATED_SOURCES +QMAKE_EXTRA_COMPILERS += protobuf_impl + diff --git a/mixxx/lib/fidlib-0.9.10/fidlib.c b/mixxx/lib/fidlib-0.9.10/fidlib.c index 690be05e3790..27166e6a2873 100644 --- a/mixxx/lib/fidlib-0.9.10/fidlib.c +++ b/mixxx/lib/fidlib-0.9.10/fidlib.c @@ -259,10 +259,10 @@ extern FidFilter *mkfilter(char *, ...); // // Macro for local inline routines that shouldn't be visible externally -#ifdef T_MSVC +#if defined(T_MINGW) || defined(T_MSVC) #define STATIC_INLINE static __inline #else - #define STATIC_INLINE static inline + #define STATIC_INLINE static inline #endif // MinGW and MSVC fixes diff --git a/mixxx/lib/xwax/lut.cpp b/mixxx/lib/xwax/lut.cpp index 30dadfd95e3e..73c29f897997 100644 --- a/mixxx/lib/xwax/lut.cpp +++ b/mixxx/lib/xwax/lut.cpp @@ -17,6 +17,8 @@ * */ +extern "C" { + #include #include @@ -43,7 +45,7 @@ int lut_init(struct lut *lut, int nslots) bytes = sizeof(struct slot) * nslots + sizeof(slot_no_t) * hashes; fprintf(stderr, "Lookup table has %d hashes to %d slots" - " (%d slots per hash, %zuKb)\n", + " (%d slots per hash, %u Kb)\n", hashes, nslots, nslots / hashes, bytes / 1024); lut->slot = (struct slot*)malloc(sizeof(struct slot) * nslots); @@ -109,3 +111,5 @@ unsigned int lut_lookup(struct lut *lut, unsigned int timecode) return (unsigned)-1; } + +}; // extern "C" diff --git a/mixxx/lib/xwax/timecoder.h b/mixxx/lib/xwax/timecoder.h index fda86fff5ec3..4fae6ea79b21 100644 --- a/mixxx/lib/xwax/timecoder.h +++ b/mixxx/lib/xwax/timecoder.h @@ -29,6 +29,10 @@ #define TIMECODER_CHANNELS 2 +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + typedef unsigned int bits_t; struct timecode_def { @@ -142,4 +146,8 @@ static inline double timecoder_revs_per_sec(struct timecoder *tc) return (33.0 + 1.0 / 3) * tc->speed / 60; } +#ifdef __cplusplus +}; +#endif // __cplusplus + #endif diff --git a/mixxx/lib/xwax/timecoder_win32.cpp b/mixxx/lib/xwax/timecoder_win32.cpp index 2059ebdd53af..346766ddc7f4 100755 --- a/mixxx/lib/xwax/timecoder_win32.cpp +++ b/mixxx/lib/xwax/timecoder_win32.cpp @@ -17,6 +17,8 @@ * */ +extern "C" { + #include #include #include @@ -613,3 +615,5 @@ signed int timecoder_get_position(struct timecoder *tc, double *when) return -1; } + +}; // extern "C" diff --git a/mixxx/src/SConscript b/mixxx/src/SConscript index 22e3a4ce928b..8dc5b3071983 100644 --- a/mixxx/src/SConscript +++ b/mixxx/src/SConscript @@ -38,11 +38,15 @@ if build.platform_is_windows: str_list.append('#define VER_FILEVERSION ') # Remove anything after ~ or - in the version number and replace the dots with commas str_list.append(mixxx_version.partition('~')[0].partition('-')[0].replace('.',',')) - str_list.append(','+str(bazaar_revision)+'\n') + if bazaar_revision: + str_list.append(','+str(bazaar_revision)) + str_list.append('\n') str_list.append('#define VER_PRODUCTVERSION ') str_list.append(mixxx_version.partition('~')[0].partition('-')[0].replace('.',',')) - str_list.append(','+str(bazaar_revision)+'\n') + if bazaar_revision: + str_list.append(','+str(bazaar_revision)) + str_list.append('\n') import datetime now = datetime.datetime.now() @@ -201,33 +205,33 @@ else: dll_files = list() # dll_files += on the next line required dll_files to exist if build.msvcdebug: - dll_files += Split("""$QTDIR/lib/QtWebKitd4.dll""") + dll_files += Split("""$QTDIR/bin/QtWebKitd4.dll""") else: - dll_files += Split("""$QTDIR/lib/QtWebKit4.dll""") + dll_files += Split("""$QTDIR/bin/QtWebKit4.dll""") if build.msvcdebug: - dll_files += Split("""$QTDIR/lib/QtCored4.dll - $QTDIR/lib/QtGuid4.dll - $QTDIR/lib/QtNetworkd4.dll - $QTDIR/lib/QtOpenGLd4.dll - $QTDIR/lib/QtSqld4.dll - $QTDIR/lib/QtXmld4.dll - $QTDIR/lib/QtXmlPatternsd4.dll - $QTDIR/lib/QtSvgd4.dll - $QTDIR/lib/phonond4.dll - $QTDIR/lib/QtScriptd4.dll""") + dll_files += Split("""$QTDIR/bin/QtCored4.dll + $QTDIR/bin/QtGuid4.dll + $QTDIR/bin/QtNetworkd4.dll + $QTDIR/bin/QtOpenGLd4.dll + $QTDIR/bin/QtSqld4.dll + $QTDIR/bin/QtXmld4.dll + $QTDIR/bin/QtXmlPatternsd4.dll + $QTDIR/bin/QtSvgd4.dll + $QTDIR/bin/phonond4.dll + $QTDIR/bin/QtScriptd4.dll""") else: # if not int(build.flags['staticlibs']): - dll_files += Split("""$QTDIR/lib/QtCore4.dll - $QTDIR/lib/QtGui4.dll - $QTDIR/lib/QtNetwork4.dll - $QTDIR/lib/QtOpenGL4.dll - $QTDIR/lib/QtSql4.dll - $QTDIR/lib/QtXml4.dll - $QTDIR/lib/QtXmlPatterns4.dll - $QTDIR/lib/QtSvg4.dll - $QTDIR/lib/phonon4.dll - $QTDIR/lib/QtScript4.dll""") + dll_files += Split("""$QTDIR/bin/QtCore4.dll + $QTDIR/bin/QtGui4.dll + $QTDIR/bin/QtNetwork4.dll + $QTDIR/bin/QtOpenGL4.dll + $QTDIR/bin/QtSql4.dll + $QTDIR/bin/QtXml4.dll + $QTDIR/bin/QtXmlPatterns4.dll + $QTDIR/bin/QtSvg4.dll + $QTDIR/bin/phonon4.dll + $QTDIR/bin/QtScript4.dll""") if int(flags.get('sqlitedll', 0)): if build.msvcdebug: diff --git a/mixxx/src/controllers/controllermanager.cpp b/mixxx/src/controllers/controllermanager.cpp index 92627bf275fa..222e9ba7bc99 100644 --- a/mixxx/src/controllers/controllermanager.cpp +++ b/mixxx/src/controllers/controllermanager.cpp @@ -78,7 +78,9 @@ ControllerManager::ControllerManager(ConfigObject* pConfig) m_pPresetInfoManager = new PresetInfoEnumerator(m_pConfig); // Instantiate all enumerators +#ifdef __PORTMIDI__ m_enumerators.append(new PortMidiEnumerator()); +#endif // __PORTMIDI__ #ifdef __HSS1394__ m_enumerators.append(new Hss1394Enumerator()); #endif diff --git a/mixxx/src/library/basesqltablemodel.cpp b/mixxx/src/library/basesqltablemodel.cpp index 9d31be5bd8a4..b9e9824f3783 100644 --- a/mixxx/src/library/basesqltablemodel.cpp +++ b/mixxx/src/library/basesqltablemodel.cpp @@ -157,7 +157,7 @@ QString BaseSqlTableModel::orderByClause() const { } void BaseSqlTableModel::select() { - if (!m_bInitialized) { + if (!m_bInitialized || this->rowCount() == 0) { return; } diff --git a/mixxx/src/library/browse/foldertreemodel.cpp b/mixxx/src/library/browse/foldertreemodel.cpp index 43e1f213252a..91547e46c3c3 100644 --- a/mixxx/src/library/browse/foldertreemodel.cpp +++ b/mixxx/src/library/browse/foldertreemodel.cpp @@ -1,7 +1,7 @@ #if defined (__WINDOWS__) #include -#include -#include +#include +#include #else #include #include diff --git a/mixxx/src/library/treeitemmodel.cpp b/mixxx/src/library/treeitemmodel.cpp index 11b4721f39ec..4681665fdf52 100644 --- a/mixxx/src/library/treeitemmodel.cpp +++ b/mixxx/src/library/treeitemmodel.cpp @@ -140,6 +140,9 @@ void TreeItemModel::setRootItem(TreeItem *item) { * make sure you have initialized */ bool TreeItemModel::insertRows(QList &data, int position, int rows, const QModelIndex &parent) { + if (rows == 0) + return true; + TreeItem *parentItem = getItem(parent); bool success; @@ -151,6 +154,9 @@ bool TreeItemModel::insertRows(QList &data, int position, int rows, c } bool TreeItemModel::removeRows(int position, int rows, const QModelIndex &parent) { + if (rows == 0) + return true; + TreeItem *parentItem = getItem(parent); bool success = true; diff --git a/mixxx/src/sampleutil.cpp b/mixxx/src/sampleutil.cpp index 9654df0824df..111b1e10a6c0 100644 --- a/mixxx/src/sampleutil.cpp +++ b/mixxx/src/sampleutil.cpp @@ -7,8 +7,9 @@ #ifdef __WINDOWS__ #pragma intrinsic(fabs)sc -typedef __int64 int64_t; -typedef __int32 int32_t; +#include +typedef qint64 int64_t; +typedef qint32 int32_t; #endif #include diff --git a/mixxx/src/util/stat.h b/mixxx/src/util/stat.h index 6d86078284de..b7c51e00076f 100644 --- a/mixxx/src/util/stat.h +++ b/mixxx/src/util/stat.h @@ -5,7 +5,7 @@ #include #include -class StatReport; +struct StatReport; class Stat { public: From e1e540e5762d24bd07c4345332dc866f0eadf0b5 Mon Sep 17 00:00:00 2001 From: Steven Boswell Date: Thu, 16 May 2013 12:29:38 -0700 Subject: [PATCH 02/15] Updated the MinGW branch to deal with the latest changes to the trunk. --- mixxx/build/qtcreator/mixxx.pro | 37 ++++++++++++++---------------- mixxx/build/qtcreator/protobuf.pri | 2 +- mixxx/src/analyserbeats.cpp | 9 +++++++- mixxx/src/analyserqueue.cpp | 4 ++++ mixxx/src/dlgprefbeats.cpp | 8 +++++++ mixxx/src/dlgprefbeats.h | 2 ++ mixxx/src/vamp/vampanalyser.h | 5 +++- 7 files changed, 44 insertions(+), 23 deletions(-) diff --git a/mixxx/build/qtcreator/mixxx.pro b/mixxx/build/qtcreator/mixxx.pro index 5de006970788..828287d18eea 100644 --- a/mixxx/build/qtcreator/mixxx.pro +++ b/mixxx/build/qtcreator/mixxx.pro @@ -108,9 +108,8 @@ HEADERS += $$UI_DIR/ui_dlgpreferencesdlg.h \ $$UI_DIR/ui_dlgprefcontrolsdlg.h \ $$UI_DIR/ui_dlgprefeqdlg.h \ $$UI_DIR/ui_dlgprefcrossfaderdlg.h \ - $$UI_DIR/ui_dlgprefbpmdlg.h \ + $$UI_DIR/ui_dlgprefbeatsdlg.h \ $$UI_DIR/ui_dlgprefreplaygaindlg.h \ - $$UI_DIR/ui_dlgbpmschemedlg.h \ $$UI_DIR/ui_dlgprefvinyldlg.h \ $$UI_DIR/ui_dlgprefnovinyldlg.h \ $$UI_DIR/ui_dlgprefrecorddlg.h \ @@ -119,7 +118,6 @@ HEADERS += $$UI_DIR/ui_dlgpreferencesdlg.h \ $$UI_DIR/ui_dlgprepare.h \ $$UI_DIR/ui_dlgautodj.h \ $$UI_DIR/ui_dlgprefsounditem.h \ - $$UI_DIR/ui_dlglibraryscanner.h \ $$UI_DIR/ui_dlgrecording.h \ $$UI_DIR/ui_dlghidden.h \ $$UI_DIR/ui_dlgmissing.h @@ -144,7 +142,6 @@ INCLUDEPATH += src \ HEADERS += \ $$BASE_DIR/src/analyser.h \ $$BASE_DIR/src/analyserbeats.h \ -$$BASE_DIR/src/analyserbpm.h \ $$BASE_DIR/src/analyserqueue.h \ $$BASE_DIR/src/analyserrg.h \ $$BASE_DIR/src/analyserwaveform.h \ @@ -201,10 +198,9 @@ $$BASE_DIR/src/defs_urls.h \ $$BASE_DIR/src/defs_version.h \ $$BASE_DIR/src/dlgabout.h \ $$BASE_DIR/src/dlgautodj.h \ -$$BASE_DIR/src/dlgbpmscheme.h \ $$BASE_DIR/src/dlghidden.h \ $$BASE_DIR/src/dlgmissing.h \ -$$BASE_DIR/src/dlgprefbpm.h \ +$$BASE_DIR/src/dlgprefbeats.h \ $$BASE_DIR/src/dlgprefcontrols.h \ $$BASE_DIR/src/dlgprefcrossfader.h \ $$BASE_DIR/src/dlgprefeq.h \ @@ -241,7 +237,8 @@ $$BASE_DIR/src/engine/enginemicrophone.h \ $$BASE_DIR/src/engine/engineobject.h \ $$BASE_DIR/src/engine/enginepassthrough.h \ $$BASE_DIR/src/engine/enginepregain.h \ -$$BASE_DIR/src/engine/enginesidechain.h \ +$$BASE_DIR/src/engine/sidechain/enginesidechain.h \ +$$BASE_DIR/src/engine/sidechain/enginerecord.h \ $$BASE_DIR/src/engine/enginevinylsoundemu.h \ $$BASE_DIR/src/engine/enginevumeter.h \ $$BASE_DIR/src/engine/engineworker.h \ @@ -268,7 +265,6 @@ $$BASE_DIR/src/library/browse/foldertreemodel.h \ $$BASE_DIR/src/library/cratefeature.h \ $$BASE_DIR/src/library/cratetablemodel.h \ $$BASE_DIR/src/library/dao/analysisdao.h \ -$$BASE_DIR/src/library/dao/autodjcratesdao.h \ $$BASE_DIR/src/library/dao/cratedao.h \ $$BASE_DIR/src/library/dao/cue.h \ $$BASE_DIR/src/library/dao/cuedao.h \ @@ -311,6 +307,8 @@ $$BASE_DIR/src/library/sidebarmodel.h \ $$BASE_DIR/src/library/songdownloader.h \ $$BASE_DIR/src/library/stardelegate.h \ $$BASE_DIR/src/library/stareditor.h \ +$$BASE_DIR/src/library/bpmdelegate.h \ +$$BASE_DIR/src/library/bpmeditor.h \ $$BASE_DIR/src/library/starrating.h \ $$BASE_DIR/src/library/trackcollection.h \ $$BASE_DIR/src/library/trackmodel.h \ @@ -475,12 +473,11 @@ $$BASE_DIR/src/controllers/dlgprefcontroller.cpp \ $$BASE_DIR/src/controllers/dlgprefmappablecontroller.cpp \ $$BASE_DIR/src/controllers/dlgcontrollerlearning.cpp \ $$BASE_DIR/src/controllers/dlgprefnocontrollers.cpp \ +$$BASE_DIR/src/dlgprefbeats.cpp \ $$BASE_DIR/src/dlgprefplaylist.cpp \ $$BASE_DIR/src/dlgprefcontrols.cpp \ -$$BASE_DIR/src/dlgprefbpm.cpp \ $$BASE_DIR/src/dlgprefreplaygain.cpp \ $$BASE_DIR/src/dlgprefnovinyl.cpp \ -$$BASE_DIR/src/dlgbpmscheme.cpp \ $$BASE_DIR/src/dlgabout.cpp \ $$BASE_DIR/src/dlgprefeq.cpp \ $$BASE_DIR/src/dlgprefcrossfader.cpp \ @@ -508,7 +505,7 @@ $$BASE_DIR/src/engine/enginedelay.cpp \ $$BASE_DIR/src/engine/engineflanger.cpp \ $$BASE_DIR/src/engine/enginevumeter.cpp \ $$BASE_DIR/src/engine/enginevinylsoundemu.cpp \ -$$BASE_DIR/src/engine/enginesidechain.cpp \ +$$BASE_DIR/src/engine/sidechain/enginesidechain.cpp \ $$BASE_DIR/src/engine/enginefilterbutterworth8.cpp \ $$BASE_DIR/src/engine/enginexfader.cpp \ $$BASE_DIR/src/engine/enginemicrophone.cpp \ @@ -525,8 +522,8 @@ $$BASE_DIR/src/engine/clockcontrol.cpp \ $$BASE_DIR/src/engine/readaheadmanager.cpp \ $$BASE_DIR/src/cachingreader.cpp \ $$BASE_DIR/src/analyserrg.cpp \ +$$BASE_DIR/src/analyserbeats.cpp \ $$BASE_DIR/src/analyserqueue.cpp \ -$$BASE_DIR/src/analyserbpm.cpp \ $$BASE_DIR/src/analyserwaveform.cpp \ $$BASE_DIR/src/controllers/controller.cpp \ $$BASE_DIR/src/controllers/controllerengine.cpp \ @@ -612,7 +609,7 @@ $$BASE_DIR/src/library/browse/foldertreemodel.cpp \ $$BASE_DIR/src/library/recording/recordingfeature.cpp \ $$BASE_DIR/src/dlgrecording.cpp \ $$BASE_DIR/src/recording/recordingmanager.cpp \ -# External Library Features +$$BASE_DIR/src/engine/sidechain/enginerecord.cpp \ $$BASE_DIR/src/library/baseexternallibraryfeature.cpp \ $$BASE_DIR/src/library/baseexternaltrackmodel.cpp \ $$BASE_DIR/src/library/baseexternalplaylistmodel.cpp \ @@ -626,7 +623,6 @@ $$BASE_DIR/src/library/libraryscannerdlg.cpp \ $$BASE_DIR/src/library/legacylibraryimporter.cpp \ $$BASE_DIR/src/library/library.cpp \ $$BASE_DIR/src/library/searchthread.cpp \ -$$BASE_DIR/src/library/dao/autodjcratesdao.cpp \ $$BASE_DIR/src/library/dao/cratedao.cpp \ $$BASE_DIR/src/library/cratetablemodel.cpp \ $$BASE_DIR/src/library/dao/cuedao.cpp \ @@ -642,6 +638,8 @@ $$BASE_DIR/src/library/songdownloader.cpp \ $$BASE_DIR/src/library/starrating.cpp \ $$BASE_DIR/src/library/stardelegate.cpp \ $$BASE_DIR/src/library/stareditor.cpp \ +$$BASE_DIR/src/library/bpmdelegate.cpp \ +$$BASE_DIR/src/library/bpmeditor.cpp \ $$BASE_DIR/src/library/previewbuttondelegate.cpp \ $$BASE_DIR/src/audiotagger.cpp \ $$BASE_DIR/src/library/treeitemmodel.cpp \ @@ -714,8 +712,9 @@ $$BASE_DIR/src/soundmanagerconfig.cpp \ $$BASE_DIR/src/soundmanagerutil.cpp \ $$BASE_DIR/src/dlgprefrecord.cpp \ $$BASE_DIR/src/playerinfo.cpp \ -$$BASE_DIR/src/recording/enginerecord.cpp \ -$$BASE_DIR/src/recording/encoder.cpp \ +$$BASE_DIR/src/encoder/encoder.cpp \ +$$BASE_DIR/src/encoder/encodermp3.cpp \ +$$BASE_DIR/src/encoder/encodervorbis.cpp \ $$BASE_DIR/src/segmentation.cpp \ $$BASE_DIR/src/tapfilter.cpp \ $$BASE_DIR/src/util/pa_ringbuffer.c \ @@ -759,12 +758,10 @@ $$BASE_DIR/src/controllers/dlgprefmappablecontrollerdlg.ui \ $$BASE_DIR/src/controllers/dlgprefnocontrollersdlg.ui \ $$BASE_DIR/src/dlgaboutdlg.ui \ $$BASE_DIR/src/dlgautodj.ui \ -$$BASE_DIR/src/dlgbpmschemedlg.ui \ $$BASE_DIR/src/dlghidden.ui \ -$$BASE_DIR/src/dlglibraryscanner.ui \ $$BASE_DIR/src/dlgmissing.ui \ $$BASE_DIR/src/dlgplugindownloader.ui \ -$$BASE_DIR/src/dlgprefbpmdlg.ui \ +$$BASE_DIR/src/dlgprefbeatsdlg.ui \ $$BASE_DIR/src/dlgprefcontrolsdlg.ui \ $$BASE_DIR/src/dlgprefcrossfaderdlg.ui \ $$BASE_DIR/src/dlgprefeqdlg.ui \ @@ -888,7 +885,7 @@ CONFIG(script) { CONFIG(Vamp) { DEFINES += __VAMP__ -INCLUDEPATH += $$BASE_DIR/lib/vamp +INCLUDEPATH += $$BASE_DIR/lib/vamp-2.3 HEADERS += $$BASE_DIR/src/vamp/vamppluginloader.h \ $$BASE_DIR/src/dlgprefbeats.h \ diff --git a/mixxx/build/qtcreator/protobuf.pri b/mixxx/build/qtcreator/protobuf.pri index e2370d2c6cf4..afc265fb57d5 100644 --- a/mixxx/build/qtcreator/protobuf.pri +++ b/mixxx/build/qtcreator/protobuf.pri @@ -18,7 +18,7 @@ PROTOPATH += . #PROTOPATH += $$BASE_DIR/src/proto -PROTOPATH += ..\mixxx-winsrc\src\proto +PROTOPATH += ../mixxx-winsrc/src/proto PROTOPATHS = for(p, PROTOPATH):PROTOPATHS += --proto_path=$${p} diff --git a/mixxx/src/analyserbeats.cpp b/mixxx/src/analyserbeats.cpp index 698bf2fd5830..ed972795bdb0 100644 --- a/mixxx/src/analyserbeats.cpp +++ b/mixxx/src/analyserbeats.cpp @@ -139,6 +139,7 @@ bool AnalyserBeats::initialise(TrackPointer tio, int sampleRate, int totalSample } qDebug() << "Beat calculation started with plugin" << pluginID; + #ifdef __VAMP__ m_pVamp = new VampAnalyser(m_pConfig); m_bShouldAnalyze = m_pVamp->Init(library, pluginID, m_iSampleRate, totalSamples, m_bPreferencesFastAnalysis); @@ -146,6 +147,7 @@ bool AnalyserBeats::initialise(TrackPointer tio, int sampleRate, int totalSample delete m_pVamp; m_pVamp = NULL; } + #endif // __VAMP__ return m_bShouldAnalyze; } @@ -239,6 +241,7 @@ bool AnalyserBeats::loadStored(TrackPointer tio) const { void AnalyserBeats::process(const CSAMPLE *pIn, const int iLen) { + #ifdef __VAMP__ if (!m_bShouldAnalyze || m_pVamp == NULL) return; m_bShouldAnalyze = m_pVamp->Process(pIn, iLen); @@ -246,6 +249,7 @@ void AnalyserBeats::process(const CSAMPLE *pIn, const int iLen) { delete m_pVamp; m_pVamp = NULL; } + #endif // __VAMP__ } void AnalyserBeats::cleanup(TrackPointer tio) @@ -265,10 +269,12 @@ void AnalyserBeats::finalise(TrackPointer tio) { // Call End() here, because the number of total samples may have been // estimated incorrectly. + QVector beats; + #ifdef __VAMP__ bool success = m_pVamp->End(); qDebug() << "Beat Calculation" << (success ? "complete" : "failed"); - QVector beats = m_pVamp->GetInitFramesVector(); + beats = m_pVamp->GetInitFramesVector(); delete m_pVamp; m_pVamp = NULL; @@ -276,6 +282,7 @@ void AnalyserBeats::finalise(TrackPointer tio) { qDebug() << "Could not detect beat positions from Vamp."; return; } + #endif // __VAMP__ QHash extraVersionInfo; extraVersionInfo["vamp_plugin_id"] = m_pluginId; diff --git a/mixxx/src/analyserqueue.cpp b/mixxx/src/analyserqueue.cpp index f27d57a271b7..3635c8ea7a99 100644 --- a/mixxx/src/analyserqueue.cpp +++ b/mixxx/src/analyserqueue.cpp @@ -404,7 +404,9 @@ AnalyserQueue* AnalyserQueue::createDefaultAnalyserQueue( ret->addAnalyser(new AnalyserWaveform(_config)); ret->addAnalyser(new AnalyserGain(_config)); + #ifdef __VAMP__ VampAnalyser::initializePluginPaths(); + #endif // __VAMP__ ret->addAnalyser(new AnalyserBeats(_config)); //ret->addAnalyser(new AnalyserVampKeyTest(_config)); @@ -419,7 +421,9 @@ AnalyserQueue* AnalyserQueue::createPrepareViewAnalyserQueue( ret->addAnalyser(new AnalyserWaveform(_config)); ret->addAnalyser(new AnalyserGain(_config)); + #ifdef __VAMP__ VampAnalyser::initializePluginPaths(); + #endif // __VAMP__ ret->addAnalyser(new AnalyserBeats(_config)); //ret->addAnalyser(new AnalyserVampKeyTest(_config)); diff --git a/mixxx/src/dlgprefbeats.cpp b/mixxx/src/dlgprefbeats.cpp index 9ea78f1b16f1..3b10947bdbb8 100644 --- a/mixxx/src/dlgprefbeats.cpp +++ b/mixxx/src/dlgprefbeats.cpp @@ -14,18 +14,24 @@ #include #include #include +#ifdef __VAMP__ #include +#endif // __VAMP__ #include "track/beat_preferences.h" #include "controlobject.h" #include "dlgprefbeats.h" +#ifdef __VAMP__ #include "vamp/vampanalyser.h" +#endif // __VAMP__ +#ifdef __VAMP__ using Vamp::Plugin; using Vamp::PluginHostAdapter; using Vamp::HostExt::PluginLoader; using Vamp::HostExt::PluginWrapper; using Vamp::HostExt::PluginInputDomainAdapter; +#endif // __VAMP__ DlgPrefBeats::DlgPrefBeats(QWidget *parent, ConfigObject *_config) : QWidget(parent), @@ -225,6 +231,7 @@ void DlgPrefBeats::slotApply() { } void DlgPrefBeats::populate() { +#ifdef __VAMP__ VampAnalyser::initializePluginPaths(); m_listIdentifier.clear(); m_listName.clear(); @@ -269,5 +276,6 @@ void DlgPrefBeats::populate() { } } // m_selectedAnalyser = selectedAnalyser; +#endif // __VAMP__ } diff --git a/mixxx/src/dlgprefbeats.h b/mixxx/src/dlgprefbeats.h index aedc2c683d33..a3883fa30646 100644 --- a/mixxx/src/dlgprefbeats.h +++ b/mixxx/src/dlgprefbeats.h @@ -10,7 +10,9 @@ #include #include "ui_dlgprefbeatsdlg.h" +#ifdef __VAMP__ #include "vamp/vamppluginloader.h" +#endif // __VAMP__ #include "configobject.h" class DlgPrefBeats : public QWidget, public Ui::DlgBeatsDlg { diff --git a/mixxx/src/vamp/vampanalyser.h b/mixxx/src/vamp/vampanalyser.h index 017749b42b35..f41fdecf2511 100644 --- a/mixxx/src/vamp/vampanalyser.h +++ b/mixxx/src/vamp/vampanalyser.h @@ -11,9 +11,10 @@ #include #include #include +#ifdef __VAMP__ #include - #include "vamp/vamppluginloader.h" +#endif // __VAMP__ #include "sampleutil.h" #include "configobject.h" @@ -43,6 +44,7 @@ class VampAnalyser { private: void SelectOutput(const int outputnumber); + #ifdef __VAMP__ Vamp::HostExt::PluginLoader::PluginKey m_key; int m_iSampleCount, m_iOUT, m_iRemainingSamples, m_iBlockSize, m_iStepSize, m_rate, m_iOutput; @@ -50,6 +52,7 @@ class VampAnalyser { Vamp::Plugin *m_plugin; Vamp::Plugin::ParameterList mParameters; Vamp::Plugin::FeatureList m_Results; + #endif // __VAMP__ bool m_bDoNotAnalyseMoreSamples; bool m_FastAnalysisEnabled; From 047eaf99be4e4fce61f729b7fdfcf7c939b447c9 Mon Sep 17 00:00:00 2001 From: Steven Boswell Date: Thu, 16 May 2013 13:50:37 -0700 Subject: [PATCH 03/15] Now the MinGW build of Mixxx can play MP3s. (I also had to build mingw##-libmad and mingw##-id3tag.) --- mixxx/build/qtcreator/mixxx.pro | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/mixxx/build/qtcreator/mixxx.pro b/mixxx/build/qtcreator/mixxx.pro index 828287d18eea..0ce8ea2a92cb 100644 --- a/mixxx/build/qtcreator/mixxx.pro +++ b/mixxx/build/qtcreator/mixxx.pro @@ -1,4 +1,4 @@ -CONFIG += debug link_pkgconfig portmidi script vinylcontrol +CONFIG += debug link_pkgconfig portmidi script vinylcontrol mad #CONFIG += m4a hss1394 # ladspa DEFINES += QMAKE \ # define QMAKE for not-SCons specific ifdefs like ui_scriptstudio.h @@ -352,7 +352,6 @@ $$BASE_DIR/src/soundsource.h \ $$BASE_DIR/src/soundsourcecoreaudio.h \ $$BASE_DIR/src/soundsourceffmpeg.h \ $$BASE_DIR/src/soundsourceflac.h \ -$$BASE_DIR/src/soundsourcemp3.h \ $$BASE_DIR/src/soundsourceoggvorbis.h \ $$BASE_DIR/src/soundsourceproxy.h \ $$BASE_DIR/src/soundsourcesndfile.h \ @@ -827,9 +826,14 @@ win32 { LIBS += -lportmidi_s } LIBS += \ - -L$$BASE_DIR/../mixxx-mingw/lib -lFLAC -logg -lvorbis -lvorbisenc \ - -lvorbisfile -lz -lprotobuf-lite -lsndfile -lportaudio.dll -ltag.dll \ - -lwinmm -lws2_32 -lmingw32 + -L$$BASE_DIR/../mixxx-mingw/lib -lFLAC -logg -lvorbis \ + -lvorbisenc -lvorbisfile + CONFIG(mad) { + LIBS += -lmad -lid3tag + } + LIBS += \ + -lz -lprotobuf-lite -lsndfile \ + -lportaudio.dll -ltag.dll -lwinmm -lws2_32 -lmingw32 INCLUDEPATH += $$BASE_DIR/../mixxx-mingw/include } @@ -954,6 +958,14 @@ CONFIG(m4a) { -lfaad } } + +CONFIG(mad) { + DEFINES += __MAD__ + HEADERS += \ + $$BASE_DIR/src/soundsourcemp3.h + SOURCES += \ + $$BASE_DIR/src/soundsourcemp3.cpp +} CONFIG(vinylcontrol) { DEFINES += __VINYLCONTROL__ HEADERS += \ From 6b2d0276b32df88ad25fa0ccec1525e49d8c4d0b Mon Sep 17 00:00:00 2001 From: Steven Boswell Date: Fri, 17 May 2013 07:57:26 -0700 Subject: [PATCH 04/15] 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). --- mixxx/build/depends.py | 6 +- mixxx/build/qtcreator/mixxx.pro | 152 +++++++++++------------- mixxx/build/qtcreator/protobuf.pri | 2 +- mixxx/build/unused/create_mixxx_dmg.sh | 10 -- mixxx/build/unused/mixxx_dmg.sh | 38 +++--- mixxx/src/SConscript | 12 +- mixxx/src/library/basesqltablemodel.cpp | 6 +- 7 files changed, 97 insertions(+), 129 deletions(-) diff --git a/mixxx/build/depends.py b/mixxx/build/depends.py index 2174809153ab..3ed057c211c0 100644 --- a/mixxx/build/depends.py +++ b/mixxx/build/depends.py @@ -187,8 +187,8 @@ def configure(self, build, conf): # times. qt_modules = [ - 'QtCore', 'QtGui', 'QtOpenGL', 'QtXml', 'QtSvg', - 'QtSql', 'QtScript', 'QtXmlPatterns', 'QtNetwork' + 'QtCore', 'QtGui', 'QtOpenGL', 'QtXml', 'QtSql', 'QtScript', + 'QtNetwork' #'QtUiTools', #'QtDesigner', ] @@ -810,7 +810,7 @@ def configure(self, build, conf): # Set include and library paths to work with this build.env.Append(CPPPATH=mixxx_lib_path) build.env.Append(LIBPATH=mixxx_lib_path) - + # Find executables (e.g. protoc) in the winlib path #build.env['ENV']['PATH'] += ";" + mixxx_lib_path build.env.AppendENVPath('PATH', mixxx_lib_path) diff --git a/mixxx/build/qtcreator/mixxx.pro b/mixxx/build/qtcreator/mixxx.pro index 0ce8ea2a92cb..ad794066c10a 100644 --- a/mixxx/build/qtcreator/mixxx.pro +++ b/mixxx/build/qtcreator/mixxx.pro @@ -1,6 +1,5 @@ CONFIG += debug link_pkgconfig portmidi script vinylcontrol mad -#CONFIG += m4a hss1394 -# ladspa +#CONFIG += m4a hss1394 ladspa DEFINES += QMAKE \ # define QMAKE for not-SCons specific ifdefs like ui_scriptstudio.h __PORTAUDIO__ \ __SNDFILE__ \ @@ -77,14 +76,11 @@ TEMPLATE = app TARGET = mixxx QT += core \ gui \ - sql \ - xmlpatterns \ - xml \ network \ - svg \ opengl \ script \ - qt3support + sql \ + xml CONFIG(debug) { # gdbmacros is required for inspecting Qt datatypes using gdb within QtC exists($$(QTDIR)/../share/qtcreator/gdbmacros/gdbmacros.cpp) { @@ -216,7 +212,6 @@ $$BASE_DIR/src/dlgtrackinfo.h \ $$BASE_DIR/src/engine/bpmcontrol.h \ $$BASE_DIR/src/engine/clockcontrol.h \ $$BASE_DIR/src/engine/cuecontrol.h \ -$$BASE_DIR/src/engine/engineabstractrecord.h \ $$BASE_DIR/src/engine/enginebuffer.h \ $$BASE_DIR/src/engine/enginebufferscale.h \ $$BASE_DIR/src/engine/enginebufferscaledummy.h \ @@ -323,8 +318,6 @@ $$BASE_DIR/src/playerinfo.h \ $$BASE_DIR/src/playermanager.h \ $$BASE_DIR/src/previewdeck.h \ $$BASE_DIR/src/recording/defs_recording.h \ -$$BASE_DIR/src/recording/encoder.h \ -$$BASE_DIR/src/recording/enginerecord.h \ $$BASE_DIR/src/recording/recordingmanager.h \ $$BASE_DIR/src/rotary.h \ $$BASE_DIR/src/sampler.h \ @@ -735,7 +728,7 @@ SOURCES += $$BASE_DIR/src/engine/enginebufferscalest.cpp \ $$BASE_DIR/lib/soundtouch-1.6.0/FIRFilter.cpp \ $$BASE_DIR/lib/soundtouch-1.6.0/PeakFinder.cpp \ $$BASE_DIR/lib/soundtouch-1.6.0/BPMDetect.cpp \ - $$BASE_DIR/lib/soundtouch-1.6.0/cpu_detect_x86_gcc.cpp + $$BASE_DIR/lib/soundtouch-1.6.0/cpu_detect_x86_gcc.cpp # Fidlib SOURCES += $$BASE_DIR/lib/fidlib-0.9.10/fidlib.c @@ -822,29 +815,29 @@ macx { } win32 { DEFINES += __WINMIDI__ - CONFIG(portmidi) { - LIBS += -lportmidi_s - } + CONFIG(portmidi) { + LIBS += -lportmidi_s + } + LIBS += \ + -L$$BASE_DIR/../mixxx-mingw/lib -lFLAC -logg -lvorbis \ + -lvorbisenc -lvorbisfile + CONFIG(mad) { + LIBS += -lmad -lid3tag + } LIBS += \ - -L$$BASE_DIR/../mixxx-mingw/lib -lFLAC -logg -lvorbis \ - -lvorbisenc -lvorbisfile - CONFIG(mad) { - LIBS += -lmad -lid3tag - } - LIBS += \ - -lz -lprotobuf-lite -lsndfile \ - -lportaudio.dll -ltag.dll -lwinmm -lws2_32 -lmingw32 + -lz -lprotobuf-lite -lsndfile \ + -lportaudio.dll -ltag.dll -lwinmm -lws2_32 -lmingw32 INCLUDEPATH += $$BASE_DIR/../mixxx-mingw/include } CONFIG(portmidi) { - DEFINES += __PORTMIDI__ - HEADERS += \ - $$BASE_DIR/src/controllers/midi/portmidicontroller.h \ - $$BASE_DIR/src/controllers/midi/portmidienumerator.h - SOURCES += \ - $$BASE_DIR/src/controllers/midi/portmidienumerator.cpp \ - $$BASE_DIR/src/controllers/midi/portmidicontroller.cpp + DEFINES += __PORTMIDI__ + HEADERS += \ + $$BASE_DIR/src/controllers/midi/portmidicontroller.h \ + $$BASE_DIR/src/controllers/midi/portmidienumerator.h + SOURCES += \ + $$BASE_DIR/src/controllers/midi/portmidienumerator.cpp \ + $$BASE_DIR/src/controllers/midi/portmidicontroller.cpp } CONFIG(ladspa) { @@ -891,9 +884,9 @@ CONFIG(Vamp) { DEFINES += __VAMP__ INCLUDEPATH += $$BASE_DIR/lib/vamp-2.3 HEADERS += - $$BASE_DIR/src/vamp/vamppluginloader.h \ - $$BASE_DIR/src/dlgprefbeats.h \ - $$BASE_DIR/src/vamp/vampanalyser.h \ + $$BASE_DIR/src/vamp/vamppluginloader.h \ + $$BASE_DIR/src/dlgprefbeats.h \ + $$BASE_DIR/src/vamp/vampanalyser.h \ $$UI_DIR/ui_dlgprefbeatsdlg.h \ $$BASE_DIR/src/analyservamptest.h \ $$BASE_DIR/src/analyservampkeytest.h \ @@ -903,17 +896,17 @@ SOURCES += $$BASE_DIR/src/vamp/vampanalyser.cpp \ $$BASE_DIR/src/analyservamptest.cpp \ $$BASE_DIR/src/analyservampkeytest.cpp \ $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginBufferingAdapter.cpp \ - $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginChannelAdapter.cpp \ - $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginHostAdapter.cpp \ - $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginInputDomainAdapter.cpp \ - $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginLoader.cpp \ - $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginSummarisingAdapter.cpp \ - $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginWrapper.cpp \ - $$BASE_DIR/lib/vamp/src/vamp-hostsdk/RealTime.cpp \ - $$BASE_DIR/lib/vamp/src/vamp-sdk/PluginAdapter.cpp \ - $$BASE_DIR/lib/vamp/src/vamp-sdk/RealTime.cpp + $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginChannelAdapter.cpp \ + $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginHostAdapter.cpp \ + $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginInputDomainAdapter.cpp \ + $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginLoader.cpp \ + $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginSummarisingAdapter.cpp \ + $$BASE_DIR/lib/vamp/src/vamp-hostsdk/PluginWrapper.cpp \ + $$BASE_DIR/lib/vamp/src/vamp-hostsdk/RealTime.cpp \ + $$BASE_DIR/lib/vamp/src/vamp-sdk/PluginAdapter.cpp \ + $$BASE_DIR/lib/vamp/src/vamp-sdk/RealTime.cpp FORMS += \ - $$BASE_DIR/src/dlgprefbeatsdlg.ui + $$BASE_DIR/src/dlgprefbeatsdlg.ui } CONFIG(tonal) { @@ -961,10 +954,10 @@ CONFIG(m4a) { CONFIG(mad) { DEFINES += __MAD__ - HEADERS += \ - $$BASE_DIR/src/soundsourcemp3.h - SOURCES += \ - $$BASE_DIR/src/soundsourcemp3.cpp + HEADERS += \ + $$BASE_DIR/src/soundsourcemp3.h + SOURCES += \ + $$BASE_DIR/src/soundsourcemp3.cpp } CONFIG(vinylcontrol) { DEFINES += __VINYLCONTROL__ @@ -1016,7 +1009,6 @@ CONFIG(shoutcast) { # CONFIG(record) { # DEFINES += __RECORD__ # HEADERS += $$BASE_DIR/src/recording/defs_recording.h \ -# $$BASE_DIR/src/recording/enginerecord.h \ # $$BASE_DIR/src/recording/writeaudiofile.h \ # $$BASE_DIR/src/dlgprefrecord.h # SOURCES += $$BASE_DIR/src/recording/enginerecord.cpp \ @@ -1049,56 +1041,56 @@ CONFIG(ffmpeg) { CONFIG(hid) { HIDAPI_INTERNAL_PATH = $$BASE_DIR/../mixxx-winlib/lib/hidapi-0.8.0-pre DEFINES += __HID__ - SOURCES += \ + SOURCES += \ $$BASE_DIR/src/controllers/hid/hidcontroller.cpp \ $$BASE_DIR/src/controllers/hid/hidenumerator.cpp \ $$BASE_DIR/src/controllers/hid/hidcontrollerpresetfilehandler.cpp - HEADERS += \ - $$BASE_DIR/src/controllers/hid/hidblacklist.h \ - $$BASE_DIR/src/controllers/hid/hidcontroller.h \ - $$BASE_DIR/src/controllers/hid/hidcontrollerpreset.h \ - $$BASE_DIR/src/controllers/hid/hidcontrollerpresetfilehandler.h \ - $$BASE_DIR/src/controllers/hid/hidenumerator.h - win32 { + HEADERS += \ + $$BASE_DIR/src/controllers/hid/hidblacklist.h \ + $$BASE_DIR/src/controllers/hid/hidcontroller.h \ + $$BASE_DIR/src/controllers/hid/hidcontrollerpreset.h \ + $$BASE_DIR/src/controllers/hid/hidcontrollerpresetfilehandler.h \ + $$BASE_DIR/src/controllers/hid/hidenumerator.h + win32 { SOURCES += $$HIDAPI_INTERNAL_PATH/windows/hid.c - } macx { + } macx { SOURCES += $$HIDAPI_INTERNAL_PATH/mac/hid.c - } else { + } else { SOURCES += $$HIDAPI_INTERNAL_PATH/linux/hid-libusb.c - } + } } CONFIG(bulk) { DEFINES += __BULK__ - SOURCES += \ + SOURCES += \ $$BASE_DIR/src/controllers/bulk/bulkcontroller.cpp \ $$BASE_DIR/src/controllers/bulk/bulkenumerator.cpp - HEADERS += \ - $$BASE_DIR/src/controllers/bulk/bulkcontroller.h \ - $$BASE_DIR/src/controllers/bulk/bulkenumerator.h \ - $$BASE_DIR/src/controllers/bulk/bulksupported.h - !CONFIG(hid) { - SOURCES += \ - $$BASE_DIR/src/controllers/hid/hidcontrollerpresetfilehandler.cpp - } + HEADERS += \ + $$BASE_DIR/src/controllers/bulk/bulkcontroller.h \ + $$BASE_DIR/src/controllers/bulk/bulkenumerator.h \ + $$BASE_DIR/src/controllers/bulk/bulksupported.h + !CONFIG(hid) { + SOURCES += \ + $$BASE_DIR/src/controllers/hid/hidcontrollerpresetfilehandler.cpp + } } CONFIG(PromoTracks) { DEFINES += __PROMO__ - HEADERS += \ + HEADERS += \ $$BASE_DIR/src/library/promotracksfeature.h \ - $$BASE_DIR/src/library/bundledsongswebview.h \ - $$BASE_DIR/src/library/featuredartistswebview.h - SOURCES += \ + $$BASE_DIR/src/library/bundledsongswebview.h \ + $$BASE_DIR/src/library/featuredartistswebview.h + SOURCES += \ $$BASE_DIR/src/library/promotracksfeature.cpp \ $$BASE_DIR/src/library/bundledsongswebview.cpp \ $$BASE_DIR/src/library/featuredartistswebview.cpp } CONFIG(hss1394) { - HEADERS += \ - $$BASE_DIR/src/controllers/midi/hss1394controller.h \ - $$BASE_DIR/src/controllers/midi/hss1394enumerator.h + HEADERS += \ + $$BASE_DIR/src/controllers/midi/hss1394controller.h \ + $$BASE_DIR/src/controllers/midi/hss1394enumerator.h } # Copy Windows dependencies to DESTDIR. @@ -1106,14 +1098,13 @@ win32 { !exists($$DESTDIR):system( mkdir \"$$replace(DESTDIR, /,$$DIR_SEPARATOR)\" ) # MinGW run-time DLLs += $$(QTDIR)/../mingw/bin/mingwm10.dll \ - $$(QTDIR)/../mingw/bin/libstdc++-6.dll \ - $$(QTDIR)/../mingw/bin/libexpat-1.dll + $$(QTDIR)/../mingw/bin/libstdc++-6.dll \ + $$(QTDIR)/../mingw/bin/libexpat-1.dll CONFIG(m4a): DLLs += $$BASE_DIR/../mixxx-winlib/mp4v2/mingw-bin/libmp4v2-0.dll \ $$BASE_DIR/../mixxx-winlib/libfaad2.dll # Qt4 libraries debug { - DLLs += $$(QTDIR)/bin/Qt3Supportd4.dll \ - $$(QTDIR)/bin/QtCored4.dll \ + DLLs += $$(QTDIR)/bin/QtCored4.dll \ $$(QTDIR)/bin/QtGuid4.dll \ $$(QTDIR)/bin/QtNetworkd4.dll \ $$(QTDIR)/bin/QtSqld4.dll \ @@ -1123,8 +1114,7 @@ win32 { # include GNU Debugger in debug distros DLLs += $$(QTDIR)/../mingw/bin/gdb.exe } else { - DLLs += $$(QTDIR)/bin/Qt3Support4.dll \ - $$(QTDIR)/bin/QtCore4.dll \ + DLLs += $$(QTDIR)/bin/QtCore4.dll \ $$(QTDIR)/bin/QtGui4.dll \ $$(QTDIR)/bin/QtNetwork4.dll \ $$(QTDIR)/bin/QtSql4.dll \ @@ -1156,7 +1146,7 @@ win32 { BZR_REVNO = $$system( bzr revno ) BZR_INFO = $$system( bzr info ) for(BZR_INFO_BITS, BZR_INFO) { - BZR_BRANCH_URL = $${BZR_INFO_BITS} + BZR_BRANCH_URL = $${BZR_INFO_BITS} } BZR_BRANCH_NAME = $$dirname(BZR_BRANCH_URL) BZR_BRANCH_NAME = $$basename(BZR_BRANCH_NAME) diff --git a/mixxx/build/qtcreator/protobuf.pri b/mixxx/build/qtcreator/protobuf.pri index afc265fb57d5..4e9f0da93d50 100644 --- a/mixxx/build/qtcreator/protobuf.pri +++ b/mixxx/build/qtcreator/protobuf.pri @@ -18,7 +18,7 @@ PROTOPATH += . #PROTOPATH += $$BASE_DIR/src/proto -PROTOPATH += ../mixxx-winsrc/src/proto +PROTOPATH += ./src/proto PROTOPATHS = for(p, PROTOPATH):PROTOPATHS += --proto_path=$${p} diff --git a/mixxx/build/unused/create_mixxx_dmg.sh b/mixxx/build/unused/create_mixxx_dmg.sh index 1c047a9069f2..7f4cc6228b6a 100755 --- a/mixxx/build/unused/create_mixxx_dmg.sh +++ b/mixxx/build/unused/create_mixxx_dmg.sh @@ -24,7 +24,6 @@ cp $QT4_PATH/lib/libQtGui.4.dylib . cp $QT4_PATH/lib/libQtCore.4.dylib . cp $QT4_PATH/lib/libQtOpenGL.4.dylib . cp $QT4_PATH/lib/libQtXml.4.dylib . -cp $QT4_PATH/lib/libQt3Support.4.dylib . cp $QT4_PATH/lib/libQtNetwork.4.dylib . cp $QT4_PATH/lib/libQtSql.4.dylib . cp /usr/local/lib/libportaudio.2.dylib . @@ -40,7 +39,6 @@ echo "Changing library ids..." install_name_tool -id @executable_path/../Frameworks/libQtGui.4.dylib libQtGui.4.dylib install_name_tool -id @executable_path/../Frameworks/libQtCore.4.dylib libQtCore.4.dylib install_name_tool -id @executable_path/../Frameworks/libQtOpenGL.4.dylib libQtOpenGL.4.dylib -install_name_tool -id @executable_path/../Frameworks/libQt3Support.4.dylib libQt3Support.4.dylib install_name_tool -id @executable_path/../Frameworks/libQtXml.4.dylib libQtXml.4.dylib install_name_tool -id @executable_path/../Frameworks/libQtNetwork.4.dylib libQtNetwork.4.dylib install_name_tool -id @executable_path/../Frameworks/libQtSql.4.dylib libQtSql.4.dylib @@ -60,7 +58,6 @@ echo "Changing library ids in the Mixxx binary..." install_name_tool -change $QT4_PATH/lib/libQtGui.4.dylib @executable_path/../Frameworks/libQtGui.4.dylib $MIXXX_PATH install_name_tool -change $QT4_PATH/lib/libQtCore.4.dylib @executable_path/../Frameworks/libQtCore.4.dylib $MIXXX_PATH install_name_tool -change $QT4_PATH/lib/libQtOpenGL.4.dylib @executable_path/../Frameworks/libQtOpenGL.4.dylib $MIXXX_PATH -install_name_tool -change $QT4_PATH/lib/libQt3Support.4.dylib @executable_path/../Frameworks/libQt3Support.4.dylib $MIXXX_PATH install_name_tool -change $QT4_PATH/lib/libQtXml.4.dylib @executable_path/../Frameworks/libQtXml.4.dylib $MIXXX_PATH install_name_tool -change $QT4_PATH/lib/libQtNetwork.4.dylib @executable_path/../Frameworks/libQtNetwork.4.dylib $MIXXX_PATH install_name_tool -change $QT4_PATH/lib/libQtSql.4.dylib @executable_path/../Frameworks/libQtSql.4.dylib $MIXXX_PATH @@ -81,11 +78,6 @@ install_name_tool -change $QT4_PATH/lib/libQtGui.4.dylib @executable_path/../Fra install_name_tool -change $QT4_PATH/lib/libQtCore.4.dylib @executable_path/../Frameworks/libQtCore.4.dylib libQtSql.4.dylib install_name_tool -change $QT4_PATH/lib/libQtCore.4.dylib @executable_path/../Frameworks/libQtCore.4.dylib libQtNetwork.4.dylib install_name_tool -change $QT4_PATH/lib/libQtCore.4.dylib @executable_path/../Frameworks/libQtCore.4.dylib libQtXml.4.dylib -install_name_tool -change $QT4_PATH/lib/libQtGui.4.dylib @executable_path/../Frameworks/libQtGui.4.dylib libQt3Support.4.dylib -install_name_tool -change $QT4_PATH/lib/libQtCore.4.dylib @executable_path/../Frameworks/libQtCore.4.dylib libQt3Support.4.dylib -install_name_tool -change $QT4_PATH/lib/libQtSql.4.dylib @executable_path/../Frameworks/libQtSql.4.dylib libQt3Support.4.dylib -install_name_tool -change $QT4_PATH/lib/libQtXml.4.dylib @executable_path/../Frameworks/libQtXml.4.dylib libQt3Support.4.dylib -install_name_tool -change $QT4_PATH/lib/libQtNetwork.4.dylib @executable_path/../Frameworks/libQtNetwork.4.dylib libQt3Support.4.dylib echo "Changing library ids within Vorbis lib" @@ -123,7 +115,6 @@ do install_name_tool -change $QT4_PATH/lib/libQtGui.4.dylib @executable_path/../Frameworks/libQtGui.4.dylib $lib install_name_tool -change $QT4_PATH/lib/libQtSql.4.dylib @executable_path/../Frameworks/libQtSql.4.dylib $lib install_name_tool -change $QT4_PATH/lib/libQtXml.4.dylib @executable_path/../Frameworks/libQtXml.4.dylib $lib - install_name_tool -change $QT4_PATH/lib/libQtSvg.4.dylib @executable_path/../Frameworks/libQtSvg.4.dylib $lib install_name_tool -change $QT4_PATH/lib/libQtNetwork.4.dylib @executable_path/../Frameworks/libQtNetwork.4.dylib $lib done echo "Stripping debugging symbols from QT4 imageformat plugins" @@ -143,7 +134,6 @@ do install_name_tool -change $QT4_PATH/lib/libQtGui.4.dylib @executable_path/../Frameworks/libQtGui.4.dylib $lib install_name_tool -change $QT4_PATH/lib/libQtSql.4.dylib @executable_path/../Frameworks/libQtSql.4.dylib $lib install_name_tool -change $QT4_PATH/lib/libQtXml.4.dylib @executable_path/../Frameworks/libQtXml.4.dylib $lib - install_name_tool -change $QT4_PATH/lib/libQtSvg.4.dylib @executable_path/../Frameworks/libQtSvg.4.dylib $lib install_name_tool -change $QT4_PATH/lib/libQtNetwork.4.dylib @executable_path/../Frameworks/libQtNetwork.4.dylib $lib done echo "Stripping debugging symbols from QT4 iconengine plugins" diff --git a/mixxx/build/unused/mixxx_dmg.sh b/mixxx/build/unused/mixxx_dmg.sh index c23e1e8b020a..09c253f3ba5c 100644 --- a/mixxx/build/unused/mixxx_dmg.sh +++ b/mixxx/build/unused/mixxx_dmg.sh @@ -29,7 +29,7 @@ QT4_PLUGINS="/Developer/Applications/Qt/plugins/" #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 #FRAMEWORKS are shared libraries with an Apple-esque naming convention. DYLIBS are classical .so object files. #(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 -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 +FRAMEWORKS="QtCore QtGui QtOpenGL QtXml QtNetwork QtSql QtScript" #XXX should only do this if mixxx was built with scripting... oh well, a TODO DYLIBS="portaudio mad id3tag vorbis vorbisfile ogg sndfile FLAC" @@ -67,11 +67,11 @@ reref() { #takes the path to the binary to change, and the shortname of the lib TAB=`printf "\t"` #because I can't write \t to get a tab in shell :( 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) if [ x"$path" = x ]; then - #echo "$1 does not reference $2, skipping"; - echo -n; + #echo "$1 does not reference $2, skipping"; + echo -n; else - #echo "DEBUG: " install_name_tool -change $path @executable_path/../Frameworks/$3 $1 - install_name_tool -change $path @executable_path/../Frameworks/$3 $1 + #echo "DEBUG: " install_name_tool -change $path @executable_path/../Frameworks/$3 $1 + install_name_tool -change $path @executable_path/../Frameworks/$3 $1 fi } @@ -199,13 +199,6 @@ reref_framework QtOpenGL QtGui reref_framework QtSql QtCore reref_framework QtNetwork QtCore reref_framework QtXml QtCore -reref_framework QtSvg QtCore -reref_framework QtSvg QtGui -reref_framework Qt3Support QtGui -reref_framework Qt3Support QtCore -reref_framework Qt3Support QtSql -reref_framework Qt3Support QtXml -reref_framework Qt3Support QtNetwork reref_framework QtScript QtCore @@ -238,17 +231,16 @@ bundle_QT4_plugin() { mkdir $plugin cd $plugin for lib in $libs; do - lib=lib$lib.dylib #yay - cp $QT4_PLUGINS/imageformats/$lib $lib - - echo "Changing library ids within QT4 $plugin plugin: $lib" - relink_lib $lib - #XXX this list really needs to be generated on the fly from otool .... - 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. - reref $lib QtGui QtGui - reref $lib QtXml QtXml - reref $lib QtSvg QtSvg - reref $lib QtNetwork QtNetwork + lib=lib$lib.dylib #yay + cp $QT4_PLUGINS/imageformats/$lib $lib + + echo "Changing library ids within QT4 $plugin plugin: $lib" + relink_lib $lib + #XXX this list really needs to be generated on the fly from otool .... + 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. + reref $lib QtGui QtGui + reref $lib QtXml QtXml + reref $lib QtNetwork QtNetwork done echo "Stripping debugging symbols from QT4 $plugin plugins" strip *.dylib diff --git a/mixxx/src/SConscript b/mixxx/src/SConscript index 8dc5b3071983..f72744f31528 100644 --- a/mixxx/src/SConscript +++ b/mixxx/src/SConscript @@ -216,8 +216,6 @@ if build.msvcdebug: $QTDIR/bin/QtOpenGLd4.dll $QTDIR/bin/QtSqld4.dll $QTDIR/bin/QtXmld4.dll - $QTDIR/bin/QtXmlPatternsd4.dll - $QTDIR/bin/QtSvgd4.dll $QTDIR/bin/phonond4.dll $QTDIR/bin/QtScriptd4.dll""") else: @@ -228,8 +226,6 @@ else: $QTDIR/bin/QtOpenGL4.dll $QTDIR/bin/QtSql4.dll $QTDIR/bin/QtXml4.dll - $QTDIR/bin/QtXmlPatterns4.dll - $QTDIR/bin/QtSvg4.dll $QTDIR/bin/phonon4.dll $QTDIR/bin/QtScript4.dll""") @@ -258,7 +254,7 @@ if build.platform_is_linux or build.platform_is_bsd: binary = env.Install(unix_bin_path, binary_files) resource = env.Install(os.path.join(unix_share_path, 'mixxx'), resource_files) skins = env.Install(os.path.join(unix_share_path, 'mixxx', 'skins'), skin_files) - vamp_plugin = env.Install( + vamp_plugin = env.Install( os.path.join(unix_lib_path, 'mixxx', 'plugins', 'vamp'), libmixxxminimal_vamp_plugin) @@ -290,7 +286,7 @@ if build.platform_is_linux or build.platform_is_bsd: env.Alias('install', dotdesktop) env.Alias('install', icon) env.Alias('install', promotracks) - env.Alias('install', vamp_plugin) + env.Alias('install', vamp_plugin) #Delete the old Mixxx installation (because SCONS won't overwrite it) #if 'install' in COMMAND_LINE_TARGETS: @@ -327,7 +323,7 @@ if build.platform_is_osx and 'bundle' in COMMAND_LINE_TARGETS: for x in soundsource_plugins: plugins.append(x.get_abspath()) - for x in mixxxminimal_plugins: + for x in mixxxminimal_plugins: plugins.append(x.get_abspath()) resource_map = {} @@ -452,7 +448,7 @@ if build.platform_is_windows: env.Alias('mixxx', docs) env.Alias('mixxx', dlls) env.Alias('mixxx', soundsource_plugins) - env.Alias('mixxx', vamp_plugins) + env.Alias('mixxx', vamp_plugins) #env.Alias('mixxx', icon) env.Alias('mixxx', binary) diff --git a/mixxx/src/library/basesqltablemodel.cpp b/mixxx/src/library/basesqltablemodel.cpp index b9e9824f3783..151953254c3e 100644 --- a/mixxx/src/library/basesqltablemodel.cpp +++ b/mixxx/src/library/basesqltablemodel.cpp @@ -157,7 +157,7 @@ QString BaseSqlTableModel::orderByClause() const { } void BaseSqlTableModel::select() { - if (!m_bInitialized || this->rowCount() == 0) { + if (!m_bInitialized) { return; } @@ -203,10 +203,10 @@ void BaseSqlTableModel::select() { // table query has succeeded. See Bug #1090888. // TODO(rryan) we could edit the table in place instead of clearing it? if (m_rowInfo.size() > 0) { - beginRemoveRows(QModelIndex(), 0, m_rowInfo.size()-1); + beginResetModel(); m_rowInfo.clear(); m_trackIdToRows.clear(); - endRemoveRows(); + endResetModel(); } QSqlRecord record = query.record(); From 4f7867206ce7e886972325a9ed868db98ee1885b Mon Sep 17 00:00:00 2001 From: Steven Boswell Date: Fri, 17 May 2013 20:20:20 -0700 Subject: [PATCH 05/15] Now a MinGW build can be made under Linux, with SCons! --- mixxx/build/crossmingw.py | 4 ++++ mixxx/build/depends.py | 7 +++++-- mixxx/build/features.py | 2 ++ mixxx/build/mixxx.py | 22 ++++++++++++---------- mixxx/src/SConscript | 25 ++++++++++++++++--------- 5 files changed, 39 insertions(+), 21 deletions(-) diff --git a/mixxx/build/crossmingw.py b/mixxx/build/crossmingw.py index e694d1256f13..def0caa48787 100644 --- a/mixxx/build/crossmingw.py +++ b/mixxx/build/crossmingw.py @@ -14,6 +14,10 @@ i486-mingw32msvc- i586-mingw32msvc- i686-mingw32msvc- + i386-w64-mingw32- + i486-w64-mingw32- + i586-w64-mingw32- + i686-w64-mingw32- """) def find(env): diff --git a/mixxx/build/depends.py b/mixxx/build/depends.py index 3ed057c211c0..6dd8c34c67cd 100644 --- a/mixxx/build/depends.py +++ b/mixxx/build/depends.py @@ -11,6 +11,8 @@ def configure(self, build, conf): libs = ['portaudio'] if build.msvcdebug: libs = ['portaudiod','portaudio-debug'] + if build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu: + libs = ['portaudio', 'portaudio.dll', 'portaudio-2'] if not conf.CheckLib(libs): raise Exception('Did not find libportaudio.a, portaudio.lib, or the PortAudio-v19 development header files.') @@ -933,5 +935,6 @@ def post_dependency_check_configure(self, build, conf): build.env.Append(LINKFLAGS = '/manifest') #Force MSVS to generate a manifest (MSVC2010) elif build.toolchain_is_gnu: # Makes the program not launch a shell first - build.env.Append(LINKFLAGS = '--subsystem,windows') - build.env.Append(LINKFLAGS = '-mwindows') + build.env.Append(LINKFLAGS = '-Wl,-subsystem,windows') + build.env.Append(CCFLAGS = '-mwindows') + build.env.Append(CCFLAGS = '-mthreads') diff --git a/mixxx/build/features.py b/mixxx/build/features.py index 5606d11bcaaf..a3416a635b4d 100644 --- a/mixxx/build/features.py +++ b/mixxx/build/features.py @@ -446,6 +446,8 @@ def configure(self, build, conf): if not self.enabled(build): return + build.env.Append(CPPDEFINES = '__VAMP__') + # If there is no system vamp-hostdk installed, then we'll directly link # the vamp-hostsdk. if not conf.CheckLib(['vamp-hostsdk']): diff --git a/mixxx/build/mixxx.py b/mixxx/build/mixxx.py index 7a1b7b208c04..8e7ef0f6d68a 100644 --- a/mixxx/build/mixxx.py +++ b/mixxx/build/mixxx.py @@ -127,6 +127,15 @@ def __init__(self, target, machine, build, toolchain, available_features=[]): default_qtdir = depends.Qt.DEFAULT_QTDIRS.get(self.platform, '') qtdir = Script.ARGUMENTS.get('qtdir', os.environ.get('QTDIR', default_qtdir)) + if self.crosscompile: + crosscompile_root = Script.ARGUMENTS.get('crosscompile_root', '') + + if crosscompile_root == '': + print "Your build setup indicates this is a cross-compile, but you did not specify 'crosscompile_root', which is required." + Script.Exit(1) + + self.crosscompile_root = os.path.abspath(crosscompile_root) + qtdir = self.crosscompile_root # Validate the specified qtdir exists if not os.path.exists(qtdir): @@ -182,16 +191,9 @@ def __init__(self, target, machine, build, toolchain, available_features=[]): self.env.Append(LINKFLAGS = '-arch x86_64') if self.crosscompile: - crosscompile_root = Script.ARGUMENTS.get('crosscompile_root', '') - - if crosscompile_root == '': - print "Your build setup indicates this is a cross-compile, but you did not specify 'crosscompile_root', which is required." - Script.Exit(1) - - crosscompile_root = os.path.abspath(crosscompile_root) - self.env.Append(CPPPATH=os.path.join(crosscompile_root, 'include')) - self.env.Append(LIBPATH=os.path.join(crosscompile_root, 'lib')) - self.env.Append(LIBPATH=os.path.join(crosscompile_root, 'bin')) + self.env.Append(CPPPATH=os.path.join(self.crosscompile_root, 'include')) + self.env.Append(LIBPATH=os.path.join(self.crosscompile_root, 'lib')) + self.env.Append(LIBPATH=os.path.join(self.crosscompile_root, 'bin')) self.install_options() diff --git a/mixxx/src/SConscript b/mixxx/src/SConscript index f72744f31528..5a65ca469698 100644 --- a/mixxx/src/SConscript +++ b/mixxx/src/SConscript @@ -194,9 +194,17 @@ if build.toolchain_is_msvs: # skip the MSVC DLLs incase they're in there too dll_files = Glob('%s/[!"msvc"]*.dll' % mixxx_winlib_path) elif build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu: - # We're cross-compiling, grab these from the crosscompile bin - # folder. How should we be doing this? - dll_files = Glob('#/../../mixxx-win%slib-crossmingw' % build.bitwidth) + # We're cross-compiling; grab these from the crosscompile bin + # folder. + # TODO(XXX): Rebuild the dependent libraries as static. + crosscompile_bin_path = os.path.join (build.crosscompile_root, \ + 'bin') + dll_files = [ os.path.join (crosscompile_bin_path, \ + s) for s in [ 'libFLAC-8.dll', 'libogg-0.dll', + 'libportaudio-2.dll', 'libportmidi_s.dll', + 'libsndfile-1.dll', 'libsqlite3-0.dll', + 'libstdc++-6.dll', 'libtag.dll', 'libvorbis-0.dll', + 'libvorbisenc-2.dll', 'libvorbisfile-3.dll' ] ]; elif build.crosscompile and build.platform_is_osx: # Glob appropriate dylib files. We have 4 different library types, # x86_64, x86, powerpc, powerpc64 @@ -204,10 +212,11 @@ elif build.crosscompile and build.platform_is_osx: else: dll_files = list() # dll_files += on the next line required dll_files to exist -if build.msvcdebug: - dll_files += Split("""$QTDIR/bin/QtWebKitd4.dll""") -else: - dll_files += Split("""$QTDIR/bin/QtWebKit4.dll""") +if int(build.flags['vinylcontrol']) or int(build.flags['hid']): + if build.msvcdebug: + dll_files += Split("""$QTDIR/bin/phonond4.dll""") + else: + dll_files += Split("""$QTDIR/bin/phonon4.dll""") if build.msvcdebug: dll_files += Split("""$QTDIR/bin/QtCored4.dll @@ -216,7 +225,6 @@ if build.msvcdebug: $QTDIR/bin/QtOpenGLd4.dll $QTDIR/bin/QtSqld4.dll $QTDIR/bin/QtXmld4.dll - $QTDIR/bin/phonond4.dll $QTDIR/bin/QtScriptd4.dll""") else: # if not int(build.flags['staticlibs']): @@ -226,7 +234,6 @@ else: $QTDIR/bin/QtOpenGL4.dll $QTDIR/bin/QtSql4.dll $QTDIR/bin/QtXml4.dll - $QTDIR/bin/phonon4.dll $QTDIR/bin/QtScript4.dll""") if int(flags.get('sqlitedll', 0)): From 3abf13b99182f56ee93338d6aca5d25c6b1156b9 Mon Sep 17 00:00:00 2001 From: Steven Boswell Date: Wed, 22 May 2013 16:50:21 -0700 Subject: [PATCH 06/15] 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 --- mixxx/build/depends.py | 5 ++-- mixxx/src/SConscript | 53 ++++++++++++++++++++++++++++++------ mixxx/src/analyserqueue.cpp | 4 +-- mixxx/src/dlgpreferences.cpp | 2 ++ 4 files changed, 51 insertions(+), 13 deletions(-) diff --git a/mixxx/build/depends.py b/mixxx/build/depends.py index 6dd8c34c67cd..897b9753c73a 100644 --- a/mixxx/build/depends.py +++ b/mixxx/build/depends.py @@ -240,7 +240,6 @@ def configure(self, build, conf): 'QtOpenGL4', 'QtXml4', 'QtNetwork4', - 'QtXmlPatterns4', 'QtSql4', 'QtScript4',] if use_qtwebkit: @@ -936,5 +935,7 @@ def post_dependency_check_configure(self, build, conf): elif build.toolchain_is_gnu: # Makes the program not launch a shell first build.env.Append(LINKFLAGS = '-Wl,-subsystem,windows') - build.env.Append(CCFLAGS = '-mwindows') build.env.Append(CCFLAGS = '-mthreads') + build.env.Append(CCFLAGS = '-fno-keep-inline-dllexport') + build.env.Append(LIBS = 'z'); + diff --git a/mixxx/src/SConscript b/mixxx/src/SConscript index 5a65ca469698..c948beab8a47 100644 --- a/mixxx/src/SConscript +++ b/mixxx/src/SConscript @@ -60,9 +60,37 @@ if build.platform_is_windows: fo.write(''.join(str_list)) fo.close() - mixxx_bin = env.Program('mixxx', - [sources, env.RES('#src/mixxx.rc')], - LINKCOM = [env['LINKCOM'], 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;1']) + if build.crosscompile: + # Taken from http://scons.org/wiki/EmbedManifestIntoTarget + manifest_template = '''\ + + + + + + + + + + +''' + manifest_path = "mixxx.manifest" + fout = open (manifest_path, "w"); + fout.write (manifest_template) + fout.close() + fout = open ("manifest.rc", "w"); + fout.write (""" +#include "winuser.h" +1 RT_MANIFEST %s +""" % manifest_path) + fout.close() + mixxx_bin = env.Program('mixxx', + [sources, env.RES('#src/mixxx.rc'), + env.RES("manifest.rc")]); + else: + mixxx_bin = env.Program('mixxx', + [sources, env.RES('#src/mixxx.rc')], + LINKCOM = [env['LINKCOM'], 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;1']) else: mixxx_bin = env.Program('mixxx', sources) @@ -202,9 +230,10 @@ elif build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu dll_files = [ os.path.join (crosscompile_bin_path, \ s) for s in [ 'libFLAC-8.dll', 'libogg-0.dll', 'libportaudio-2.dll', 'libportmidi_s.dll', - 'libsndfile-1.dll', 'libsqlite3-0.dll', - 'libstdc++-6.dll', 'libtag.dll', 'libvorbis-0.dll', - 'libvorbisenc-2.dll', 'libvorbisfile-3.dll' ] ]; + 'libprotobuf-lite-7.dll', 'libsndfile-1.dll', + 'libsqlite3-0.dll', 'libstdc++-6.dll', 'libtag.dll', + 'libvorbis-0.dll', 'libvorbisenc-2.dll', + 'libvorbisfile-3.dll' ] ]; elif build.crosscompile and build.platform_is_osx: # Glob appropriate dylib files. We have 4 different library types, # x86_64, x86, powerpc, powerpc64 @@ -237,10 +266,16 @@ else: $QTDIR/bin/QtScript4.dll""") if int(flags.get('sqlitedll', 0)): - if build.msvcdebug: - sqldll_files = Split("""$QTDIR/plugins/sqldrivers/qsqlited4.dll""") #Qt SQLite plugin + if build.crosscompile: + if build.msvcdebug: + sqldll_files = Split("""$QTDIR/lib/qt4/plugins/sqldrivers/qsqlited4.dll""") #Qt SQLite plugin + else: + sqldll_files = Split("""$QTDIR/lib/qt4/plugins/sqldrivers/qsqlite4.dll""") #Qt SQLite plugin else: - sqldll_files = Split("""$QTDIR/plugins/sqldrivers/qsqlite4.dll""") #Qt SQLite plugin + if build.msvcdebug: + sqldll_files = Split("""$QTDIR/plugins/sqldrivers/qsqlited4.dll""") #Qt SQLite plugin + else: + sqldll_files = Split("""$QTDIR/plugins/sqldrivers/qsqlite4.dll""") #Qt SQLite plugin if build.platform_is_linux or build.platform_is_bsd: flags['prefix'] = ARGUMENTS.get('prefix', '/usr/local') diff --git a/mixxx/src/analyserqueue.cpp b/mixxx/src/analyserqueue.cpp index 3635c8ea7a99..5b56ca2318fb 100644 --- a/mixxx/src/analyserqueue.cpp +++ b/mixxx/src/analyserqueue.cpp @@ -406,8 +406,8 @@ AnalyserQueue* AnalyserQueue::createDefaultAnalyserQueue( ret->addAnalyser(new AnalyserGain(_config)); #ifdef __VAMP__ VampAnalyser::initializePluginPaths(); - #endif // __VAMP__ ret->addAnalyser(new AnalyserBeats(_config)); + #endif // __VAMP__ //ret->addAnalyser(new AnalyserVampKeyTest(_config)); ret->start(QThread::IdlePriority); @@ -423,8 +423,8 @@ AnalyserQueue* AnalyserQueue::createPrepareViewAnalyserQueue( ret->addAnalyser(new AnalyserGain(_config)); #ifdef __VAMP__ VampAnalyser::initializePluginPaths(); - #endif // __VAMP__ ret->addAnalyser(new AnalyserBeats(_config)); + #endif // __VAMP__ //ret->addAnalyser(new AnalyserVampKeyTest(_config)); ret->start(QThread::IdlePriority); diff --git a/mixxx/src/dlgpreferences.cpp b/mixxx/src/dlgpreferences.cpp index 25da7581949e..400321a940db 100755 --- a/mixxx/src/dlgpreferences.cpp +++ b/mixxx/src/dlgpreferences.cpp @@ -87,8 +87,10 @@ DlgPreferences::DlgPreferences(MixxxApp * mixxx, SkinLoader* pSkinLoader, m_wcrossfader = new DlgPrefCrossfader(this, config); addPageWidget(m_wcrossfader); + #ifdef __VAMP__ m_wbeats = new DlgPrefBeats(this, config); addPageWidget (m_wbeats); + #endif // __VAMP__ m_wreplaygain = new DlgPrefReplayGain(this, config); addPageWidget(m_wreplaygain); m_wrecord = new DlgPrefRecord(this, config); From 823c254281b653302c613cfffbd7a9f5326d6f1a Mon Sep 17 00:00:00 2001 From: Steven Boswell Date: Fri, 31 May 2013 17:25:11 -0700 Subject: [PATCH 07/15] Fixed the MinGW 64-bit build and the MinGW NSIS installer generation! --- mixxx/build/crossmingw.py | 6 ++-- mixxx/build/depends.py | 9 ++++-- mixxx/build/mixxx.py | 6 ++++ mixxx/build/nsis/Mixxx.nsi | 9 ++++++ .../lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp | 2 +- mixxx/lib/soundtouch-1.6.0/TDStretch.cpp | 2 +- mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp | 6 ++-- mixxx/src/SConscript | 31 ++++++++++++------- 8 files changed, 49 insertions(+), 22 deletions(-) diff --git a/mixxx/build/crossmingw.py b/mixxx/build/crossmingw.py index def0caa48787..63b3be8aaf09 100644 --- a/mixxx/build/crossmingw.py +++ b/mixxx/build/crossmingw.py @@ -14,13 +14,11 @@ i486-mingw32msvc- i586-mingw32msvc- i686-mingw32msvc- - i386-w64-mingw32- - i486-w64-mingw32- - i586-w64-mingw32- - i686-w64-mingw32- """) def find(env): + if 'CROSSMINGW_PREFIX' in env: + prefixes.insert(0, env['CROSSMINGW_PREFIX']) for prefix in prefixes: # First search in the SCons path and then the OS path: if env.WhereIs(prefix + 'gcc') or SCons.Util.WhereIs(prefix + 'gcc'): diff --git a/mixxx/build/depends.py b/mixxx/build/depends.py index 897b9753c73a..52c7be9e5ecb 100644 --- a/mixxx/build/depends.py +++ b/mixxx/build/depends.py @@ -379,10 +379,13 @@ def configure(self, build, conf, env=None): env.Append(CPPPATH=['#lib/%s' % self.SOUNDTOUCH_PATH]) # Check if the compiler has SSE extention enabled - # Allways the case on x64 (core instructions) + # Always the case on x64 (core instructions) optimize = int(util.get_flags(env, 'optimize', 1)) if self.sse_enabled(build): env.Append(CPPDEFINES='SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS') + build.env.Append(CCFLAGS = '-mmmx -msse') + env.Append(CPPDEFINES='__MMX__') + env.Append(CPPDEFINES='__SSE__') class TagLib(Dependence): def configure(self, build, conf): @@ -813,7 +816,6 @@ def configure(self, build, conf): build.env.Append(LIBPATH=mixxx_lib_path) # Find executables (e.g. protoc) in the winlib path - #build.env['ENV']['PATH'] += ";" + mixxx_lib_path build.env.AppendENVPath('PATH', mixxx_lib_path) #Ugh, MSVC-only hack :( see @@ -935,7 +937,10 @@ def post_dependency_check_configure(self, build, conf): elif build.toolchain_is_gnu: # Makes the program not launch a shell first build.env.Append(LINKFLAGS = '-Wl,-subsystem,windows') + # Enable the use of threads build.env.Append(CCFLAGS = '-mthreads') + # Linking won't succeed without this build.env.Append(CCFLAGS = '-fno-keep-inline-dllexport') + # Link in libz at the end, so dependent libraries find it build.env.Append(LIBS = 'z'); diff --git a/mixxx/build/mixxx.py b/mixxx/build/mixxx.py index 8e7ef0f6d68a..c76712e68f51 100644 --- a/mixxx/build/mixxx.py +++ b/mixxx/build/mixxx.py @@ -164,6 +164,12 @@ def __init__(self, target, machine, build, toolchain, available_features=[]): if self.crosscompile: if self.platform_is_windows: tools.append('crossmingw') + if self.machine_is_64bit: + extra_arguments['CROSSMINGW_PREFIX'] \ + = 'x86_64-w64-mingw32-' + else: + extra_arguments['CROSSMINGW_PREFIX'] \ + = 'i686-w64-mingw32-' if self.platform == 'osx': tools.append('crossosx') diff --git a/mixxx/build/nsis/Mixxx.nsi b/mixxx/build/nsis/Mixxx.nsi index 41aea8262262..be8d2bad6210 100644 --- a/mixxx/build/nsis/Mixxx.nsi +++ b/mixxx/build/nsis/Mixxx.nsi @@ -109,6 +109,8 @@ Function .onInit ; Prevent multiple installer instances FunctionEnd +!ifdef WINLIB_PATH + ;------------------------------- ; Install the VC 2010 redistributable DLLs if they're not already. Function InstallVCRedist @@ -123,12 +125,15 @@ Function InstallVCRedist ; Put the VC redist installer files there File ${WINLIB_PATH}\VC_redist\vc_red.cab File ${WINLIB_PATH}\VC_redist\vc_red.msi + File ${WINLIB_PATH}\VC_redist\msp_kb2565063.msp ClearErrors ; Call it & wait for it to install ExecWait 'msiexec /i $TEMP\vc_red.msi' + ExecWait 'msiexec /update $TEMP\msp_kb2565063.msp' Delete "$TEMP\vc_red.cab" Delete "$TEMP\vc_red.msi" + Delete "$TEMP\msp_kb2565063.msp" IfErrors 0 VCRedistDone MessageBox MB_ICONSTOP|MB_OK "There was a problem installing the Microsoft Visual C++ libraries.$\r$\nYou may need to run this installer as an administrator." Abort @@ -184,6 +189,8 @@ VSRedistInstalled: FunctionEnd +!endif ; WINLIB_PATH + ;-------------------------------- ; The stuff to install @@ -191,7 +198,9 @@ Section "Mixxx (required)" SecMixxx SectionIn RO +!ifdef WINLIB_PATH Call InstallVCRedist +!endif ; WINLIB_PATH ; Set output path to the installation directory. SetOutPath $INSTDIR diff --git a/mixxx/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp b/mixxx/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp index 01f64b0831f4..5bdfddcd62b6 100644 --- a/mixxx/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp +++ b/mixxx/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp @@ -178,7 +178,7 @@ void FIFOSampleBuffer::ensureCapacity(uint capacityRequirement) throw std::runtime_error("Couldn't allocate memory!\n"); } // Align the buffer to begin at 16byte cache line boundary for optimal performance - temp = (SAMPLETYPE *)(((ulong)tempUnaligned + 15) & (ulong)-16); + temp = (SAMPLETYPE *)(((uintptr_t)tempUnaligned + 15) & (uintptr_t)-16); if (samplesInBuffer) { memcpy(temp, ptrBegin(), samplesInBuffer * channels * sizeof(SAMPLETYPE)); diff --git a/mixxx/lib/soundtouch-1.6.0/TDStretch.cpp b/mixxx/lib/soundtouch-1.6.0/TDStretch.cpp index 2d602a5fcb28..8461928ab98a 100644 --- a/mixxx/lib/soundtouch-1.6.0/TDStretch.cpp +++ b/mixxx/lib/soundtouch-1.6.0/TDStretch.cpp @@ -721,7 +721,7 @@ void TDStretch::acceptNewOverlapLength(int newOverlapLength) pRefMidBufferUnaligned = new SAMPLETYPE[2 * overlapLength + 16 / sizeof(SAMPLETYPE)]; // ensure that 'pRefMidBuffer' is aligned to 16 byte boundary for efficiency - pRefMidBuffer = (SAMPLETYPE *)((((ulong)pRefMidBufferUnaligned) + 15) & (ulong)-16); + pRefMidBuffer = (SAMPLETYPE *)((((uintptr_t)pRefMidBufferUnaligned) + 15) & (uintptr_t)-16); } } diff --git a/mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp b/mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp index 0b6179e1dae3..0aa8d6c9dadb 100644 --- a/mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp +++ b/mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp @@ -93,7 +93,7 @@ double TDStretchSSE::calcCrossCorrStereo(const float *pV1, const float *pV2) con #define _MM_LOAD _mm_load_ps - if (((ulong)pV1) & 15) return -1e50; // skip unaligned locations + if (((uintptr_t)pV1) & 15) return -1e50; // skip unaligned locations #else // No cheating allowed, use unaligned load & take the resulting @@ -285,7 +285,7 @@ void FIRFilterSSE::setCoefficients(const float *coeffs, uint newLength, uint uRe // Ensure that filter coeffs array is aligned to 16-byte boundary delete[] filterCoeffsUnalign; filterCoeffsUnalign = new float[2 * newLength + 4]; - filterCoeffsAlign = (float *)(((unsigned long)filterCoeffsUnalign + 15) & (ulong)-16); + filterCoeffsAlign = (float *)(((uintptr_t)filterCoeffsUnalign + 15) & (uintptr_t)-16); fDivider = (float)resultDivider; @@ -313,7 +313,7 @@ uint FIRFilterSSE::evaluateFilterStereo(float *dest, const float *source, uint n assert(dest != NULL); assert((length % 8) == 0); assert(filterCoeffsAlign != NULL); - assert(((ulong)filterCoeffsAlign) % 16 == 0); + assert(((uintptr_t)filterCoeffsAlign) % 16 == 0); // filter is evaluated for two stereo samples with each iteration, thus use of 'j += 2' for (j = 0; j < count; j += 2) diff --git a/mixxx/src/SConscript b/mixxx/src/SConscript index c948beab8a47..72aaf02e7891 100644 --- a/mixxx/src/SConscript +++ b/mixxx/src/SConscript @@ -536,7 +536,7 @@ def BuildRelease(target, source, env): print "YOU ARE ABOUT TO PACKAGE A DEBUG BUILD!!" print print "Binary has size ", - if build.platform_is_windows: + if build.platform_is_windows and not build.crosscompile: os.system('for %I in ('+dist_dir+'\mixxx.exe) do @echo %~zI') else: os.system('ls -lh '+dist_dir+'/mixxx.exe | cut -d \' \' -f 5') @@ -551,13 +551,13 @@ def BuildRelease(target, source, env): print exe_name print print "Top line of README, check version:" - if build.platform_is_windows: + if build.platform_is_windows and not build.crosscompile: 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') else: os.system('head -n 1 README') print print "Top 2 lines of LICENSE, check version and copyright dates:" - if build.platform_is_windows: + if build.platform_is_windows and not build.crosscompile: 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') else: os.system('head -n 2 LICENSE') @@ -616,14 +616,23 @@ def BuildRelease(target, source, env): print "Cannot find NSIS. Do you have it installed?" else: # Call the NSIS build - buildwin64 = "/Dx64=1" if build.machine_is_64bit else '' - 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' % \ - {'path': nsis_path, - 'package_name': exe_name, - 'version': mixxx_version, - 'qtpath': os.environ['QTDIR'], - 'winlibpath': mixxx_winlib_path, - '64bit': buildwin64} + if build.crosscompile: + buildwin64 = "-Dx64=1" if build.machine_is_64bit else '' + command = '%(path)s -DPACKAGE_NAME=%(package_name)s -DPRODUCT_VERSION=%(version)s -DQTDIR=%(qtpath)s %(64bit)s build/nsis/Mixxx.nsi' % \ + {'path': nsis_path, + 'package_name': exe_name, + 'version': mixxx_version, + 'qtpath': os.environ['QTDIR'], + '64bit': buildwin64} + else: + buildwin64 = "/Dx64=1" if build.machine_is_64bit else '' + 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' % \ + {'path': nsis_path, + 'package_name': exe_name, + 'version': mixxx_version, + 'qtpath': os.environ['QTDIR'], + 'winlibpath': mixxx_winlib_path, + '64bit': buildwin64} print "Using command: " + command subprocess.check_call(command) else: From faa35285062f93e930b68f9eab0652160fcaf22c Mon Sep 17 00:00:00 2001 From: Steven Boswell Date: Sun, 2 Jun 2013 10:58:13 -0700 Subject: [PATCH 08/15] Updated the MinGW build for new dependencies libchromaprint and fftw. Fixed non-VAMP compilation in WSpinny. --- mixxx/build/depends.py | 1 + mixxx/src/SConscript | 12 ++++++------ mixxx/src/widget/wspinny.cpp | 10 ++++++++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/mixxx/build/depends.py b/mixxx/build/depends.py index dedfc90133e1..f3f0862ada4a 100644 --- a/mixxx/build/depends.py +++ b/mixxx/build/depends.py @@ -957,6 +957,7 @@ def post_dependency_check_configure(self, build, conf): elif build.toolchain_is_gnu: # Makes the program not launch a shell first build.env.Append(LINKFLAGS = '-Wl,-subsystem,windows') + build.env.Append(CCFLAGS = '-mwindows') # Enable the use of threads build.env.Append(CCFLAGS = '-mthreads') # Linking won't succeed without this diff --git a/mixxx/src/SConscript b/mixxx/src/SConscript index 4a329f3362ca..04a27d9eba5b 100644 --- a/mixxx/src/SConscript +++ b/mixxx/src/SConscript @@ -230,12 +230,12 @@ elif build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu crosscompile_bin_path = os.path.join (build.crosscompile_root, \ 'bin') dll_files = [ os.path.join (crosscompile_bin_path, \ - s) for s in [ 'libFLAC-8.dll', 'libogg-0.dll', - 'libportaudio-2.dll', 'libportmidi_s.dll', - 'libprotobuf-lite-7.dll', 'libsndfile-1.dll', - 'libsqlite3-0.dll', 'libstdc++-6.dll', 'libtag.dll', - 'libvorbis-0.dll', 'libvorbisenc-2.dll', - 'libvorbisfile-3.dll' ] ]; + s) for s in [ 'libchromaprint.dll', 'libfftw3-3.dll', + 'libFLAC-8.dll', 'libogg-0.dll', 'libportaudio-2.dll', + 'libportmidi_s.dll', 'libprotobuf-lite-7.dll', + 'libsndfile-1.dll', 'libsqlite3-0.dll', + 'libstdc++-6.dll', 'libtag.dll', 'libvorbis-0.dll', + 'libvorbisenc-2.dll', 'libvorbisfile-3.dll' ] ]; elif build.crosscompile and build.platform_is_osx: # Glob appropriate dylib files. We have 4 different library types, # x86_64, x86, powerpc, powerpc64 diff --git a/mixxx/src/widget/wspinny.cpp b/mixxx/src/widget/wspinny.cpp index a386edf2aac0..d13cb06e9e62 100644 --- a/mixxx/src/widget/wspinny.cpp +++ b/mixxx/src/widget/wspinny.cpp @@ -349,6 +349,7 @@ void WSpinny::updateVinylControlSpeed(double rpm) { void WSpinny::updateVinylControlSignalEnabled(double enabled) { m_bSignalActive = enabled; +#ifdef __VINYLCONTROL__ if (enabled && m_iVinylInput != -1) { m_pVCManager->addSignalQualityListener(this); } else { @@ -356,6 +357,10 @@ void WSpinny::updateVinylControlSignalEnabled(double enabled) { // fill with transparent black m_qImage.fill(qRgba(0,0,0,0)); } +#else // __VINYLCONTROL__ + // fill with transparent black + m_qImage.fill(qRgba(0,0,0,0)); +#endif // __VINYLCONTROL__ } void WSpinny::updateVinylControlEnabled(double enabled) { @@ -470,16 +475,21 @@ void WSpinny::wheelEvent(QWheelEvent *e) void WSpinny::showEvent(QShowEvent* event) { // If we want to draw the VC signal on this widget then register for // updates. + #ifdef __VINYLCONTROL__ if (m_bSignalActive && m_iVinylInput != -1 && m_pVCManager) { m_pVCManager->addSignalQualityListener(this); } + #endif // __VINYLCONTROL__ } void WSpinny::hideEvent(QHideEvent* event) { // When we are hidden we do not want signal quality updates. + #ifdef __VINYLCONTROL__ if (m_pVCManager) { m_pVCManager->removeSignalQualityListener(this); } + #endif // __VINYLCONTROL__ + // fill with transparent black m_qImage.fill(qRgba(0,0,0,0)); } From 9a70aed301808c531316dce240d2903746ff5626 Mon Sep 17 00:00:00 2001 From: Steven Boswell Date: Mon, 3 Jun 2013 08:31:28 -0700 Subject: [PATCH 09/15] Compared this branch to trunk, cleaned up some oversights. Also made sure this branch still compiles and runs on Linux. --- mixxx/build/mixxx.py | 15 ++-- .../lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp | 1 + mixxx/lib/soundtouch-1.6.0/TDStretch.cpp | 1 + mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp | 1 + mixxx/src/SConscript | 74 ++++++++++++++----- 5 files changed, 66 insertions(+), 26 deletions(-) diff --git a/mixxx/build/mixxx.py b/mixxx/build/mixxx.py index c76712e68f51..becaab30ec73 100644 --- a/mixxx/build/mixxx.py +++ b/mixxx/build/mixxx.py @@ -164,12 +164,15 @@ def __init__(self, target, machine, build, toolchain, available_features=[]): if self.crosscompile: if self.platform_is_windows: tools.append('crossmingw') - if self.machine_is_64bit: - extra_arguments['CROSSMINGW_PREFIX'] \ - = 'x86_64-w64-mingw32-' - else: - extra_arguments['CROSSMINGW_PREFIX'] \ - = 'i686-w64-mingw32-' + + # Find the toolchain when building under Fedora. + if self.toolchain_is_gnu: + if self.machine_is_64bit: + extra_arguments['CROSSMINGW_PREFIX'] \ + = 'x86_64-w64-mingw32-' + else: + extra_arguments['CROSSMINGW_PREFIX'] \ + = 'i686-w64-mingw32-' if self.platform == 'osx': tools.append('crossosx') diff --git a/mixxx/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp b/mixxx/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp index 5bdfddcd62b6..48b1c6909792 100644 --- a/mixxx/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp +++ b/mixxx/lib/soundtouch-1.6.0/FIFOSampleBuffer.cpp @@ -44,6 +44,7 @@ //////////////////////////////////////////////////////////////////////////////// #include +#include #include #include #include diff --git a/mixxx/lib/soundtouch-1.6.0/TDStretch.cpp b/mixxx/lib/soundtouch-1.6.0/TDStretch.cpp index 8461928ab98a..8b9996578d8f 100644 --- a/mixxx/lib/soundtouch-1.6.0/TDStretch.cpp +++ b/mixxx/lib/soundtouch-1.6.0/TDStretch.cpp @@ -43,6 +43,7 @@ #include #include +#include #include #include #include diff --git a/mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp b/mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp index 0aa8d6c9dadb..7ea60e1d0ead 100644 --- a/mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp +++ b/mixxx/lib/soundtouch-1.6.0/sse_optimized.cpp @@ -53,6 +53,7 @@ #include "cpu_detect.h" #include "STTypes.h" +#include using namespace soundtouch; diff --git a/mixxx/src/SConscript b/mixxx/src/SConscript index 04a27d9eba5b..85647febe936 100644 --- a/mixxx/src/SConscript +++ b/mixxx/src/SConscript @@ -226,16 +226,26 @@ if build.toolchain_is_msvs: elif build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu: # We're cross-compiling; grab these from the crosscompile bin # folder. - # TODO(XXX): Rebuild the dependent libraries as static. + # TODO(XXX): Rebuild the dependent libraries as static, and + # figure out how to tell scons to prefer static libraries. crosscompile_bin_path = os.path.join (build.crosscompile_root, \ 'bin') dll_files = [ os.path.join (crosscompile_bin_path, \ s) for s in [ 'libchromaprint.dll', 'libfftw3-3.dll', - 'libFLAC-8.dll', 'libogg-0.dll', 'libportaudio-2.dll', + 'libFLAC-8.dll', 'libogg-0.dll', 'libportaudio-2.dll', 'libportmidi_s.dll', 'libprotobuf-lite-7.dll', 'libsndfile-1.dll', 'libsqlite3-0.dll', 'libstdc++-6.dll', 'libtag.dll', 'libvorbis-0.dll', 'libvorbisenc-2.dll', 'libvorbisfile-3.dll' ] ]; + + # The ffmpeg build requires a few more DLLs. + if int(build.flags['ffmpeg']): + dll_files = [ os.path.join (crosscompile_bin_path, \ + s) for s in [ 'avcodec-54.dll', 'avformat-54.dll', + 'avutil-51.dll', 'swresample-0.dll', 'libbz2-1.dll', + 'libgcrypt-11.dll', 'libgpg-error-0.dll', + 'libgnutls-26.dll', 'libp11-kit-0.dll', + 'libtasn1-3.dll' ] ]; elif build.crosscompile and build.platform_is_osx: # Glob appropriate dylib files. We have 4 different library types, # x86_64, x86, powerpc, powerpc64 @@ -244,31 +254,55 @@ else: dll_files = list() # dll_files += on the next line required dll_files to exist if int(build.flags['vinylcontrol']) or int(build.flags['hid']): - if build.msvcdebug: - dll_files += Split("""$QTDIR/bin/phonond4.dll""") + if build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu: + if build.msvcdebug: + dll_files += Split("""$QTDIR/bin/phonond4.dll""") + else: + dll_files += Split("""$QTDIR/bin/phonon4.dll""") else: - dll_files += Split("""$QTDIR/bin/phonon4.dll""") + if build.msvcdebug: + dll_files += Split("""$QTDIR/lib/phonond4.dll""") + else: + dll_files += Split("""$QTDIR/lib/phonon4.dll""") if build.msvcdebug: - dll_files += Split("""$QTDIR/bin/QtCored4.dll - $QTDIR/bin/QtGuid4.dll - $QTDIR/bin/QtNetworkd4.dll - $QTDIR/bin/QtOpenGLd4.dll - $QTDIR/bin/QtSqld4.dll - $QTDIR/bin/QtXmld4.dll - $QTDIR/bin/QtScriptd4.dll""") + if build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu: + dll_files += Split("""$QTDIR/bin/QtCored4.dll + $QTDIR/bin/QtGuid4.dll + $QTDIR/bin/QtNetworkd4.dll + $QTDIR/bin/QtOpenGLd4.dll + $QTDIR/bin/QtSqld4.dll + $QTDIR/bin/QtXmld4.dll + $QTDIR/bin/QtScriptd4.dll""") + else: + dll_files += Split("""$QTDIR/lib/QtCored4.dll + $QTDIR/lib/QtGuid4.dll + $QTDIR/lib/QtNetworkd4.dll + $QTDIR/lib/QtOpenGLd4.dll + $QTDIR/lib/QtSqld4.dll + $QTDIR/lib/QtXmld4.dll + $QTDIR/lib/QtScriptd4.dll""") else: # if not int(build.flags['staticlibs']): - dll_files += Split("""$QTDIR/bin/QtCore4.dll - $QTDIR/bin/QtGui4.dll - $QTDIR/bin/QtNetwork4.dll - $QTDIR/bin/QtOpenGL4.dll - $QTDIR/bin/QtSql4.dll - $QTDIR/bin/QtXml4.dll - $QTDIR/bin/QtScript4.dll""") + if build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu: + dll_files += Split("""$QTDIR/bin/QtCore4.dll + $QTDIR/bin/QtGui4.dll + $QTDIR/bin/QtNetwork4.dll + $QTDIR/bin/QtOpenGL4.dll + $QTDIR/bin/QtSql4.dll + $QTDIR/bin/QtXml4.dll + $QTDIR/bin/QtScript4.dll""") + else: + dll_files += Split("""$QTDIR/lib/QtCore4.dll + $QTDIR/lib/QtGui4.dll + $QTDIR/lib/QtNetwork4.dll + $QTDIR/lib/QtOpenGL4.dll + $QTDIR/lib/QtSql4.dll + $QTDIR/lib/QtXml4.dll + $QTDIR/lib/QtScript4.dll""") if int(flags.get('sqlitedll', 0)): - if build.crosscompile: + if build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu: if build.msvcdebug: sqldll_files = Split("""$QTDIR/lib/qt4/plugins/sqldrivers/qsqlited4.dll""") #Qt SQLite plugin else: From 03ff7a447bd06bf90341743b5b1277ff4c7bf2e9 Mon Sep 17 00:00:00 2001 From: Steven Boswell Date: Mon, 3 Jun 2013 14:47:15 -0700 Subject: [PATCH 10/15] Now the MinGW build supports vamp, vinylcontrol, and hid, i.e. mingw{32,64}-phonon. --- mixxx/src/SConscript | 6 ++---- mixxx/vamp-plugins/SConscript | 2 +- mixxx/vamp-plugins/dsp/DownBeat.h | 2 +- mixxx/vamp-plugins/dsp/GetKeyMode.h | 2 +- mixxx/vamp-plugins/dsp/TempoTrackV2.h | 2 +- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/mixxx/src/SConscript b/mixxx/src/SConscript index 85647febe936..3950d085d817 100644 --- a/mixxx/src/SConscript +++ b/mixxx/src/SConscript @@ -255,10 +255,8 @@ else: if int(build.flags['vinylcontrol']) or int(build.flags['hid']): if build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu: - if build.msvcdebug: - dll_files += Split("""$QTDIR/bin/phonond4.dll""") - else: - dll_files += Split("""$QTDIR/bin/phonon4.dll""") + # mingw{32,64}-phonon only has one DLL. + dll_files += Split("""$QTDIR/bin/libphonon.dll""") else: if build.msvcdebug: dll_files += Split("""$QTDIR/lib/phonond4.dll""") diff --git a/mixxx/vamp-plugins/SConscript b/mixxx/vamp-plugins/SConscript index 99d9ba6ac2ea..d03bc217bfbe 100644 --- a/mixxx/vamp-plugins/SConscript +++ b/mixxx/vamp-plugins/SConscript @@ -67,7 +67,7 @@ if int(build.flags['vamp']): env = conf.Finish() if build.platform_is_linux: env["LINKFLAGS"].append("-Wl,--version-script=vamp-plugins/vamp-plugin.map") - if build.platform_is_windows: + if build.platform_is_windows and not build.crosscompile: env["LINKFLAGS"].remove("/entry:mainCRTStartup") env["LINKFLAGS"].append("/EXPORT:vampGetPluginDescriptor") #this will reduce DLL dependencies; no need to depend on MSVCRT.dll, etc diff --git a/mixxx/vamp-plugins/dsp/DownBeat.h b/mixxx/vamp-plugins/dsp/DownBeat.h index f02aeb382189..737b39d0f68f 100644 --- a/mixxx/vamp-plugins/dsp/DownBeat.h +++ b/mixxx/vamp-plugins/dsp/DownBeat.h @@ -18,7 +18,7 @@ #include -#ifdef __LINUX__ +#ifdef __GNUC__ #include //resolves size_t compile error on Ubuntu 11.10 #endif diff --git a/mixxx/vamp-plugins/dsp/GetKeyMode.h b/mixxx/vamp-plugins/dsp/GetKeyMode.h index 3c35705b3659..d23a47835863 100644 --- a/mixxx/vamp-plugins/dsp/GetKeyMode.h +++ b/mixxx/vamp-plugins/dsp/GetKeyMode.h @@ -39,7 +39,7 @@ #ifdef WIN64 #define lrint(dbl) ((int)(dbl)) #define lrintf(flt) ((int)(flt)) - #else + #elif !defined (__GNUC__) /* Win32 doesn't seem to have these functions. ** Therefore implement inline versions of them here. diff --git a/mixxx/vamp-plugins/dsp/TempoTrackV2.h b/mixxx/vamp-plugins/dsp/TempoTrackV2.h index cdee41144334..f1a2d05acefe 100644 --- a/mixxx/vamp-plugins/dsp/TempoTrackV2.h +++ b/mixxx/vamp-plugins/dsp/TempoTrackV2.h @@ -18,7 +18,7 @@ #define TEMPOTRACKV2_H #include -#ifdef __LINUX__ +#ifdef __GNUC__ #include //resolves size_t compile error on Ubuntu 11.10 #endif From 7b9dc3f7d268a4d3922f585b0918b55d4f440e4f Mon Sep 17 00:00:00 2001 From: Steven Boswell Date: Mon, 3 Jun 2013 17:05:11 -0700 Subject: [PATCH 11/15] Now the MinGW build supports shoutcast. --- mixxx/src/SConscript | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mixxx/src/SConscript b/mixxx/src/SConscript index 3950d085d817..997eaba1676a 100644 --- a/mixxx/src/SConscript +++ b/mixxx/src/SConscript @@ -238,14 +238,21 @@ elif build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu 'libstdc++-6.dll', 'libtag.dll', 'libvorbis-0.dll', 'libvorbisenc-2.dll', 'libvorbisfile-3.dll' ] ]; + # The shoutcast build requires a few more DLLs. + if int(build.flags['shoutcast']): + dll_files += [ os.path.join (crosscompile_bin_path, \ + s) for s in [ 'libshout-3.dll', 'libspeex-1.dll', + 'libtheora-0.dll' ] ]; + # The ffmpeg build requires a few more DLLs. if int(build.flags['ffmpeg']): - dll_files = [ os.path.join (crosscompile_bin_path, \ + dll_files += [ os.path.join (crosscompile_bin_path, \ s) for s in [ 'avcodec-54.dll', 'avformat-54.dll', 'avutil-51.dll', 'swresample-0.dll', 'libbz2-1.dll', 'libgcrypt-11.dll', 'libgpg-error-0.dll', 'libgnutls-26.dll', 'libp11-kit-0.dll', 'libtasn1-3.dll' ] ]; + elif build.crosscompile and build.platform_is_osx: # Glob appropriate dylib files. We have 4 different library types, # x86_64, x86, powerpc, powerpc64 From 08b22bdb42e1a0d6fb480f4701f48fe7ae674782 Mon Sep 17 00:00:00 2001 From: Steven Boswell Date: Thu, 13 Jun 2013 15:04:09 -0700 Subject: [PATCH 12/15] Now copies the libid3tag DLL. --- mixxx/src/SConscript | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mixxx/src/SConscript b/mixxx/src/SConscript index 997eaba1676a..893c821a2395 100644 --- a/mixxx/src/SConscript +++ b/mixxx/src/SConscript @@ -232,11 +232,12 @@ elif build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu 'bin') dll_files = [ os.path.join (crosscompile_bin_path, \ s) for s in [ 'libchromaprint.dll', 'libfftw3-3.dll', - 'libFLAC-8.dll', 'libogg-0.dll', 'libportaudio-2.dll', - 'libportmidi_s.dll', 'libprotobuf-lite-7.dll', - 'libsndfile-1.dll', 'libsqlite3-0.dll', - 'libstdc++-6.dll', 'libtag.dll', 'libvorbis-0.dll', - 'libvorbisenc-2.dll', 'libvorbisfile-3.dll' ] ]; + 'libFLAC-8.dll', 'libid3tag-0.dll', 'libogg-0.dll', + 'libportaudio-2.dll', 'libportmidi_s.dll', + 'libprotobuf-lite-7.dll', 'libsndfile-1.dll', + 'libsqlite3-0.dll', 'libstdc++-6.dll', 'libtag.dll', + 'libvorbis-0.dll', 'libvorbisenc-2.dll', + 'libvorbisfile-3.dll', 'pthreadGC2.dll' ] ]; # The shoutcast build requires a few more DLLs. if int(build.flags['shoutcast']): From 69801928e4b571538230ada016db721abe831fba Mon Sep 17 00:00:00 2001 From: ulatekh Date: Sun, 23 Jun 2013 11:53:38 -0700 Subject: [PATCH 13/15] Had to fix these merge issues by hand. --- build/depends.py | 1 + src/dlgabout.cpp | 19 +++++++---------- src/library/browse/browsetablemodel.h | 1 + src/library/playlisttablemodel.cpp | 4 ++++ src/library/playlisttablemodel.h | 3 ++- src/library/songdownloader.cpp | 9 +++++--- src/library/trackmodel.h | 3 +++ src/main.cpp | 10 +++++---- src/mixxx.cpp | 30 ++++++++++----------------- src/widget/wtracktableview.cpp | 5 ++--- 10 files changed, 43 insertions(+), 42 deletions(-) diff --git a/build/depends.py b/build/depends.py index f3f0862ada4a..661eb667e0f1 100644 --- a/build/depends.py +++ b/build/depends.py @@ -740,6 +740,7 @@ def sources(self, build): "util/stat.cpp", "util/timer.cpp", "util/performancetimer.cpp", + "util/version.cpp", # Add the QRC file which compiles in some extra resources # (prefs icons, etc.) diff --git a/src/dlgabout.cpp b/src/dlgabout.cpp index a0a48790e4ea..66bcb46599ee 100644 --- a/src/dlgabout.cpp +++ b/src/dlgabout.cpp @@ -16,23 +16,18 @@ ***************************************************************************/ #include "dlgabout.h" - -#include "defs_version.h" -#include "build.h" // Generated by SCons +#include "util/version.h" DlgAbout::DlgAbout(QWidget* parent) : QDialog(parent), Ui::DlgAboutDlg() { setupUi(this); - QString buildBranch, buildRevision; -#ifdef BUILD_BRANCH - buildBranch = BUILD_BRANCH; -#endif -#ifdef BUILD_REV - buildRevision = BUILD_REV; -#endif + QString mixxxVersion = Version::version(); + QString buildBranch = Version::developmentBranch(); + QString buildRevision = Version::developmentRevision(); QStringList version; - version.append(VERSION); + version.append(mixxxVersion); + if (!buildBranch.isEmpty() || !buildRevision.isEmpty()) { QStringList buildInfo; buildInfo.append("build"); @@ -46,7 +41,7 @@ DlgAbout::DlgAbout(QWidget* parent) : QDialog(parent), Ui::DlgAboutDlg() { } version_label->setText(version.join(" ")); - QString s_devTeam = QString(tr("Mixxx %1 Development Team")).arg(VERSION); + QString s_devTeam = QString(tr("Mixxx %1 Development Team")).arg(mixxxVersion); QString s_contributions = tr("With contributions from:"); QString s_specialThanks = tr("And special thanks to:"); QString s_pastDevs = tr("Past Developers"); diff --git a/src/library/browse/browsetablemodel.h b/src/library/browse/browsetablemodel.h index 8c5a5014fb33..b00992c0f582 100644 --- a/src/library/browse/browsetablemodel.h +++ b/src/library/browse/browsetablemodel.h @@ -51,6 +51,7 @@ class BrowseTableModel : public QStandardItemModel, public virtual TrackModel { const QString currentSearch() const; bool isColumnInternal(int); void moveTrack(const QModelIndex&, const QModelIndex&); + bool isLocked() { return false;} bool isColumnHiddenByDefault(int column); const QList& searchColumns() const; Qt::ItemFlags flags(const QModelIndex &index) const; diff --git a/src/library/playlisttablemodel.cpp b/src/library/playlisttablemodel.cpp index 0fc157a0ddac..c3f2a9ce31ba 100644 --- a/src/library/playlisttablemodel.cpp +++ b/src/library/playlisttablemodel.cpp @@ -247,6 +247,10 @@ void PlaylistTableModel::moveTrack(const QModelIndex& sourceIndex, select(); } +bool PlaylistTableModel::isLocked(){ + return m_playlistDao.isPlaylistLocked(m_iPlaylistId); +} + void PlaylistTableModel::shuffleTracks(const QModelIndex& shuffleStartIndex) { int numOfTracks = rowCount(); int seed = QDateTime::currentDateTime().toTime_t(); diff --git a/src/library/playlisttablemodel.h b/src/library/playlisttablemodel.h index 47954331f49b..0e94ced84c56 100644 --- a/src/library/playlisttablemodel.h +++ b/src/library/playlisttablemodel.h @@ -26,7 +26,8 @@ class PlaylistTableModel : public BaseSqlTableModel { int addTracks(const QModelIndex& index, QList locations); bool appendTrack(int trackId); void moveTrack(const QModelIndex& sourceIndex, - const QModelIndex& destIndex); + const QModelIndex& destIndex); + bool isLocked(); void shuffleTracks(const QModelIndex& shuffleStartIndex); TrackModel::CapabilitiesFlags getCapabilities() const; diff --git a/src/library/songdownloader.cpp b/src/library/songdownloader.cpp index b516aab61550..fa472d6c335d 100644 --- a/src/library/songdownloader.cpp +++ b/src/library/songdownloader.cpp @@ -1,7 +1,9 @@ #include #include -#include "defs_version.h" -#include "songdownloader.h" + +#include "library/songdownloader.h" + +#include "util/version.h" #define TEMP_EXTENSION ".tmp" @@ -52,7 +54,8 @@ bool SongDownloader::downloadFromQueue() { m_pRequest = new QNetworkRequest(downloadUrl); //Set up user agent for great justice - QString mixxxUA = QString("%1 %2").arg(QApplication::applicationName(), VERSION); + QString mixxxUA = QString("%1 %2").arg(QApplication::applicationName(), + Version::version()); QByteArray mixxxUABA = mixxxUA.toAscii(); m_pRequest->setRawHeader("User-Agent", mixxxUABA); m_pReply = m_pNetwork->get(*m_pRequest); diff --git a/src/library/trackmodel.h b/src/library/trackmodel.h index 59bfd4c9e6a1..706131af2783 100644 --- a/src/library/trackmodel.h +++ b/src/library/trackmodel.h @@ -92,6 +92,9 @@ class TrackModel { Q_UNUSED(sourceIndex); Q_UNUSED(destIndex); } + virtual bool isLocked() { + return false; + } virtual QAbstractItemDelegate* delegateForColumn(const int i, QObject* pParent) { Q_UNUSED(i); Q_UNUSED(pParent); diff --git a/src/main.cpp b/src/main.cpp index 4f5c61686c77..873de26507cb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -34,7 +34,7 @@ #include "qpixmap.h" #include "qsplashscreen.h" #include "errordialoghandler.h" -#include "defs_version.h" +#include "util/version.h" #ifdef __LADSPA__ #include @@ -147,13 +147,15 @@ int main(int argc, char * argv[]) QCoreApplication::setOrganizationDomain("mixxx.org"); QCoreApplication::setOrganizationName("Mixxx"); QCoreApplication::setApplicationName("Mixxx"); - QCoreApplication::setApplicationVersion(VERSION); + QString mixxxVersion = Version::version(); + QByteArray mixxxVersionBA = mixxxVersion.toLocal8Bit(); + QCoreApplication::setApplicationVersion(mixxxVersion); // Construct a list of strings based on the command line arguments CmdlineArgs& args = CmdlineArgs::Instance(); if (!args.Parse(argc, argv)) { - fputs("Mixxx digital DJ software v", stdout); - fputs(VERSION, stdout); + fputs("Mixxx DJ Software v", stdout); + fputs(mixxxVersionBA.constData(), stdout); fputs(" - Command line options", stdout); fputs( "\n(These are case-sensitive.)\n\n\ diff --git a/src/mixxx.cpp b/src/mixxx.cpp index d1d9f5abe483..75ca26fb096f 100644 --- a/src/mixxx.cpp +++ b/src/mixxx.cpp @@ -23,12 +23,10 @@ #include "mixxx.h" #include "analyserqueue.h" -#include "build.h" // Generated by SCons #include "controlobjectthreadmain.h" #include "controlpotmeter.h" #include "deck.h" #include "defs_urls.h" -#include "defs_version.h" #include "dlgabout.h" #include "dlgpreferences.h" #include "engine/enginemaster.h" @@ -57,6 +55,7 @@ #include "util/debug.h" #include "util/statsmanager.h" #include "util/timer.h" +#include "util/version.h" #ifdef __VINYLCONTROL__ #include "vinylcontrol/defs_vinylcontrol.h" @@ -98,18 +97,10 @@ bool loadTranslations(const QLocale& systemLocale, QString userLocale, } void MixxxApp::logBuildDetails() { - QString buildBranch, buildRevision, buildFlags; -#ifdef BUILD_BRANCH - buildBranch = BUILD_BRANCH; -#endif - -#ifdef BUILD_REV - buildRevision = BUILD_REV; -#endif - -#ifdef BUILD_FLAGS - buildFlags = BUILD_FLAGS; -#endif + QString version = Version::version(); + QString buildBranch = Version::developmentBranch(); + QString buildRevision = Version::developmentRevision(); + QString buildFlags = Version::buildFlags(); QStringList buildInfo; if (!buildBranch.isEmpty() && !buildRevision.isEmpty()) { @@ -126,19 +117,20 @@ void MixxxApp::logBuildDetails() { QString buildInfoFormatted = QString("(%1)").arg(buildInfo.join("; ")); // This is the first line in mixxx.log - qDebug() << "Mixxx" << VERSION << buildInfoFormatted << "is starting..."; + qDebug() << "Mixxx" << version << buildInfoFormatted << "is starting..."; qDebug() << "Qt version is:" << qVersion(); } void MixxxApp::initializeWindow() { - #ifdef __APPLE__ + QString version = Version::version(); +#ifdef __APPLE__ setWindowTitle(tr("Mixxx")); //App Store #elif defined(AMD64) || defined(EM64T) || defined(x86_64) - setWindowTitle(tr("Mixxx " VERSION " x64")); + setWindowTitle(tr("Mixxx %1 x64").arg(version)); #elif defined(IA64) - setWindowTitle(tr("Mixxx " VERSION " Itanium")); + setWindowTitle(tr("Mixxx %1 Itanium").arg(version)); #else - setWindowTitle(tr("Mixxx " VERSION)); + setWindowTitle(tr("Mixxx %1").arg(version)); #endif setWindowIcon(QIcon(":/images/ic_mixxx_window.png")); } diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp index 1756851ae349..0c843c95164e 100644 --- a/src/widget/wtracktableview.cpp +++ b/src/widget/wtracktableview.cpp @@ -881,7 +881,8 @@ void WTrackTableView::dragMoveEvent(QDragMoveEvent * event) { // Drag-and-drop "drop" event. Occurs when something is dropped onto the track table view void WTrackTableView::dropEvent(QDropEvent * event){ - if (!event->mimeData()->hasUrls()) { + TrackModel* trackModel = getTrackModel(); + if (!event->mimeData()->hasUrls() || trackModel->isLocked() ) { event->ignore(); return; } @@ -950,7 +951,6 @@ void WTrackTableView::dropEvent(QDropEvent * event){ // which lets us do nice things like "restore" the selection model. if (modelHasCapabilities(TrackModel::TRACKMODELCAPS_REORDER)) { - TrackModel* trackModel = getTrackModel(); // The model indices are sorted so that we remove the tracks from the table // in ascending order. This is necessary because if track A is above track B in @@ -1018,7 +1018,6 @@ void WTrackTableView::dropEvent(QDropEvent * event){ //Drag-and-drop from an external application //eg. dragging a track from Windows Explorer onto the track table. - TrackModel* trackModel = getTrackModel(); if (trackModel) { int numNewRows = urls.count(); From af1432536578b3b2ca850eaf382e413ba4288189 Mon Sep 17 00:00:00 2001 From: ulatekh Date: Sun, 23 Jun 2013 12:07:47 -0700 Subject: [PATCH 14/15] Fixed some more merge problems. --- mixxx/build/qtcreator/protobuf.pri | 39 ------------------------------ src/util/version.cpp | 37 ++++++++++++++++++++++++++++ src/util/version.h | 24 ++++++++++++++++++ 3 files changed, 61 insertions(+), 39 deletions(-) delete mode 100644 mixxx/build/qtcreator/protobuf.pri create mode 100644 src/util/version.cpp create mode 100644 src/util/version.h diff --git a/mixxx/build/qtcreator/protobuf.pri b/mixxx/build/qtcreator/protobuf.pri deleted file mode 100644 index 4e9f0da93d50..000000000000 --- a/mixxx/build/qtcreator/protobuf.pri +++ /dev/null @@ -1,39 +0,0 @@ -# -# Qt qmake integration with Google Protocol Buffers compiler protoc -# -# To compile protocol buffers with qt qmake, specify PROTOS variable and -# include this file -# -# Example: -# LIBS += /usr/local/lib/libprotobuf.so -# PROTOS = a.proto b.proto -# include(protobuf.pri) -# -# By default protoc looks for .proto files (including the imported ones) in -# the current directory where protoc is run. If you need to include additional -# paths specify the PROTOPATH variable -# -# Found at http://www.kieltech.de/uweswiki/Google%20Protocol%20Buffers -# - -PROTOPATH += . -#PROTOPATH += $$BASE_DIR/src/proto -PROTOPATH += ./src/proto -PROTOPATHS = -for(p, PROTOPATH):PROTOPATHS += --proto_path=$${p} - -protobuf_decl.name = protobuf header -protobuf_decl.input = PROTOS -protobuf_decl.output = ${QMAKE_FILE_BASE}.pb.h -protobuf_decl.commands = protoc --cpp_out="." $${PROTOPATHS} ${QMAKE_FILE_NAME} -protobuf_decl.variable_out = GENERATED_FILES -QMAKE_EXTRA_COMPILERS += protobuf_decl - -protobuf_impl.name = protobuf implementation -protobuf_impl.input = PROTOS -protobuf_impl.output = ${QMAKE_FILE_BASE}.pb.cc -protobuf_impl.depends = ${QMAKE_FILE_BASE}.pb.h -protobuf_impl.commands = $$escape_expand(\n) -protobuf_impl.variable_out = GENERATED_SOURCES -QMAKE_EXTRA_COMPILERS += protobuf_impl - diff --git a/src/util/version.cpp b/src/util/version.cpp new file mode 100644 index 000000000000..c33d00399382 --- /dev/null +++ b/src/util/version.cpp @@ -0,0 +1,37 @@ +#include "util/version.h" + +#include "defs_version.h" +#include "build.h" // Generated by SCons + +// static +QString Version::version() { + return VERSION; +} + +// static +QString Version::developmentBranch() { +#ifdef BUILD_BRANCH + return BUILD_BRANCH; +#else + return QString(); +#endif +} + +// static +QString Version::developmentRevision() { +#ifdef BUILD_REV + return BUILD_REV; +#else + return QString(); +#endif +} + +// static +QString Version::buildFlags() { +#ifdef BUILD_FLAGS + return BUILD_FLAGS; +#else + return QString(); +#endif +} + diff --git a/src/util/version.h b/src/util/version.h new file mode 100644 index 000000000000..b9ef147a9290 --- /dev/null +++ b/src/util/version.h @@ -0,0 +1,24 @@ +#ifndef VERSION_H +#define VERSION_H + +#include + +class Version { + public: + // Returns the current Mixxx version (e.g. 1.12.0-alpha) + static QString version(); + + // Returns the development branch (e.g. features_key) or the null + // string if the branch is unknown. + static QString developmentBranch(); + + // Returns the development revision (e.g. git3096) or the null string if the + // revision is unknown. + static QString developmentRevision(); + + // Returns the build flags used to build Mixxx (e.g. "hid=1 modplug=0") or + // the null string if the flags are unknown. + static QString buildFlags(); +}; + +#endif /* VERSION_H */ From 87da07ef1594d55586333274ed6c54de4baf99fc Mon Sep 17 00:00:00 2001 From: ulatekh Date: Sun, 23 Jun 2013 12:33:37 -0700 Subject: [PATCH 15/15] Fixes for the Win32 MinGW build, introduced by recent changes. --- src/SConscript | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/SConscript b/src/SConscript index d46f8b4ae399..58bf83bdf95a 100644 --- a/src/SConscript +++ b/src/SConscript @@ -13,7 +13,7 @@ from build import util, depends mixxx_version = util.get_mixxx_version() branch_name = util.get_branch_name() -vcs_revision = util.get_revision() +vcs_revision = util.get_revision() or "0" vcs_name = util.get_current_vcs() print "WE ARE IN:", os.getcwd() print "Building ", branch_name, " - rev.", vcs_revision @@ -40,15 +40,11 @@ if build.platform_is_windows: str_list.append('#define VER_FILEVERSION ') # Remove anything after ~ or - in the version number and replace the dots with commas str_list.append(mixxx_version.partition('~')[0].partition('-')[0].replace('.',',')) - if vcs_revision: - str_list.append(','+str(vcs_revision)) - str_list.append('\n') + str_list.append(','+str(vcs_revision)+'\n') str_list.append('#define VER_PRODUCTVERSION ') str_list.append(mixxx_version.partition('~')[0].partition('-')[0].replace('.',',')) - if vcs_revision: - str_list.append(','+str(vcs_revision)) - str_list.append('\n') + str_list.append(','+str(vcs_revision)+'\n') import datetime now = datetime.datetime.now()