Tomas, Which OS / arm board combination are you using?
Thanks, -rl On Sun, Mar 10, 2013 at 7:27 PM, Tomas Hlavaty <t...@logand.com> wrote: > Hi Alex, > > attached is a patch to compile picolisp on arm out of the box. The -m32 > switch doesn't seem to be defined there. > > The -fPIC option was necessary for: > > gcc -o ../lib/z3d -shared -export-dynamic z3d.o > /usr/bin/ld: z3d.o: relocation R_ARM_MOVW_ABS_NC against `a local symbol' > can not be used when making a shared object; recompile with -fPIC > z3d.o: could not read symbols: Bad value > collect2: error: ld returned 1 exit status > make: *** [../lib/z3d] Error 1 > make: Target `picolisp' not remade because of errors. > > Maybe there is a better way to handle the error? > > Would it be possible to include it in the official version? > > Thank you, > > Tomas > > > diff --git a/src/Makefile b/src/Makefile > index 7267011..a229ab8 100644 > --- a/src/Makefile > +++ b/src/Makefile > @@ -7,46 +7,55 @@ lib = ../lib > > picoFiles = main.c gc.c apply.c flow.c sym.c subr.c big.c io.c net.c tab.c > > -CFLAGS = -c -O2 -m32 -pipe \ > +ifeq ($(shell uname -m), armv6l) > + M32 = -fPIC > +else > +ifeq ($(shell uname -m), armv7l) > + M32 = -fPIC > +else > + M32 = -m32 > +endif > +endif > + > +CFLAGS = -c -O2 $(M32) -pipe \ > -falign-functions -fomit-frame-pointer -fno-strict-aliasing \ > -W -Wimplicit -Wreturn-type -Wunused -Wformat \ > -Wuninitialized -Wstrict-prototypes \ > -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 > > - > ifeq ($(shell uname), Linux) > OS = Linux > - PICOLISP-FLAGS = -m32 -rdynamic > + PICOLISP-FLAGS = $(M32) -rdynamic > LIB-FLAGS = -lc -lm -ldl > - DYNAMIC-LIB-FLAGS = -m32 -shared -export-dynamic > + DYNAMIC-LIB-FLAGS = $(M32) -shared -export-dynamic > STRIP = strip > else > ifeq ($(shell uname), OpenBSD) > OS = OpenBSD > - PICOLISP-FLAGS = -m32 -rdynamic -Wl,-E > + PICOLISP-FLAGS = $(M32) -rdynamic -Wl,-E > LIB-FLAGS = -lc -lm > DYNAMIC-LIB-FLAGS = -Wl,-E -Wl,-shared > STRIP = strip > else > ifeq ($(shell uname), FreeBSD) > OS = FreeBSD > - PICOLISP-FLAGS = -m32 -rdynamic > + PICOLISP-FLAGS = $(M32) -rdynamic > LIB-FLAGS = -lc -lm > - DYNAMIC-LIB-FLAGS = -m32 -shared -export-dynamic > + DYNAMIC-LIB-FLAGS = $(M32) -shared -export-dynamic > STRIP = strip > else > ifeq ($(shell uname), NetBSD) > OS = NetBSD > - PICOLISP-FLAGS = -m32 -rdynamic > + PICOLISP-FLAGS = $(M32) -rdynamic > LIB-FLAGS = -lc -lm > - DYNAMIC-LIB-FLAGS = -m32 -shared -export-dynamic > + DYNAMIC-LIB-FLAGS = $(M32) -shared -export-dynamic > STRIP = strip > else > ifeq ($(shell uname), Darwin) > OS = Darwin > - PICOLISP-FLAGS = -m32 > + PICOLISP-FLAGS = $(M32) > LIB-FLAGS = -lc -lm -ldl > - DYNAMIC-LIB-FLAGS = -m32 -dynamiclib -undefined dynamic_lookup > + DYNAMIC-LIB-FLAGS = $(M32) -dynamiclib -undefined dynamic_lookup > STRIP = strip -x > else > ifeq ($(shell uname -o), Cygwin) > >