Excellent work! On March 25, 2015 4:18:15 PM CET, Rick Hanson <[email protected]> wrote: >Hello, list! > >I thought I should write a few words on some information I’ve gleaned >trying to build picolisp on some of the BSDs. There are people on this >list >with more experience than I with both BSD and picolisp; so please >comment >upon what I have to say, and weigh in where you feel, or know, that it >is >necessary, for the benefit of everyone. This is a learning experience >for >me. I am not in a position to write authoritatively. I will try to >accurately report my findings, but please especially point out where I >am >wrong or being misleading. (I would have done this unintentionally, of >course.) > >*Bottom Line* > >Starting from the picolisp 3.1.9.13 source — the latest as of this past >weekend (more about this below) — I was able to successfully build and >unit-test pil32 on the following BSDs: FreeBSD 10.1, OpenBSD 5.6, and >NetBSD 6.1.5. Also, I was able to successfully build and unit-test >pil64 on >FreeBSD 10.1. (AFAIK, only FreeBSD, among the three, has bootstrap >support >(with pil32) to build pil64, and I only looked at the bootstrapping >option >for building pil64.) > >The following sections just spell out some detail about the builds. A >quick >note before that: on each BSD box in question, I had to install gmake. >This >shouldn’t be a surprise — picolisp builds need GNU make, and the BSDs’ >stock make is BSD, not GNU. > >*FreeBSD 10.1* > >I was aiming for a pil64 build in this machine, so I started with a >64-bit >(amd64) FreeBSD 10.1 box. First, I had to build pil32 (for the >bootstrap >build). > >On a fresh FreeBSD 10 box you won’t have gcc, so you need to install >that. >I used pkg for that (i.e. I didn’t build gcc from ports). Its interface >is >installed in /usr/local/bin/gcc48, by the way. > >But, why install gcc? After all, clang (the stock compiler) is a >“drop-in >replacement for gcc“, right? Wrong. If you try to build pil32 with >clang, >you will be greeted with the following errors. > >apply.o.log:apply.c:15:40: error: fields must have a constant size: >'variable length array in structure' extension will never be supported >apply.o.log:apply.c:67:43: error: fields must have a constant size: >'variable length array in structure' extension will never be supported >flow.o.log:flow.c:91:37: error: fields must have a constant size: >'variable length array in structure' extension will never be supported >flow.o.log:flow.c:159:40: error: fields must have a constant size: >'variable length array in structure' extension will never be supported >flow.o.log:flow.c:299:34: error: fields must have a constant size: >'variable length array in structure' extension will never be supported >flow.o.log:flow.c:663:37: error: fields must have a constant size: >'variable length array in structure' extension will never be supported >flow.o.log:flow.c:698:34: error: fields must have a constant size: >'variable length array in structure' extension will never be supported >flow.o.log:flow.c:736:37: error: fields must have a constant size: >'variable length array in structure' extension will never be supported >flow.o.log:flow.c:786:37: error: fields must have a constant size: >'variable length array in structure' extension will never be supported >main.o.log:main.c:720:34: error: fields must have a constant size: >'variable length array in structure' extension will never be supported > >Yes, that’s right folks, clang does not support dynamically sized >arrays >and never will (!) as unequivocally stated by their error message: >“extension >will never be supported“ (“never”? really?). (Take that picolispers! >This >reminds me of the taunting Frenchman in Monty Python’s Holy Grail: “No >chance, English bedwetting types!”) > >But gcc does support this; so, back to gcc. The objects build fine with >gcc, >but then we run into a problem in the link step. > >gcc48 -o ../bin/picolisp -m32 -rdynamic main.o gc.o apply.o flow.o >sym.o subr.o big.o io.o net.o tab.o -lm >/usr/local/bin/ld: skipping incompatible //usr/lib/libm.so when >searching for -lm >/usr/local/bin/ld: skipping incompatible //usr/lib/libm.a when >searching for -lm >/usr/local/bin/ld: cannot find -lm >/usr/local/bin/ld: skipping incompatible >/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.1/4.8.4/libgcc.a >when searching for -lgcc >/usr/local/bin/ld: skipping incompatible //usr/lib/libgcc.a when >searching for -lgcc >/usr/local/bin/ld: cannot find -lgcc >/usr/local/bin/ld: skipping incompatible >/usr/local/lib/gcc48/gcc/x86_64-portbld-freebsd10.1/4.8.4/../../../libgcc_sso >when searching for -lgcc_s >/usr/local/bin/ld: skipping incompatible //usr/lib/libgcc_s.so when >searching for -lgcc_s >/usr/local/bin/ld: cannot find -lgcc_s >/usr/local/bin/ld: skipping incompatible /lib/libc.so.7 when searching >for /lib/libc.so.7 >/usr/local/bin/ld: cannot find /lib/libc.so.7 >/usr/local/bin/ld: skipping incompatible /usr/lib/libc_nonshared.a >when searching for /usr/lib/libc_nonshared.a >/usr/local/bin/ld: cannot find /usr/lib/libc_nonshared.a >/usr/local/bin/ld: skipping incompatible /usr/lib/libssp_nonshared.a >when searching for /usr/lib/libssp_nonshared.a >/usr/local/bin/ld: cannot find /usr/lib/libssp_nonshared.a > >Oops. gcc cannot find the 32-bit libraries. But they do exist on the >stock >system. Rrrr. This gcc, from pkg, is not built for multilib support. I >might be able to build gcc in ports with multilib support, but I had >another thought: can clang do just the link step? After all, it’s the >stock >compiler and the stock system already has the 32-bit libraries there. >And >yes, clang indeed does the job of finding them for the link step. > >So, you’d only need to change a line in src/Makefile at the link step >to >call clang instead of gcc, and you should have a successful pil32 build >on >64-bit FreeBSD 10. > >Now, this brings us to *a change introduced in picolisp last weekend*, >which is that src/Makefile has been changed so that it works for >FreeBSD 10 >in the way described above “out of the box” with the new version, >3.1.9.13. >It has also been slightly refactored so that it is backward-compatible >as >regards the other systems (e.g. Linux, Solaris), i.e. it will work *the >same way as before* on these systems, namely that gcc is (still) the >interface for both the object build and the link step. Please be aware >of >this change; however, it shouldn’t give you a problem. Alex has already >tested the change on some Linuxen, and I’ve already tested it on all >the >BSDs mentioned here. > >After building pil32, building pil64 is very easy (and fast!). > >Also, please note that I did not try building pil32 on FreeBSD 10.1 >i386. >This case should probably be checked, at least for completion’s sake. > >Finally, here is a log of the “out of box” experience building >picolisp. >The new src/Makefile in version 3.1.9.13 takes care the issues we just >discussed. > >$ echo "$(uname -s) $(uname -r) $(uname -p)" >FreeBSD 10.1-RELEASE amd64 >$ cd ~/distros >$ curl -O http://software-lab.de/picoLisp.tgz && mv picoLisp.tgz >picoLisp-3.1.9.13.tgz >% Total % Received % Xferd Average Speed Time Time Time >Current > Dload Upload Total Spent Left Speed >100 894k 100 894k 0 0 1393k 0 --:--:-- --:--:-- >--:--:-- 1399k >$ cd ~/builds >$ tar zxf ~/distros/picoLisp-3.1.9.13.tgz && mv picoLisp >picoLisp-3.1.9.13 >$ cd picoLisp-3.1.9.13 >$ (cd src; gmake) >gcc48 -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"FreeBSD"' main.c >gcc48 -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"FreeBSD"' gc.c >gcc48 -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"FreeBSD"' apply.c >gcc48 -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"FreeBSD"' flow.c >gcc48 -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"FreeBSD"' sym.c >gcc48 -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"FreeBSD"' subr.c >gcc48 -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"FreeBSD"' big.c >gcc48 -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"FreeBSD"' io.c >gcc48 -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"FreeBSD"' net.c >gcc48 -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"FreeBSD"' tab.c >mkdir -p ../bin ../lib >clang -o ../bin/picolisp -m32 -rdynamic main.o gc.o apply.o flow.o >sym.o subr.o big.o io.o net.o tab.o -lm >strip ../bin/picolisp >gcc48 -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"FreeBSD"' ext.c >clang -o ../lib/ext -m32 -shared -export-dynamic ext.o -lcrypt >strip ../lib/ext >gcc48 -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"FreeBSD"' ht.c >clang -o ../lib/ht -m32 -shared -export-dynamic ht.o >strip ../lib/ht >$ # test pil32 >$ ./pil lib/test.l $(/bin/pwd) -bye + >OK >$ (cd src64; gmake) >$ # test pil64 >$ ./pil lib/test.l $(/bin/pwd) -bye + >OK >$ ./pil -version -bye >3.1.9.13 > >*OpenBSD 5.6* > >I have a server running OpenBSD 5.6 (amd64), so I thought I’d give that >a >try to boostrap-build pil64. So, I attempted to build pil32 first. This >did >not work. AFAIK there is no stock multilib support on this OS. (I >couldn’t >find any 32-bit libraries on the system.) There may be a way to build >gcc >from sources that supports multilib, but I’m not aware of it. (Does >anyone >know?) I think I recall Mike Pechkin, our resident OpenBSD expert, >telling >me on IRC that this is not possible. Too bad, because I really like >OpenBSD >and would love to run pil64 on it someday. > >I was able, however, to successfully build and unit-test pil32 on >OpenBSD >5.6 (i386). (Actually, originally two of the unit tests hung on a >system >network call, but Mike P told me on IRC how to configure my network on >the >box to solve this problem; then all the tests passed. He understands >the >net stack. I don’t. It’s like “deep magic” for me.) > >Here’s the build log on an i386 OpenBSD 5.6. > >$ echo "$(uname -s) $(uname -r) $(uname -p)" >OpenBSD 5.6 i386 >$ cd ~/distros >$ ls >picoLisp-3.1.5.tgz picoLisp-3.1.6.tgz picoLisp-3.1.7.tgz >picoLisp-3.1.8.tgz picoLisp-3.1.9.12.tgz picoLisp-3.1.9.tgz >$ curl -O http://software-lab.de/picoLisp.tgz && mv picoLisp.tgz >picoLisp-3.1.9.13.tgz >% Total % Received % Xferd Average Speed Time Time Time >Current > Dload Upload Total Spent Left Speed >100 894k 100 894k 0 0 257k 0 0:00:03 0:00:03 >--:--:-- 277k >$ cd ~/builds >$ tar zxf ~/distros/picoLisp-3.1.9.13.tgz && mv picoLisp >picoLisp-3.1.9.13 >$ cd picoLisp-3.1.9.13 >$ (cd src; gmake) >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"OpenBSD"' main.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"OpenBSD"' gc.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"OpenBSD"' apply.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"OpenBSD"' flow.c >flow.c: In function 'doTick': >flow.c:1583: warning: cast to pointer from integer of different size >flow.c:1584: warning: cast to pointer from integer of different size >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"OpenBSD"' sym.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"OpenBSD"' subr.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"OpenBSD"' big.c >big.c:7:1: warning: "MAX" redefined >In file included from /usr/include/netdb.h:93, > from pico.h:30, > from big.c:5: >/usr/include/sys/param.h:217:1: warning: this is the location of the >previous definition >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"OpenBSD"' io.c >io.c: In function 'doEcho': >io.c:2261: warning: 'op' may be used uninitialized in this function >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"OpenBSD"' net.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"OpenBSD"' tab.c >mkdir -p ../bin ../lib >gcc -o ../bin/picolisp -m32 -rdynamic -Wl,-E main.o gc.o apply.o >flow.o sym.o subr.o big.o io.o net.o tab.o -lm >main.o(.text+0xa35): In function `sharedLib': >: warning: strcpy() is almost always misused, please use strlcpy() >big.o(.text+0x3971): In function `numToSym': >: warning: sprintf() is often misused, please use snprintf() >strip ../bin/picolisp >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"OpenBSD"' ext.c >gcc -o ../lib/ext -Wl,-E -Wl,-shared ext.o -lcrypto >strip ../lib/ext >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"OpenBSD"' ht.c >gcc -o ../lib/ht -Wl,-E -Wl,-shared ht.o >strip ../lib/ht >$ ./pil lib/test.l $(/bin/pwd) -bye + >OK >$ ./pil -version -bye >3.1.9.13 C > >*NetBSD 6.1.5* > >On a NetBSD 6.1.5 (amd64) box, I was able to build (and unit-test) >pil32 >with no issues. The stock compiler is gcc and has multilib support. >Nice. > >As an aside, this might be a good target for a pil64 bootstrap build >someday. Has anyone tried this? > >I did not try building pil32 on NetBSD 6.1.5 i386. For completion’s >sake, >this case should probably be checked also. > >Here’s the build log on that machine. > >$ echo "$(uname -s) $(uname -r) $(uname -p)" >NetBSD 6.1.5 x86_64 >$ cd ~/distros >$ curl -O http://software-lab.de/picoLisp.tgz && mv picoLisp.tgz >picoLisp-3.1.9.13.tgz >% Total % Received % Xferd Average Speed Time Time Time >Current > Dload Upload Total Spent Left Speed >100 894k 100 894k 0 0 120k 0 0:00:07 0:00:07 >--:--:-- 148k >$ cd ~/builds >$ tar zxf ~/distros/picoLisp-3.1.9.13.tgz && mv picoLisp >picoLisp-3.1.9.13 >$ cd picoLisp-3.1.9.13 >$ (cd src; gmake) >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"NetBSD"' main.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"NetBSD"' gc.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"NetBSD"' apply.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"NetBSD"' flow.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"NetBSD"' sym.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"NetBSD"' subr.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"NetBSD"' big.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"NetBSD"' io.c >io.c: In function 'doEcho': >io.c:2261:50: warning: 'op' may be used uninitialized in this function >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"NetBSD"' net.c >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"NetBSD"' tab.c >mkdir -p ../bin ../lib >gcc -o ../bin/picolisp -m32 -rdynamic main.o gc.o apply.o flow.o sym.o >subr.o big.o io.o net.o tab.o -lm >strip ../bin/picolisp >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"NetBSD"' ext.c >gcc -o ../lib/ext -m32 -shared -export-dynamic ext.o -lcrypto >strip ../lib/ext >gcc -c -O2 -pipe -falign-functions=32 -fomit-frame-pointer >-fno-strict-aliasing -W -Wimplicit -Wreturn-type -Wunused -Wformat >-Wuninitialized -Wstrict-prototypes -D_GNU_SOURCE >-D_FILE_OFFSET_BITS=64 -m32 -D_OS='"NetBSD"' ht.c >gcc -o ../lib/ht -m32 -shared -export-dynamic ht.o >strip ../lib/ht >$ ./pil lib/test.l $(/bin/pwd) -bye + >OK >$ ./pil -version -bye >3.1.9.13 C > >
-- Skickat från min Android-telefon med K-9 E-post. Ursäkta min fåordighet.
