set( TARGET Audacity ) set( TARGET_ROOT ${topdir}/src ) message( STATUS "========== Configuring ${TARGET} ==========" ) # Allow modules to link against the Audacity executable set( CMAKE_ENABLE_EXPORTS ON ) add_executable( ${TARGET} ) add_dependencies( ${TARGET} locale ) add_dependencies( ${TARGET} nyquist ) add_dependencies( ${TARGET} plug-ins ) def_vars() # Handle Audio Units option if( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) cmd_option( ${_OPT}use_audio_units "Use Audio Units plug-in support [on, off]" ON ) set( USE_AUDIO_UNITS ${${_OPT}use_audio_units} CACHE INTERNAL "" ) endif() # Handle Ladspa option cmd_option( ${_OPT}use_ladspa "Use LADSPA plug-in support [on, off]" ON ) set( USE_LADSPA ${${_OPT}use_ladspa} CACHE INTERNAL "" ) # Handle VST option cmd_option( ${_OPT}use_vst "Use VST2 plug-in support [on, off]" ON ) set( USE_VST ${${_OPT}use_vst} CACHE INTERNAL "" ) # # # list( APPEND SOURCES PRIVATE AColor.cpp AColor.h AboutDialog.cpp AboutDialog.h AdornedRulerPanel.cpp AdornedRulerPanel.h AllThemeResources.h AttachedVirtualFunction.h Audacity.h AudacityApp.cpp AudacityApp.h AudacityException.cpp AudacityException.h AudacityHeaders.cpp AudacityHeaders.h AudacityLogger.cpp AudacityLogger.h AudioIO.cpp AudioIO.h AudioIOBase.cpp AudioIOBase.h AudioIOListener.h AutoRecovery.cpp AutoRecovery.h AutoRecoveryDialog.cpp AutoRecoveryDialog.h BatchCommandDialog.cpp BatchCommandDialog.h BatchCommands.cpp BatchCommands.h BatchProcessDialog.cpp BatchProcessDialog.h Benchmark.cpp Benchmark.h BlockFile.cpp BlockFile.h CellularPanel.cpp CellularPanel.h ClassicThemeAsCeeCode.h ClientData.h ClientDataHelpers.h Clipboard.cpp Clipboard.h CommonCommandFlags.cpp CommonCommandFlags.h CrashReport.cpp CrashReport.h DarkThemeAsCeeCode.h Dependencies.cpp Dependencies.h DeviceChange.cpp DeviceChange.h DeviceManager.cpp DeviceManager.h Diags.cpp Diags.h DirManager.cpp DirManager.h Dither.cpp Dither.h Envelope.cpp Envelope.h EnvelopeEditor.cpp EnvelopeEditor.h Experimental.h FFT.cpp FFT.h FFmpeg.cpp FFmpeg.h FileException.cpp FileException.h FileFormats.cpp FileFormats.h FileIO.cpp FileIO.h FileNames.cpp FileNames.h FreqWindow.cpp FreqWindow.h HelpText.cpp HelpText.h HiContrastThemeAsCeeCode.h HistoryWindow.cpp HistoryWindow.h HitTestResult.h ImageManipulation.cpp ImageManipulation.h InconsistencyException.cpp InconsistencyException.h Internat.cpp Internat.h InterpolateAudio.cpp InterpolateAudio.h KeyboardCapture.cpp KeyboardCapture.h LabelDialog.cpp LabelDialog.h LabelTrack.cpp LabelTrack.h LangChoice.cpp LangChoice.h Languages.cpp Languages.h Legacy.cpp Legacy.h LightThemeAsCeeCode.h Lyrics.cpp Lyrics.h LyricsWindow.cpp LyricsWindow.h MacroMagic.h Makefile.am Makefile.in Matrix.cpp Matrix.h MemoryX.h Menus.cpp Menus.h MissingAliasFileDialog.cpp MissingAliasFileDialog.h Mix.cpp Mix.h MixerBoard.cpp MixerBoard.h ModuleManager.cpp ModuleManager.h NoteTrack.cpp NoteTrack.h NumberScale.h PitchName.cpp PitchName.h PlatformCompatibility.cpp PlatformCompatibility.h PluginManager.cpp PluginManager.h Prefs.cpp Prefs.h Printing.cpp Printing.h Profiler.cpp Profiler.h Project.cpp Project.h ProjectAudioIO.cpp ProjectAudioIO.h ProjectAudioManager.cpp ProjectAudioManager.h ProjectFSCK.cpp ProjectFSCK.h ProjectFileIO.cpp ProjectFileIO.h ProjectFileIORegistry.cpp ProjectFileIORegistry.h ProjectFileManager.cpp ProjectFileManager.h ProjectHistory.cpp ProjectHistory.h ProjectManager.cpp ProjectManager.h ProjectSelectionManager.cpp ProjectSelectionManager.h ProjectSettings.cpp ProjectSettings.h ProjectStatus.cpp ProjectStatus.h ProjectWindow.cpp ProjectWindow.h ProjectWindowBase.cpp ProjectWindowBase.h RealFFTf.cpp RealFFTf.h RealFFTf48x.cpp RealFFTf48x.h RefreshCode.h Registrar.h Resample.cpp Resample.h RevisionIdent.h RingBuffer.cpp RingBuffer.h SampleFormat.cpp SampleFormat.h Screenshot.cpp Screenshot.h SelectUtilities.cpp SelectUtilities.h SelectedRegion.cpp SelectedRegion.h SelectionState.cpp SelectionState.h Sequence.cpp Sequence.h Shuttle.cpp Shuttle.h ShuttleGetDefinition.cpp ShuttleGetDefinition.h ShuttleGui.cpp ShuttleGui.h ShuttlePrefs.cpp ShuttlePrefs.h Snap.cpp Snap.h SoundActivatedRecord.cpp SoundActivatedRecord.h Spectrum.cpp Spectrum.h SpectrumAnalyst.cpp SpectrumAnalyst.h SplashDialog.cpp SplashDialog.h SseMathFuncs.cpp SseMathFuncs.h Tags.cpp Tags.h Theme.cpp Theme.h ThemeAsCeeCode.h TimeDialog.cpp TimeDialog.h TimeTrack.cpp TimeTrack.h TimerRecordDialog.cpp TimerRecordDialog.h Track.cpp Track.h TrackArtist.cpp TrackArtist.h TrackInfo.cpp TrackInfo.h TrackPanel.cpp TrackPanel.h TrackPanelAx.cpp TrackPanelAx.h TrackPanelCell.h TrackPanelDrawable.h TrackPanelDrawingContext.h TrackPanelListener.h TrackPanelMouseEvent.h TrackPanelResizeHandle.cpp TrackPanelResizeHandle.h TrackPanelResizerCell.cpp TrackPanelResizerCell.h TrackUtilities.cpp TrackUtilities.h UIHandle.cpp UIHandle.h UndoManager.cpp UndoManager.h UserException.cpp UserException.h ViewInfo.cpp ViewInfo.h VoiceKey.cpp VoiceKey.h WaveClip.cpp WaveClip.h WaveTrack.cpp WaveTrack.h WaveTrackLocation.h WrappedType.cpp WrappedType.h ZoomInfo.cpp ZoomInfo.h float_cast.h wxFileNameWrapper.h # Blockfile blockfile/LegacyAliasBlockFile.cpp blockfile/LegacyAliasBlockFile.h blockfile/LegacyBlockFile.cpp blockfile/LegacyBlockFile.h blockfile/NotYetAvailableException.cpp blockfile/NotYetAvailableException.h blockfile/ODDecodeBlockFile.cpp blockfile/ODDecodeBlockFile.h blockfile/ODPCMAliasBlockFile.cpp blockfile/ODPCMAliasBlockFile.h blockfile/PCMAliasBlockFile.cpp blockfile/PCMAliasBlockFile.h blockfile/SilentBlockFile.cpp blockfile/SilentBlockFile.h blockfile/SimpleBlockFile.cpp blockfile/SimpleBlockFile.h # Commands commands/AppCommandEvent.cpp commands/AppCommandEvent.h commands/AudacityCommand.cpp commands/AudacityCommand.h commands/BatchEvalCommand.cpp commands/BatchEvalCommand.h commands/Command.cpp commands/Command.h commands/CommandBuilder.cpp commands/CommandBuilder.h commands/CommandContext.cpp commands/CommandContext.h commands/CommandDirectory.cpp commands/CommandDirectory.h commands/CommandFlag.h commands/CommandFunctors.h commands/CommandHandler.cpp commands/CommandHandler.h commands/CommandManager.cpp commands/CommandManager.h commands/CommandManagerWindowClasses.h commands/CommandMisc.h commands/CommandSignature.cpp commands/CommandSignature.h commands/CommandTargets.cpp commands/CommandTargets.h commands/CommandType.cpp commands/CommandType.h commands/CompareAudioCommand.cpp commands/CompareAudioCommand.h commands/Demo.cpp commands/Demo.h commands/DragCommand.cpp commands/DragCommand.h commands/GetInfoCommand.cpp commands/GetInfoCommand.h commands/GetTrackInfoCommand.cpp commands/GetTrackInfoCommand.h commands/HelpCommand.cpp commands/HelpCommand.h commands/ImportExportCommands.cpp commands/ImportExportCommands.h commands/Keyboard.cpp commands/Keyboard.h commands/LoadCommands.cpp commands/LoadCommands.h commands/MessageCommand.cpp commands/MessageCommand.h commands/OpenSaveCommands.cpp commands/OpenSaveCommands.h commands/PreferenceCommands.cpp commands/PreferenceCommands.h commands/ResponseQueue.cpp commands/ResponseQueue.h commands/ScreenshotCommand.cpp commands/ScreenshotCommand.h commands/ScriptCommandRelay.cpp commands/ScriptCommandRelay.h commands/SelectCommand.cpp commands/SelectCommand.h commands/SetClipCommand.cpp commands/SetClipCommand.h commands/SetEnvelopeCommand.cpp commands/SetEnvelopeCommand.h commands/SetLabelCommand.cpp commands/SetLabelCommand.h commands/SetProjectCommand.cpp commands/SetProjectCommand.h commands/SetTrackInfoCommand.cpp commands/SetTrackInfoCommand.h commands/Validators.h # Built-in Effects effects/Amplify.cpp effects/Amplify.h effects/AutoDuck.cpp effects/AutoDuck.h effects/BassTreble.cpp effects/BassTreble.h effects/Biquad.cpp effects/Biquad.h effects/ChangePitch.cpp effects/ChangePitch.h effects/ChangeSpeed.cpp effects/ChangeSpeed.h effects/ChangeTempo.cpp effects/ChangeTempo.h effects/ClickRemoval.cpp effects/ClickRemoval.h effects/Compressor.cpp effects/Compressor.h effects/Contrast.cpp effects/Contrast.h effects/Distortion.cpp effects/Distortion.h effects/DtmfGen.cpp effects/DtmfGen.h effects/EBUR128.cpp effects/EBUR128.h effects/Echo.cpp effects/Echo.h effects/Effect.cpp effects/Effect.h effects/EffectManager.cpp effects/EffectManager.h effects/EffectUI.cpp effects/EffectUI.h effects/Equalization.cpp effects/Equalization.h effects/Equalization48x.cpp effects/Equalization48x.h effects/Fade.cpp effects/Fade.h effects/FindClipping.cpp effects/FindClipping.h effects/Generator.cpp effects/Generator.h effects/Invert.cpp effects/Invert.h effects/LoadEffects.cpp effects/LoadEffects.h effects/Loudness.cpp effects/Loudness.h effects/Noise.cpp effects/Noise.h effects/NoiseReduction.cpp effects/NoiseReduction.h effects/NoiseRemoval.cpp effects/NoiseRemoval.h effects/Normalize.cpp effects/Normalize.h effects/Paulstretch.cpp effects/Paulstretch.h effects/Phaser.cpp effects/Phaser.h effects/RealtimeEffectManager.cpp effects/RealtimeEffectManager.h effects/Repair.cpp effects/Repair.h effects/Repeat.cpp effects/Repeat.h effects/Reverb.cpp effects/Reverb.h effects/Reverb_libSoX.h effects/Reverse.cpp effects/Reverse.h effects/SBSMSEffect.cpp effects/SBSMSEffect.h effects/ScienFilter.cpp effects/ScienFilter.h effects/ScoreAlignDialog.cpp effects/ScoreAlignDialog.h effects/Silence.cpp effects/Silence.h effects/SimpleMono.cpp effects/SimpleMono.h effects/SoundTouchEffect.cpp effects/SoundTouchEffect.h effects/StereoToMono.cpp effects/StereoToMono.h effects/TimeScale.cpp effects/TimeScale.h effects/TimeWarper.cpp effects/TimeWarper.h effects/ToneGen.cpp effects/ToneGen.h effects/TruncSilence.cpp effects/TruncSilence.h effects/TwoPassSimpleMono.cpp effects/TwoPassSimpleMono.h effects/Wahwah.cpp effects/Wahwah.h # VST Effects $<$: effects/VST/VSTControl.h effects/VST/VSTEffect.cpp effects/VST/VSTEffect.h effects/VST/aeffectx.h > $<$,$>: effects/VST/VSTControlGTK.cpp effects/VST/VSTControlGTK.h > $<$,$>: effects/VST/VSTControlMSW.cpp effects/VST/VSTControlMSW.h > $<$,$>: effects/VST/VSTControlOSX.h effects/VST/VSTControlOSX.mm > # Audio Unit Effects $<$,$>: effects/audiounits/AUControl.h effects/audiounits/AUControl.mm effects/audiounits/AudioUnitEffect.cpp effects/audiounits/AudioUnitEffect.h > # Ladspa Effects $<$: effects/ladspa/LadspaEffect.cpp effects/ladspa/LadspaEffect.h effects/ladspa/ladspa.h > # LV2 Effects $<$: effects/lv2/LV2Effect.cpp effects/lv2/LV2Effect.h effects/lv2/LoadLV2.cpp effects/lv2/LoadLV2.h effects/lv2/NativeWindow.h effects/lv2/lv2_external_ui.h effects/lv2/zix/common.h effects/lv2/zix/ring.cpp effects/lv2/zix/ring.h > # Nyquist Effects $<$: effects/nyquist/LoadNyquist.cpp effects/nyquist/LoadNyquist.h effects/nyquist/Nyquist.cpp effects/nyquist/Nyquist.h > # VAMP Effects $<$: effects/vamp/LoadVamp.cpp effects/vamp/LoadVamp.h effects/vamp/VampEffect.cpp effects/vamp/VampEffect.h > # Export export/Export.cpp export/Export.h # Standard exporters export/ExportCL.cpp export/ExportMP3.cpp export/ExportMP3.h export/ExportMultiple.cpp export/ExportMultiple.h export/ExportPCM.cpp # Optional exporters $<$: export/ExportFFmpeg.cpp export/ExportFFmpegDialogs.cpp export/ExportFFmpegDialogs.h > $<$: export/ExportFLAC.cpp > $<$: export/ExportMP2.cpp > $<$,$>: export/ExportOGG.cpp > # Import import/FormatClassifier.cpp import/FormatClassifier.h import/Import.cpp import/Import.h import/ImportForwards.h import/MultiFormatReader.cpp import/MultiFormatReader.h import/RawAudioGuess.cpp import/RawAudioGuess.h import/SpecPowerMeter.cpp import/SpecPowerMeter.h # Standard importers import/ImportLOF.cpp import/ImportPCM.cpp import/ImportPlugin.h import/ImportRaw.cpp import/ImportRaw.h # Optional importers $<$: import/ImportFFmpeg.cpp > $<$: import/ImportFLAC.cpp > $<$: import/ImportGStreamer.cpp > $<$: import/ImportMIDI.cpp import/ImportMIDI.h > $<$: import/ImportMP3.cpp > $<$,$>: import/ImportOGG.cpp > # Menus menus/ClipMenus.cpp menus/EditMenus.cpp menus/ExtraMenus.cpp menus/FileMenus.cpp menus/HelpMenus.cpp menus/LabelMenus.cpp menus/NavigationMenus.cpp menus/PluginMenus.cpp menus/SelectMenus.cpp menus/ToolbarMenus.cpp menus/TrackMenus.cpp menus/TransportMenus.cpp menus/ViewMenus.cpp menus/WindowMenus.cpp # On demand loading ondemand/ODComputeSummaryTask.cpp ondemand/ODComputeSummaryTask.h ondemand/ODDecodeFFmpegTask.cpp ondemand/ODDecodeFFmpegTask.h ondemand/ODDecodeFlacTask.cpp ondemand/ODDecodeFlacTask.h ondemand/ODDecodeTask.cpp ondemand/ODDecodeTask.h ondemand/ODManager.cpp ondemand/ODManager.h ondemand/ODTask.cpp ondemand/ODTask.h ondemand/ODTaskThread.cpp ondemand/ODTaskThread.h ondemand/ODWaveTrackTaskQueue.cpp ondemand/ODWaveTrackTaskQueue.h # Preferences prefs/BatchPrefs.cpp prefs/BatchPrefs.h prefs/DevicePrefs.cpp prefs/DevicePrefs.h prefs/DirectoriesPrefs.cpp prefs/DirectoriesPrefs.h prefs/EffectsPrefs.cpp prefs/EffectsPrefs.h prefs/ExtImportPrefs.cpp prefs/ExtImportPrefs.h prefs/GUIPrefs.cpp prefs/GUIPrefs.h prefs/GUISettings.h prefs/ImportExportPrefs.cpp prefs/ImportExportPrefs.h prefs/KeyConfigPrefs.cpp prefs/KeyConfigPrefs.h prefs/LibraryPrefs.cpp prefs/LibraryPrefs.h prefs/MidiIOPrefs.cpp prefs/MidiIOPrefs.h prefs/ModulePrefs.cpp prefs/ModulePrefs.h prefs/MousePrefs.cpp prefs/MousePrefs.h prefs/PlaybackPrefs.cpp prefs/PlaybackPrefs.h prefs/PrefsDialog.cpp prefs/PrefsDialog.h prefs/PrefsPanel.h prefs/ProjectsPrefs.cpp prefs/ProjectsPrefs.h prefs/QualityPrefs.cpp prefs/QualityPrefs.h prefs/RecordingPrefs.cpp prefs/RecordingPrefs.h prefs/SpectrogramSettings.cpp prefs/SpectrogramSettings.h prefs/SpectrumPrefs.cpp prefs/SpectrumPrefs.h prefs/ThemePrefs.cpp prefs/ThemePrefs.h prefs/TracksBehaviorsPrefs.cpp prefs/TracksBehaviorsPrefs.h prefs/TracksPrefs.cpp prefs/TracksPrefs.h prefs/WarningsPrefs.cpp prefs/WarningsPrefs.h prefs/WaveformPrefs.cpp prefs/WaveformPrefs.h prefs/WaveformSettings.cpp prefs/WaveformSettings.h # Toolbars toolbars/ControlToolBar.cpp toolbars/ControlToolBar.h toolbars/DeviceToolBar.cpp toolbars/DeviceToolBar.h toolbars/EditToolBar.cpp toolbars/EditToolBar.h toolbars/MeterToolBar.cpp toolbars/MeterToolBar.h toolbars/MixerToolBar.cpp toolbars/MixerToolBar.h toolbars/ScrubbingToolBar.cpp toolbars/ScrubbingToolBar.h toolbars/SelectionBar.cpp toolbars/SelectionBar.h toolbars/SelectionBarListener.h toolbars/SpectralSelectionBar.cpp toolbars/SpectralSelectionBar.h toolbars/SpectralSelectionBarListener.h toolbars/TimerToolBar.cpp toolbars/TimerToolBar.h toolbars/ToolBar.cpp toolbars/ToolBar.h toolbars/ToolDock.cpp toolbars/ToolDock.h toolbars/ToolManager.cpp toolbars/ToolManager.h toolbars/ToolsToolBar.cpp toolbars/ToolsToolBar.h toolbars/TranscriptionToolBar.cpp toolbars/TranscriptionToolBar.h # Tracks tracks/labeltrack/ui/LabelDefaultClickHandle.cpp tracks/labeltrack/ui/LabelDefaultClickHandle.h tracks/labeltrack/ui/LabelGlyphHandle.cpp tracks/labeltrack/ui/LabelGlyphHandle.h tracks/labeltrack/ui/LabelTextHandle.cpp tracks/labeltrack/ui/LabelTextHandle.h tracks/labeltrack/ui/LabelTrackControls.cpp tracks/labeltrack/ui/LabelTrackControls.h tracks/labeltrack/ui/LabelTrackVRulerControls.cpp tracks/labeltrack/ui/LabelTrackVRulerControls.h tracks/labeltrack/ui/LabelTrackView.cpp tracks/labeltrack/ui/LabelTrackView.h tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.cpp tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.h tracks/playabletrack/notetrack/ui/NoteTrackControls.cpp tracks/playabletrack/notetrack/ui/NoteTrackControls.h tracks/playabletrack/notetrack/ui/NoteTrackSliderHandles.cpp tracks/playabletrack/notetrack/ui/NoteTrackSliderHandles.h tracks/playabletrack/notetrack/ui/NoteTrackVRulerControls.cpp tracks/playabletrack/notetrack/ui/NoteTrackVRulerControls.h tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.h tracks/playabletrack/notetrack/ui/NoteTrackView.cpp tracks/playabletrack/notetrack/ui/NoteTrackView.h tracks/playabletrack/notetrack/ui/StretchHandle.cpp tracks/playabletrack/notetrack/ui/StretchHandle.h tracks/playabletrack/ui/PlayableTrackButtonHandles.cpp tracks/playabletrack/ui/PlayableTrackButtonHandles.h tracks/playabletrack/ui/PlayableTrackControls.cpp tracks/playabletrack/ui/PlayableTrackControls.h tracks/playabletrack/wavetrack/ui/CutlineHandle.cpp tracks/playabletrack/wavetrack/ui/CutlineHandle.h tracks/playabletrack/wavetrack/ui/SampleHandle.cpp tracks/playabletrack/wavetrack/ui/SampleHandle.h tracks/playabletrack/wavetrack/ui/SpectrumVRulerControls.cpp tracks/playabletrack/wavetrack/ui/SpectrumVRulerControls.h tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.cpp tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.h tracks/playabletrack/wavetrack/ui/SpectrumView.cpp tracks/playabletrack/wavetrack/ui/SpectrumView.h tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp tracks/playabletrack/wavetrack/ui/WaveTrackControls.h tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.cpp tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.h tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.cpp tracks/playabletrack/wavetrack/ui/WaveTrackVRulerControls.h tracks/playabletrack/wavetrack/ui/WaveTrackVZoomHandle.cpp tracks/playabletrack/wavetrack/ui/WaveTrackVZoomHandle.h tracks/playabletrack/wavetrack/ui/WaveTrackView.cpp tracks/playabletrack/wavetrack/ui/WaveTrackView.h tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.cpp tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.h tracks/playabletrack/wavetrack/ui/WaveformVRulerControls.cpp tracks/playabletrack/wavetrack/ui/WaveformVRulerControls.h tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.cpp tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.h tracks/playabletrack/wavetrack/ui/WaveformView.cpp tracks/playabletrack/wavetrack/ui/WaveformView.h tracks/timetrack/ui/TimeTrackControls.cpp tracks/timetrack/ui/TimeTrackControls.h tracks/timetrack/ui/TimeTrackVRulerControls.cpp tracks/timetrack/ui/TimeTrackVRulerControls.h tracks/timetrack/ui/TimeTrackView.cpp tracks/timetrack/ui/TimeTrackView.h # Tracks UI tracks/ui/BackgroundCell.cpp tracks/ui/BackgroundCell.h tracks/ui/ButtonHandle.cpp tracks/ui/ButtonHandle.h tracks/ui/CommonTrackControls.cpp tracks/ui/CommonTrackControls.h tracks/ui/CommonTrackPanelCell.cpp tracks/ui/CommonTrackPanelCell.h tracks/ui/CommonTrackView.cpp tracks/ui/CommonTrackView.h tracks/ui/EditCursorOverlay.cpp tracks/ui/EditCursorOverlay.h tracks/ui/EnvelopeHandle.cpp tracks/ui/EnvelopeHandle.h tracks/ui/PlayIndicatorOverlay.cpp tracks/ui/PlayIndicatorOverlay.h tracks/ui/ScrubUI.cpp tracks/ui/ScrubUI.h tracks/ui/Scrubbing.cpp tracks/ui/Scrubbing.h tracks/ui/SelectHandle.cpp tracks/ui/SelectHandle.h tracks/ui/SliderHandle.cpp tracks/ui/SliderHandle.h tracks/ui/TimeShiftHandle.cpp tracks/ui/TimeShiftHandle.h tracks/ui/TrackButtonHandles.cpp tracks/ui/TrackButtonHandles.h tracks/ui/TrackControls.cpp tracks/ui/TrackControls.h tracks/ui/TrackSelectHandle.cpp tracks/ui/TrackSelectHandle.h tracks/ui/TrackVRulerControls.cpp tracks/ui/TrackVRulerControls.h tracks/ui/TrackView.cpp tracks/ui/TrackView.h tracks/ui/ZoomHandle.cpp tracks/ui/ZoomHandle.h # Widgets widgets/AButton.cpp widgets/AButton.h widgets/ASlider.cpp widgets/ASlider.h widgets/AttachableScrollBar.cpp widgets/AttachableScrollBar.h widgets/AudacityMessageBox.cpp widgets/AudacityMessageBox.h widgets/BackedPanel.cpp widgets/BackedPanel.h widgets/ErrorDialog.cpp widgets/ErrorDialog.h widgets/ExpandingToolBar.cpp widgets/ExpandingToolBar.h widgets/FileHistory.cpp widgets/FileHistory.h widgets/Grabber.cpp widgets/Grabber.h widgets/Grid.cpp widgets/Grid.h widgets/HelpSystem.cpp widgets/HelpSystem.h widgets/HtmlWindow.cpp widgets/HtmlWindow.h widgets/ImageRoll.cpp widgets/ImageRoll.h widgets/KeyView.cpp widgets/KeyView.h widgets/Meter.cpp widgets/Meter.h widgets/MeterPanelBase.cpp widgets/MeterPanelBase.h widgets/MultiDialog.cpp widgets/MultiDialog.h widgets/NumericTextCtrl.cpp widgets/NumericTextCtrl.h widgets/Overlay.cpp widgets/Overlay.h widgets/OverlayPanel.cpp widgets/OverlayPanel.h widgets/PopupMenuTable.cpp widgets/PopupMenuTable.h widgets/ProgressDialog.cpp widgets/ProgressDialog.h widgets/Ruler.cpp widgets/Ruler.h widgets/Warning.cpp widgets/Warning.h widgets/WindowAccessible.cpp widgets/WindowAccessible.h widgets/numformatter.cpp widgets/numformatter.h widgets/valnum.cpp widgets/valnum.h widgets/wxPanelWrapper.cpp widgets/wxPanelWrapper.h # XML handling xml/XMLFileReader.cpp xml/XMLFileReader.h xml/XMLTagHandler.cpp xml/XMLTagHandler.h xml/XMLWriter.cpp xml/XMLWriter.h xml/audacityproject.dtd ) # # # list( APPEND HEADERS ../include/audacity/EffectInterface.h ../include/audacity/Types.h ../include/audacity/ConfigInterface.h ../include/audacity/ModuleInterface.h ../include/audacity/PluginInterface.h ../include/audacity/ComponentInterface.h ../include/audacity/EffectAutomationParameters.h ../include/audacity/ImporterInterface.h ) # # # list( APPEND INCLUDES PUBLIC ${_PRVDIR} ${topdir}/lib-src/lib-widget-extra ${topdir}/include ${TARGET_ROOT} ) # # Define resources # list( APPEND RESOURCES ../presets/EQDefaultCurves.xml ) # # # list( APPEND DEFINES PRIVATE BUILDING_AUDACITY WXINTL_NO_GETTEXT_MACRO WXUSINGDLL CMAKE $<$: REV_LONG="${GIT_COMMIT_LONG}" REV_TIME="${GIT_COMMIT_TIME}" > $<$: HAVE_LRINT > $<$: HAVE_LRINTF > $<$: HAVE_MLOCK > $<$: _CRT_SECURE_NO_WARNINGS __STDC_CONSTANT_MACROS STRICT > ) list( APPEND OPTIONS PRIVATE $<$:/permissive-> # $<$:-Wl,-rpath -Wl,${_RPATH}> ) list( APPEND LDFLAGS PRIVATE $<$:/MANIFEST:NO> ) # # # list( APPEND LIBRARIES PRIVATE ${CMAKE_REQUIRED_LIBRARIES} wxWidgets FileDialog expat lame libsndfile libsoxr lib-widget-extra portaudio-v19 # $<$:ibavcodec> # $<$:libavformat> # $<$:libavutil> $<$:ffmpeg> $<$:libid3tag> # This flac mess can be resolved by removing the Windows pragmas # in AudacityApp.cpp. $<$:flac> $<$:flac++> $<$:libflac> $<$:libmad> $<$:libogg> $<$:libvorbis> # $<$:libvorbis> # $<$:libvorbisenc> # $<$:libvorbisfile> $<$:twolame> $<$:lv2> $<$:portmidi> $<$:portsmf> $<$:libnyquist> $<$:portmixer> $<$:sbsms> $<$:soundtouch> $<$:libvamp> # $<$:libvamp-hostsdk> $<$:PkgConfig::GLIB> $<$:z> $<$:pthread> ) # # If was have cmake 3.16 or higher, we can use precompiled headers, but # only use them if ccache is not available # if( CMAKE_VERSION VERSION_GREATER_EQUAL "3.16" AND NOT CCACHE_PROGRAM ) set( PRECOMP AudacityHeaders.h ) endif() set( AUDACITY_NAME "Audacity" ) set( BUILDING_AUDACITY YES ) set( INSTALL_PREFIX "${_PREFIX}" ) set( PKGLIBDIR "${_LIBDIR}" ) set( LIBDIR "${_LIBDIR}" ) set( HAVE_GTK ${GTK_FOUND} ) # Do not define these for Windows or Mac until further testing # can be done against ExportMP3.cpp. If either are defined, the # build will fail. if( NOT CMAKE_SYSTEM_NAME MATCHES "Windows|Darwin" ) if( "${${_OPT}use_lame}" STREQUAL "local" ) set( DISABLE_DYNAMIC_LOADING_LAME YES ) endif() if( "${${_OPT}use_ffmpeg}" STREQUAL "linked" ) set( DISABLE_DYNAMIC_LOADING_FFMPEG YES ) endif() endif() if( CMAKE_SYSTEM_NAME MATCHES "Windows" ) set( _EXE "Audacity" ) set_target_properties( ${TARGET} PROPERTIES # Make sure we're a GUI application and not a console tool WIN32_EXECUTABLE ON ) # Define the Windows specific resources list( APPEND WIN_RESOURCES ../win/audacity.rc ) # Create the config file configure_file( audacity_config.h.in private/configwin.h ) # Copy over the wxWidgets DLLs if( ${_OPT}use_wxwidgets STREQUAL "system" ) set( wxlibs "$ENV{WXWIN}" ) else() set( wxlibs "${CMAKE_BINARY_DIR}" ) endif() # Convert the paths to native file( TO_NATIVE_PATH "${_INTDIR}/dlls" dlls ) file( TO_NATIVE_PATH "${wxWidgets_LIB_DIR}" libdir ) file( TO_NATIVE_PATH "${_EXEDIR}" exedir ) # And create the script to copy the WX libs to the exeutable directory file( WRITE "${_INTDIR}/copy_libs.bat" "@ECHO OFF IF NOT %1 EQU xyzzy ( IF EXIST \"${dlls}\" DEL \"${dlls}\" CALL %0 xyzzy \"%1\" %2 FOR /F \"delims=\" %%c IN ('SORT \"${dlls}\"') DO ( IF NOT EXIST \"%1\"\\%%c ( xcopy \"${libdir}\"\\%%c \"%1\" ) ) DEL ${dlls} ) IF %1 EQU xyzzy ( FOR /F %%i IN ('DUMPBIN /DEPENDENTS \"%2\"\\%3 ^| findstr /B \"/C: wx\"') DO ( ECHO %%i >>\"${dlls}\" CALL %0 xyzzy \"${libdir}\" %%i ) )" ) # Add it to the build add_custom_command( TARGET ${TARGET} COMMAND ${_INTDIR}/copy_libs.bat ${exedir} ${_EXE}.exe POST_BUILD ) # Copy the VC runtime libraries as well add_custom_command( TARGET ${TARGET} COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} ${_DEST} POST_BUILD ) elseif( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) set( _EXE "Audacity" ) # Define Mac specific resources list( APPEND MAC_RESOURCES ../mac/Resources/Audacity.icns ../mac/Resources/AudacityAIFF.icns ../mac/Resources/AudacityAU.icns ../mac/Resources/AudacityMP3.icns ../mac/Resources/AudacityOGG.icns ../mac/Resources/AudacityProject.icns ../mac/Resources/AudacityWAV.icns ) set_target_properties( ${TARGET} PROPERTIES # Build a bundle MACOSX_BUNDLE ON # Add the resources RESOURCE "${MAC_RESOURCES};${RESOURCES}" ) set_target_property_all( ${TARGET} RUNTIME_OUTPUT_DIRECTORY "${_DESTDIR}" ) # These sources must be compiled as Objective C++ set_source_files_properties( KeyboardCapture.cpp effects/EffectUI.cpp menus/WindowMenus.cpp PROPERTIES COMPILE_FLAGS "-x objective-c++" ) # Because of the "misidentified" Objective C++ sources listed above, # we can only use precompiled headers if also using Xcode. if( NOT "${CMAKE_GENERATOR}" MATCHES "Xcode" ) set( PRECOMP ) endif() # Add our required frameworks list( APPEND LIBRARIES PRIVATE "-framework AudioUnit" "-framework CoreAudio" "-framework CoreAudioKit" ) # Use the Aqua theme set( USE_AQUA_THEME 1 ) # Create the config file set( HAVE_VISIBILITY 1 ) configure_file( audacity_config.h.in private/configmac.h ) # Copy the wxWidgets libraries into the bundle if( "${CMAKE_GENERATOR}" MATCHES "Xcode" ) add_custom_command( TARGET ${TARGET} COMMAND sh -c "TARGET_BUILD_DIR=${_DEST} EXECUTABLE_PATH=MacOS/${_EXE} FRAMEWORKS_FOLDER_PATH=Frameworks ${topdir}/mac/scripts/install_wxlibs.sh" POST_BUILD ) endif() # Define the Wrapper target set( WRAPPER_ROOT "${TARGET_ROOT}/../mac" ) set( WRAPPER_SOURCES "${WRAPPER_ROOT}/Wrapper.c" ) add_executable( Wrapper "${WRAPPER_SOURCES}" ) add_dependencies( Wrapper "${TARGET}" ) set_target_property_all( "Wrapper" RUNTIME_OUTPUT_DIRECTORY "${_EXEDIR}" ) organize_source( "${WRAPPER_ROOT}" "mac" "${WRAPPER_SOURCES}" ) else() set( _EXE "audacity" ) # Create the config file set( HAVE_VISIBILITY 1 ) configure_file( audacity_config.h.in private/configunix.h ) # Build the list of mimetypes # # (Don't use generator expressions since it will leave null/empty # entries in the list.) if( USE_FFMPEG ) list( APPEND MIMETYPES audio/aac audio/ac3 audio/mp4 audio/x-ms-wma video/mpeg ) endif() if( USE_LIBFLAC ) list( APPEND MIMETYPES audio/flac audio/x-flac ) endif() if( USE_LIBMAD ) list( APPEND MIMETYPES audio/mpeg ) endif() if( USE_SNDFILE ) list( APPEND MIMETYPES audio/basic audio/x-aiff audio/x-wav ) endif() if( USE_LIBOGG AND USE_LIBVORBIS ) list( APPEND MIMETYPES application/ogg audio/x-vorbis+ogg ) endif() # Create the desktop file set( AUDACITY_NAME "${_EXE}" ) configure_file( audacity.desktop.in ${_INTDIR}/audacity.desktop ) # Create the script to copy required wxWidgets libraries if( ${_OPT}use_wxwidgets STREQUAL "local" ) file( WRITE "${_INTDIR}/copy_libs.sh" "for lib in \$(ldd ${_EXEDIR}/${_EXE} | awk '/libwx/{print \$1}') do echo \${lib} ldd ${WXWIN}/lib/\${lib} | awk '/libwx/{print \$1}' done | sort -u | xargs cp -n -H -t ${_LIBDIR} rm \${0}" ) # And run it after the build add_custom_command( TARGET ${TARGET} COMMAND sh "${_INTDIR}/copy_libs.sh" WORKING_DIRECTORY ${WXWIN}/lib POST_BUILD ) endif() endif() set_target_property_all( ${TARGET} RUNTIME_OUTPUT_NAME ${_EXE} ) organize_source( "${TARGET_ROOT}/.." "include" "${HEADERS}" ) organize_source( "${TARGET_ROOT}/../presets" "presets" "${RESOURCES}" ) organize_source( "${TARGET_ROOT}" "src" "${SOURCES}" ) organize_source( "${TARGET_ROOT}/../mac/Resources" "mac" "${MAC_RESOURCES}" ) organize_source( "${TARGET_ROOT}/../win" "win" "${WIN_RESOURCES}" ) # # Get those pesky CMake files out of the way (on Windows) # source_group( TREE "${_INTDIR}" PREFIX "CMake" FILES ${_INTDIR}/CMakeFiles/Audacity.dir/cmake_pch.cxx ${_INTDIR}/CMakeFiles/Audacity.dir/cmake_pch.hxx ) target_sources( ${TARGET} PRIVATE ${HEADERS} ${SOURCES} ${RESOURCES} ${MAC_RESOURCES} ${WIN_RESOURCES} ) target_compile_definitions( ${TARGET} PRIVATE ${DEFINES} ) target_compile_options( ${TARGET} PRIVATE ${OPTIONS} ) target_include_directories( ${TARGET} PRIVATE ${INCLUDES} ) target_link_options( "${TARGET}" PRIVATE ${LDFLAGS} ) target_link_libraries( ${TARGET} PRIVATE ${LIBRARIES} ) if( PRECOMP ) target_precompile_headers( ${TARGET} PRIVATE ${PRECOMP} ) endif() if( NOT "${CMAKE_GENERATOR}" MATCHES "Xcode|Visual Studio*" ) if( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) install( FILES "${_DEST}/Info.plist" DESTINATION "${CMAKE_INSTALL_BINDIR}/Audacity.app/Contents" ) install( PROGRAMS "${_EXEDIR}/${_EXE}" "${_EXEDIR}/Wrapper" DESTINATION "${CMAKE_INSTALL_BINDIR}/Audacity.app/Contents/MacOS" ) else() install( PROGRAMS "${_EXEDIR}/${_EXE}" TYPE BIN ) install( FILES "${_INTDIR}/audacity.desktop" DESTINATION "${_DATADIR}/applications" ) install( FILES "${topdir}/LICENSE.txt" "${topdir}/README.txt" DESTINATION "${_DATADIR}/doc" ) install( FILES "${_SRCDIR}/audacity.xml" DESTINATION "${_DATADIR}/mime/packages" ) install( FILES "${topdir}/presets/EQDefaultCurves.xml" DESTINATION "${_PKGDATA}" ) endif() endif()