Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 16 additions & 7 deletions Jamulus.pro
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,6 @@ win32 {

HEADERS += src/mac/activity.h src/mac/badgelabel.h
OBJECTIVE_SOURCES += src/mac/activity.mm src/mac/badgelabel.mm
CONFIG += x86
QMAKE_TARGET_BUNDLE_PREFIX = app.jamulussoftware

OSX_ENTITLEMENTS.files = mac/Jamulus.entitlements
Expand Down Expand Up @@ -686,20 +685,30 @@ SOURCES_OPUS_X86_SSE4 = libs/opus/celt/x86/celt_lpc_sse4_1.c \
libs/opus/silk/x86/VAD_sse4_1.c \
libs/opus/silk/x86/VQ_WMat_EC_sse4_1.c

contains(QT_ARCH, armeabi-v7a) | contains(QT_ARCH, arm64-v8a) {
contains(QT_ARCH, armeabi-v7a) | contains(QT_ARCH, arm64-v8a) | contains(QT_ARCH, arm64) {

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will potentially enable vectorisation on arm64 devices.

HEADERS_OPUS += $$HEADERS_OPUS_ARM
SOURCES_OPUS_ARCH += $$SOURCES_OPUS_ARM
DEFINES_OPUS += OPUS_ARM_PRESUME_NEON=1 OPUS_ARM_PRESUME_NEON_INTR=1
contains(QT_ARCH, arm64-v8a):DEFINES_OPUS += OPUS_ARM_PRESUME_AARCH64_NEON_INTR
} else:contains(QT_ARCH, x86) | contains(QT_ARCH, x86_64) {
HEADERS_OPUS += $$HEADERS_OPUS_X86
SOURCES_OPUS_ARCH += $$SOURCES_OPUS_X86_SSE $$SOURCES_OPUS_X86_SSE2 $$SOURCES_OPUS_X86_SSE4
DEFINES_OPUS += OPUS_X86_MAY_HAVE_SSE OPUS_X86_MAY_HAVE_SSE2 OPUS_X86_MAY_HAVE_SSE4_1
# x86_64 implies SSE2
contains(QT_ARCH, x86_64):DEFINES_OPUS += OPUS_X86_PRESUME_SSE=1 OPUS_X86_PRESUME_SSE2=1
!macx {
# x86_64 implies SSE2, macOS does not support it due to the current QT_ARCH being x86_64 on macOS even if compiled on apple silicon (as of 06/2026).
SOURCES_OPUS_ARCH += $$SOURCES_OPUS_X86_SSE $$SOURCES_OPUS_X86_SSE2 $$SOURCES_OPUS_X86_SSE4
contains(QT_ARCH, x86_64):DEFINES_OPUS += OPUS_X86_PRESUME_SSE=1 OPUS_X86_PRESUME_SSE2=1
}
DEFINES_OPUS += CPU_INFO_BY_C
}
DEFINES_OPUS += OPUS_BUILD=1 USE_ALLOCA=1 OPUS_HAVE_RTCD=1 HAVE_LRINTF=1 HAVE_LRINT=1
DEFINES_OPUS += OPUS_BUILD=1 USE_ALLOCA=1 HAVE_LRINTF=1 HAVE_LRINT=1

!macx | !contains(QT_ARCH, x86_64) {

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would hope that there is some variable which is definitely arm64 on apple silicon and x86 on intel... Then we could probably use it.

# all but x86 macOS.
# macOS fails unless disabled due to QT_ARCH being x86_64 even on apple silicon builds
DEFINES_OPUS += OPUS_HAVE_RTCD=1
} else {
message(Skipping Opus RTCD due to incompatibility on macOS)
}

DISTFILES += ChangeLog \
COMPILING.md \
Expand Down Expand Up @@ -1137,7 +1146,7 @@ contains(CONFIG, "opus_shared_lib") {
DISTFILES += $$DISTFILES_OPUS

contains(QT_ARCH, x86) | contains(QT_ARCH, x86_64) {
msvc | macx-xcode {
msvc | macx {
# According to opus/win32/config.h, "no special compiler
# flags necessary" when using msvc. It always supports
# SSE intrinsics, but does not auto-vectorize.
Expand Down
Loading