On Sat, Jan 20, 2018 at 11:07:46PM +0000, Stuart Henderson wrote:
> On 2018/01/20 12:53, Juan Francisco Cantero Hurtado wrote:
> > On Sat, Jan 20, 2018 at 09:05:28AM +0000, Stuart Henderson wrote:
> > > On 2018/01/20 16:28, Jonathan Gray wrote:
> > > > With armv7 switching to clang as the base compiler atomic builtins and
> > > > -mfpu=neon are now available on arm.
> > > 
> > > Comments on a couple below, others are OK with me:
> > > 
> > > > Index: lang/racket-minimal/Makefile
> > > > ===================================================================
> > > > RCS file: /cvs/ports/lang/racket-minimal/Makefile,v
> > > > retrieving revision 1.43
> > > > diff -u -p -r1.43 Makefile
> > > > --- lang/racket-minimal/Makefile        2 Dec 2017 21:39:49 -0000       
> > > > 1.43
> > > > +++ lang/racket-minimal/Makefile        20 Jan 2018 00:52:42 -0000
> > > > @@ -38,7 +38,6 @@ EXTRACT_SUFX =                .tgz
> > > >  # "places" and "futures" require TLS.
> > > >  COMPILER =             base-clang ports-gcc
> > > >  COMPILER_LANGS =       c
> > > > -MODGCC4_ARCHS =                arm
> > > >  
> > > >  LIB_DEPENDS =          converters/libiconv \
> > > >                         databases/sqlite3 \
> > > 
> > > Here ports-gcc is only used for arm (restricting from the defaults).
> > > By removing MODGCC4_ARCHS all !base-clang arches switch to ports-gcc,
> > > so the effect you are looking for would come from removing the
> > > COMPILER* lines as well.
> > > 
> > > This doesn't really square up with the above comment about TLS though
> > > because ONLY_FOR_ARCHS lists !base-clang arches. juanfra, do you know
> > > what's going on here?
> > 
> > I remember vaguely someone changing a bunch of ports to lang/gcc because
> > the base gcc didn't have support for something on arm. Sorry, I don't
> > remember the details.
> 
> The comment talks about TLS, but base gcc didn't have that anyway.
> But also it talks about needing TLS for "places" and "futures" but
> those are disabled with CONFIGURE_ARGS on all !x86 anyway.
> 
> Bit confusing..

In fact, it's quite simple :)

Racket has a JIT and a C interpreter. The JIT is only available on
amd64, i386, arm and powerpc. powerpc has an old version and doesn't
support places and futures. The assembly is broken on arm when places
and futures are enabled. The C interpreter doesn't support places and
futures. places and futures requires TLS.

So, you have amd64/i386 with JIT+places+futures. arm and powerpc with
JIT-places+futures. Everything else has only the C interpreter.

Upstream is working on a new different interpreter which probably will
provide a better support for less popular platforms.


-- 
Juan Francisco Cantero Hurtado http://juanfra.info

Reply via email to