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)
>
>

Reply via email to