changes to compile for Mac OS AArch64

These changes allow cross-compilation of Racket for AArch64.  Whether
the build actually runs is another question.
This commit is contained in:
Matthew Flatt 2020-11-27 13:18:13 -07:00
parent 1e8bf3cfaa
commit 3b262edfa0
29 changed files with 261 additions and 56 deletions

View File

@ -0,0 +1,45 @@
# Mf-a6osx
# Copyright 1984-2017 Cisco Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
m ?= arm64osx
Cpu ?= AARCH64
mdinclude = -I/opt/X11/include/
o = o
mdsrc ?= arm32le.c
mdobj ?= arm32le.o
.SUFFIXES:
.SUFFIXES: .c .o
.c.o:
$C -c -D${Cpu} -I${Include} ${zlibInc} ${LZ4Inc} ${mdinclude} $*.c
include Mf-base
${KernelO}: ${kernelobj} ${zlibDep} ${LZ4Dep}
${LD} -r -o ${KernelO} ${kernelobj} ${zlibLib} ${LZ4Lib}
${KernelLib}: ${kernelobj}
${AR} ${ARFLAGS} ${KernelLib} ${kernelobj}
${Scheme}: ${Kernel} ${KernelLinkDeps} ${Main}
$C -o ${Scheme} ${Main} ${Kernel} ${KernelLinkLibs} ${LDFLAGS} ${LIBS}
../zlib/configure.log:
(cd ../zlib; ${SetConfigEnv} CFLAGS="${CFLAGS}" ./configure)
../lz4/lib/liblz4.a: ${LZ4Sources}
(cd ../lz4/lib; ${SetConfigEnv} CFLAGS="${CFLAGS}" ${MAKE} liblz4.a)

View File

@ -0,0 +1,5 @@
# Mf-tarm64osx
m ?= tarm64osx
include Mf-arm64osx

View File

@ -41,11 +41,17 @@ void S_doflush(uptr start, uptr end) {
void S_machine_init() {
int l1_dcache_line_size, l1_icache_line_size;
#if defined(__linux__)
if ((l1_dcache_line_size = sysconf(_SC_LEVEL1_DCACHE_LINESIZE)) <= 0) {
l1_dcache_line_size = DEFAULT_L1_MAX_CACHE_LINE_SIZE;
}
if ((l1_icache_line_size = sysconf(_SC_LEVEL1_ICACHE_LINESIZE)) <= 0) {
l1_icache_line_size = DEFAULT_L1_MAX_CACHE_LINE_SIZE;
}
#else
l1_dcache_line_size = DEFAULT_L1_MAX_CACHE_LINE_SIZE;
l1_icache_line_size = DEFAULT_L1_MAX_CACHE_LINE_SIZE;
#endif
l1_max_cache_line_size = l1_dcache_line_size > l1_icache_line_size ? l1_dcache_line_size : l1_icache_line_size;
}

View File

@ -37,38 +37,38 @@
# define CAS_ANY_FENCE(a, old, new) ((*(a) == (old)) ? (*(a) = (new), 1) : 0)
#elif defined(__arm64__)
FORCEINLINE int CAS_LOAD_ACQUIRE(volatile void *addr, void *old_val, void *new_val) {
int ret;
long ret;
__asm__ __volatile__ ("mov %0, #0\n\t"
"0:\n\t"
"ldaxr r12, [%1, #0]\n\t"
"cmp r12, %2\n\t"
"ldaxr x12, [%1, #0]\n\t"
"cmp x12, %2\n\t"
"bne 1f\n\t"
"stxr r7, %3, [%1, #0]\n\t"
"cmp r7, #0\n\t"
"stxr x7, %3, [%1, #0]\n\t"
"cmp x7, #0\n\t"
"bne 1f\n\t"
"moveq %0, #1\n\t"
"1:\n\t"
: "=&r" (ret)
: "r" (addr), "r" (old_val), "r" (new_val)
: "cc", "memory", "r12", "r7");
: "cc", "memory", "x12", "x7");
return ret;
}
/* same as above, but ldaxr -> ldxr and stxr -> stlxr */
FORCEINLINE int CAS_STORE_RELEASE(volatile void *addr, void *old_val, void *new_val) {
int ret;
long ret;
__asm__ __volatile__ ("mov %0, #0\n\t"
"0:\n\t"
"ldxr r12, [%1, #0]\n\t"
"cmp r12, %2\n\t"
"ldxr x12, [%1, #0]\n\t"
"cmp x12, %2\n\t"
"bne 1f\n\t"
"stlxr r7, %3, [%1, #0]\n\t"
"cmp r7, #0\n\t"
"stlxr x7, %3, [%1, #0]\n\t"
"cmp x7, #0\n\t"
"bne 1f\n\t"
"moveq %0, #1\n\t"
"1:\n\t"
: "=&r" (ret)
: "r" (addr), "r" (old_val), "r" (new_val)
: "cc", "memory", "r12", "r7");
: "cc", "memory", "x12", "x7");
return ret;
}
#elif defined(__arm__)

