From a249561677de73e3f174ec8e4478937a7a55a9b2 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Sun, 21 Aug 2022 16:15:53 -0500 Subject: [PATCH] Added darwin-aarch64 support from 7.0 branch --- configure/os/CONFIG.Common.darwin-aarch64 | 14 ++++++++++++++ configure/os/CONFIG.darwin-aarch64.Common | 8 ++++++++ configure/os/CONFIG_SITE.Common.darwin-aarch64 | 9 +++++++++ documentation/RELEASE_NOTES.md | 5 +++++ src/tools/EpicsHostArch.pl | 7 +++++-- 5 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 configure/os/CONFIG.Common.darwin-aarch64 create mode 100644 configure/os/CONFIG.darwin-aarch64.Common create mode 100644 configure/os/CONFIG_SITE.Common.darwin-aarch64 diff --git a/configure/os/CONFIG.Common.darwin-aarch64 b/configure/os/CONFIG.Common.darwin-aarch64 new file mode 100644 index 000000000..eaba1efb2 --- /dev/null +++ b/configure/os/CONFIG.Common.darwin-aarch64 @@ -0,0 +1,14 @@ +# CONFIG.Common.darwin-aarch64 +# +# This file is maintained by the build community. +# +# Definitions for darwin-aarch64 target builds +# Sites may override these definitions in CONFIG_SITE.Common.darwin-aarch64 +#------------------------------------------------------- + +# +# To build universal binaries, configure ARCH_CLASS +# in the file CONFIG_SITE.Common.darwin-aarch64 + +# Include definitions common to all Darwin targets +include $(CONFIG)/os/CONFIG.darwinCommon.darwinCommon diff --git a/configure/os/CONFIG.darwin-aarch64.Common b/configure/os/CONFIG.darwin-aarch64.Common new file mode 100644 index 000000000..0be8d68fe --- /dev/null +++ b/configure/os/CONFIG.darwin-aarch64.Common @@ -0,0 +1,8 @@ +# CONFIG.darwin-aarch64.Common +# +# Definitions for darwin-aarch64 host builds +# Sites may override these definitions in CONFIG_SITE.darwin-aarch64.Common +#------------------------------------------------------- + +#Include definitions common to unix hosts +include $(CONFIG)/os/CONFIG.UnixCommon.Common diff --git a/configure/os/CONFIG_SITE.Common.darwin-aarch64 b/configure/os/CONFIG_SITE.Common.darwin-aarch64 new file mode 100644 index 000000000..8d79eb16e --- /dev/null +++ b/configure/os/CONFIG_SITE.Common.darwin-aarch64 @@ -0,0 +1,9 @@ +# CONFIG_SITE.Common.darwin-aarch64 +# +# Site override definitions for darwin-aarch64 target builds +#------------------------------------------------------- + +# +# arm64 devices: Apple Silicon M1 + +ARCH_CLASS = arm64 diff --git a/documentation/RELEASE_NOTES.md b/documentation/RELEASE_NOTES.md index b5436f6f3..3a7575c7d 100644 --- a/documentation/RELEASE_NOTES.md +++ b/documentation/RELEASE_NOTES.md @@ -6,6 +6,11 @@ This version of EPICS Base has not been released yet. +### Support for Apple M1/M2 (arm64) Processors + +Thanks to Jeong Han Lee this release comes with build support for Apple's new +M1 CPUs running macOS, using the target name `darwin-aarch64`. + ### Set thread names on Windows On MS Windows, epicsThread names are made available to the OS and debugger diff --git a/src/tools/EpicsHostArch.pl b/src/tools/EpicsHostArch.pl index e8e49bc5e..abff49007 100644 --- a/src/tools/EpicsHostArch.pl +++ b/src/tools/EpicsHostArch.pl @@ -2,6 +2,7 @@ #************************************************************************* # Copyright (c) 2018 UChicago Argonne LLC, as Operator of Argonne # National Laboratory. +# SPDX-License-Identifier: EPICS # EPICS BASE is distributed subject to a Software License Agreement found # in file LICENSE that is included with this distribution. #************************************************************************* @@ -34,6 +35,8 @@ sub HostArch { return 'linux-x86_64' if m/^x86_64-linux/; return 'linux-x86' if m/^i[3-6]86-linux/; return 'linux-arm' if m/^arm-linux/; + return 'linux-aarch64' if m/^aarch64-linux/; + return 'linux-ppc64' if m/^powerpc64-linux/; return 'windows-x64' if m/^MSWin32-x64/; return 'win32-x86' if m/^MSWin32-x86/; return "cygwin-x86_64" if m/^x86_64-cygwin/; @@ -44,8 +47,8 @@ sub HostArch { my ($kernel, $hostname, $release, $version, $cpu) = uname; if (m/^darwin/) { for ($cpu) { - return 'darwin-x86' if m/^(i386|x86_64)/; - return 'darwin-ppc' if m/Power Macintosh/; + return 'darwin-x86' if m/^x86_64/; + return 'darwin-aarch64' if m/^arm64/; } die "$0: macOS CPU type '$cpu' not recognized\n"; }