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)