View File

@ -78,6 +78,13 @@
# endif
#endif
#if (machine_type == machine_type_arm64osx || machine_type == machine_type_tarm64osx)
# define OS_ANY_MACOSX
# if (machine_type == machine_type_tarm64osx)
# define PTHREADS
# endif
#endif
#if (machine_type == machine_type_pb)
# if defined(__powerpc__) && !defined(__powerpc64__)
# define PORTABLE_BYTECODE_BIGENDIAN

View File

@ -156,6 +156,9 @@ case "${CONFIG_UNAME}" in
m64=a6osx
tm32=ti3osx
tm64=ta6osx
elif uname -a | egrep 'arm|aarch' > /dev/null 2>&1 ; then
m64=arm64osx
tm64=tarm6osx
fi
installprefix=/usr/local
installmansuffix=share/man
@ -511,6 +514,9 @@ if [ "$cflagsset" = "no" ] ; then
a6osx|ta6osx)
CFLAGS="-m64 ${optFlags}"
;;
arm64osx|tarm64osx)
CFLAGS="-arch arm ${optFlags}"
;;
a6nt|ta6nt)
CFLAGS="${optFlags}"
;;

View File

@ -1,4 +1,4 @@
# Mf-tarm64le
# Mf-arm64le
# Copyright 1984-2017 Cisco Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");

View File

@ -0,0 +1,21 @@
# Mf-arm64osx
# Copyright 1984-2017 Cisco Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
m ?= arm64osx
archincludes = arm64.ss
include Mf-base
machine.def: arm64.def

View File

@ -0,0 +1,18 @@
# Mf-tarm64osx
# Copyright 1984-2017 Cisco Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
m = tarm64osx
include Mf-arm64osx

View File

