Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
audacity
GitHub Repository: audacity/audacity
Path: blob/master/CMakeLists.txt
16810 views
1
# **********************************************************************
2
#
3
# Audacity: A Digital Audio Editor
4
#
5
# **********************************************************************
6
7
cmake_minimum_required(VERSION 3.24)
8
9
cmake_policy(SET CMP0091 OLD) # not set MSVC default args
10
11
project(audacity LANGUAGES C CXX)
12
13
set(CMAKE_CXX_STANDARD 17)
14
set(CMAKE_CXX_STANDARD_REQUIRED ON)
15
16
set(CMAKE_INCLUDE_CURRENT_DIR ON)
17
18
if(APPLE)
19
if(NOT CMAKE_OSX_ARCHITECTURES)
20
set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "macOS build architectures" FORCE)
21
endif()
22
endif()
23
24
###########################################
25
# Muse Framework
26
###########################################
27
set(FETCHCONTENT_QUIET OFF)
28
set(FETCHCONTENT_BASE_DIR ${PROJECT_BINARY_DIR}/_deps)
29
30
set(MUSE_FRAMEWORK_PATH ${CMAKE_SOURCE_DIR}/muse_framework)
31
set(MUSE_FRAMEWORK_SRC_PATH ${MUSE_FRAMEWORK_PATH}/framework)
32
33
set(CMAKE_MODULE_PATH
34
${CMAKE_CURRENT_LIST_DIR}
35
${CMAKE_CURRENT_LIST_DIR}/buildscripts/cmake
36
${MUSE_FRAMEWORK_PATH}/buildscripts/cmake
37
${MUSE_FRAMEWORK_PATH}/framework/cmake
38
${CMAKE_MODULE_PATH}
39
)
40
41
include(${MUSE_FRAMEWORK_SRC_PATH}/cmake/MuseDeclareOptions.cmake)
42
include(DeclareModuleSetup)
43
44
###########################################
45
# AudacityDependencies
46
###########################################
47
set(AUDACITY_ROOT ${CMAKE_CURRENT_LIST_DIR}/au3)
48
add_definitions(-DINSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}")
49
50
include(GetPlatformInfo)
51
52
include(SetupDependencies)
53
54
###########################################
55
# Setup option and build settings
56
###########################################
57
include(GetPaths)
58
59
set(AU4_BUILD_CONFIGURATION "app" CACHE STRING "Build configuration")
60
# Possible values:
61
# - app - for desktop app
62
# - app-portable - for desktop portable app (Windows build for PortableApps.com)
63
# - utest - for unit tests (for CI)
64
65
set(AU4_BUILD_MODE "dev" CACHE STRING "Build mode")
66
# Possible values:
67
# - dev - for development/nightly builds
68
# - testing - for testing versions (alpha, beta, RC)
69
# - release - for stable release builds
70
71
set(AU4_REVISION "" CACHE STRING "Build revision")
72
73
set(MUSE_ENABLE_UNIT_TESTS ON)
74
set(MUSE_MODULE_ACCESSIBILITY ON)
75
set(MUSE_MODULE_ACTIONS ON)
76
set(MUSE_MODULE_AUDIO OFF)
77
set(MUSE_MODULE_AUDIOPLUGINS ON)
78
set(MUSE_MODULE_AUTOBOT ON)
79
set(MUSE_MODULE_CLOUD ON)
80
set(MUSE_MODULE_CLOUD_MUSESCORECOM OFF CACHE BOOL "Enable MuseScore.com account" FORCE)
81
set(MUSE_MODULE_DIAGNOSTICS ON)
82
set(MUSE_MODULE_DRAW ON)
83
set(MUSE_MODULE_DRAW_TESTS OFF)
84
set(MUSE_MODULE_EXTENSIONS ON)
85
set(MUSE_MODULE_GLOBAL ON)
86
set(MUSE_MODULE_GLOBAL_TESTS OFF)
87
set(MUSE_MODULE_LANGUAGES ON)
88
set(MUSE_MODULE_LEARN ON)
89
set(MUSE_MODULE_MIDI OFF)
90
set(MUSE_MODULE_MPE OFF)
91
set(MUSE_MODULE_MULTIWINDOWS OFF)
92
set(MUSE_MODULE_MUSESAMPLER OFF)
93
set(MUSE_MODULE_NETWORK ON)
94
set(MUSE_MODULE_SHORTCUTS ON)
95
set(MUSE_MODULE_UI ON)
96
set(MUSE_MODULE_UI_TESTS OFF)
97
set(MUSE_MODULE_UPDATE OFF)
98
set(MUSE_MODULE_WORKSPACE ON)
99
set(MUSE_MODULE_VST ON)
100
set(MUSE_MODULE_VST_QML ON)
101
102
# Modules (alphabetical order please)
103
option(AU_BUILD_APPSHELL_MODULE "Build appshell module" ON)
104
option(AU_BUILD_CLOUD_AUDIOCOM "Build cloud audiocom module" ON)
105
option(AU_BUILD_CONTEXT_TESTS "Build context tests" ON)
106
option(AU_BUILD_EFFECTS_BUILTIN_TESTS "Build builtin-effect tests" ON)
107
option(AU_BUILD_EFFECTS_MODULE "Build effects module" ON)
108
option(AU_BUILD_EFFECTS_TESTS "Build effects tests" ON)
109
option(AU_BUILD_PLAYBACK_MODULE "Build playback module" ON)
110
option(AU_BUILD_PLAYBACK_TESTS "Build playback tests" ON)
111
option(AU_BUILD_PROJECT_TESTS "Build project tests" ON)
112
option(AU_BUILD_PROJECTSCENE_MODULE "Build projectscene modules" ON)
113
option(AU_BUILD_PROJECTSCENE_TESTS "Build projectscene tests" ON)
114
option(AU_BUILD_RECORD_MODULE "Build record module" ON)
115
option(AU_BUILD_RECORD_TESTS "Build record tests" ON)
116
option(AU_BUILD_UICOMPONENTS_TESTS "Build uicomponents tests" ON)
117
option(AU_BUILD_TRACKEDIT_TESTS "Build trackedit tests" ON)
118
119
option(AU_MODULE_EFFECTS_VST "Build audacity vst module" ON)
120
set(AU_MODULE_VST_VST3_SDK_PATH "" CACHE PATH "[optional] Path to VST3_SDK. SDK version >= ${VST3_SDK_VERSION} required")
121
122
if (OS_IS_LIN)
123
option(AU_MODULE_EFFECTS_LV2 "Build audacity lv2 module" ON)
124
endif(OS_IS_LIN)
125
126
if( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
127
option(AU_MODULE_EFFECTS_AUDIO_UNIT "Build Audacity Audio Unit module" ON)
128
endif()
129
130
# Time-stretching and pitch-shifting libraries
131
option(AU_USE_SBSMS "Build with SBSMS support for time-stretching effects" ON)
132
option(AU_USE_SOUNDTOUCH "Build with SoundTouch support for pitch/tempo effects" ON)
133
134
# === Setup ===
135
136
# === Pack ===
137
option(MU_RUN_LRELEASE "Generate .qm files" ON)
138
139
# === Compile ===
140
option(MU_COMPILE_INSTALL_QTQML_FILES "Whether to bundle qml files along with the installation (relevant on MacOS only)" ON)
141
option(MUSE_COMPILE_USE_UNITY "Use unity build." ON)
142
option(MUSE_COMPILE_USE_CCACHE "Try use ccache" ON)
143
144
###########################################
145
# Setup Configure
146
###########################################
147
148
# default
149
set(QT_ADD_LINGUISTTOOLS ON)
150
set(QT_ADD_CONCURRENT ON)
151
set(QT_QPROCESS_SUPPORTED ON)
152
153
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/SetupConfigure.local.cmake")
154
include(${CMAKE_CURRENT_LIST_DIR}/SetupConfigure.local.cmake)
155
else()
156
include(SetupConfigure)
157
endif()
158
159
###########################################
160
# Setup compiler and build environment
161
###########################################
162
163
include(SetupBuildEnvironment)
164
include(GetPlatformInfo)
165
include(SetupDevEnvironment)
166
167
if (MUSE_COMPILE_USE_CCACHE)
168
include(SetupCompilerCache)
169
endif(MUSE_COMPILE_USE_CCACHE)
170
171
172
###########################################
173
# Setup external dependencies
174
###########################################
175
set(QT_MIN_VERSION "6.2.4")
176
include(SetupQt6)
177
178
###########################################
179
# Add source tree
180
###########################################
181
if (MUSE_ENABLE_UNIT_TESTS)
182
enable_testing()
183
message(STATUS "Enabled testing")
184
endif()
185
186
add_subdirectory(${MUSE_FRAMEWORK_SRC_PATH})
187
add_subdirectory(src)
188
add_subdirectory(share)
189
190
if (MSVC)
191
# Now that the `audacity` target is defined, we can set it as the startup project in Visual Studio.
192
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT audacity)
193
endif()
194
195
###########################################
196
# Setup Packaging
197
###########################################
198
if (OS_IS_LIN)
199
include(${CMAKE_CURRENT_LIST_DIR}/buildscripts/packaging/Linux+BSD/SetupAppImagePackaging.cmake)
200
endif(OS_IS_LIN)
201
202
if (OS_IS_WIN)
203
include(${CMAKE_CURRENT_LIST_DIR}/buildscripts/packaging/Windows/SetupWindowsPackaging.cmake)
204
endif(OS_IS_WIN)
205
206