On Fri, 21 Feb 2020 12:53:20 -0500
George Koehler <[email protected]> wrote:
> I almost fixed it by adding at the bottom of the port Makefile,
> after bsd.port.mk sets CHOSEN_COMPILER,
>
> .if ${CHOSEN_COMPILER} == "ports-gcc"
> CC = egcc
> RUN_DEPENDS += ${MODGCC4_CPPLIBDEP:S/,-libs//}
> .endif
>
> This fixes qjsc at runtime on macppc, but it is _wrong_ because
> RUN_DEPENDS gets ignored...
Someone pointed me at how devel/llvm uses bsd.arch.port.mk and
PROPERTIES. I fixed lang/quickjs/Makefile to be almost the same; see
the chunk after MAKE_FLAGS in the diff below. "pkg_info -S quickjs"
now includes @gcc-8.3.0p4 on macppc and omits gcc on amd64, as I want.
This version of the diff is ok gkoehler@
Index: Makefile
===================================================================
RCS file: /cvs/ports/lang/quickjs/Makefile,v
retrieving revision 1.4
diff -u -p -r1.4 Makefile
--- Makefile 15 Jan 2020 14:30:50 -0000 1.4
+++ Makefile 21 Feb 2020 20:23:51 -0000
@@ -2,8 +2,7 @@
COMMENT = small, embeddable JavaScript engine in C
-V = 2019.10.27
-REVISION = 0
+V = 2020.01.19
DISTNAME = quickjs-${V:S/./-/g}
PKGNAME = quickjs-${V}
@@ -26,9 +25,19 @@ COMPILER = base-clang ports-gcc
USE_GMAKE = Yes
MAKE_FLAGS = CC="${CC}"
+.include <bsd.port.arch.mk>
+
+# Tell qjsc to run ports-gcc
+.if !${PROPERTIES:Mclang}
+CC = egcc
+RUN_DEPENDS = lang/gcc/${MODGCC4_VERSION}
+.endif
+
# Fix "undefined reference to `__atomic_store_8'"
+# Pass -DLINK_ATOMIC to patch_qjsc_c
.if ${MACHINE_ARCH:Mpowerpc} || ${MACHINE_ARCH:Mhppa}
WANTLIB += atomic
+CFLAGS += -DLINK_ATOMIC
MAKE_FLAGS += LDFLAGS="${LDFLAGS} -latomic"
.endif
Index: distinfo
===================================================================
RCS file: /cvs/ports/lang/quickjs/distinfo,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 distinfo
--- distinfo 21 Dec 2019 14:24:03 -0000 1.1.1.1
+++ distinfo 21 Feb 2020 20:23:51 -0000
@@ -1,2 +1,2 @@
-SHA256 (quickjs-2019-10-27.tar.xz) =
Uc3KTreFHS64so1ELfqjYhOSAXGgzw68BGgCNpQ0oXY=
-SIZE (quickjs-2019-10-27.tar.xz) = 763012
+SHA256 (quickjs-2020-01-19.tar.xz) =
SuTCDE7XwgHXLCKNXodoMUlQkUumDXWfPfI9WQN/K4U=
+SIZE (quickjs-2020-01-19.tar.xz) = 735868
Index: patches/patch-Makefile
===================================================================
RCS file: /cvs/ports/lang/quickjs/patches/patch-Makefile,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-Makefile
--- patches/patch-Makefile 21 Dec 2019 14:24:03 -0000 1.1.1.1
+++ patches/patch-Makefile 21 Feb 2020 20:23:51 -0000
@@ -23,7 +23,7 @@ Index: Makefile
ifdef CONFIG_DARWIN
# use clang instead of gcc
-@@ -81,8 +82,8 @@ ifdef CONFIG_CLANG
+@@ -83,8 +84,8 @@ ifdef CONFIG_CLANG
else
HOST_CC=gcc
CC=$(CROSS_PREFIX)gcc
@@ -34,7 +34,7 @@ Index: Makefile
ifdef CONFIG_LTO
AR=$(CROSS_PREFIX)gcc-ar
else
-@@ -97,7 +98,7 @@ DEFINES:=-D_GNU_SOURCE -DCONFIG_VERSION=\"$(shell cat
+@@ -102,7 +103,7 @@ endif
CFLAGS+=$(DEFINES)
CFLAGS_DEBUG=$(CFLAGS) -O0
CFLAGS_SMALL=$(CFLAGS) -Os
@@ -43,7 +43,7 @@ Index: Makefile
CFLAGS_NOLTO:=$(CFLAGS_OPT)
LDFLAGS=-g
ifdef CONFIG_LTO
-@@ -165,7 +166,7 @@ QJSBN_OBJS=$(OBJDIR)/qjs.bn.o $(OBJDIR)/repl-bn.bn.o $
+@@ -168,7 +169,7 @@ endif
LIBS=-lm
ifndef CONFIG_WIN32
Index: patches/patch-qjsc_c
===================================================================
RCS file: /cvs/ports/lang/quickjs/patches/patch-qjsc_c,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-qjsc_c
--- patches/patch-qjsc_c 21 Dec 2019 14:24:03 -0000 1.1.1.1
+++ patches/patch-qjsc_c 21 Feb 2020 20:23:51 -0000
@@ -2,14 +2,19 @@ $OpenBSD: patch-qjsc_c,v 1.1.1.1 2019/12
Remove -ldl
+Add -latomic if the ports Makefile passes -DLINK_ATOMIC
+
Index: qjsc.c
--- qjsc.c.orig
+++ qjsc.c
-@@ -450,7 +450,6 @@ static int output_executable(const char *out_filename,
+@@ -446,7 +446,9 @@ static int output_executable(const char *out_filename,
lib_dir, bn_suffix, lto_suffix);
*arg++ = libjsname;
*arg++ = "-lm";
- *arg++ = "-ldl";
++#ifdef LINK_ATOMIC
++ *arg++ = "-latomic";
++#endif
*arg = NULL;
if (verbose) {
Index: patches/patch-quickjs_c
===================================================================
RCS file: /cvs/ports/lang/quickjs/patches/patch-quickjs_c,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-quickjs_c
--- patches/patch-quickjs_c 21 Dec 2019 14:24:03 -0000 1.1.1.1
+++ patches/patch-quickjs_c 21 Feb 2020 20:23:51 -0000
@@ -3,7 +3,7 @@ $OpenBSD: patch-quickjs_c,v 1.1.1.1 2019
Index: quickjs.c
--- quickjs.c.orig
+++ quickjs.c
-@@ -1349,7 +1349,7 @@ static inline size_t js_def_malloc_usable_size(void *p
+@@ -1550,7 +1550,7 @@ static inline size_t js_def_malloc_usable_size(void *p
return malloc_usable_size(ptr);
#else
/* change this to `return 0;` if compilation fails */
@@ -12,7 +12,7 @@ Index: quickjs.c
#endif
}
-@@ -1423,7 +1423,7 @@ static const JSMallocFunctions def_malloc_funcs = {
+@@ -1624,7 +1624,7 @@ static const JSMallocFunctions def_malloc_funcs = {
(size_t (*)(const void *))malloc_usable_size,
#else
/* change this to `NULL,` if compilation fails */
Index: patches/patch-quickjs_h
===================================================================
RCS file: /cvs/ports/lang/quickjs/patches/patch-quickjs_h,v
retrieving revision 1.1
diff -u -p -r1.1 patch-quickjs_h
--- patches/patch-quickjs_h 15 Jan 2020 14:30:50 -0000 1.1
+++ patches/patch-quickjs_h 21 Feb 2020 20:23:51 -0000
@@ -1,16 +0,0 @@
-$OpenBSD: patch-quickjs_h,v 1.1 2020/01/15 14:30:50 jca Exp $
-
-Use more generic test for 64 bits platform.
-
-Index: quickjs.h
---- quickjs.h.orig
-+++ quickjs.h
-@@ -53,7 +53,7 @@ typedef struct JSClass JSClass;
- typedef uint32_t JSClassID;
- typedef uint32_t JSAtom;
-
--#if defined(__x86_64__) || defined(__aarch64__)
-+#if defined(__LP64__)
- #define JS_PTR64
- #define JS_PTR64_DEF(a) a
- #else
Index: patches/patch-tests_test_builtin_js
===================================================================
RCS file: /cvs/ports/lang/quickjs/patches/patch-tests_test_builtin_js,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-tests_test_builtin_js
--- patches/patch-tests_test_builtin_js 21 Dec 2019 14:24:03 -0000 1.1.1.1
+++ patches/patch-tests_test_builtin_js 21 Feb 2020 20:23:51 -0000
@@ -3,12 +3,14 @@ $OpenBSD: patch-tests_test_builtin_js,v
Disable tests that fail on OpenBSD.
More info:
https://github.com/NetBSD/pkgsrc/blob/trunk/lang/quickjs/patches/patch-tests_test__builtin.js
+Fix a test on big-endian platforms.
+
Index: tests/test_builtin.js
--- tests/test_builtin.js.orig
+++ tests/test_builtin.js
-@@ -304,12 +304,12 @@ function test_number()
- assert(parseFloat("123.2"), 123.2);
- assert(parseFloat("123.2e3"), 123200);
+@@ -307,12 +307,12 @@ function test_number()
+ assert(Number.isNaN(Number("-")));
+ assert(Number.isNaN(Number("\x00a")));
- assert((25).toExponential(0), "3e+1");
- assert((-25).toExponential(0), "-3e+1");
@@ -25,3 +27,15 @@ Index: tests/test_builtin.js
}
function test_eval2()
+@@ -410,7 +410,10 @@ function test_typed_array()
+
+ a = new Uint8Array(buffer);
+
+- assert(a.toString(), "0,0,255,255,0,0,0,0,0,0,128,63,255,255,255,255");
++ if (a[8] == 63) // big endian?
++ assert(a.toString(),
"0,0,255,255,0,0,0,0,63,128,0,0,255,255,255,255");
++ else
++ assert(a.toString(),
"0,0,255,255,0,0,0,0,0,0,128,63,255,255,255,255");
+
+ assert(a.buffer, buffer);
+
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/lang/quickjs/pkg/PLIST,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 PLIST
--- pkg/PLIST 21 Dec 2019 14:24:03 -0000 1.1.1.1
+++ pkg/PLIST 21 Feb 2020 20:23:51 -0000
@@ -1,7 +1,5 @@
@comment $OpenBSD: PLIST,v 1.1.1.1 2019/12/21 14:24:03 bcallah Exp $
@bin bin/qjs
-@bin bin/qjsbn
-@bin bin/qjsbnc
@bin bin/qjsc
bin/qjscalc
include/quickjs/
@@ -9,4 +7,3 @@ include/quickjs/quickjs-libc.h
include/quickjs/quickjs.h
lib/quickjs/
@static-lib lib/quickjs/libquickjs.a
-@static-lib lib/quickjs/libquickjs.bn.a