From 09b88da5aa570e3c1bdd43eb069ac193bcd27325 Mon Sep 17 00:00:00 2001 From: Steve Lhomme Date: Fri, 10 Apr 2026 11:27:42 +0200 Subject: [PATCH 1/6] Only define _USE_MATH_DEFINES if it's not defined --- include/AmbisonicCommons.h | 4 +++- include/Tools.h | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/include/AmbisonicCommons.h b/include/AmbisonicCommons.h index 8e201df..8a60e04 100644 --- a/include/AmbisonicCommons.h +++ b/include/AmbisonicCommons.h @@ -16,7 +16,9 @@ #ifndef SPATIALAUDIO_AMBISONIC_COMMONS_H #define SPATIALAUDIO_AMBISONIC_COMMONS_H -#define _USE_MATH_DEFINES +#ifndef _USE_MATH_DEFINES +# define _USE_MATH_DEFINES +#endif #include #include #include diff --git a/include/Tools.h b/include/Tools.h index c91ee66..ed5b9c1 100644 --- a/include/Tools.h +++ b/include/Tools.h @@ -15,7 +15,9 @@ #ifndef SPATIALAUDIO_TOOLS_H #define SPATIALAUDIO_TOOLS_H -#define _USE_MATH_DEFINES +#ifndef _USE_MATH_DEFINES +# define _USE_MATH_DEFINES +#endif #include #include #include From 71c297d1f04f7717d2c3f140c7dfb1d952a6cc10 Mon Sep 17 00:00:00 2001 From: Steve Lhomme Date: Fri, 10 Apr 2026 11:30:05 +0200 Subject: [PATCH 2/6] Always define _USE_MATH_DEFINES globally when building libspatialaudio Depending on the order of includes math.h may be included before we have a chance to set the define --- CMakeLists.txt | 2 ++ meson.build | 1 + source/meson.build | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 80bc485..95324af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -174,6 +174,8 @@ target_include_directories(spatialaudio target_compile_definitions(spatialaudio PRIVATE SPATIALAUDIO_COMPILATION + PUBLIC + _USE_MATH_DEFINES ) if(MYSOFA_FOUND) diff --git a/meson.build b/meson.build index 7a81ec9..229668b 100644 --- a/meson.build +++ b/meson.build @@ -33,6 +33,7 @@ libspatialaudio_dep = declare_dependency( include_directories : spatialaudio_incdirs, dependencies : dependencies, link_with : spatialaudio_lib, + compile_args : ['-D_USE_MATH_DEFINES'], ) meson.override_dependency('libspatialaudio', libspatialaudio_dep) diff --git a/source/meson.build b/source/meson.build index 26d3921..9b4c12c 100644 --- a/source/meson.build +++ b/source/meson.build @@ -39,7 +39,7 @@ spatialaudio_sources = files( 'ObjectPanner.cpp', ) -spatialaudio_clike_args = ['-DSPATIALAUDIO_COMPILATION'] +spatialaudio_clike_args = ['-DSPATIALAUDIO_COMPILATION', '-D_USE_MATH_DEFINES'] # Extract version info from header spatialaudio_api_version = cpp.get_define('SPATIALAUDIO_API_VERSION_STRING', From 06037a15f60f6ac2c7f110f783b0808719e7b83d Mon Sep 17 00:00:00 2001 From: Steve Lhomme Date: Fri, 10 Apr 2026 11:40:45 +0200 Subject: [PATCH 3/6] Define _USE_MATH_DEFINES when using libspatialaudio includes Because we don't control the order of includes and we use M_PI/M_PI_2 in public headers we need to make sure including will provide the proper defines. --- cmake/spatialaudio.pc.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/spatialaudio.pc.cmake b/cmake/spatialaudio.pc.cmake index af481ec..0c98896 100644 --- a/cmake/spatialaudio.pc.cmake +++ b/cmake/spatialaudio.pc.cmake @@ -6,4 +6,4 @@ Name: spatialaudio Description: Spatial audio rendering library Version: @PROJECT_VERSION@ Libs: -L${libdir} -lspatialaudio @MYSOFA_LIB@ -lm -lz -Cflags: -I${includedir} @MYSOFA_INCLUDE@ +Cflags: -I${includedir} @MYSOFA_INCLUDE@ -D_USE_MATH_DEFINES From 23a01e1dcdaf7ff5651945633d15dc8a8a591544 Mon Sep 17 00:00:00 2001 From: Steve Lhomme Date: Fri, 10 Apr 2026 10:22:59 +0200 Subject: [PATCH 4/6] Do not include math.h from C++ headers We already include --- include/AmbisonicCommons.h | 1 - include/Tools.h | 1 - 2 files changed, 2 deletions(-) diff --git a/include/AmbisonicCommons.h b/include/AmbisonicCommons.h index 8a60e04..df5accf 100644 --- a/include/AmbisonicCommons.h +++ b/include/AmbisonicCommons.h @@ -19,7 +19,6 @@ #ifndef _USE_MATH_DEFINES # define _USE_MATH_DEFINES #endif -#include #include #include diff --git a/include/Tools.h b/include/Tools.h index ed5b9c1..046587c 100644 --- a/include/Tools.h +++ b/include/Tools.h @@ -18,7 +18,6 @@ #ifndef _USE_MATH_DEFINES # define _USE_MATH_DEFINES #endif -#include #include #include #include From fd690bc69b71f7dd0bf95c541a230ecc3d0226f2 Mon Sep 17 00:00:00 2001 From: Steve Lhomme Date: Fri, 10 Apr 2026 10:19:08 +0200 Subject: [PATCH 5/6] clean include formatting --- include/Tools.h | 6 +++--- source/Decorrelator.cpp | 2 +- source/PointSourcePannerGainCalc.cpp | 4 ++-- source/RegionHandlers.cpp | 2 +- source/Renderer.cpp | 4 ++-- source/adm/DirectSpeakersGainCalc.cpp | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/Tools.h b/include/Tools.h index 046587c..aeb8212 100644 --- a/include/Tools.h +++ b/include/Tools.h @@ -18,9 +18,9 @@ #ifndef _USE_MATH_DEFINES # define _USE_MATH_DEFINES #endif -#include -#include -#include +#include +#include +#include #include #include #include "assert.h" diff --git a/source/Decorrelator.cpp b/source/Decorrelator.cpp index 032233b..f3d4b8f 100644 --- a/source/Decorrelator.cpp +++ b/source/Decorrelator.cpp @@ -12,7 +12,7 @@ #include "Decorrelator.h" -#include +#include namespace spaudio { diff --git a/source/PointSourcePannerGainCalc.cpp b/source/PointSourcePannerGainCalc.cpp index ce2ff88..44afdc7 100644 --- a/source/PointSourcePannerGainCalc.cpp +++ b/source/PointSourcePannerGainCalc.cpp @@ -16,8 +16,8 @@ #include "LoudspeakerLayoutHulls.h" -#include -#include +#include +#include #include namespace spaudio { diff --git a/source/RegionHandlers.cpp b/source/RegionHandlers.cpp index 2d4ed2c..37374ab 100644 --- a/source/RegionHandlers.cpp +++ b/source/RegionHandlers.cpp @@ -12,7 +12,7 @@ /*############################################################################*/ #include "RegionHandlers.h" -#include +#include #include namespace spaudio { diff --git a/source/Renderer.cpp b/source/Renderer.cpp index dbcb505..e023246 100644 --- a/source/Renderer.cpp +++ b/source/Renderer.cpp @@ -13,8 +13,8 @@ /*############################################################################*/ #include "Renderer.h" -#include -#include +#include +#include namespace spaudio { diff --git a/source/adm/DirectSpeakersGainCalc.cpp b/source/adm/DirectSpeakersGainCalc.cpp index 376306c..a3dc8c0 100644 --- a/source/adm/DirectSpeakersGainCalc.cpp +++ b/source/adm/DirectSpeakersGainCalc.cpp @@ -13,7 +13,7 @@ /*############################################################################*/ #include "adm/DirectSpeakersGainCalc.h" -#include +#include #include namespace spaudio { From c19888d4dfd65ef083d7b86f5080e855bb0356c6 Mon Sep 17 00:00:00 2001 From: Steve Lhomme Date: Fri, 10 Apr 2026 13:02:26 +0200 Subject: [PATCH 6/6] Use standard C++ abs() variant Not to be confused with the C one that requires math.h. --- source/PointSourcePannerGainCalc.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/PointSourcePannerGainCalc.cpp b/source/PointSourcePannerGainCalc.cpp index 44afdc7..f88f24d 100644 --- a/source/PointSourcePannerGainCalc.cpp +++ b/source/PointSourcePannerGainCalc.cpp @@ -364,7 +364,7 @@ namespace spaudio { { upperLayerSet.push_back(iSpk); // TODO: consider remapping azimuth to range -180 to 180 - maxUpperAz = std::max(maxUpperAz, abs(layout.getChannel(iSpk).getPolarPositionNominal().azimuth)); + maxUpperAz = std::max(maxUpperAz, std::abs(layout.getChannel(iSpk).getPolarPositionNominal().azimuth)); meanUpperEl += layout.getChannel(iSpk).getPolarPosition().elevation; } else if (el >= -10 && el <= 10) @@ -376,7 +376,7 @@ namespace spaudio { { lowerLayerSet.push_back(iSpk); // TODO: consider remapping azimuth to range -180 to 180 - maxLowerAz = std::max(maxLowerAz, abs(layout.getChannel(iSpk).getPolarPositionNominal().azimuth)); + maxLowerAz = std::max(maxLowerAz, std::abs(layout.getChannel(iSpk).getPolarPositionNominal().azimuth)); meanLowerEl += layout.getChannel(iSpk).getPolarPosition().elevation; } } @@ -390,7 +390,7 @@ namespace spaudio { auto name = layout.getChannel(midLayerSet[iMid]).getChannelName(); double azimuth = layout.getChannel(midLayerSet[iMid]).getPolarPosition().azimuth; // Lower layer - if ((lowerLayerSet.size() > 0 && abs(azimuth) > maxLowerAz + 40.) || lowerLayerSet.size() == 0) + if ((lowerLayerSet.size() > 0 && std::abs(azimuth) > maxLowerAz + 40.) || lowerLayerSet.size() == 0) { m_downmixMapping.push_back(iMid); name.at(0) = 'B'; @@ -406,7 +406,7 @@ namespace spaudio { auto name = layout.getChannel(midLayerSet[iMid]).getChannelName(); double azimuth = layout.getChannel(midLayerSet[iMid]).getPolarPosition().azimuth; // Upper layer - if ((upperLayerSet.size() > 0 && abs(azimuth) > maxUpperAz + 40.) || upperLayerSet.size() == 0) + if ((upperLayerSet.size() > 0 && std::abs(azimuth) > maxUpperAz + 40.) || upperLayerSet.size() == 0) { m_downmixMapping.push_back(iMid); name.at(0) = 'U';