set( TARGET Tenacity ) set( TARGET_ROOT ${CMAKE_SOURCE_DIR}/src ) message( STATUS "========== Configuring ${TARGET} ==========" ) # Allow modules to link against the Tenacity executable set( CMAKE_ENABLE_EXPORTS ON ) add_executable( ${TARGET} ) add_dependencies( ${TARGET} locale ) add_dependencies( ${TARGET} nyquist ) add_dependencies( ${TARGET} plug-ins ) def_vars() if( NOT GIT_FOUND ) find_package( Git ) endif() # ~~~ # Add a target that will provide the git revision info whenever it changes. # Must be done at build time, not configuration time. # ~~~ if( GIT_FOUND ) add_custom_target( version COMMAND ${CMAKE_COMMAND} -D GIT="${GIT_EXECUTABLE}" -D GIT_DESCRIBE="${GIT_DESCRIBE}" -D "_PRVDIR=${_PRVDIR}" -P "cmake-proxies/cmake-modules/Version.cmake" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) add_dependencies( ${TARGET} version ) endif() # Handle Audio Units option if( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) cmd_option( use_audio_units "Use Audio Units plug-in support [ON, OFF]" ON ) set( USE_AUDIO_UNITS ${use_audio_units} CACHE INTERNAL "" ) endif() # ~~~ # Detect, which version of FileDialog to use # Assume that GTK is used on platforms other than Windows or macOS # ~~~ if( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) set( wxIS_MAC ON ) elseif( CMAKE_SYSTEM_NAME MATCHES "Windows" ) set( wxIS_WIN ON ) else() set( wxIS_GTK ON ) endif() # Handle Ladspa option cmd_option( use_ladspa "Use LADSPA plug-in support [ON, OFF]" ON ) set( USE_LADSPA ${use_ladspa} CACHE INTERNAL "" ) # ~~~ # General source files # ~~~ list( APPEND SOURCES PRIVATE AColor.cpp AColor.h AColorResources.h ActiveProjects.cpp ActiveProjects.h AboutDialog.cpp AboutDialog.h AdornedRulerPanel.cpp AdornedRulerPanel.h AllThemeResources.cpp AllThemeResources.h AttachedVirtualFunction.h AudacityApp.cpp AudacityApp.h $<$:AudacityApp.mm> AudacityException.cpp AudacityException.h AudacityFileConfig.cpp AudacityFileConfig.h AudacityHeaders.cpp AudacityHeaders.h AudacityLogger.cpp AudacityLogger.h AudioIO.cpp AudioIO.h AudioIOBase.cpp AudioIOBase.h AudioIOBufferHelper.h AudioIOListener.h AutoRecoveryDialog.cpp AutoRecoveryDialog.h BatchCommandDialog.cpp BatchCommandDialog.h BatchCommands.cpp BatchCommands.h BatchProcessDialog.cpp BatchProcessDialog.h Benchmark.cpp Benchmark.h BuildInfo.h CellularPanel.cpp CellularPanel.h ClassicThemeAsCeeCode.h ClientData.h ClientDataHelpers.h Clipboard.cpp Clipboard.h CommonCommandFlags.cpp CommonCommandFlags.h DarkThemeAsCeeCode.h DBConnection.cpp DBConnection.h DeviceChange.cpp DeviceChange.h DeviceManager.cpp DeviceManager.h Diags.cpp Diags.h Dither.cpp Dither.h Envelope.cpp Envelope.h EnvelopeEditor.cpp EnvelopeEditor.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 InterpolateAudio.cpp InterpolateAudio.h KeyboardCapture.cpp KeyboardCapture.h LabelDialog.cpp LabelDialog.h LabelTrack.cpp LabelTrack.h LangChoice.cpp LangChoice.h Legacy.cpp Legacy.h LightThemeAsCeeCode.h Lyrics.cpp Lyrics.h LyricsWindow.cpp LyricsWindow.h MacroMagic.h Matrix.cpp Matrix.h Menus.cpp Menus.h Mix.cpp Mix.h MixerBoard.cpp MixerBoard.h ModuleManager.cpp ModuleManager.h ModuleSettings.cpp ModuleSettings.h NoteTrack.cpp NoteTrack.h NumberScale.h PitchName.cpp PitchName.h PlatformCompatibility.cpp PlatformCompatibility.h PlaybackSchedule.cpp PlaybackSchedule.h PluginManager.cpp PluginManager.h PluginRegistrationDialog.cpp PluginRegistrationDialog.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 ProjectFileIO.cpp ProjectFileIO.h ProjectFileIORegistry.cpp ProjectFileIORegistry.h ProjectFileManager.cpp ProjectFileManager.h ProjectHistory.cpp ProjectHistory.h ProjectManager.cpp ProjectManager.h ProjectSelectionManager.cpp ProjectSelectionManager.h ProjectSerializer.cpp ProjectSerializer.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 Registry.cpp Registry.h Resample.cpp Resample.h RingBuffer.cpp RingBuffer.h SampleBlock.cpp SampleBlock.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 SqliteSampleBlock.cpp SseMathFuncs.cpp SseMathFuncs.h Tags.cpp Tags.h TempDirectory.cpp TempDirectory.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.cpp TrackPanelCell.h TrackPanelDrawable.cpp 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 ) # ~~~ # Commands source files # ~~~ list( APPEND SOURCES PRIVATE 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 ) # ~~~ # Effects source files # ~~~ list( APPEND SOURCES PRIVATE # 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 > ) # ~~~ # Exports source files # ~~~ list( APPEND SOURCES PRIVATE 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 > ) # ~~~ # Imports source files # ~~~ list( APPEND SOURCES PRIVATE 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/ImportAUP.cpp import/ImportLOF.cpp import/ImportPCM.cpp import/ImportPlugin.h import/ImportPlugin.cpp import/ImportRaw.cpp import/ImportRaw.h # Optional importers $<$: import/ImportFFmpeg.cpp > $<$: import/ImportFLAC.cpp > $<$: import/ImportMIDI.cpp import/ImportMIDI.h > $<$: import/ImportMP3.cpp > $<$,$>: import/ImportOGG.cpp > ) # ~~~ # Menus source files # ~~~ list( APPEND SOURCES PRIVATE 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 ) # ~~~ # Preferences source files # ~~~ list( APPEND SOURCES PRIVATE 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.cpp prefs/PrefsPanel.h prefs/QualityPrefs.cpp prefs/QualityPrefs.h prefs/QualitySettings.cpp prefs/QualitySettings.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 source files # ~~~ list( APPEND SOURCES PRIVATE 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/ScrubbingToolBar.cpp toolbars/ScrubbingToolBar.h toolbars/SelectionBar.cpp toolbars/SelectionBar.h toolbars/SelectionBarListener.h toolbars/SpectralSelectionBar.cpp toolbars/SpectralSelectionBar.h toolbars/SpectralSelectionBarListener.h toolbars/TimeToolBar.cpp toolbars/TimeToolBar.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 UI source files # ~~~ list( APPEND SOURCES PRIVATE # Variant UIs 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/LabelTrackShifter.cpp tracks/labeltrack/ui/LabelTrackVRulerControls.cpp tracks/labeltrack/ui/LabelTrackVRulerControls.h tracks/labeltrack/ui/LabelTrackView.cpp tracks/labeltrack/ui/LabelTrackView.h tracks/playabletrack/notetrack/ui/NoteTrackAffordanceControls.h tracks/playabletrack/notetrack/ui/NoteTrackAffordanceControls.cpp 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/NoteTrackShifter.cpp 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/WaveTrackAffordanceControls.cpp tracks/playabletrack/wavetrack/ui/WaveTrackAffordanceControls.h tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp tracks/playabletrack/wavetrack/ui/WaveTrackControls.h tracks/playabletrack/wavetrack/ui/WaveTrackShifter.cpp 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/TimeTrackVZoomHandle.cpp tracks/timetrack/ui/TimeTrackVZoomHandle.h tracks/timetrack/ui/TimeTrackView.cpp tracks/timetrack/ui/TimeTrackView.h # Main UI tracks/ui/AffordanceHandle.cpp tracks/ui/AffordanceHandle.h 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 ) # ~~~ # UI helpers source files # ~~~ list( APPEND SOURCES PRIVATE ui/AccessibleLinksFormatter.h ui/AccessibleLinksFormatter.cpp ) # ~~~ # Widgets source files # ~~~ list( APPEND SOURCES PRIVATE 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/FileConfig.cpp widgets/FileConfig.h widgets/FileDialog/FileDialog.cpp widgets/FileDialog/FileDialog.h $<$: widgets/FileDialog/win/FileDialogPrivate.cpp widgets/FileDialog/win/FileDialogPrivate.h > $<$: widgets/FileDialog/mac/FileDialogPrivate.mm widgets/FileDialog/mac/FileDialogPrivate.h > $<$: widgets/FileDialog/gtk/FileDialogPrivate.cpp widgets/FileDialog/gtk/FileDialogPrivate.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/ReadOnlyText.h widgets/Ruler.cpp widgets/Ruler.h widgets/UnwritableLocationErrorDialog.cpp widgets/UnwritableLocationErrorDialog.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 widgets/wxTextCtrlWrapper.h ) # ~~~ # XML source files # ~~~ list( APPEND SOURCES PRIVATE xml/XMLFileReader.cpp xml/XMLFileReader.h xml/XMLTagHandler.cpp xml/XMLTagHandler.h xml/XMLWriter.cpp xml/XMLWriter.h xml/audacityproject.dtd ) # ~~~ # Experimental module # ~~~ list( APPEND SOURCES PRIVATE Experimental.cmake ) # ~~~ # General headers # ~~~ list( APPEND HEADERS ../include/tenacity/EffectInterface.h ../include/tenacity/Types.h ../include/tenacity/ConfigInterface.h ../include/tenacity/ModuleInterface.h ../include/tenacity/PluginInterface.h ../include/tenacity/ComponentInterface.h ../include/tenacity/EffectAutomationParameters.h ) # ~~~ # General includes # ~~~ list( APPEND INCLUDES PUBLIC "${_PRVDIR}" "${CMAKE_SOURCE_DIR}/include" "${TARGET_ROOT}" ) # ~~~ # General resources # ~~~ list( APPEND RESOURCES ../presets/EQDefaultCurves.xml ) # ~~~ # General definitions # ~~~ list( APPEND DEFINES PRIVATE CMAKE $<$: HAVE_LRINT > $<$: HAVE_LRINTF > $<$: HAVE_MLOCK > $<$: _CRT_SECURE_NO_WARNINGS __STDC_CONSTANT_MACROS STRICT > ) # Default to enabling PCH on supported CMake versions if compiler caching is unavailable if( CMAKE_VERSION VERSION_GREATER_EQUAL "3.16" AND NOT CCACHE_PROGRAM AND NOT SCCACHE_PROGRAM ) cmd_option( use_pch "Use precompiled headers [yes, no]" YES ) set(USE_PCH ${use_pch} CACHE INTERNAL "") endif() audacity_append_common_compiler_options( OPTIONS "${USE_PCH}" ) # ~~~ # Linker flags # ~~~ list( APPEND LDFLAGS PRIVATE $<$:/MANIFEST:NO> $<$:-Wl,--disable-new-dtags> ) # ~~~ # Publicly linked libraries # ~~~ list( APPEND LIBRARIES PUBLIC ${CMAKE_REQUIRED_LIBRARIES} ZLIB::ZLIB wxWidgets::wxWidgets EXPAT::EXPAT mp3lame::mp3lame SndFile::sndfile Soxr::soxr PortAudio::PortAudio ${SQLite3_LIBRARIES} $<$:FFMPEG::FFMPEG> $<$:id3tag::id3tag> $<$:FLAC++::FLAC++> $<$:MAD::MAD> $<$:Ogg::ogg> $<$:Vorbis::vorbis> $<$:Vorbis::vorbisenc> $<$:Vorbis::vorbisfile> $<$:libtwolame::libtwolame> $<$:lilv::lilv> $<$:suil::suil> $<$:PortMidi::PortMidi> $<$:PortSMF::PortSMF> libnyquist $<$:sbsms::sbsms> $<$:SoundTouch::SoundTouch> $<$:VampHostSDK::VampHostSDK> $<$:${GLIB_LIBRARIES}> $<$:GTK::GTK> $<$:Threads::Threads> ) set( INSTALL_PREFIX "${_PREFIX}" ) set( PKGLIBDIR "${_PKGLIBDIR}" ) set( LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}" ) set( HAVE_GTK ${GTK_FOUND} ) # ~~~ # Platform specific configurations # ~~~ if( CMAKE_SYSTEM_NAME MATCHES "Windows" ) set_target_properties( ${TARGET} PROPERTIES WIN32_EXECUTABLE ON # Make sure we're a GUI application ) # Define the Windows specific resources list( APPEND WIN_RESOURCES ../win/tenacity.rc ) # Copy the required wxWidgets libs into the bundle add_custom_command( TARGET ${TARGET} COMMAND ${CMAKE_COMMAND} -D SRC="${_EXEDIR}/${AUDACITY_NAME}.exe" -D DST="${_EXEDIR}" -D WXWIN="${_SHARED_PROXY_BASE_PATH}/$/" -P "${AUDACITY_MODULE_PATH}/CopyLibs.cmake" -parallel ${CMAKE_BUILD_PARALLEL_LEVEL} POST_BUILD ) # Copy the MSVC runtime libraries as well if( NOT "_X${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}" STREQUAL "_X" ) add_custom_command( TARGET ${TARGET} COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} ${_DEST} POST_BUILD ) endif() elseif( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) check_for_platform_version() if( PLATFORM_VERSION_SUPPORTED ) list( APPEND LDFLAGS PRIVATE -Wl,-platform_version,macos,${MIN_MACOS_VERSION},${TARGET_MACOS_VERSION} ) else() list( APPEND LDFLAGS PRIVATE -Wl,-sdk_version, ${TARGET_MACOS_VERSION} ) endif() # Define Mac specific resources #TODO Remove Audacity from Mac resources list( APPEND MAC_RESOURCES ../mac/Resources/Tenacity.icns ../mac/Resources/TenacityAIFF.icns ../mac/Resources/TenacityAU.icns ../mac/Resources/TenacityMP3.icns ../mac/Resources/TenacityOGG.icns ../mac/Resources/TenacityProject.icns ../mac/Resources/TenacityWAV.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++ and excluded from precompiled header usage set_source_files_properties( AudacityApp.mm KeyboardCapture.cpp effects/EffectUI.cpp effects/VST/VSTControlOSX.mm effects/audiounits/AUControl.mm menus/WindowMenus.cpp widgets/FileDialog/mac/FileDialogPrivate.mm PROPERTIES COMPILE_FLAGS "-ObjC++" SKIP_PRECOMPILE_HEADERS YES ) list( APPEND LIBRARIES PRIVATE "-framework Foundation" "-framework Cocoa" "-framework Carbon" ) if(USE_AUDIO_UNITS) list( APPEND LIBRARIES PRIVATE "-framework AudioUnit" "-framework CoreAudioKit" ) endif() # Use the Aqua theme set( USE_AQUA_THEME 1 ) # Copy the required wxWidgets libs into the bundle add_custom_command( TARGET ${TARGET} COMMAND ${CMAKE_COMMAND} -D SRC="${_EXEDIR}/${AUDACITY_NAME}" -D DST="${_PKGLIB}" -D WXWIN="${_SHARED_PROXY_BASE_PATH}/$" -P "${AUDACITY_MODULE_PATH}/CopyLibs.cmake" -parallel ${CMAKE_BUILD_PARALLEL_LEVEL} POST_BUILD ) # Define the Wrapper target set( WRAPPER_ROOT "${TARGET_ROOT}/../mac" ) set( WRAPPER_SOURCES "${WRAPPER_ROOT}/Wrapper.c" ) add_executable( Wrapper "${WRAPPER_SOURCES}" ) add_dependencies( "${TARGET}" Wrapper ) set_target_property_all( "Wrapper" RUNTIME_OUTPUT_DIRECTORY "${_EXEDIR}" ) organize_source( "${WRAPPER_ROOT}" "mac" "${WRAPPER_SOURCES}" ) else() # TODO: Test ExportMP3.cpp more to allow us to do this on more OSes if( LAME_FOUND ) set( DISABLE_DYNAMIC_LOADING_LAME YES ) endif() if( FFMPEG_FOUND ) set( DISABLE_DYNAMIC_LOADING_FFMPEG YES ) endif() set_target_property_all( ${TARGET} RUNTIME_OUTPUT_DIRECTORY "${_DEST}" ) # Build the list of mimetypes (we can't use generator expressions) set( MIMETYPES "" ) list( APPEND MIMETYPES application/x-tenacity-project ) 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 configure_file( tenacity.desktop.in ${_INTDIR}/tenacity.desktop ) # Copy the required wxWidgets libs into the bundle add_custom_command( TARGET ${TARGET} COMMAND ${CMAKE_COMMAND} -D SRC="${_EXEDIR}/${AUDACITY_NAME}" -D DST="${_DEST}/${_PKGLIB}" -D WXWIN="${_SHARED_PROXY_BASE_PATH}/$" -P "${AUDACITY_MODULE_PATH}/CopyLibs.cmake" -parallel ${CMAKE_BUILD_PARALLEL_LEVEL} POST_BUILD ) endif() set_target_property_all( ${TARGET} RUNTIME_OUTPUT_NAME ${AUDACITY_NAME} ) 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/${CMAKE_PROJECT_NAME}.dir/cmake_pch.cxx ${_INTDIR}/CMakeFiles/${CMAKE_PROJECT_NAME}.dir/cmake_pch.hxx ) # Define TENACITY_DLL_API import_symbol_define( import_symbol TENACITY_DLL ) export_symbol_define( export_symbol TENACITY_DLL ) list( APPEND DEFINES PRIVATE "${export_symbol}" INTERFACE "${import_symbol}" ) target_sources( ${TARGET} PRIVATE ${HEADERS} ${SOURCES} ${RESOURCES} ${MAC_RESOURCES} ${WIN_RESOURCES} ) target_compile_definitions( ${TARGET} PRIVATE ${DEFINES} ) target_compile_definitions( ${TARGET} PRIVATE ${CXX_WARNINGS_SILENCE_DEFINES} ) target_compile_options( ${TARGET} PRIVATE ${OPTIONS} ) target_include_directories( ${TARGET} PRIVATE ${INCLUDES} ) target_link_options( ${TARGET} PRIVATE ${LDFLAGS} ) # Somehow the "version" target gets added to the LIBRARIES list? But only on Windows?? list( REMOVE_ITEM LIBRARIES version ) target_link_libraries( ${TARGET} ${LIBRARIES} ) target_link_libraries( ${TARGET} PUBLIC ${AUDACITY_LIBRARIES} ) if( USE_PCH ) message( STATUS "Using precompiled headers" ) target_precompile_headers( ${TARGET} PRIVATE $<$:${CMAKE_BINARY_DIR}/src/private/configwin.h> $<$:${CMAKE_BINARY_DIR}/src/private/configmac.h> $<$>:${CMAKE_BINARY_DIR}/src/private/configunix.h> AudacityHeaders.h ) else() message( STATUS "Not using precompiled headers" ) endif() if( CMAKE_GENERATOR MATCHES "Xcode|Visual Studio*" ) install( DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$/" DESTINATION "." USE_SOURCE_PERMISSIONS PATTERN "*.pdb" EXCLUDE PATTERN "*.ilk" EXCLUDE ) else() if( APPLE ) install( TARGETS ${TARGET} DESTINATION "." RESOURCE DESTINATION "${_APPDIR}/Resources" ) set_target_properties(${TARGET} PROPERTIES MACOSX_BUNDLE true ) install(CODE " include(BundleUtilities) fixup_bundle( \${CMAKE_INSTALL_PREFIX}/Tenacity.app \"\" \"${CMAKE_PREFIX_PATH}/lib\" )") elseif( WIN32 ) install( DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" DESTINATION "." USE_SOURCE_PERMISSIONS PATTERN "*.pdb" EXCLUDE PATTERN "*.ilk" EXCLUDE ) else() install( TARGETS ${TARGET} RUNTIME ) install( DIRECTORY "${_DEST}/${_LIBDIR}/" DESTINATION "${_LIBDIR}" USE_SOURCE_PERMISSIONS FILES_MATCHING PATTERN "*.so*" ) install( FILES "${_INTDIR}/tenacity.desktop" DESTINATION "${_DATADIR}/applications" ) install( FILES "${CMAKE_SOURCE_DIR}/LICENSE.txt" "${CMAKE_SOURCE_DIR}/README.md" DESTINATION "${_DATADIR}/doc/${AUDACITY_NAME}" ) install( FILES "${_SRCDIR}/tenacity.xml" DESTINATION "${_DATADIR}/mime/packages" ) install( FILES "${CMAKE_SOURCE_DIR}/presets/EQDefaultCurves.xml" DESTINATION "${_PKGDATA}" ) install( PROGRAMS "${PROJECT_SOURCE_DIR}/linux/tenacity.sh" DESTINATION "." RENAME "tenacity" ) endif() endif() #[[ # collect dependency information for third party libraries list( APPEND GRAPH_EDGES "Tenacity [shape=house]" ) foreach( LIBRARY ${LIBRARIES} ) if( NOT LIBRARY MATCHES "PUBLIC|PRIVATE|INTERFACE" ) canonicalize_node_name(LIBRARY "${LIBRARY}" ) list( APPEND GRAPH_EDGES "\"${TARGET}\" -> \"${LIBRARY}\"" ) endif() endforeach() #propagate collected edgets to root CMakeLists.txt set( GRAPH_EDGES "${GRAPH_EDGES}" PARENT_SCOPE ) #]]