diff --git a/Help/release/dev/asm-osx-architectures.rst b/Help/release/dev/asm-osx-architectures.rst
new file mode 100644
index 0000000000000000000000000000000000000000..d8d06602b9accdffb3b107a84fc56981657d960f
--- /dev/null
+++ b/Help/release/dev/asm-osx-architectures.rst
@@ -0,0 +1,5 @@
+asm-osx-architectures
+---------------------
+
+* The :prop_tgt:`OSX_ARCHITECTURES` target property is now respected for the
+  ``ASM`` language.
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 2380ccebe5cd8845a4df5e6b58a161ba024a7baf..5b15713c70b65ff46379f6d03adb2d3eab6aa592 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -1875,8 +1875,9 @@ void cmLocalGenerator::AddArchitectureFlags(std::string& flags,
   if (this->Makefile->IsOn("APPLE") && this->EmitUniversalBinaryFlags) {
     std::vector<std::string> archs;
     target->GetAppleArchs(config, archs);
-    if (!archs.empty() && !lang.empty() &&
-        (lang[0] == 'C' || lang[0] == 'F' || lang[0] == 'O')) {
+    if (!archs.empty() &&
+        (lang == "C" || lang == "CXX" || lang == "OBJ" || lang == "OBJCXX" ||
+         cmHasLiteralPrefix(lang, "ASM"))) {
       for (std::string const& arch : archs) {
         if (filterArch.empty() || filterArch == arch) {
           flags += " -arch ";