audacia/src/CMakeLists.txt

1402 lines
38 KiB
CMake

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
$<$<BOOL:${USE_VST}>:
effects/VST/VSTControl.h
effects/VST/VSTEffect.cpp
effects/VST/VSTEffect.h
effects/VST/aeffectx.h
>
$<$<AND:$<BOOL:${USE_VST}>,$<BOOL:${wxIS_GTK}>>:
effects/VST/VSTControlGTK.cpp
effects/VST/VSTControlGTK.h
>
$<$<AND:$<BOOL:${USE_VST}>,$<BOOL:${wxIS_WIN}>>:
effects/VST/VSTControlMSW.cpp
effects/VST/VSTControlMSW.h
>
$<$<AND:$<BOOL:${USE_VST}>,$<BOOL:${wxIS_MAC}>>:
effects/VST/VSTControlOSX.h
effects/VST/VSTControlOSX.mm
>
# Audio Unit Effects
$<$<AND:$<BOOL:${USE_AUDIO_UNITS}>,$<BOOL:${wxIS_MAC}>>:
effects/audiounits/AUControl.h
effects/audiounits/AUControl.mm
effects/audiounits/AudioUnitEffect.cpp
effects/audiounits/AudioUnitEffect.h
>
# Ladspa Effects
$<$<BOOL:${USE_LADSPA}>:
effects/ladspa/LadspaEffect.cpp
effects/ladspa/LadspaEffect.h
effects/ladspa/ladspa.h
>
# LV2 Effects
$<$<BOOL:${USE_LV2}>:
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
$<$<BOOL:${USE_NYQUIST}>:
effects/nyquist/LoadNyquist.cpp
effects/nyquist/LoadNyquist.h
effects/nyquist/Nyquist.cpp
effects/nyquist/Nyquist.h
>
# VAMP Effects
$<$<BOOL:${USE_VAMP}>:
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
$<$<BOOL:${USE_FFMPEG}>:
export/ExportFFmpeg.cpp
export/ExportFFmpegDialogs.cpp
export/ExportFFmpegDialogs.h
>
$<$<BOOL:${USE_LIBFLAC}>:
export/ExportFLAC.cpp
>
$<$<BOOL:${USE_LIBTWOLAME}>:
export/ExportMP2.cpp
>
$<$<AND:$<BOOL:${USE_LIBOGG}>,$<BOOL:${USE_LIBVORBIS}>>:
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
$<$<BOOL:${USE_FFMPEG}>:
import/ImportFFmpeg.cpp
>
$<$<BOOL:${USE_LIBFLAC}>:
import/ImportFLAC.cpp
>
$<$<BOOL:${USE_GSTREAMER}>:
import/ImportGStreamer.cpp
>
$<$<BOOL:${USE_MIDI}>:
import/ImportMIDI.cpp
import/ImportMIDI.h
>
$<$<BOOL:${USE_LIBMAD}>:
import/ImportMP3.cpp
>
$<$<AND:$<BOOL:${USE_LIBOGG}>,$<BOOL:${USE_LIBVORBIS}>>:
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
${CMAKE_CURRENT_BINARY_DIR}/private
${topdir}/lib-src/lib-widget-extra
${topdir}/include
${TARGET_ROOT}
)
#
# 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
)
#
# Define resources
#
list( APPEND RESOURCES
../presets/EQDefaultCurves.xml
)
#
#
#
list( APPEND DEFINES
PRIVATE
BUILDING_AUDACITY
WXINTL_NO_GETTEXT_MACRO
WXUSINGDLL
CMAKE
$<$<BOOL:${HAVE_LRINT}>:
HAVE_LRINT
>
$<$<BOOL:${HAVE_LRINTF}>:
HAVE_LRINTF
>
$<$<BOOL:${HAVE_MLOCK}>:
HAVE_MLOCK
>
$<$<PLATFORM_ID:Windows>:
_CRT_SECURE_NO_WARNINGS
__STDC_CONSTANT_MACROS
STRICT
>
)
list( APPEND OPTIONS
PRIVATE
$<$<CXX_COMPILER_ID:MSVC>:/permissive->
# $<$<CXX_COMPILER_ID:GNU>:-Wl,-rpath -Wl,${_RPATH}>
)
list( APPEND LDFLAGS
PRIVATE
$<$<PLATFORM_ID:Windows>:/MANIFEST:NO>
)
#
#
#
list( APPEND LIBRARIES
PRIVATE
${CMAKE_REQUIRED_LIBRARIES}
wxWidgets
FileDialog
expat
lame
libsndfile
libsoxr
lib-widget-extra
portaudio-v19
# $<$<BOOL:${USE_FFMPEG}>:ibavcodec>
# $<$<BOOL:${USE_FFMPEG}>:libavformat>
# $<$<BOOL:${USE_FFMPEG}>:libavutil>
$<$<BOOL:${USE_FFMPEG}>:ffmpeg>
$<$<BOOL:${USE_LIBID3TAG}>:libid3tag>
# This flac mess can be resolved by removing the Windows pragmas
# in AudacityApp.cpp.
$<$<BOOL:${USE_LIBFLAC}>:flac>
$<$<BOOL:${USE_LIBFLAC}>:flac++>
$<$<BOOL:${USE_LIBFLAC}>:libflac>
$<$<BOOL:${USE_LIBMAD}>:libmad>
$<$<BOOL:${USE_LIBOGG}>:libogg>
$<$<BOOL:${USE_LIBVORBIS}>:libvorbis>
# $<$<BOOL:${USE_LIBVORBIS}>:libvorbis>
# $<$<BOOL:${USE_LIBVORBIS}>:libvorbisenc>
# $<$<BOOL:${USE_LIBVORBIS}>:libvorbisfile>
$<$<BOOL:${USE_LIBTWOLAME}>:twolame>
$<$<BOOL:${USE_LV2}>:lv2>
$<$<BOOL:${USE_MIDI}>:portmidi>
$<$<BOOL:${USE_MIDI}>:portsmf>
$<$<BOOL:${USE_NYQUIST}>:libnyquist>
$<$<BOOL:${USE_PORTMIXER}>:portmixer>
$<$<BOOL:${USE_SBSMS}>:sbsms>
$<$<BOOL:${USE_SOUNDTOUCH}>:soundtouch>
$<$<BOOL:${USE_VAMP}>:libvamp>
# $<$<BOOL:${USE_VAMP}>:libvamp-hostsdk>
$<$<PLATFORM_ID:Linux,FreeBSD>:PkgConfig::GLIB>
$<$<PLATFORM_ID:Linux,FreeBSD>:z>
$<$<PLATFORM_ID:Linux,FreeBSD>: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" )
# Handle Audio Units option
cmd_option(
${_OPT}use_audiounits
"Enable Audio Unit plug-in support"
ON
)
# 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}"
)
# 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"
)
# Create the config file
set( HAVE_VISIBILITY 1 )
configure_file( audacity_config.h.in private/configmac.h )
# Extract the version information
file( STRINGS ${_SRCDIR}/Audacity.h output
REGEX
"^#define +AUDACITY_(VERSION|RELEASE|REVISION|MODLEVEL) +"
)
# And store as variables
foreach( line ${output} )
string( REGEX MATCHALL "[A-Za-z0-9_]+" line "${line}" )
list( GET line 1 name )
list( GET line 2 value )
set( ${name} ${value} )
endforeach()
set( AUDACITY_DIST_VERSION ${AUDACITY_VERSION}.${AUDACITY_RELEASE}.${AUDACITY_REVISION} )
set( AUDACITY_INFO_VERSION ${AUDACITY_VERSION}.${AUDACITY_RELEASE}.${AUDACITY_REVISION}.${AUDACITY_MODLEVEL} )
# 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}" )
elseif( CMAKE_SYSTEM_NAME MATCHES "Linux|FreeBSD" )
set( _EXE "audacity" )
# Create the config file
set( HAVE_VISIBILITY 1 )
configure_file( audacity_config.h.in private/configunix.h )
# Create the MIMETYPES list
list( APPEND MIMETYPES
$<$<BOOL:${USE_FFMPEG}>:
audio/aac
audio/ac3
audio/mp4
audio/x-ms-wma
video/mpeg
>
$<$<BOOL:${USE_LIBFLAC}>:
audio/flac
audio/x-flac
>
$<$<BOOL:${USE_LIBMAD}>:
audio/mpeg
>
$<$<BOOL:${USE_SNDFILE}>:
audio/basic
audio/x-aiff
audio/x-wav
>
$<$<AND:$<BOOL:${USE_LIBOGG}>,$<BOOL:${USE_LIBVORBIS}>>:
application/ogg
audio/x-vorbis+ogg
>
)
# 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} )
if (GIT_FOUND)
execute_process(
COMMAND
${GIT_EXECUTABLE} show -s "--format=\"%H\";\"%cd\";"
WORKING_DIRECTORY
${TARGET_ROOT}
OUTPUT_VARIABLE
output
)
list( GET output 0 long )
list( GET output 1 time )
list( APPEND DEFINES
REV_LONG=${long}
REV_TIME=${time}
)
endif()
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}" )
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()