From 26f38a45ada262729e31dda1cb095cc3d4f46c17 Mon Sep 17 00:00:00 2001 From: Bruce Mitchener Date: Wed, 21 Feb 2024 23:13:41 +0700 Subject: [PATCH] WIP: aarch64-darwin --- configure.ac | 5 +++ sources/common-dylan/darwin-common-dylan.lid | 3 +- sources/databases/odbc-ffi/unix-odbc.lid | 3 +- sources/duim/gtk/duim.lid | 3 +- .../dfmc/database/library-objects.dylan | 2 +- sources/io/unix-io.lid | 3 +- sources/jamfiles/Makefile.in | 1 + sources/jamfiles/aarch64-darwin-build.jam | 14 +++++++ sources/lib/dood/dood-64.lid | 3 +- sources/lib/jam/unix-jam.lid | 3 +- sources/lib/run-time/Makefile.in | 6 +++ sources/lib/run-time/stack-walker.c | 2 +- sources/lib/ssl/ssl.lid | 3 +- .../darwin-variable-search.lid | 3 +- sources/network/aarch64-darwin-network.lid | 30 +++++++++++++++ sources/registry/aarch64-darwin/common-dylan | 1 + sources/registry/aarch64-darwin/dood | 1 + sources/registry/aarch64-darwin/duim | 1 + sources/registry/aarch64-darwin/io | 1 + sources/registry/aarch64-darwin/jam | 1 + sources/registry/aarch64-darwin/network | 1 + sources/registry/aarch64-darwin/odbc-ffi | 2 + sources/registry/aarch64-darwin/ssl-network | 1 + sources/registry/aarch64-darwin/system | 1 + .../registry/aarch64-darwin/variable-search | 1 + .../system/aarch64-darwin-magic-numbers.dylan | 35 +++++++++++++++++ .../aarch64-darwin-operating-system.dylan | 6 +++ sources/system/aarch64-darwin-system.lid | 38 +++++++++++++++++++ 28 files changed, 164 insertions(+), 10 deletions(-) create mode 100644 sources/jamfiles/aarch64-darwin-build.jam create mode 100644 sources/network/aarch64-darwin-network.lid create mode 100644 sources/registry/aarch64-darwin/common-dylan create mode 100644 sources/registry/aarch64-darwin/dood create mode 100644 sources/registry/aarch64-darwin/duim create mode 100644 sources/registry/aarch64-darwin/io create mode 100644 sources/registry/aarch64-darwin/jam create mode 100644 sources/registry/aarch64-darwin/network create mode 100644 sources/registry/aarch64-darwin/odbc-ffi create mode 100644 sources/registry/aarch64-darwin/ssl-network create mode 100644 sources/registry/aarch64-darwin/system create mode 100644 sources/registry/aarch64-darwin/variable-search create mode 100644 sources/system/aarch64-darwin-magic-numbers.dylan create mode 100644 sources/system/aarch64-darwin-operating-system.dylan create mode 100644 sources/system/aarch64-darwin-system.lid diff --git a/configure.ac b/configure.ac index 9a57360e53..70aaca8870 100644 --- a/configure.ac +++ b/configure.ac @@ -28,6 +28,11 @@ case $host in SUPPORT_HARP=yes SUPPORT_LLVM=yes ;; + aarch64-*-darwin*) + OPEN_DYLAN_TARGET_PLATFORM="aarch64-darwin"; + MACOS_SDK=`xcrun --show-sdk-path` + shrext=dylib + ;; x86_64-*-darwin*) OPEN_DYLAN_TARGET_PLATFORM="x86_64-darwin"; MACOS_SDK=`xcrun --show-sdk-path` diff --git a/sources/common-dylan/darwin-common-dylan.lid b/sources/common-dylan/darwin-common-dylan.lid index 9f3ef5d124..1cce7a77ef 100644 --- a/sources/common-dylan/darwin-common-dylan.lid +++ b/sources/common-dylan/darwin-common-dylan.lid @@ -34,4 +34,5 @@ Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: See License.txt in this distribution for details. Warranty: Distributed WITHOUT WARRANTY OF ANY KIND -Platforms: x86_64-darwin +Platforms: aarch64-darwin + x86_64-darwin diff --git a/sources/databases/odbc-ffi/unix-odbc.lid b/sources/databases/odbc-ffi/unix-odbc.lid index a91f8d8c15..df45d253e9 100644 --- a/sources/databases/odbc-ffi/unix-odbc.lid +++ b/sources/databases/odbc-ffi/unix-odbc.lid @@ -13,4 +13,5 @@ Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: See License.txt in this distribution for details. Warranty: Distributed WITHOUT WARRANTY OF ANY KIND -Platforms: x86_64-darwin +Platforms: aarch64-darwin + x86_64-darwin diff --git a/sources/duim/gtk/duim.lid b/sources/duim/gtk/duim.lid index 12720ea148..008b455e02 100644 --- a/sources/duim/gtk/duim.lid +++ b/sources/duim/gtk/duim.lid @@ -10,7 +10,8 @@ Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: See License.txt in this distribution for details. Warranty: Distributed WITHOUT WARRANTY OF ANY KIND -Platforms: arm-linux +Platforms: aarch64-linux + arm-linux x86-freebsd x86-linux x86-netbsd diff --git a/sources/environment/dfmc/database/library-objects.dylan b/sources/environment/dfmc/database/library-objects.dylan index d824c15ece..3a2e82d9eb 100644 --- a/sources/environment/dfmc/database/library-objects.dylan +++ b/sources/environment/dfmc/database/library-objects.dylan @@ -80,7 +80,7 @@ define method project-executable-pathname select (platform) #"x86-win32" => make(, base: base, extension: "dll"); - #"x86_64-darwin" => + #"aarch64-darwin", #"x86_64-darwin" => make(, base: concatenate("lib", base), extension: "dylib"); otherwise => make(, base: concatenate("lib", base), extension: "so"); diff --git a/sources/io/unix-io.lid b/sources/io/unix-io.lid index 654978b02e..3c22be7a00 100644 --- a/sources/io/unix-io.lid +++ b/sources/io/unix-io.lid @@ -36,7 +36,8 @@ Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: See License.txt in this distribution for details. Warranty: Distributed WITHOUT WARRANTY OF ANY KIND -Platforms: arm-linux +Platforms: aarch64-darwin + arm-linux x86-freebsd x86-linux x86-netbsd diff --git a/sources/jamfiles/Makefile.in b/sources/jamfiles/Makefile.in index ec6ccd5f89..aecce8cd3e 100644 --- a/sources/jamfiles/Makefile.in +++ b/sources/jamfiles/Makefile.in @@ -9,6 +9,7 @@ subdir = sources/jamfiles BUILD_SCRIPTS_DEST = $(OPEN_DYLAN_USER_INSTALL)/share/opendylan/build-scripts SCRIPTS = \ + $(srcdir)/aarch64-darwin-build.jam \ $(srcdir)/mini-jambase.jam \ $(srcdir)/posix-build.jam \ $(srcdir)/shared-darwin-build.jam \ diff --git a/sources/jamfiles/aarch64-darwin-build.jam b/sources/jamfiles/aarch64-darwin-build.jam new file mode 100644 index 0000000000..aaafb396fb --- /dev/null +++ b/sources/jamfiles/aarch64-darwin-build.jam @@ -0,0 +1,14 @@ +# +# Generated config +# +include $(SYSTEM_BUILD_SCRIPTS)/config.jam ; + +# +# Configuration variables +# +CCFLAGS += -arch arm64 -DOPEN_DYLAN_ARCH_AARCH64 ; + +# +# Common build script +# +include $(SYSTEM_BUILD_SCRIPTS)/shared-darwin-build.jam ; diff --git a/sources/lib/dood/dood-64.lid b/sources/lib/dood/dood-64.lid index a64b2b97ce..c009d2ae94 100644 --- a/sources/lib/dood/dood-64.lid +++ b/sources/lib/dood/dood-64.lid @@ -25,7 +25,8 @@ Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: See License.txt in this distribution for details. Warranty: Distributed WITHOUT WARRANTY OF ANY KIND -Platforms: x86_64-darwin +Platforms: aarch64-darwin + x86_64-darwin x86_64-freebsd x86_64-linux x86_64-netbsd diff --git a/sources/lib/jam/unix-jam.lid b/sources/lib/jam/unix-jam.lid index 0366f73f69..7eac08f5b1 100644 --- a/sources/lib/jam/unix-jam.lid +++ b/sources/lib/jam/unix-jam.lid @@ -22,7 +22,8 @@ Copyright: Original Code is Copyright 2004 Gwydion Dylan Maintainers All rights reserved. License: See License.txt in this distribution for details. Warranty: Distributed WITHOUT WARRANTY OF ANY KIND -Platforms: arm-linux +Platforms: aarch64-darwin + arm-linux x86-freebsd x86-linux x86-netbsd diff --git a/sources/lib/run-time/Makefile.in b/sources/lib/run-time/Makefile.in index 9651c660cf..14caa6ad42 100644 --- a/sources/lib/run-time/Makefile.in +++ b/sources/lib/run-time/Makefile.in @@ -93,6 +93,12 @@ else ifeq ($(OPEN_DYLAN_TARGET_PLATFORM),x86_64-netbsd) -DOPEN_DYLAN_PLATFORM_NETBSD -DOPEN_DYLAN_PLATFORM_UNIX \ -DOPEN_DYLAN_ARCH_X86_64 PLATFORM_LFLAGS=-m64 -fPIC +else ifeq ($(OPEN_DYLAN_TARGET_PLATFORM),aarch64-darwin) + PLATFORM_CFLAGS=-arch arm64 -D_REENTRANT=1 \ + -DOPEN_DYLAN_PLATFORM_DARWIN -DOPEN_DYLAN_PLATFORM_UNIX \ + -DOPEN_DYLAN_ARCH_AARCH64 -Wno-unknown-attributes + PLATFORM_LFLAGS=-arch arm64 + DARWIN=yes else ifeq ($(OPEN_DYLAN_TARGET_PLATFORM),x86_64-darwin) PLATFORM_CFLAGS=-arch x86_64 -D_REENTRANT=1 \ -DOPEN_DYLAN_PLATFORM_DARWIN -DOPEN_DYLAN_PLATFORM_UNIX \ diff --git a/sources/lib/run-time/stack-walker.c b/sources/lib/run-time/stack-walker.c index eb3d3f7719..48f775023a 100644 --- a/sources/lib/run-time/stack-walker.c +++ b/sources/lib/run-time/stack-walker.c @@ -955,7 +955,7 @@ void dylan_dump_callstack(void *ctxt) { unw_context_t context; unw_cursor_t cursor; -#if (defined (OPEN_DYLAN_PLATFORM_DARWIN) && defined(OPEN_DYLAN_ARCH_X86_64)) +#if defined (OPEN_DYLAN_PLATFORM_DARWIN) && (defined(OPEN_DYLAN_ARCH_X86_64) || defined(OPEN_DYLAN_ARCH_AARCH64)) // We can use the passed-in ucontext_t as the libunwind context if (ctxt == NULL) { unw_getcontext(&context); diff --git a/sources/lib/ssl/ssl.lid b/sources/lib/ssl/ssl.lid index 4c3d3c2b8d..077299167f 100644 --- a/sources/lib/ssl/ssl.lid +++ b/sources/lib/ssl/ssl.lid @@ -5,7 +5,8 @@ Files: library openssl-wrapper C-libraries: -lssl -lcrypto C-source-files: support.c -Platforms: arm-linux +Platforms: aarch64-darwin + arm-linux x86-freebsd x86-linux x86-netbsd diff --git a/sources/lib/variable-search/darwin-variable-search.lid b/sources/lib/variable-search/darwin-variable-search.lid index 0c87a208fd..cdfbfc2082 100644 --- a/sources/lib/variable-search/darwin-variable-search.lid +++ b/sources/lib/variable-search/darwin-variable-search.lid @@ -8,4 +8,5 @@ Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: See License.txt in this distribution for details. Warranty: Distributed WITHOUT WARRANTY OF ANY KIND -Platforms: x86_64-darwin +Platforms: aarch64-darwin + x86_64-darwin diff --git a/sources/network/aarch64-darwin-network.lid b/sources/network/aarch64-darwin-network.lid new file mode 100644 index 0000000000..727b27113d --- /dev/null +++ b/sources/network/aarch64-darwin-network.lid @@ -0,0 +1,30 @@ +Library: network +Author: Andy Armstrong +Synopsis: Linux (x86) version of the Functional Objects Network library +Target-Type: dll +Major-Version: 2 +Minor-Version: 1 +Files: darwin-network-library + unix-sockets/x86-unix-sockets-data + unix-sockets/x86-freebsd-sockets-data + unix-sockets/sockets-interfaces + unix-sockets/sockets-extras + unix-sockets/x86-freebsd-address-data + unix-sockets/address-interfaces + unix-sockets/errno-darwin + unix-sockets/poll + sockets/socket-conditions + sockets/unix-socket-accessor + sockets/internet-address + sockets/abstract-sockets + sockets/client-sockets + sockets/TCP-sockets + sockets/server-sockets + sockets/unix-TCP-socket-accessor + sockets/UDP-sockets + sockets/unix-UDP-sockets +Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. + All rights reserved. +License: See License.txt in this distribution for details. +Warranty: Distributed WITHOUT WARRANTY OF ANY KIND +Platforms: aarch64-darwin diff --git a/sources/registry/aarch64-darwin/common-dylan b/sources/registry/aarch64-darwin/common-dylan new file mode 100644 index 0000000000..edcfdf3895 --- /dev/null +++ b/sources/registry/aarch64-darwin/common-dylan @@ -0,0 +1 @@ +abstract://dylan/common-dylan/darwin-common-dylan.lid diff --git a/sources/registry/aarch64-darwin/dood b/sources/registry/aarch64-darwin/dood new file mode 100644 index 0000000000..65432a097d --- /dev/null +++ b/sources/registry/aarch64-darwin/dood @@ -0,0 +1 @@ +abstract://dylan/lib/dood/dood-64.lid diff --git a/sources/registry/aarch64-darwin/duim b/sources/registry/aarch64-darwin/duim new file mode 100644 index 0000000000..320bb87534 --- /dev/null +++ b/sources/registry/aarch64-darwin/duim @@ -0,0 +1 @@ +abstract://dylan/duim/gtk/duim.lid diff --git a/sources/registry/aarch64-darwin/io b/sources/registry/aarch64-darwin/io new file mode 100644 index 0000000000..ac15d2e952 --- /dev/null +++ b/sources/registry/aarch64-darwin/io @@ -0,0 +1 @@ +abstract://dylan/io/unix-io.lid diff --git a/sources/registry/aarch64-darwin/jam b/sources/registry/aarch64-darwin/jam new file mode 100644 index 0000000000..2aaabc3689 --- /dev/null +++ b/sources/registry/aarch64-darwin/jam @@ -0,0 +1 @@ +abstract://dylan/lib/jam/unix-jam.lid diff --git a/sources/registry/aarch64-darwin/network b/sources/registry/aarch64-darwin/network new file mode 100644 index 0000000000..c189119e40 --- /dev/null +++ b/sources/registry/aarch64-darwin/network @@ -0,0 +1 @@ +abstract://dylan/network/aarch64-darwin-network.lid diff --git a/sources/registry/aarch64-darwin/odbc-ffi b/sources/registry/aarch64-darwin/odbc-ffi new file mode 100644 index 0000000000..8d1b599c77 --- /dev/null +++ b/sources/registry/aarch64-darwin/odbc-ffi @@ -0,0 +1,2 @@ +abstract://dylan/databases/odbc-ffi/unix-odbc.lid + diff --git a/sources/registry/aarch64-darwin/ssl-network b/sources/registry/aarch64-darwin/ssl-network new file mode 100644 index 0000000000..60adec7441 --- /dev/null +++ b/sources/registry/aarch64-darwin/ssl-network @@ -0,0 +1 @@ +abstract://dylan/lib/ssl/ssl.lid diff --git a/sources/registry/aarch64-darwin/system b/sources/registry/aarch64-darwin/system new file mode 100644 index 0000000000..91d216b937 --- /dev/null +++ b/sources/registry/aarch64-darwin/system @@ -0,0 +1 @@ +abstract://dylan/system/aarch64-darwin-system.lid diff --git a/sources/registry/aarch64-darwin/variable-search b/sources/registry/aarch64-darwin/variable-search new file mode 100644 index 0000000000..dfae3f5ab7 --- /dev/null +++ b/sources/registry/aarch64-darwin/variable-search @@ -0,0 +1 @@ +abstract://dylan/lib/variable-search/darwin-variable-search.lid diff --git a/sources/system/aarch64-darwin-magic-numbers.dylan b/sources/system/aarch64-darwin-magic-numbers.dylan new file mode 100644 index 0000000000..bb92619992 --- /dev/null +++ b/sources/system/aarch64-darwin-magic-numbers.dylan @@ -0,0 +1,35 @@ +Module: system-internals +License: Public Domain + +// WARNING! This file is generated! + +// Used by file-system/unix-ffi.dylan +define constant $ENOENT = 2; +define constant $EINTR = 4; +define constant $EACCES = 13; +define constant $EINVAL = 22; +define constant $ETXTBSY = 26; +define constant $EROFS = 30; +define constant $path-max = 1024; +define constant $stat-size = 144; +define constant $st-mode-offset = 4; +define constant $st-uid-offset = 16; +define constant $st-gid-offset = 20; +define constant $st-size-offset = 96; +define constant $st-atime-offset = 32; +define constant $st-mtime-offset = 48; +define constant $st-ctime-offset = 64; +define constant $pw-name-offset = 0; +define constant $pw-dir-offset = 48; +define constant $gr-name-offset = 0; + +// Used by unix-date-interface.dylan +define constant $tm-sec-offset = 0; +define constant $tm-min-offset = 4; +define constant $tm-hour-offset = 8; +define constant $tm-mday-offset = 12; +define constant $tm-mon-offset = 16; +define constant $tm-year-offset = 20; +define constant $tm-isdst-offset = 32; +define constant $tm-gmtoff-offset = 40; +define constant $tm-zone-offset = 48; diff --git a/sources/system/aarch64-darwin-operating-system.dylan b/sources/system/aarch64-darwin-operating-system.dylan new file mode 100644 index 0000000000..820a759c21 --- /dev/null +++ b/sources/system/aarch64-darwin-operating-system.dylan @@ -0,0 +1,6 @@ +Module: system-internals + +define constant $architecture-little-endian? :: = #t; + +define constant $machine-name = #"aarch64"; +define constant $os-name = #"darwin"; diff --git a/sources/system/aarch64-darwin-system.lid b/sources/system/aarch64-darwin-system.lid new file mode 100644 index 0000000000..68d8e32137 --- /dev/null +++ b/sources/system/aarch64-darwin-system.lid @@ -0,0 +1,38 @@ +Library: system +Executable: odsystem +Synopsis: Portable operating system APIs +Author: Gail Zacharias +Major-Version: 2 +Minor-Version: 1 +Target-Type: dll +Files: library + operating-system + aarch64-darwin-magic-numbers + aarch64-darwin-operating-system + unix-operating-system + tokenize-variable + date + unix-date-interface + durations + locators/utilities + locators/locators + locators/web-locators + file-system/file-system + file-system/file-stream + file-system/wrapper-file-accessor + file-system/unix-ffi + file-system/unix-interface + file-system/unix-file-system + file-system/unix-file-accessor + file-system/posix-locators + file-system/microsoft-locators + file-system/native-posix-locators + xml + settings/settings + settings/dummy-settings +C-Source-Files: unix-portability.c +Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. + All rights reserved. +License: See License.txt in this distribution for details. +Warranty: Distributed WITHOUT WARRANTY OF ANY KIND +Platforms: aarch64-darwin