That worked beautifully. Thank you for the pointer. Did I miss some obvious documentation about building jsource? I am curious about the need for both make and make2.
bill lam <bbill....@gmail.com> wrote: > I suggest you to use make file under make2, see the readme there. It uses > readlink to get the real filename of cc. > > On Tue, Jan 21, 2020, 1:05 PM ethiejiesa via Source <sou...@jsoftware.com> > wrote: > > > > If you use either gcc or clang, you can export $CC before make. > > > > Taking `build_libj.sh` for example, the problem is that it only detects > > gcc in > > cases where CC contains "gcc" as a substring. This breaks when, for > > example, > > CC=cc and cc is a symlink to some gcc. For example, when building for a > > non-native target, one usually sets up cc to point to the appropriate build > > toolchain, e.g. /usr/bin/arm-linux-gnueabihf-gcc. > > > > Interestingly, `build_jconsole.sh` adopts a diffrent, stronger assumption > > that > > CC=gcc when gcc is the compiler. Note that clang compilation mostly Just > > Works > > TM, since the scripts assume clang by default. > > > > > j forum discards attachment so we can't see your patch. > > > > Oops. Thank you for pointing this out. Including both patches in the body > > is > > probably too much clutter, so for illustrative purposes, I will simply > > post the > > smaller one below: > > > > > > --- make/build_jconsole.sh 2019-12-17 18:25:11.713700768 +0900 > > +++ make/build_jconsole.sh 2019-12-17 18:26:45.090341029 +0900 > > @@ -5,6 +5,7 @@ > > cd ~ > > > > macmin="-mmacosx-version-min=10.6" > > +ccver=$(${CC} --version) > > USE_LINENOISE="${USE_LINENOISE:=1}" > > > > if [ "x$CC" = x'' ] ; then > > @@ -20,7 +21,7 @@ > > export CC > > fi > > > > -if [ $CC = "gcc" ] ; then > > +if [ -z "${ccver##*(GCC)*}" ]; then > > # gcc > > common=" -fPIC -O1 -fwrapv -fno-strict-aliasing -Wextra > > -Wno-maybe-uninitialized -Wno-unused-parameter -Wno-sign-compare > > -Wno-clobbered -Wno-empty-body -Wno-unused-value -Wno-pointer-sign > > -Wno-parentheses" > > OVER_GCC_VER6=$(echo `$CC -dumpversion | cut -f1 -d.` \>= 6 | bc) > > > > > > Using the above, and a similar one for `build_libj.sh`, I have successfully > > compiled for aarch64 and x86 musl-based toolchains. > > > > bill lam <bbill....@gmail.com> wrote: > > > > > j forum discards attachment so we can't see your patch. > > > > > > If you use either gcc or clang, you can export $CC before make. > > > > > > FWIW, I have no problem in cross compiling Windows binary with mingw on > > > linux using make2. > > > > > > On Tue, Jan 21, 2020, 10:36 AM ethiejiesa via Source < > > sou...@jsoftware.com> > > > wrote: > > > > > > > Hello Source, > > > > > > > > Support for cross-compilation is broken by assumptions made in > > > > `make/build_jconsole.sh` and `make/build_libj.sh`. Is there a > > reasonable > > > > fix? > > > > I attach some naïve patches that work for my personal (linux) use case. > > > > > > > > I am the maintainer of the J package for Void Linux. The distribution > > > > offers > > > > binary package downloads for several target platforms by > > cross-compiling > > > > packages on a build farm. In order to support their build toolchains, I > > > > have to > > > > patch `make/build_{jconsole,libj}.sh`. > > > > > > > > In particular, the problem is that the scripts attempt *ad hoc* > > detection > > > > of > > > > gcc via path parsing, and cross-compilation toolchains break those > > > > assumptions. > > > > This can be worked around by instead parsing the output of `$CC > > --version`. > > > > Please see the attached patches against J901-d for a concrete example. > > > > > > > > On a larger note, however, the above fix is still a fragile hack. > > Ideally, > > > > we > > > > want to be completely compiler agnostic without directly checking > > compiler > > > > and > > > > version information. The current state of affairs seems to be simply > > > > setting > > > > compiler flags (for reasons I do not grok yet); however, perhaps we > > could > > > > move > > > > the necessary flags into equivalent `#pragma` statements or something > > > > similar? > > > > > > > > I am out of my depth here, so I mostly intend this email as a mean of > > > > instigating discussion. > > > > > > > > Cheers, > > > > BW > > > > ---------------------------------------------------------------------- > > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm