I tried to compile jconsole + libj + libtsdll under OpenBSD.
I managed (although I had to be hard; I seem to dislike the
build system a lot).

When I run jconsole now, I get the message

|domain error: boot
|       'libc.so.6 setlocale > x i *c'&(15!:0)^:(UNAME-:'Linux')1;,'C'

(it originates from system/main/stdlib.ijs)

Thus probably I still had to change something.
Can anybody comment on this?

For me there are too many #define in the sources at too many
places... (j.h js.h x15.c)


So far I (probably not comprehensive, just for reference; not polished at all):

1) change #!/bin/bash to #!/bin/sh in the building scripts

2) keep jvars.sh inside the building tree, source it once to
the shell that will be used for the building
(and do not source it again anywhere)

2.5) put to jvars.sh:
and export it at the end

2.6) add to jsrc/js.h info about OPENBSD (what is really needed apart from
finally having SY_64 1??)
#define SYS_OPENBSD          8388608L

#define SYS_UNIX            (SYS_ATT3B1 + SYS_DEC5500 + SYS_IBMRS6000 + \
                             SYS_MIPS + SYS_NEXT + SYS_SGI + SYS_SUN3 + \
                             SYS_SUN4 + SYS_VAX + SYS_LINUX + SYS_MACOSX + \
                             SYS_FREEBSD + SYS_NETBSD + SYS_SUNSOL2 +

#define SYS SYS_OPENBSD      ...just before testing if SYS is defined
(towards the end)

3) run gmake instead of make (domake.sh)

4) change the line in build_libj.sh to:
if [ $($CC -v 2>&1 | grep -E -c "clang\ version|Apple\ LLVM\ version")
-eq 1 ] ; then
or just say it'll be clang for us
or sth like (?)
if [ $CC -v 2>&1 | grep -E  "clang version|Apple LLVM version"  ] ; then

and add to this file

openbsd_j64) # nonavx here
LINK=" -shared -Wl,-soname,libj.so -lm  $LDOPENMP -o libj.so "

5) add to build_tsdll.sh
COMPILE="$common "
LINK=" -shared -Wl,-soname,libtsdll.so -o libtsdll.so "

6) add to build_jconsole.sh
LINK=" -o jconsole "

7) ?should we also change this (have not done for now) in x15.c?
#define SY_UNIX64 (SY_64 && (SY_LINUX || SY_MAC || SY_FREEBSD))
to something like
#define SY_UNIX64 (SY_64 && (SY_LINUX || SY_MAC || SY_FREEBSD || SY_OPENBSD))
and define SY_OPENBSD somewhere?
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to