summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt206
1 files changed, 160 insertions, 46 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b36bf2e672..cbaf72e996 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -109,22 +109,44 @@ if(NOT CMAKE_CONFIGURATION_TYPES)
endif()
option(QT6 "Build with Qt6" OFF)
+option(QML "Build with QML" OFF)
+option(QOPENGL "Use QOpenGLWindow based widget instead of QGLWidget" ON)
+
+if(QML AND NOT QT6)
+ message(FATAL_ERROR "Building with option QML=ON requires QT6=ON")
+endif()
+
+if(QOPENGL)
+ add_compile_definitions(MIXXX_USE_QOPENGL)
+endif()
+
+if(QML)
+ add_compile_definitions(MIXXX_USE_QML)
+endif()
if(APPLE)
if(QT6)
# Minimum macOS version supported by Qt 6
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15 CACHE STRING "Minimum macOS version the build will be able to run on")
if(NOT VCPKG_TARGET_TRIPLET)
- set(VCPKG_TARGET_TRIPLET "x64-osx-min10.15")
+ set(VCPKG_TARGET_TRIPLET "x64-osx-min1012")
endif()
else()
- # Minimum macOS version supported by Qt 5.12
- set(CMAKE_OSX_DEPLOYMENT_TARGET 10.12 CACHE STRING "Minimum macOS version the build will be able to run on")
- if(NOT VCPKG_TARGET_TRIPLET)
- set(VCPKG_TARGET_TRIPLET "x64-osx-min1012")
+ if(VCPKG_TARGET_TRIPLET STREQUAL "arm64-osx-min1100")
+ # Minimum macOS version for arm64 Support
+ set(CMAKE_OSX_DEPLOYMENT_TARGET 11.0 CACHE STRING "Minimum macOS version the build will be able to run on")
+ set(CMAKE_OSX_ARCHITECTURES arm64 CACHE STRING "The target achritecture")
+ set(CMAKE_SYSTEM_PROCESSOR arm64 CACHE STRING "The target system processor")
+ set(CMAKE_SYSTEM_NAME Darwin CACHE STRING "Setting this enables CMAKE_CROSSCOMPILE")
+ else()
+ # Minimum macOS version supported by Qt 5.12
+ set(CMAKE_OSX_DEPLOYMENT_TARGET 10.12 CACHE STRING "Minimum macOS version the build will be able to run on")
+ if(NOT VCPKG_TARGET_TRIPLET)
+ set(VCPKG_TARGET_TRIPLET "x64-osx-min1012")
+ endif()
+ # Needed for deployment target < 10.14
+ add_compile_options(-fno-aligned-allocation)
endif()
- # Needed for deployment target < 10.14
- add_compile_options(-fno-aligned-allocation)
endif()
endif()
@@ -170,8 +192,13 @@ else()
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- # using regular Clang or AppleClang
- set(LLVM_CLANG true)
+ if (CMAKE_CXX_SIMULATE_ID MATCHES "MSVC")
+ set(LLVM_CLANG false)
+ set(MSVC true)
+ else()
+ # using regular Clang or AppleClang
+ set(LLVM_CLANG true)
+ endif()
else()
set(LLVM_CLANG false)
endif()
@@ -186,6 +213,9 @@ set(CMAKE_CXX_STANDARD 20)
if(MSVC)
# Ensure MSVC populates __cplusplus correctly.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:__cplusplus")
+ # Remove unreferenced code and data
+ # Since c++11 they can safely be removed to speed up linking.
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:inline")
endif()
# Speed up builds on HDDs and prevent wearing of SDDs
@@ -289,6 +319,11 @@ if(MSVC)
string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
string(REPLACE "/RTC1" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
+ # For some reasons cmake uses /Ob1 in RelWithDebInfo https://gitlab.kitware.com/cmake/cmake/-/issues/20812
+ # /O2 is applied by CMake and this implies /Od2
+ string(REPLACE "/Ob1" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
+ string(REPLACE "/Ob1" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
+
# Reduce the size of the binary in RelWithDebInfo builds
# Do not use /OPT:ICF because it has no effect.
# https://github.com/mixxxdj/mixxx/pull/3660#pullrequestreview-600137258
@@ -355,8 +390,9 @@ if(MSVC)
#Remove optimize flags set by cmake defaults
string(REPLACE "/O2" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
string(REPLACE "/O2" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
- string(REPLACE "/Ob2" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
- string(REPLACE "/Ob2" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
+ # For some reasons cmake uses /Ob1 in RelWithDebInfo https://gitlab.kitware.com/cmake/cmake/-/issues/20812
+ string(REPLACE "/Ob1" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
+ string(REPLACE "/Ob1" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
add_compile_options(/Od) # this implies /Ob0
add_compile_options(/RTC1)
endif()
@@ -674,7 +710,6 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL
src/engine/engineworker.cpp
src/engine/engineworkerscheduler.cpp
src/engine/enginexfader.cpp
- src/engine/filters/enginefilter.cpp
src/engine/filters/enginefilterbessel4.cpp
src/engine/filters/enginefilterbessel8.cpp
src/engine/filters/enginefilterbiquad1.cpp
@@ -750,7 +785,10 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL
src/library/export/trackexportworker.cpp
src/library/externaltrackcollection.cpp
src/library/hiddentablemodel.cpp
+ src/library/itunes/itunesdao.cpp
src/library/itunes/itunesfeature.cpp
+ src/library/itunes/itunesplaylistmodel.cpp
+ src/library/itunes/itunesxmlimporter.cpp
src/library/library_prefs.cpp
src/library/library.cpp
src/library/librarycontrol.cpp
@@ -840,14 +878,12 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL
src/preferences/dialog/dlgprefbeatsdlg.ui
src/preferences/dialog/dlgprefcolors.cpp
src/preferences/dialog/dlgprefcolorsdlg.ui
- src/preferences/dialog/dlgprefcrossfader.cpp
- src/preferences/dialog/dlgprefcrossfaderdlg.ui
+ src/preferences/dialog/dlgprefmixer.cpp
+ src/preferences/dialog/dlgprefmixerdlg.ui
src/preferences/dialog/dlgprefdeck.cpp
src/preferences/dialog/dlgprefdeckdlg.ui
src/preferences/dialog/dlgprefeffects.cpp
src/preferences/dialog/dlgprefeffectsdlg.ui
- src/preferences/dialog/dlgprefeq.cpp
- src/preferences/dialog/dlgprefeqdlg.ui
src/preferences/dialog/dlgpreferencepage.cpp
src/preferences/dialog/dlgpreferences.cpp
src/preferences/dialog/dlgpreferencesdlg.ui
@@ -943,6 +979,7 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL
src/util/battery/battery.cpp
src/util/cache.cpp
src/util/cmdlineargs.cpp
+ src/util/colorcomponents.cpp
src/util/color/color.cpp
src/util/color/colorpalette.cpp
src/util/color/predefinedcolorpalettes.cpp
@@ -999,7 +1036,6 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL
src/util/valuetransformer.cpp
src/util/versionstore.cpp
src/util/widgethelper.cpp
- src/util/widgetrendertimer.cpp
src/util/workerthread.cpp
src/util/workerthreadscheduler.cpp
src/util/xml.cpp
@@ -1073,12 +1109,11 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL
src/widget/wtracktableviewheader.cpp
src/widget/wtracktext.cpp
src/widget/wtrackwidgetgroup.cpp
- src/widget/wvumeter.cpp
src/widget/wwidget.cpp
src/widget/wwidgetgroup.cpp
src/widget/wwidgetstack.cpp
)
-if(QT6)
+if(QML)
target_sources(mixxx-lib PRIVATE
src/qml/asyncimageprovider.cpp
src/qml/qmlapplication.cpp
@@ -1101,12 +1136,10 @@ else()
src/waveform/guitick.cpp
src/waveform/renderers/glslwaveformrenderersignal.cpp
src/waveform/renderers/glvsynctestrenderer.cpp
+ src/waveform/renderers/glwaveformrenderbackground.cpp
src/waveform/renderers/glwaveformrendererfilteredsignal.cpp
src/waveform/renderers/glwaveformrendererrgb.cpp
src/waveform/renderers/glwaveformrenderersimplesignal.cpp
- src/waveform/renderers/qtvsynctestrenderer.cpp
- src/waveform/renderers/qtwaveformrendererfilteredsignal.cpp
- src/waveform/renderers/qtwaveformrenderersimplesignal.cpp
src/waveform/renderers/waveformmark.cpp
src/waveform/renderers/waveformmarkrange.cpp
src/waveform/renderers/waveformmarkset.cpp
@@ -1134,12 +1167,8 @@ else()
src/waveform/widgets/glslwaveformwidget.cpp
src/waveform/widgets/glvsynctestwidget.cpp
src/waveform/widgets/glwaveformwidget.cpp
+ src/waveform/widgets/glwaveformwidgetabstract.cpp
src/waveform/widgets/hsvwaveformwidget.cpp
- src/waveform/widgets/qthsvwaveformwidget.cpp
- src/waveform/widgets/qtrgbwaveformwidget.cpp
- src/waveform/widgets/qtsimplewaveformwidget.cpp
- src/waveform/widgets/qtvsynctestwidget.cpp
- src/waveform/widgets/qtwaveformwidget.cpp
src/waveform/widgets/rgbwaveformwidget.cpp
src/waveform/widgets/softwarewaveformwidget.cpp
src/waveform/widgets/waveformwidgetabstract.cpp
@@ -1148,10 +1177,61 @@ else()
src/widget/woverviewlmh.cpp
src/widget/woverviewrgb.cpp
src/widget/wspinny.cpp
- src/widget/wvumetergl.cpp
+ src/widget/wspinnybase.cpp
+ src/widget/wvumeter.cpp
+ src/widget/wvumeterbase.cpp
+ src/widget/wvumeterlegacy.cpp
src/widget/wwaveformviewer.cpp
)
+ if(QOPENGL)
+ target_sources(mixxx-lib PRIVATE
+ src/shaders/endoftrackshader.cpp
+ src/shaders/rgbashader.cpp
+ src/shaders/rgbshader.cpp
+ src/shaders/shader.cpp
+ src/shaders/textureshader.cpp
+ src/shaders/unicolorshader.cpp
+ src/util/texture.cpp
+ src/waveform/renderers/allshader/matrixforwidgetgeometry.cpp
+ src/waveform/renderers/allshader/waveformrenderbackground.cpp
+ src/waveform/renderers/allshader/waveformrenderbeat.cpp
+ src/waveform/renderers/allshader/waveformrenderer.cpp
+ src/waveform/renderers/allshader/waveformrendererendoftrack.cpp
+ src/waveform/renderers/allshader/waveformrendererfiltered.cpp
+ src/waveform/renderers/allshader/waveformrendererlrrgb.cpp
+ src/waveform/renderers/allshader/waveformrendererpreroll.cpp
+ src/waveform/renderers/allshader/waveformrendererrgb.cpp
+ src/waveform/renderers/allshader/waveformrenderersignalbase.cpp
+ src/waveform/renderers/allshader/waveformrenderersimple.cpp
+ src/waveform/renderers/allshader/waveformrendermark.cpp
+ src/waveform/renderers/allshader/waveformrendermarkrange.cpp
+ src/waveform/widgets/allshader/filteredwaveformwidget.cpp
+ src/waveform/widgets/allshader/lrrgbwaveformwidget.cpp
+ src/waveform/widgets/allshader/rgbwaveformwidget.cpp
+ src/waveform/widgets/allshader/simplewaveformwidget.cpp
+ src/waveform/widgets/allshader/waveformwidget.cpp
+ src/widget/openglwindow.cpp
+ src/widget/tooltipqopengl.cpp
+ src/widget/wglwidgetqopengl.cpp
+ src/widget/winitialglwidget.cpp
+ src/widget/wspinnyglsl.cpp
+ src/widget/wvumeterglsl.cpp
+ )
+ else()
+ target_sources(mixxx-lib PRIVATE
+ src/waveform/renderers/qtvsynctestrenderer.cpp
+ src/waveform/renderers/qtwaveformrendererfilteredsignal.cpp
+ src/waveform/renderers/qtwaveformrenderersimplesignal.cpp
+ src/waveform/widgets/qthsvwaveformwidget.cpp
+ src/waveform/widgets/qtrgbwaveformwidget.cpp
+ src/waveform/widgets/qtsimplewaveformwidget.cpp
+ src/waveform/widgets/qtvsynctestwidget.cpp
+ src/waveform/widgets/qtwaveformwidget.cpp
+ src/widget/wglwidgetqglwidget.cpp
+ )
+ endif()
endif()
+
set_target_properties(mixxx-lib PROPERTIES AUTOMOC ON AUTOUIC ON CXX_CLANG_TIDY "${CLANG_TIDY}")
target_include_directories(mixxx-lib PUBLIC src "${CMAKE_CURRENT_BINARY_DIR}/src")
if(UNIX AND NOT APPLE)
@@ -1159,6 +1239,23 @@ if(UNIX AND NOT APPLE)
set(MIXXX_SETTINGS_PATH ".mixxx/")
endif()
+if(APPLE)
+ # Enable Automatic Reference Counting (ARC) when compiling Objective-C(++).
+ # This frees us from having to worry about memory management when interfacing
+ # with Apple frameworks (e.g. as in itunesmacosimporter.mm) since the compiler
+ # will automatically insert retain/release calls on Objective-C objects.
+ target_compile_options(mixxx-lib PUBLIC -fobjc-arc)
+
+ option(MACOS_ITUNES_LIBRARY "Native macOS iTunes/Music.app library integration" ON)
+ if(MACOS_ITUNES_LIBRARY)
+ target_sources(mixxx-lib PRIVATE
+ src/library/itunes/itunesmacosimporter.mm
+ )
+ target_link_libraries(mixxx-lib PRIVATE "-weak_framework iTunesLibrary")
+ target_compile_definitions(mixxx-lib PUBLIC __MACOS_ITUNES_LIBRARY__)
+ endif()
+endif()
+
# QML Debugging
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
target_compile_definitions(mixxx-lib PRIVATE QT_QML_DEBUG)
@@ -1205,6 +1302,7 @@ if(MSVC)
if(WARNINGS_PEDANTIC)
target_compile_options(mixxx-lib PUBLIC /W4)
else()
+ # Warning Level 3 (production quality)
target_compile_options(mixxx-lib PUBLIC /W3)
target_compile_definitions(mixxx-lib PUBLIC _SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING _CRT_SECURE_NO_WARNINGS)
endif()
@@ -1251,10 +1349,6 @@ target_compile_definitions(mixxx-lib PUBLIC
$<$<CONFIG:Debug>:MIXXX_BUILD_DEBUG>
$<$<CONFIG:Debug>:MIXXX_DEBUG_ASSERTIONS_ENABLED>
$<$<NOT:$<CONFIG:Debug>>:MIXXX_BUILD_RELEASE>
- # Disable assert.h assertions in release mode. Some libraries use
- # this as a signal for when to enable code that should be disabled
- # in release mode.
- $<$<NOT:$<CONFIG:Debug>>:NDEBUG>
)
# Mac-specific options
@@ -1367,7 +1461,7 @@ if (APPLE)
set_target_properties(mixxx PROPERTIES
MACOSX_BUNDLE true
- MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/packaging/macos/bundle.plist.in"
+ MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/packaging/macos/Info.plist.in"
)
endif()
endif()
@@ -1703,6 +1797,7 @@ add_executable(mixxx-test
src/test/hotcuecontrol_test.cpp
src/test/imageutils_test.cpp
src/test/indexrange_test.cpp
+ src/test/itunesxmlimportertest.cpp
src/test/keyutilstest.cpp
src/test/lcstest.cpp
src/test/learningutilstest.cpp
@@ -1944,15 +2039,18 @@ endif()
# Denon Engine Prime library export support (using libdjinterop)
option(ENGINEPRIME "Support for library export to Denon Engine Prime" ON)
if(ENGINEPRIME)
- set(LIBDJINTEROP_VERSION 0.16.0)
+ set(LIBDJINTEROP_VERSION 0.16.1)
# Look for an existing installation of libdjinterop and use that if available.
# Otherwise, download and build from GitHub.
- find_package(DjInterop ${LIBDJINTEROP_VERSION})
+ # Note: Version 0.17.0 is not yet compatible
+ find_package(DjInterop ${LIBDJINTEROP_VERSION} EXACT)
if(DjInterop_FOUND)
# An existing installation of djinterop is available.
message(STATUS "Using existing system installation of libdjinterop")
target_include_directories(mixxx-lib PUBLIC ${DjInterop_INCLUDE_DIRS})
target_link_libraries(mixxx-lib PRIVATE DjInterop::DjInterop)
+ find_package(ZLIB 1.2.8 REQUIRED)
+ target_link_libraries(mixxx-lib PRIVATE ${ZLIB_LIBRARIES})
else()
# Fetch djinterop sources from GitHub and build them statically.
@@ -1978,7 +2076,7 @@ if(ENGINEPRIME)
# the configuration.
ExternalProject_Add(libdjinterop
URL "https://github.com/xsco/libdjinterop/archive/refs/tags/${LIBDJINTEROP_VERSION}.tar.gz"
- URL_HASH SHA256=c998831fe4d3cc80c5c031491204244c9ed0c61575dd529260304b95d79db588
+ URL_HASH SHA256=25461f5cc3ea80850d8400872f4fef08ad3730d9f2051719cccf2460f5ac15ad
DOWNLOAD_DIR "${CMAKE_CURRENT_BINARY_DIR}/downloads"
DOWNLOAD_NAME "libdjinterop-${LIBDJINTEROP_VERSION}.tar.gz"
INSTALL_DIR ${DJINTEROP_INSTALL_DIR}
@@ -2031,10 +2129,13 @@ add_library(fidlib STATIC EXCLUDE_FROM_ALL lib/fidlib/fidlib.c)
if(MSVC)
target_compile_definitions(fidlib PRIVATE T_MSVC)
target_compile_definitions(fidlib PRIVATE _USE_MATH_DEFINES)
+ target_compile_options(fidlib PRIVATE /W3)
elseif(MINGW)
target_compile_definitions(fidlib PRIVATE T_MINGW)
+ target_compile_options(fidlib PRIVATE -fno-finite-math-only -Wall -Wextra -Wfloat-conversion -Werror=return-type)
else()
target_compile_definitions(fidlib PRIVATE T_LINUX)
+ target_compile_options(fidlib PRIVATE -fno-finite-math-only -Wall -Wextra -Wfloat-conversion -Werror=return-type)
endif()
target_include_directories(mixxx-lib SYSTEM PUBLIC lib/fidlib)
target_link_libraries(mixxx-lib PRIVATE fidlib)
@@ -2109,7 +2210,10 @@ target_link_libraries(mixxx-lib PRIVATE FLAC::FLAC)
# inlining It is compiled without optimization and allows to use these function
# from -ffast-math optimized objects. The MSVC option /fp:fast does not suffer this issue
add_library(FpClassify STATIC EXCLUDE_FROM_ALL src/util/fpclassify.cpp)
-if(GNU_GCC OR LLVM_CLANG)
+
+if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_SIMULATE_ID MATCHES "MSVC")
+ target_compile_options(FpClassify PRIVATE /fp:precise)
+elseif(GNU_GCC OR LLVM_CLANG)
# The option `-ffp-contract=on` must precede `-fno-fast-math`
# to silence a warning on Clang 14
target_compile_options(FpClassify PRIVATE -ffp-contract=on -fno-fast-math)
@@ -2141,7 +2245,7 @@ add_library(MP3GuessEnc STATIC EXCLUDE_FROM_ALL
lib/mp3guessenc-0.27.4/bit_utils.c
)
if(WIN32)
- target_compile_definitions(MP3GuessEnc PRIVATE __WINDOWS__)
+ target_compile_definitions(MP3GuessEnc PRIVATE __WINDOWS__ _CRT_SECURE_NO_WARNINGS)
endif()
target_include_directories(MP3GuessEnc SYSTEM PUBLIC lib/mp3guessenc-0.27.4)
target_link_libraries(mixxx-lib PRIVATE MP3GuessEnc)
@@ -2227,7 +2331,9 @@ if(QT6)
foreach(COMPONENT ${QT6_NEW_COMPONENTS})
target_link_libraries(mixxx-lib PUBLIC Qt6::${COMPONENT})
endforeach()
+endif()
+if(QML)
set(QT_QML_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/qml)
set_target_properties(mixxx-lib PROPERTIES AUTOMOC ON)
qt_add_qml_module(mixxx-lib
@@ -2325,7 +2431,7 @@ endif()
if(APPLE)
- if(Qt_IS_STATIC)
+ if(Qt_IS_STATIC OR QT6)
target_link_libraries(mixxx-lib PRIVATE
"-weak_framework Accelerate"
"-weak_framework AppKit"
@@ -2429,7 +2535,11 @@ endif()
if(APPLE OR WIN32)
# qt_de.qm is just one arbitrary file in the directory that needs to be located;
# there is no particular reason to look for this file versus any other one in the directory.
- find_file(QT_TRANSLATION_FILE qt_de.qm PATHS "${Qt5_DIR}/../../../translations" "${Qt5_DIR}/../../qt5/translations" REQUIRED NO_DEFAULT_PATH)
+ if(QT6)
+ find_file(QT_TRANSLATION_FILE qt_de.qm PATHS "${Qt6_DIR}/../../../translations" "${Qt6_DIR}/../../qt5/translations" REQUIRED NO_DEFAULT_PATH)
+ else()
+ find_file(QT_TRANSLATION_FILE qt_de.qm PATHS "${Qt5_DIR}/../../../translations" "${Qt5_DIR}/../../qt5/translations" REQUIRED NO_DEFAULT_PATH)
+ endif()
get_filename_component(QT_TRANSLATIONS ${QT_TRANSLATION_FILE} DIRECTORY)
install(
DIRECTORY "${QT_TRANSLATIONS}"
@@ -2765,18 +2875,21 @@ option(BROADCAST "Live Broadcasting (Shoutcast) support" ON)
if(BROADCAST)
find_package(Shoutidjc)
# Check if system lib is at least 2.4.6 and not suffering bugs
- # https://bugs.launchpad.net/mixxx/+bug/1833225
- # https://bugs.launchpad.net/mixxx/+bug/1913579
+ # https://github.com/mixxxdj/mixxx/issues/9681
+ # https://github.com/mixxxdj/mixxx/issues/10305
if(Shoutidjc_FOUND AND Shoutidjc_VERSION VERSION_LESS 2.4.4)
- message(STATUS "Installed libshout-idjc version: ${Shoutidjc_VERSION} is suffering from bug lp1833225")
+ message(STATUS "Installed libshout-idjc version: ${Shoutidjc_VERSION} is suffering from issue #9681")
elseif(Shoutidjc_FOUND AND Shoutidjc_VERSION VERSION_LESS 2.4.6)
- message(STATUS "Installed libshout version: ${Shout_VERSION} is suffering from bug lp1913579")
+ message(STATUS "Installed libshout version: ${Shout_VERSION} is suffering from issue #10305")
endif()
if(NOT Shoutidjc_FOUND OR Shoutidjc_VERSION VERSION_LESS 2.4.6)
# Fall back to internal library in the lib tree
message(STATUS "Using internal libshout-idjc")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/lib/libshout-idjc")
target_include_directories(mixxx-lib SYSTEM PUBLIC lib/libshout-idjc/include)
+ if(WIN32)
+ target_compile_definitions(shout_mixxx PRIVATE __WINDOWS__ _CRT_NONSTDC_NO_WARNINGS)
+ endif()
target_link_libraries(mixxx-lib PRIVATE shout_mixxx)
else()
target_link_libraries(mixxx-lib PRIVATE Shoutidjc::Shoutidjc)
@@ -2936,6 +3049,7 @@ if(HID)
target_sources(mixxx-lib PRIVATE
src/controllers/hid/hidcontroller.cpp
src/controllers/hid/hidiothread.cpp
+ src/controllers/hid/hidioglobaloutputreportfifo.cpp
src/controllers/hid/hidiooutputreport.cpp
src/controllers/hid/hiddevice.cpp
src/controllers/hid/hidenumerator.cpp
@@ -3056,7 +3170,7 @@ if (NOT CPACK_DEBIAN_PACKAGE_RELEASE)
set(CPACK_DEBIAN_PACKAGE_RELEASE 1)
endif()
-set(CPACK_DEBIAN_DISTRIBUTION_RELEASES jammy kinetic)
+set(CPACK_DEBIAN_DISTRIBUTION_RELEASES jammy kinetic lunar mantic)
set(CPACK_DEBIAN_SOURCE_DIR ${CMAKE_SOURCE_DIR})
set(CPACK_DEBIAN_UPLOAD_PPA_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/packaging/CPackDebUploadPPA.cmake")
set(CPACK_DEBIAN_INSTALL_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/packaging/CPackDebInstall.cmake")
@@ -3075,7 +3189,7 @@ include(CPack)
if(APPLE AND MACOS_BUNDLE)
set(BUNDLE_NAME "${MIXXX_INSTALL_PREFIX}")
set(BUNDLE_DIRS "${CMAKE_PREFIX_PATH}/lib")
- set(APPLE_CODESIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/packaging/macos/entitlements.plist")
+ set(APPLE_CODESIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/packaging/macos/Mixxx.entitlements")
# Starting with arm64 macOS Apple will require ad-hoc code signatures,
# which can be generated by setting the identity to a single dash (-).