@ -298,8 +298,10 @@
(define-instruction value popcount
[(op (z ur) (x ur))
(let ([u (make-tmp 'u 'fp)])
`(set! ,(make-live-info) ,z (asm ,info ,asm-popcount ,x ,u)))])
(let ([u (make-tmp 'u)])
(seq
`(set! ,(make-live-info) ,u (asm ,null-info ,asm-kill))
`(set! ,(make-live-info) ,z (asm ,info ,asm-popcount ,x ,u))))])
(define-instruction value (move)
[(op (z mem) (x ur))
@ -1254,7 +1256,7 @@
(lambda (op dest code*)
(record-case dest
[(label) (offset l)
(safe-assert (uncond-branch-disp? (+ offset 4)))
(safe-assert (uncond-branch-disp? offset))
(emit-code (op dest code*)
[26 #b000101]
[0 (fxand (fxsra (fx+ offset 4) 2) (fx- (fxsll 1 26) 1))])]
@ -1550,9 +1552,10 @@
(define uncond-branch-disp?
(lambda (x)
(and (fixnum? x)
(fx<= (- (expt 2 26)) x (- (expt 2 20) 1))
(not (fxlogtest x #b11)))))
(let ([x (+ x 4)]) ; because `branch-always-label-op` adds 4
(and (fixnum? x)
(fx<= (- (expt 2 27)) x (- (expt 2 27) 1))
(not (fxlogtest x #b11))))))
(define asm-size
(lambda (x)

View File

@ -394,6 +394,7 @@
ppc32le tppc32le
arm64le tarm64le
pb
arm64osx tarm64osx
)
(include "machine.def")

View File

@ -823,6 +823,8 @@
(nl)
(pr "#define LOCKED_INCR(addr, ret) \\~%")
(pr " do {\\~%")
(pr " long _return_;\\~%")
(pr " __asm__ __volatile__ (\"mov %0, #0\\n\\t\"\\~%")
(pr " \"0:\\n\\t\"\\~%")
(pr " \"ldxr x12, [%1, #0]\\n\\t\"\\~%")
@ -834,12 +836,16 @@
(pr " \"bne 1f\\n\\t\"\\~%")
(pr " \"mov %0, #1\\n\\t\"\\~%")
(pr " \"1:\\n\\t\"\\~%")
(pr " : \"=&r\" (ret)\\~%")
(pr " : \"=&r\" (_return_)\\~%")
(pr " : \"r\" (addr)\\~%")
(pr " : \"cc\", \"memory\", \"x12\", \"x7\")~%")
(pr " : \"cc\", \"memory\", \"x12\", \"x7\");\\~%")
(pr " ret = _return_;\\~%")
(pr " } while (0)~%")
(nl)
(pr "#define LOCKED_DECR(addr, ret) \\~%")
(pr " do {\\~%")
(pr " long _return_;\\~%")
(pr " __asm__ __volatile__ (\"mov %0, #0\\n\\t\"\\~%")
(pr " \"0:\\n\\t\"\\~%")
(pr " \"ldxr x12, [%1, #0]\\n\\t\"\\~%")
@ -851,9 +857,11 @@
(pr " \"bne 1f\\n\\t\"\\~%")
(pr " \"mov %0, #1\\n\\t\"\\~%")
(pr " \"1:\\n\\t\"\\~%")
(pr " : \"=&r\" (ret)\\~%")
(pr " : \"=&r\" (_return_)\\~%")
(pr " : \"r\" (addr)\\~%")
(pr " : \"cc\", \"memory\", \"x12\", \"x7\")~%")]
(pr " : \"cc\", \"memory\", \"x12\", \"x7\");\\~%")
(pr " ret = _return_;\\~%")
(pr " } while (0)~%")]
[(pb)
(pr "#define INITLOCK(addr) (*((long *) addr) = 0)~%")
(pr "#define SPINLOCK(addr) (*((long *) addr) = 1)~%")

View File

@ -0,0 +1,6 @@
;;; tarm64osx.def
(define-constant machine-type (constant machine-type-tarm64osx))
(features iconv expeditor pthreads)
(include "arm64.def")
(include "default.def")

View File

@ -55,6 +55,7 @@ case "$Mhost" in
a6s2) ;;
arm32le) ;;
arm64le) ;;
arm64osx) ;;
i3fb) ;;
i3le) ;;
i3nb) ;;
@ -73,6 +74,7 @@ case "$Mhost" in
ta6s2) Muni=a6s2 ;;
tarm32le) Muni=arm32le ;;
tarm64le) Muni=arm64le ;;
tarm64osx) Muni=arm64osx ;;
ti3fb) Muni=i3fb ;;
ti3le) Muni=i3le ;;
ti3nb) Muni=i3nb ;;
@ -101,6 +103,7 @@ case "$Muniarch" in
a6s2) March=a6 ;;
arm32le) March=arm32 ;;
arm64le) March=arm64 ;;
arm64osx) March=arm64 ;;
i3fb) March=i3 ;;
i3le) March=i3 ;;
i3nb) March=i3 ;;

View File

@ -74,6 +74,7 @@ bc-explain-configure:
racketcs:
if [ ! -f cs/c/Makefile ]; then $(MAKE) cs-explain-configure; fi
$(MAKE) @MAKE_LOCAL_RACKET@
$(MAKE) @CS_BOOTSTRAP_HELP@
cd cs/c && $(MAKE) @CS_USE_BOOTSTRAP_HELP@
@ -90,13 +91,13 @@ cs-explain-configure:
no-local-racket:
$(NOOP)
local/bc/racket3m:
@RUN_LOCAL_RACKET@:
mkdir -p local
$(MAKE) local/Makefile
cd local && $(MAKE)
cd local && $(MAKE)
local/Makefile:
cd local && `cd ..; cd $(srcdir); pwd`/configure --disable-gracket
cd local && `cd ..; cd $(srcdir); pwd`/configure --disable-gracket @CONFIGURE_LOCAL_RACKET@
# Install (common) ----------------------------------------

View File

@ -353,7 +353,13 @@ Cross-compilation requires at least two flags to `configure`:
run `configure` again (with no arguments) in a "local" subdirectory
to create a build for the current platform.
Some less commonly needed `configure` flags for Racket BC:
An additional flag is needed for building Racket CS, unless the flag
`--enable-racket=auto` is used:
* `--enable-scheme=DIR`, where DIR is a path that has a "ChezScheme"
directory where Chez Scheme is built for the host system.
Some less commonly needed `configure` flags are for Racket BC:
* `--enable-stackup`, if the target platform`s stack grows up.

View File

@ -6948,6 +6948,7 @@ fi
############## Racket for Racket ################
if test "${enable_racket}" = "auto" ; then
# See also "configure-parent.ac"
enable_racket="`pwd`/../local/bc/racket3m"
fi

View File

@ -37,6 +37,8 @@ MAKE_LOCAL_RACKET=no-local-racket
if test "${enable_racket}" = "auto" ; then
MAKE_LOCAL_RACKET="local/bc/racket3m"
fi
RUN_LOCAL_RACKET="local/bc/racket3m"
CONFIGURE_LOCAL_RACKET=--enable-bc
if test "${enable_cgcdefault}" = "yes" ; then
MAIN_VARIANT=cgc
@ -48,6 +50,8 @@ RUN_RACKET="bc/racket${MAIN_VARIANT}"
AC_SUBST(RUN_RACKET)
AC_SUBST(MAKE_LOCAL_RACKET)
AC_SUBST(RUN_LOCAL_RACKET)
AC_SUBST(CONFIGURE_LOCAL_RACKET)
makefiles="Makefile"

View File

@ -1277,6 +1277,7 @@ fi
############## Racket for Racket ################
if test "${enable_racket}" = "auto" ; then
# See also "configure-parent.ac"
enable_racket="`pwd`/../local/bc/racket3m"
fi

View File

@ -11,7 +11,7 @@ case "${host}" in
MSVC=1
;;
aarch64*-*-*)
aarch64*-*-* | arm64*-*-*)
TARGET=AARCH64; TARGETDIR=aarch64
SOURCES="ffi.c sysv.S"
;;

View File

@ -124,23 +124,41 @@ static void unregister_mach_thread() {
# define ARCH_thread_state_t ppc_thread_state_t
# define ARCH_THREAD_STATE PPC_THREAD_STATE
# define ARCH_THREAD_STATE_COUNT PPC_THREAD_STATE_COUNT
#elif defined(__arm__) || defined(__arm64__)
#elif defined(__arm__)
# define ARCH_thread_state_t arm_thread_state_t
# define ARCH_THREAD_STATE ARM_THREAD_STATE
# define ARCH_THREAD_STATE_COUNT ARM_THREAD_STATE_COUNT
#elif defined(__x86_64__)
# define ARCH_exception_state_t x86_exception_state64_t
# define ARCH_EXCEPTION_STATE x86_EXCEPTION_STATE64
# define ARCH_EXCEPTION_STATE_COUNT x86_EXCEPTION_STATE64_COUNT
# define ARCH_thread_state_t x86_thread_state64_t
# define ARCH_THREAD_STATE x86_THREAD_STATE64
# define ARCH_THREAD_STATE_COUNT x86_THREAD_STATE64_COUNT
# define USE_THREAD_STATE
# include <mach/thread_status.h>
# include <mach/exception.h>
#elif defined(__arm64__)
# define ARCH_exception_state_t arm_exception_state64_t
# define ARCH_EXCEPTION_STATE ARM_EXCEPTION_STATE64
# define ARCH_EXCEPTION_STATE_COUNT ARM_EXCEPTION_STATE64_COUNT
# define ARCH_thread_state_t arm_thread_state64_t
# define ARCH_THREAD_STATE ARM_THREAD_STATE64
# define ARCH_THREAD_STATE_COUNT ARM_THREAD_STATE64_COUNT
# define ARCH_FAULTVADDR_FIELD THREAD_FLD(far)
# define USE_THREAD_STATE
# include <mach/thread_status.h>
# include <mach/exception.h>
#else
# define ARCH_thread_state_t i386_thread_state_t
# define ARCH_THREAD_STATE i386_THREAD_STATE
# define ARCH_THREAD_STATE_COUNT i386_THREAD_STATE_COUNT
#endif
#ifndef ARCH_FAULTVADDR_FIELD
# define ARCH_FAULTVADDR_FIELD THREAD_FLD(faultvaddr)
#endif
/* the structure of an exception msg and its reply */
typedef struct rep_msg {
mach_msg_header_t head;
@ -311,11 +329,11 @@ kern_return_t GC_catch_exception_raise(mach_port_t port,
p = (void*)exception_data[1];
#else
/* We have to do it this way for 64-bit mode: */
x86_exception_state64_t exc_state;
mach_msg_type_number_t exc_state_count = x86_EXCEPTION_STATE64_COUNT;
(void)thread_get_state(thread_port, x86_EXCEPTION_STATE64, (natural_t*)&exc_state,
ARCH_exception_state_t exc_state;
mach_msg_type_number_t exc_state_count = ARCH_EXCEPTION_STATE_COUNT;
(void)thread_get_state(thread_port, ARCH_EXCEPTION_STATE, (natural_t*)&exc_state,
&exc_state_count);
p = (void *)exc_state. THREAD_FLD(faultvaddr);
p = (void *)exc_state.ARCH_FAULTVADDR_FIELD;
#endif
#if defined(MZ_USE_PLACES)

View File

@ -585,6 +585,8 @@ ac_unique_file="setup-go.rkt"
enable_option_checking=no
ac_subst_vars='LTLIBOBJS
LIBOBJS
CONFIGURE_LOCAL_RACKET
RUN_LOCAL_RACKET
RUN_RACKET
CS_USE_BOOTSTRAP_HELP
CS_BOOTSTRAP_HELP
@ -2325,6 +2327,8 @@ MAKE_LOCAL_RACKET=no-local-racket
if test "${enable_racket}" = "auto" ; then
MAKE_LOCAL_RACKET="local/bc/racket3m"
fi
RUN_LOCAL_RACKET="local/bc/racket3m"
CONFIGURE_LOCAL_RACKET=--enable-bc
if test "${enable_cgcdefault}" = "yes" ; then
MAIN_VARIANT=cgc
@ -2337,6 +2341,8 @@ RUN_RACKET="bc/racket${MAIN_VARIANT}"
makefiles="Makefile"
ac_config_files="$ac_config_files $makefiles"

View File

@ -585,6 +585,8 @@ ac_unique_file="setup-go.rkt"
enable_option_checking=no
ac_subst_vars='LTLIBOBJS
LIBOBJS
CONFIGURE_LOCAL_RACKET
RUN_LOCAL_RACKET
RUN_RACKET
CS_USE_BOOTSTRAP_HELP
CS_BOOTSTRAP_HELP
@ -2231,6 +2233,12 @@ fi
MAKE_LOCAL_RACKET=no-local-racket
if test "${enable_racket}" = "auto" ; then
MAKE_LOCAL_RACKET="local/cs/c/racketcs"
fi
RUN_LOCAL_RACKET="local/cs/c/racketcs"
CONFIGURE_LOCAL_RACKET=--enable-cs
MAIN_MAKE_TARGET=racketcs
MAIN_VARIANT=3m
@ -2239,6 +2247,8 @@ RUN_RACKET="cs/c/racketcs"
makefiles="Makefile"
ac_config_files="$ac_config_files $makefiles"

View File

@ -8,7 +8,7 @@ SCHEME_DIR = $(srcdir)/../../ChezScheme
UP_SCHEME_DIR = $(upsrcdir)/../../ChezScheme
SCHEME_WORKAREA = ChezScheme
MACH = @MACH@
CS_HOST_WORKAREA_PREFIX =
CS_HOST_WORKAREA_PREFIX = @CS_HOST_WORKAREA_PREFIX@
SCHEME_HOST_WORKAREA = $(CS_HOST_WORKAREA_PREFIX)$(SCHEME_WORKAREA)
SCHEME_BIN = $(SCHEME_HOST_WORKAREA)/$(MACH)/bin/$(MACH)/scheme
SCHEME_INC = $(SCHEME_HOST_WORKAREA)/$(MACH)/boot/$(MACH)

View File

@ -627,6 +627,7 @@ INSTALL_LIBS_ENABLE
INSTALL_SETUP_RACKET_FLAGS
INSTALL_SETUP_FLAGS
RUN_RACKET
CS_HOST_WORKAREA_PREFIX
CROSS_COMPILE_TARGET_KIND
COMP_SUBDIR_CONFIGURE_ARGS
ENABLE_OR_DISABLE_WPO
@ -1431,8 +1432,8 @@ Optional Features:
--enable-pkgscope=<s> set `raco pkg' default: installation, user, or shared
--enable-docs build docs on install (enabled by default)
--enable-usersetup setup user-specific files on install
--enable-racket=<path> use <path> as Racket to build; or "auto" to create
--enable-scheme=<path> obsolete
--enable-racket=<path> use <path> as Racket for build; or "auto" to create
--enable-scheme=<path> use <path> as host's build directory for cross
--enable-mach=<mach> use Chez Scheme machine type <mach>
--enable-target=<mach> cross-build for Chez Scheme machine type <mach>
--enable-natipkg add "-natipkg" to library subpath
@ -3199,6 +3200,8 @@ LZ4_LIB_DEP='$(OWN_LZ4_LIB)'
LZ4_LIB='$(OWN_LZ4_LIB)'
LZ4_LIB_UNPACK='$(AR) x $(OWN_LZ4_LIB)'
CS_HOST_WORKAREA_PREFIX=
PLT_CS_SLSP_SUFFIX=
enable_pthread_by_default=yes
@ -4479,12 +4482,12 @@ case "$MACH_HOST_CPU" in
x86|i*86)
MACH="${thread_prefix}i3${MACH_OS}"
;;
aarch64*|arm64*)
MACH="${thread_prefix}arm64${MACH_OS}"
;;
arm*)
MACH="${thread_prefix}arm32${MACH_OS}"
;;
aarch64*)
MACH="${thread_prefix}arm64${MACH_OS}"
;;
power*)
MACH="${thread_prefix}ppc32${MACH_OS}"
;;
@ -4536,12 +4539,12 @@ elif test "${build_os}_${build_cpu}" != "${host_os}_${host_cpu}" ; then
x86|i*86)
BUILD_MACH="${BUILD_THREAD_PREFIX}i3${BUILD_OS}"
;;
aarch64*|arm64*)
BUILD_MACH="${BUILD_THREAD_PREFIX}arm64${BUILD_OS}"
;;
arm*)
BUILD_MACH="${BUILD_THREAD_PREFIX}arm32${BUILD_OS}"
;;
aarch64*)
BUILD_MACH="${BUILD_THREAD_PREFIX}arm64${BUILD_OS}"
;;
power*)
BUILD_MACH="${BUILD_THREAD_PREFIX}ppc32${BUILD_OS}"
;;
@ -4583,10 +4586,15 @@ SCHEME_DIR=${srcdir}/../../ChezScheme
MAKE_BUILD_SCHEME=checkout
if test "${enable_scheme}" != "" ; then
echo Warning: --enable-scheme=... is obsolete and unsupported
CS_HOST_WORKAREA_PREFIX="${enable_scheme}/"
fi
if test "${enable_racket}" != "" ; then
if test "${enable_racket}" = "auto" ; then
# See also "configure-parent.ac"
enable_racket="`pwd`/../../local/cs/c/racketcs"
CS_HOST_WORKAREA_PREFIX=../../local/cs/c/
fi
# In non-cross mode, we interpret `--enable-racket` to supply a
# Racket used only for generating Chez Scheme boot files
if test "${CROSS_MODE}" = "cross" ; then
@ -5644,6 +5652,7 @@ SCHEME_CROSS_CONFIG_ARGS="--machine=${TARGET_MACH} --disable-x11 ${cs_auto_flags
makefiles="Makefile"

View File

@ -24,6 +24,12 @@ m4_include(../ac/boothelp.m4)
MAKE_LOCAL_RACKET=no-local-racket
if test "${enable_racket}" = "auto" ; then
MAKE_LOCAL_RACKET="local/cs/c/racketcs"
fi
RUN_LOCAL_RACKET="local/cs/c/racketcs"
CONFIGURE_LOCAL_RACKET=--enable-cs
MAIN_MAKE_TARGET=racketcs
MAIN_VARIANT=3m
@ -31,6 +37,8 @@ RUN_RACKET="cs/c/racketcs"
AC_SUBST(RUN_RACKET)
AC_SUBST(MAKE_LOCAL_RACKET)
AC_SUBST(RUN_LOCAL_RACKET)
AC_SUBST(CONFIGURE_LOCAL_RACKET)
makefiles="Makefile"

View File

@ -20,8 +20,8 @@ AC_ARG_ENABLE(wpo, [ --enable-wpo agressively optimize Racket
AC_ARG_ENABLE(compress, [ --enable-compress compress compiled code (enabled by default)])
AC_ARG_ENABLE(compressboot, [ --enable-compressboot compress boot files])
m4_include(../ac/path_arg.m4)
AC_ARG_ENABLE(racket, [ --enable-racket=<path> use <path> as Racket to build; or "auto" to create])
AC_ARG_ENABLE(scheme, [ --enable-scheme=<path> obsolete])
AC_ARG_ENABLE(racket, [ --enable-racket=<path> use <path> as Racket for build; or "auto" to create])
AC_ARG_ENABLE(scheme, [ --enable-scheme=<path> use <path> as host's build directory for cross])
AC_ARG_ENABLE(mach, [ --enable-mach=<mach> use Chez Scheme machine type <mach>])
AC_ARG_ENABLE(target, [ --enable-target=<mach> cross-build for Chez Scheme machine type <mach>])
m4_include(../ac/natipkg_arg.m4)
@ -157,6 +157,8 @@ LZ4_LIB_DEP='$(OWN_LZ4_LIB)'
LZ4_LIB='$(OWN_LZ4_LIB)'
LZ4_LIB_UNPACK='$(AR) x $(OWN_LZ4_LIB)'
CS_HOST_WORKAREA_PREFIX=
PLT_CS_SLSP_SUFFIX=
enable_pthread_by_default=yes
@ -346,12 +348,12 @@ case "$MACH_HOST_CPU" in
x86|i*86)
MACH="${thread_prefix}i3${MACH_OS}"
;;
aarch64*|arm64*)
MACH="${thread_prefix}arm64${MACH_OS}"
;;
arm*)
MACH="${thread_prefix}arm32${MACH_OS}"
;;
aarch64*)
MACH="${thread_prefix}arm64${MACH_OS}"
;;
power*)
MACH="${thread_prefix}ppc32${MACH_OS}"
;;
@ -403,12 +405,12 @@ elif test "${build_os}_${build_cpu}" != "${host_os}_${host_cpu}" ; then
x86|i*86)
BUILD_MACH="${BUILD_THREAD_PREFIX}i3${BUILD_OS}"
;;
aarch64*|arm64*)
BUILD_MACH="${BUILD_THREAD_PREFIX}arm64${BUILD_OS}"
;;
arm*)
BUILD_MACH="${BUILD_THREAD_PREFIX}arm32${BUILD_OS}"
;;
aarch64*)
BUILD_MACH="${BUILD_THREAD_PREFIX}arm64${BUILD_OS}"
;;
power*)
BUILD_MACH="${BUILD_THREAD_PREFIX}ppc32${BUILD_OS}"
;;
@ -450,10 +452,15 @@ SCHEME_DIR=${srcdir}/../../ChezScheme
MAKE_BUILD_SCHEME=checkout
if test "${enable_scheme}" != "" ; then
echo Warning: --enable-scheme=... is obsolete and unsupported
CS_HOST_WORKAREA_PREFIX="${enable_scheme}/"
fi
if test "${enable_racket}" != "" ; then
if test "${enable_racket}" = "auto" ; then
# See also "configure-parent.ac"
enable_racket="`pwd`/../../local/cs/c/racketcs"
CS_HOST_WORKAREA_PREFIX=../../local/cs/c/
fi
# In non-cross mode, we interpret `--enable-racket` to supply a
# Racket used only for generating Chez Scheme boot files
if test "${CROSS_MODE}" = "cross" ; then
@ -764,6 +771,7 @@ AC_SUBST(CS_COMPILED_SUBDIR)
AC_SUBST(ENABLE_OR_DISABLE_WPO)
AC_SUBST(COMP_SUBDIR_CONFIGURE_ARGS)
AC_SUBST(CROSS_COMPILE_TARGET_KIND)
AC_SUBST(CS_HOST_WORKAREA_PREFIX)
AC_SUBST(RUN_RACKET)
AC_SUBST(INSTALL_SETUP_FLAGS)
AC_SUBST(INSTALL_SETUP_RACKET_FLAGS)

View File

@ -53,7 +53,8 @@
bstr3 terminator))
(define pos
(case (or target (path->string (system-library-subpath #f)))
[("x86_64-darwin" "i386-darwin" "x86_64-macosx" "i386-macosx")
[("x86_64-darwin" "i386-darwin" "aarch64-darwin"
"x86_64-macosx" "i386-macosx" "aarch64-macosx")
;; Mach-O
(copy-file use-src-file dest-file #t)
(add-plt-segment dest-file data #:name #"__RKTBOOT")

View File

@ -26,9 +26,12 @@
(define os*-symbol
(case (machine-type)
[(a6osx ta6osx i3osx ti3osx) (if unix-style-macos?
'darwin
'macosx)]
[(a6osx ta6osx
i3osx ti3osx
arm64osx tarm64osx)
(if unix-style-macos?
'darwin
'macosx)]
[(a6nt ta6nt i3nt ti3nt) 'windows]
[(a6le ta6le i3le ti3le
arm32le tarm32le arm64le tarm64le