On Thu, Mar 24 2022, Brian Callahan <bcal...@posteo.net> wrote: > Hi Jeremie -- > > On 3/24/2022 2:42 PM, Jeremie Courreges-Anglas wrote: >> >> algol68g fails to build on riscv64, with a nasty error. BUILD_UNIX is >> not defined, resulting in a compile error in unix.c. >> >> I'm not sure why you explicitely added arm64 and armv7 but I see no >> reason to fix the build on some archs only. FWIW the test results on >> riscv64 look good, 3 tests failing out of 23 (1 on amd64). The two >> additional tests that fail: >> >> --8<-- >> a68g: runtime error: 1: time limit exceeded, in VOID loop-clause starting at >> "TO" in line 114. >> FAIL: test-set/13-math.a68 >> This test will take a long time ... >> [./test-set/14-mersenne.a68] >> 28 DO s := (s * s - 2) MOD cand >> 1 >> a68g: runtime error: 1: time limit exceeded, in LONG LONG INT closed-clause >> starting at "(" in this line. >> FAIL: test-set/14-mersenne.a68 >> -->8-- >> >> >> ok? >> >> >> Index: patches/patch-configure_ac >> =================================================================== >> RCS file: /cvs/ports/lang/algol68g/patches/patch-configure_ac,v >> retrieving revision 1.2 >> diff -u -p -r1.2 patch-configure_ac >> --- patches/patch-configure_ac 13 Mar 2022 21:03:42 -0000 1.2 >> +++ patches/patch-configure_ac 24 Mar 2022 09:06:28 -0000 >> @@ -1,4 +1,4 @@ >> -Enable build on arm64 and armv7 >> +Enable build on all archs >> Build the compiler >> Mention that we are IEEE 754 compliant >> Remove hardcoded optimization flags >> @@ -12,7 +12,7 @@ Index: configure.ac >> # OpenBSD. >> # >> -*86-*-openbsd* | *86_64-*-openbsd*) >> -+*86-*-openbsd* | *86_64-*-openbsd* | arm*-*-openbsd* | aarch*-*-openbsd*) >> ++*-*-openbsd*) >> AC_DEFINE(BUILD_BSD, 1, [Define this if OpenBSD was detected]) >> - AC_MSG_WARN([configuring interpreter-only]) >> + AC_DEFINE(HAVE_IEEE_754, 1, [Define this if IEEE_754 compliant]) >> >> > > It was set this way because everyone was under the impression the > compiler only worked in x86 and arm. If it works universally, go for it.
riscv64 is LP64 little-endian, like x86, armv7 and arm64. The build fails on sparc64 because base-gcc uses -std=gnu89 by default: --8<-- ===> Building for algol68g-3.0.4 make all-am cc -DHAVE_CONFIG_H -I. -I./src/include -I/usr/local/include -DBINDIR='"/usr/local/bin"' -DINCLUDEDIR='"/usr/local/include/algol68g"' -O2 -pipe -Wshadow -Wunused-variable -Wunused-parameter -Wno-long-long -MT ./src/a68g/a68g-sounds.o -MD -MP -MF ./src/a68g/.deps/a68g-sounds.Tpo -c -o ./src/a68g/a68g-sounds.o `test -f './src/a68g/sounds.c' || echo './'`./src/a68g/sounds.c cc -DHAVE_CONFIG_H -I. -I./src/include -I/usr/local/include -DBINDIR='"/usr/local/bin"' -DINCLUDEDIR='"/usr/local/include/algol68g"' -O2 -pipe -Wshadow -Wunused-variable -Wunused-parameter -Wno-long-long -MT ./src/a68g/a68g-taxes.o -MD -MP -MF ./src/a68g/.deps/a68g-taxes.Tpo -c -o ./src/a68g/a68g-taxes.o `test -f './ src/a68g/taxes.c' || echo './'`./src/a68g/taxes.c cc -DHAVE_CONFIG_H -I. -I./src/include -I/usr/local/include -DBINDIR='"/usr/local/bin"' -DINCLUDEDIR='"/usr/local/include/algol68g"' -O2 -pipe -Wshadow -Wunused-variable -Wunused-parameter -Wno-long-long -MT ./src/a68g/a68g-top-down.o -MD -MP -MF ./src/a68g/.deps/a68g-top-down.Tpo -c -o ./src/a68g/a68g-top-down.o `te st -f './src/a68g/top-down.c' || echo './'`./src/a68g/top-down.c cc -DHAVE_CONFIG_H -I. -I./src/include -I/usr/local/include -DBINDIR='"/usr/local/bin"' -DINCLUDEDIR='"/usr/local/include/algol68g"' -O2 -pipe -Wshadow -Wunused-variable -Wunused-parameter -Wno-long-long -MT ./src/a68g/a68g-torrix.o -MD -MP -MF ./src/a68g/.deps/a68g-torrix.Tpo -c -o ./src/a68g/a68g-torrix.o `test -f './src/a68g/torrix.c' || echo './'`./src/a68g/torrix.c cc -DHAVE_CONFIG_H -I. -I./src/include -I/usr/local/include -DBINDIR='"/usr/local/bin"' -DINCLUDEDIR='"/usr/local/include/algol68g"' -O2 -pipe -Wshadow -Wunused-variable -Wunused-parameter -Wno-long-long -MT ./src/a68g/a68g-transput.o -MD -MP -MF ./src/a68g/.deps/a68g-transput.Tpo -c -o ./src/a68g/a68g-transput.o `te st -f './src/a68g/transput.c' || echo './'`./src/a68g/transput.c cc -DHAVE_CONFIG_H -I. -I./src/include -I/usr/local/include -DBINDIR='"/usr/local/bin"' -DINCLUDEDIR='"/usr/local/include/algol68g"' -O2 -pipe -Wshadow -Wunused-variable -Wunused-parameter -Wno-long-long -MT ./src/a68g/a68g-unix.o -MD -MP -MF ./src/a68g/.deps/a68g-unix.Tpo -c -o ./src/a68g/a68g-unix.o `test -f './src /a68g/unix.c' || echo './'`./src/a68g/unix.c cc -DHAVE_CONFIG_H -I. -I./src/include -I/usr/local/include -DBINDIR='"/usr/local/bin"' -DINCLUDEDIR='"/usr/local/include/algol68g"' -O2 -pipe -Wshadow -Wunused-variable -Wunused-parameter -Wno-long-long -MT ./src/a68g/a68g-victal.o -MD -MP -MF ./src/a68g/.deps/a68g-victal.Tpo -c -o ./src/a68g/a68g-victal.o `test -f './src/a68g/victal.c' || echo './'`./src/a68g/victal.c cc -DHAVE_CONFIG_H -I. -I./src/include -I/usr/local/include -DBINDIR='"/usr/local/bin"' -DINCLUDEDIR='"/usr/local/include/algol68g"' -O2 -pipe -Wshadow -Wunused-variable -Wunused-parameter -Wno-long-long -MT ./src/a68g/a68g-socket.o -MD -MP -MF ./src/a68g/.deps/a68g-socket.Tpo -c -o ./src/a68g/a68g-socket.o `test -f './src/a68g/socket.c' || echo './'`./src/a68g/socket.c In file included from ./src/a68g/unix.c:25: ./src/include/a68g-mp.h: In function 'len_mp': ./src/include/a68g-mp.h:142: error: 'for' loop initial declaration used outside C99 mode ./src/include/a68g-mp.h:145: error: redefinition of 'k' ./src/include/a68g-mp.h:142: error: previous definition of 'k' was here ./src/include/a68g-mp.h:145: error: 'for' loop initial declaration used outside C99 mode ./src/include/a68g-mp.h: In function 'cut_mp': ./src/include/a68g-mp.h:164: error: 'for' loop initial declaration used outside C99 mode ./src/include/a68g-mp.h:172: warning: declaration of 'k' shadows a previous local ./src/include/a68g-mp.h:164: warning: shadowed declaration is here ./src/include/a68g-mp.h:172: error: 'for' loop initial declaration used outside C99 mode mv -f ./src/a68g/.deps/a68g-torrix.Tpo ./src/a68g/.deps/a68g-torrix.Po cc -DHAVE_CONFIG_H -I. -I./src/include -I/usr/local/include -DBINDIR='"/usr/local/bin"' -DINCLUDEDIR='"/usr/local/include/algol68g"' -O2 -pipe -Wshadow -Wunused-variable -Wunused-parameter -Wno-long-long -MT ./src/a68g/a68g-single-rnd.o -MD -MP -MF ./src/a68g/.deps/a68g-single-rnd.Tpo -c -o ./src/a68g/a68g-single-rnd .o `test -f './src/a68g/single-rnd.c' || echo './'`./src/a68g/single-rnd.c In file included from ./src/a68g/sounds.c:25: ./src/include/a68g-mp.h: In function 'len_mp': ./src/include/a68g-mp.h:142: error: 'for' loop initial declaration used outside C99 mode ./src/include/a68g-mp.h:145: error: redefinition of 'k' ./src/include/a68g-mp.h:142: error: previous definition of 'k' was here ./src/include/a68g-mp.h:145: error: 'for' loop initial declaration used outside C99 mode ./src/include/a68g-mp.h: In function 'cut_mp': ./src/include/a68g-mp.h:164: error: 'for' loop initial declaration used outside C99 mode ./src/include/a68g-mp.h:172: warning: declaration of 'k' shadows a previous local ./src/include/a68g-mp.h:164: warning: shadowed declaration is here ./src/include/a68g-mp.h:172: error: 'for' loop initial declaration used outside C99 mode In file included from ./src/a68g/transput.c:25: ./src/include/a68g-mp.h: In function 'len_mp': ./src/include/a68g-mp.h:142: error: 'for' loop initial declaration used outside C99 mode ./src/include/a68g-mp.h:145: error: redefinition of 'k' ./src/include/a68g-mp.h:142: error: previous definition of 'k' was here ./src/include/a68g-mp.h:145: error: 'for' loop initial declaration used outside C99 mode ./src/include/a68g-mp.h: In function 'cut_mp': ./src/include/a68g-mp.h:164: error: 'for' loop initial declaration used outside C99 mode ./src/include/a68g-mp.h:172: warning: declaration of 'k' shadows a previous local ./src/include/a68g-mp.h:164: warning: shadowed declaration is here ./src/include/a68g-mp.h:172: error: 'for' loop initial declaration used outside C99 mode -->8-- Fixing that by adding -std=gnu99 results in broken tests (all of them). gdb backtrace with DEBUG=-g: --8<-- #0 0x000000075c7a0ef4 in add_option_list (l=0x75cb5ff38, str=0xfffffffffffdcd2f "./test-set/23-whetstones.a68", line=0x0) at ./src/a68g/options.c:213 213 SCAN (*l) = SOURCE_SCAN (&A68_JOB); (gdb) bt #0 0x000000075c7a0ef4 in add_option_list (l=0x75cb5ff38, str=0xfffffffffffdcd2f "./test-set/23-whetstones.a68", line=0x0) at ./src/a68g/options.c:213 #1 0x000000075c701728 in main (argc=0, argv=0xfffffffffffdcb48) at ./src/a68g/a68g.c:731 -->8-- The code before line 213: --8<-- void add_option_list (OPTION_LIST_T ** l, char *str, LINE_T * line) { if (*l == NO_OPTION_LIST) { *l = (OPTION_LIST_T *) get_heap_space ((size_t) SIZE_ALIGNED (OPTION_LIST_T)); SCAN (*l) = SOURCE_SCAN (&A68_JOB); -->8-- looks inscrutable to me. Maybe a strict alignement issue, maybe not. Using the diff below, makepackage and make test pass on sparc64 like they do on riscv64, including the time limit exceeded issue: --8<-- 3 of 23 tests failed Please report to Marcel van der Veer <algol...@xs4all.nl> -->8-- Updated diff that makes use of ports-gcc on sparc64 and friends, still fine with it? Index: Makefile =================================================================== RCS file: /cvs/ports/lang/algol68g/Makefile,v retrieving revision 1.5 diff -u -p -r1.5 Makefile --- Makefile 7 Mar 2022 15:40:53 -0000 1.5 +++ Makefile 24 Mar 2022 22:20:37 -0000 @@ -12,6 +12,10 @@ MASTER_SITES = https://jmvdveer.home.xs4 WANTLIB += c curses m pthread +# ports-gcc used because of C99 and crashes spotted at runtime on sparc64 +COMPILER = base-clang ports-gcc +COMPILER_LANGS = c + CONFIGURE_STYLE = autoreconf CONFIGURE_ARGS = --disable-gsl \ --disable-mathib \ Index: patches/patch-configure_ac =================================================================== RCS file: /cvs/ports/lang/algol68g/patches/patch-configure_ac,v retrieving revision 1.2 diff -u -p -r1.2 patch-configure_ac --- patches/patch-configure_ac 13 Mar 2022 21:03:42 -0000 1.2 +++ patches/patch-configure_ac 24 Mar 2022 21:29:49 -0000 @@ -1,4 +1,4 @@ -Enable build on arm64 and armv7 +Enable build on all archs Build the compiler Mention that we are IEEE 754 compliant Remove hardcoded optimization flags @@ -12,7 +12,7 @@ Index: configure.ac # OpenBSD. # -*86-*-openbsd* | *86_64-*-openbsd*) -+*86-*-openbsd* | *86_64-*-openbsd* | arm*-*-openbsd* | aarch*-*-openbsd*) ++*-*-openbsd*) AC_DEFINE(BUILD_BSD, 1, [Define this if OpenBSD was detected]) - AC_MSG_WARN([configuring interpreter-only]) + AC_DEFINE(HAVE_IEEE_754, 1, [Define this if IEEE_754 compliant]) -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE