audacia/src/CMakeLists.txt

1415 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()
# 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 _PRVDIR=${_PRVDIR}
-P ${CMAKE_MODULE_PATH}/Version.cmake
WORKING_DIRECTORY
${topdir}
)
add_dependencies( ${TARGET} version )
endif()
# 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.cpp
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
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
Registry.cpp
Registry.h
Resample.cpp
Resample.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.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
# 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/ImportPlugin.cpp
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.cpp
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/FileDialog/FileDialog.cpp
widgets/FileDialog/FileDialog.h
$<$<BOOL:${wxIS_WIN}>:
widgets/FileDialog/win/FileDialogPrivate.cpp
widgets/FileDialog/win/FileDialogPrivate.h
>
$<$<BOOL:${wxIS_MAC}>:
widgets/FileDialog/mac/FileDialogPrivate.mm
widgets/FileDialog/mac/FileDialogPrivate.h
>
$<$<BOOL:${wxIS_GTK}>:
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/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}/include
${TARGET_ROOT}
)
#
# 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:AppleClang,Clang>:-Wno-underaligned-exception-object>
# $<$<CXX_COMPILER_ID:GNU>:-Wl,-rpath -Wl,${_RPATH}>
)
list( APPEND LDFLAGS
PRIVATE
$<$<CXX_COMPILER_ID:MSVC>:/MANIFEST:NO>
)
#
#
#
list( APPEND LIBRARIES
PRIVATE
${CMAKE_REQUIRED_LIBRARIES}
wxWidgets
expat
lame
libsndfile
libsoxr
portaudio-v19
$<$<BOOL:${USE_FFMPEG}>:ffmpeg>
$<$<BOOL:${USE_LIBID3TAG}>:libid3tag>
$<$<BOOL:${USE_LIBFLAC}>:libflac>
$<$<BOOL:${USE_LIBMAD}>:libmad>
$<$<BOOL:${USE_LIBOGG}>:libogg>
$<$<BOOL:${USE_LIBVORBIS}>:libvorbis>
$<$<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>
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD,NetBSD>:PkgConfig::GLIB>
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD,NetBSD>:PkgConfig::GTK>
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD,NetBSD>:z>
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD,NetBSD>:pthread>
)
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_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} ${AUDACITY_NAME}.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" )
# Bug 2400 workaround
#
# Replaces the SDK version in the built executable with 10.13 to
# prevent high CPU usage and slow drawing on Mojave or newer
check_for_platform_version()
if( PLATFORM_VERSION_SUPPORTED )
list( APPEND LDFLAGS
PRIVATE
-Wl,-platform_version,macos,10.7,10.13
)
else()
list( APPEND LDFLAGS
PRIVATE
-Wl,-sdk_version,10.13
)
endif()
# 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++ and excluded
# from precompiled header usage
set_source_files_properties(
KeyboardCapture.cpp
effects/EffectUI.cpp
effects/VST/VSTControlOSX.mm
effects/audiounits/AUControl.mm
menus/WindowMenus.cpp
widgets/FileDialog/mac/FileDialogPrivate.mm
PROPERTIES
COMPILE_FLAGS "-x objective-c++"
SKIP_PRECOMPILE_HEADERS YES
)
# 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/${AUDACITY_NAME} 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( "${TARGET}" Wrapper )
set_target_property_all( "Wrapper" RUNTIME_OUTPUT_DIRECTORY "${_EXEDIR}" )
organize_source( "${WRAPPER_ROOT}" "mac" "${WRAPPER_SOURCES}" )
else()
set_target_property_all( ${TARGET} RUNTIME_OUTPUT_DIRECTORY "${_DESTDIR}" )
# 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
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}/${AUDACITY_NAME} | 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 ${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/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 was have cmake 3.16 or higher, we can use precompiled headers, but
# only use them if ccache is not available and the user hasn't disabled
# it.
if( CMAKE_VERSION VERSION_GREATER_EQUAL "3.16" AND NOT CCACHE_PROGRAM )
cmd_option(
${_OPT}use_pch
"Use precompiled headers [yes, no]"
YES
)
if( ${_OPT}use_pch )
message( STATUS "Using precompiled headers" )
target_precompile_headers( ${TARGET} PRIVATE AudacityHeaders.h )
else()
message( STATUS "Not using precompiled headers" )
endif()
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}/${AUDACITY_NAME}" "${_EXEDIR}/Wrapper"
DESTINATION "${CMAKE_INSTALL_BINDIR}/Audacity.app/Contents/MacOS" )
else()
install( PROGRAMS "${_EXEDIR}/${AUDACITY_NAME}"
TYPE BIN )
install( DIRECTORY "${_DESTDIR}/${_LIBDIR}/"
DESTINATION "${_LIBDIR}"
USE_SOURCE_PERMISSIONS
FILES_MATCHING PATTERN "*.so" )
install( FILES "${_INTDIR}/audacity.desktop"
DESTINATION "${_DATADIR}/applications" )
install( FILES "${topdir}/LICENSE.txt" "${topdir}/README.txt"
DESTINATION "${_DATADIR}/doc/${AUDACITY_NAME}" )
install( FILES "${_SRCDIR}/audacity.xml"
DESTINATION "${_DATADIR}/mime/packages" )
install( FILES "${topdir}/presets/EQDefaultCurves.xml"
DESTINATION "${_PKGDATA}" )
endif()
endif()