lang/mecrisp-stellaris: fix build problems

PR:		254945
Submitted by:	Robert Clausecker <fuz AT fuz DOT su> (maintainer)
MFH:		2021Q2

(cherry picked from commit 4a19295b95)
This commit is contained in:
Neel Chauhan 2021-04-23 09:34:45 -07:00
parent 894c1d0b9a
commit 56268cfe68
3 changed files with 48 additions and 14 deletions

View File

@ -1,6 +1,7 @@
PORTNAME= mecrisp-stellaris
DISTVERSION= 2.5.8
PORTREVISION= 1
CATEGORIES= lang
MASTER_SITES= SF/mecrisp
@ -10,10 +11,22 @@ COMMENT= Native code Forth system for ARM
LICENSE= GPLv3+
LICENSE_FILE= ${WRKSRC}/COPYING
OPTIONS_DEFINE= EXTRAS
OPTIONS_DEFAULT= EXTRAS
EXTRAS_DESC= Add disassembler and math library to Forth core
EXTRAS_VARS= PROGRAM=mecrisp-stellaris-freebsd-with-disassembler-and-math
EXTRAS_VARS_OFF= PROGRAM=mecrisp-stellaris-freebsd
.include <bsd.port.pre.mk>
.if ${OSVERSION} < 1300000
ONLY_FOR_ARCHS= armv6 armv7
.else
ONLY_FOR_ARCHS= armv6 armv7 aarch64
.endif
ONLY_FOR_ARCHS_REASON= written in ARM assembly
BUILD_DEPENDS= binutils>2.33:devel/binutils
BUILD_DEPENDS= arm-none-eabi-binutils>2.25:devel/binutils@arm_none_eabi
AFLAGS.armv6= -march=armv6 --defsym m0core=1
MAKE_ENV+= AFLAGS="${AFLAGS.${ARCH}}"
@ -21,18 +34,6 @@ MAKE_ENV+= AFLAGS="${AFLAGS.${ARCH}}"
# stripping eats our hand-crafted ELF binaries, so don't do that
# the binaries are free of symbols or stuff like that anyway
STRIP=
# definitions assuming we build on ARM
BINARY_ALIAS= arm-none-eabi-as=${LOCALBASE}/bin/${AS} \
arm-none-eabi-ld=${LOCALBASE}/bin/${LD} \
arm-none-eabi-objcopy=${LOCALBASE}/bin/${OBJCOPY}
OPTIONS_DEFINE= EXTRAS
OPTIONS_DEFAULT= EXTRAS
EXTRAS_DESC= Add disassembler and math library to Forth core
EXTRAS_VARS= PROGRAM=mecrisp-stellaris-freebsd-with-disassembler-and-math
EXTRAS_VARS_OFF= PROGRAM=mecrisp-stellaris-freebsd
.include <bsd.port.options.mk>
# Can't use the release script as it tries to build a bunch of stuff
# that won't build correctly. This does the relevant parts manually.
@ -48,4 +49,4 @@ do-install:
cd ${WRKSRC}/common; ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR}
${INSTALL_PROGRAM} ${WRKSRC}/freebsd-ra/${PROGRAM} ${STAGEDIR}${PREFIX}/bin/mecrisp-stellaris
.include <bsd.port.mk>
.include <bsd.port.post.mk>

View File

@ -0,0 +1,25 @@
--- mecrisp-stellaris-source/freebsd-ra/terminal.s.orig 2021-04-10 12:49:15 UTC
+++ mecrisp-stellaris-source/freebsd-ra/terminal.s
@@ -167,7 +167,6 @@ serial_key: @ ( -- c ) Receive one character
cacheflush:
@ -----------------------------------------------------------------------------
-.ifdef m0core
@ ARMv6 hat keine Speicherbarrieren. Das muss über einen syscall realisiert werden
push {r4-r7, lr}
movs r0, #0 @ ARM_SYNC_ICACHE
@@ -180,14 +179,6 @@ cacheflush:
@ Datenstruktur arm_sync_icache_args für den sysarch-Aufruf
0:.word incipit
.word totalsize
-
-.else
- @ auf ARMv7 und später nehmen wir einfach die Barrien-Befehle
- dmb
- dsb
- isb
- bx lr
-.endif
@ -----------------------------------------------------------------------------
Wortbirne Flag_foldable_0, "arguments" @ ( -- a-addr )

View File

@ -0,0 +1,8 @@
This port is written in ARM32 assembly. On ARM64 systems, it only runs
on those that support the AArch32 execution state in EL0. If the port
does not run, check dmesg for a line like
Processor Features 0 = <AdvSIMD,FP,EL3 32,EL2 32,EL1 32,EL0 32>
If the feature string "EL0 32" does not occur, your processor cannot
run ARM32 binaries and thus will not be able to run this port either.