From 24925f9e99cd64d999673f45ad96c9afd2102006 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Thu, 22 Jan 2026 20:13:59 +0000 Subject: [PATCH 1/2] Add macOS minimum version flags to build process Fixes https://github.com/MonoGame/MonoGame/issues/9013 --- build/BuildMacOSTask.cs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/build/BuildMacOSTask.cs b/build/BuildMacOSTask.cs index 1f0d782..7dc2d37 100644 --- a/build/BuildMacOSTask.cs +++ b/build/BuildMacOSTask.cs @@ -68,6 +68,7 @@ private static void BuildArm64(BuildContext context) { EnvironmentVariables = envVariables }; + var extraFlags = "--extra-cflags='-mmacosx-version-min=10.9' --extra-ldflags='-mmacosx-version-min=10.9'"; var shellCommandPath = "zsh"; @@ -77,7 +78,7 @@ private static void BuildArm64(BuildContext context) context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"./autogen.sh\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure --disable-shared {prefixFlag} {hostFlag}\""; + processSettings.Arguments = $"-c \"./configure --disable-shared {extraFlags} {prefixFlag} {hostFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -90,7 +91,7 @@ private static void BuildArm64(BuildContext context) context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"./autogen.sh\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure --disable-examples --disable-docs --disable-shared {prefixFlag} {hostFlag}\""; + processSettings.Arguments = $"-c \"./configure --disable-examples --disable-docs --disable-shared {extraFlags} {prefixFlag} {hostFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -101,7 +102,7 @@ private static void BuildArm64(BuildContext context) processSettings.WorkingDirectory = "./lame"; processSettings.Arguments = $"-c \"make distclean\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure --disable-frontend --disable-decoder --disable-shared {prefixFlag} {hostFlag}\""; + processSettings.Arguments = $"-c \"./configure --disable-frontend --disable-decoder --disable-shared {extraFlags} {prefixFlag} {hostFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -112,7 +113,7 @@ private static void BuildArm64(BuildContext context) processSettings.WorkingDirectory = "./ffmpeg"; processSettings.Arguments = $"-c \"make distclean\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure {binDirFlag} {configureFlags} {progsSuffixFlag}\""; + processSettings.Arguments = $"-c \"./configure {binDirFlag} {configureFlags} {extraFlags} {progsSuffixFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -144,6 +145,7 @@ private static void BuildX64(BuildContext context) { EnvironmentVariables = envVariables }; + var extraFlags = "--extra-cflags='-mmacosx-version-min=10.9' --extra-ldflags='-mmacosx-version-min=10.9'"; var shellCommandPath = "zsh"; @@ -153,7 +155,7 @@ private static void BuildX64(BuildContext context) context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"./autogen.sh\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure --disable-shared {prefixFlag} {hostFlag}\""; + processSettings.Arguments = $"-c \"./configure --disable-shared {extraFlags} {prefixFlag} {hostFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -166,7 +168,7 @@ private static void BuildX64(BuildContext context) context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"./autogen.sh\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure --disable-examples --disable-docs --disable-shared {prefixFlag} {hostFlag}\""; + processSettings.Arguments = $"-c \"./configure --disable-examples --disable-docs --disable-shared {extraFlags} {prefixFlag} {hostFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -177,7 +179,7 @@ private static void BuildX64(BuildContext context) processSettings.WorkingDirectory = "./lame"; processSettings.Arguments = $"-c \"make distclean\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure --disable-frontend --disable-decoder --disable-shared {prefixFlag} {hostFlag}\""; + processSettings.Arguments = $"-c \"./configure --disable-frontend --disable-decoder --disable-shared {extraFlags} {prefixFlag} {hostFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -188,7 +190,7 @@ private static void BuildX64(BuildContext context) processSettings.WorkingDirectory = "./ffmpeg"; processSettings.Arguments = $"-c \"make distclean\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure {binDirFlag} {configureFlags} {progsSuffixFlag}\""; + processSettings.Arguments = $"-c \"./configure {binDirFlag} {configureFlags} {extraFlags} {progsSuffixFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); From 56b12969654d498986b48c8d5dbddb53a4553df8 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Thu, 22 Jan 2026 20:27:34 +0000 Subject: [PATCH 2/2] Fix build? --- build/BuildMacOSTask.cs | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/build/BuildMacOSTask.cs b/build/BuildMacOSTask.cs index 7dc2d37..ef48bd2 100644 --- a/build/BuildMacOSTask.cs +++ b/build/BuildMacOSTask.cs @@ -56,10 +56,10 @@ private static void BuildArm64(BuildContext context) var envVariables = new Dictionary { - {"CFLAGS", $"-w -arch arm64 -I{dependencyDir}/include"}, - {"CPPFLAGS", $"-arch arm64 -I{dependencyDir}/include"}, - {"CXXFLAGS", "-arch arm64"}, - {"LDFLAGS", $"-arch arm64 -L{dependencyDir}/lib"}, + {"CFLAGS", $"-mmacosx-version-min=10.5 -w -arch arm64 -I{dependencyDir}/include"}, + {"CPPFLAGS", $"-mmacosx-version-min=10.5 -arch arm64 -I{dependencyDir}/include"}, + {"CXXFLAGS", "-mmacosx-version-min=10.5 -arch arm64"}, + {"LDFLAGS", $"-mmacosx-version-min=10.5 -arch arm64 -L{dependencyDir}/lib"}, {"PKG_CONFIG_PATH", $"{dependencyDir}/lib/pkgconfig"} }; @@ -68,7 +68,6 @@ private static void BuildArm64(BuildContext context) { EnvironmentVariables = envVariables }; - var extraFlags = "--extra-cflags='-mmacosx-version-min=10.9' --extra-ldflags='-mmacosx-version-min=10.9'"; var shellCommandPath = "zsh"; @@ -78,7 +77,7 @@ private static void BuildArm64(BuildContext context) context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"./autogen.sh\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure --disable-shared {extraFlags} {prefixFlag} {hostFlag}\""; + processSettings.Arguments = $"-c \"./configure --disable-shared {prefixFlag} {hostFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -91,7 +90,7 @@ private static void BuildArm64(BuildContext context) context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"./autogen.sh\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure --disable-examples --disable-docs --disable-shared {extraFlags} {prefixFlag} {hostFlag}\""; + processSettings.Arguments = $"-c \"./configure --disable-examples --disable-docs --disable-shared {prefixFlag} {hostFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -102,7 +101,7 @@ private static void BuildArm64(BuildContext context) processSettings.WorkingDirectory = "./lame"; processSettings.Arguments = $"-c \"make distclean\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure --disable-frontend --disable-decoder --disable-shared {extraFlags} {prefixFlag} {hostFlag}\""; + processSettings.Arguments = $"-c \"./configure --disable-frontend --disable-decoder --disable-shared {prefixFlag} {hostFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -113,7 +112,7 @@ private static void BuildArm64(BuildContext context) processSettings.WorkingDirectory = "./ffmpeg"; processSettings.Arguments = $"-c \"make distclean\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure {binDirFlag} {configureFlags} {extraFlags} {progsSuffixFlag}\""; + processSettings.Arguments = $"-c \"./configure {binDirFlag} {configureFlags} {progsSuffixFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -133,10 +132,10 @@ private static void BuildX64(BuildContext context) var envVariables = new Dictionary { - {"CFLAGS", $"-w -arch x86_64 -I{dependencyDir}/include"}, - {"CPPFLAGS", $"-arch x86_64 -I{dependencyDir}/include"}, - {"CXXFLAGS", "-arch x86_64"}, - {"LDFLAGS", $"-arch x86_64 -L{dependencyDir}/lib"}, + {"CFLAGS", $"-mmacosx-version-min=10.5 -w -arch x86_64 -I{dependencyDir}/include"}, + {"CPPFLAGS", $"-mmacosx-version-min=10.5 -arch x86_64 -I{dependencyDir}/include"}, + {"CXXFLAGS", "-mmacosx-version-min=10.5 -arch x86_64"}, + {"LDFLAGS", $"-mmacosx-version-min=10.5 -arch x86_64 -L{dependencyDir}/lib"}, {"PKG_CONFIG_PATH", $"{dependencyDir}/lib/pkgconfig"} }; @@ -145,7 +144,6 @@ private static void BuildX64(BuildContext context) { EnvironmentVariables = envVariables }; - var extraFlags = "--extra-cflags='-mmacosx-version-min=10.9' --extra-ldflags='-mmacosx-version-min=10.9'"; var shellCommandPath = "zsh"; @@ -155,7 +153,7 @@ private static void BuildX64(BuildContext context) context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"./autogen.sh\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure --disable-shared {extraFlags} {prefixFlag} {hostFlag}\""; + processSettings.Arguments = $"-c \"./configure --disable-shared {prefixFlag} {hostFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -168,7 +166,7 @@ private static void BuildX64(BuildContext context) context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"./autogen.sh\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure --disable-examples --disable-docs --disable-shared {extraFlags} {prefixFlag} {hostFlag}\""; + processSettings.Arguments = $"-c \"./configure --disable-examples --disable-docs --disable-shared {prefixFlag} {hostFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -179,7 +177,7 @@ private static void BuildX64(BuildContext context) processSettings.WorkingDirectory = "./lame"; processSettings.Arguments = $"-c \"make distclean\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure --disable-frontend --disable-decoder --disable-shared {extraFlags} {prefixFlag} {hostFlag}\""; + processSettings.Arguments = $"-c \"./configure --disable-frontend --disable-decoder --disable-shared {prefixFlag} {hostFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings); @@ -190,7 +188,7 @@ private static void BuildX64(BuildContext context) processSettings.WorkingDirectory = "./ffmpeg"; processSettings.Arguments = $"-c \"make distclean\""; context.StartProcess(shellCommandPath, processSettings); - processSettings.Arguments = $"-c \"./configure {binDirFlag} {configureFlags} {extraFlags} {progsSuffixFlag}\""; + processSettings.Arguments = $"-c \"./configure {binDirFlag} {configureFlags} {progsSuffixFlag}\""; context.StartProcess(shellCommandPath, processSettings); processSettings.Arguments = $"-c \"make -j{Environment.ProcessorCount}\""; context.StartProcess(shellCommandPath, processSettings);