So on another thread there was talk about whether we could
build sage with clang+gfortran on OS X.
Well it is not that bad and a little push in the right place would probably
get use 95% there.

I couldn’t build sagelib, I didn’t manage to get there. Here are the
packages that fail to build with clang in sage 7.4.beta4 on OS X:
ratpoints
lcalc
pynac
linbox
symmetrica
gfan

ratpoints: there is an ancient ticket (#12473). Surprisingly it is a 
C language problem. ratpoints rely on a GNU extension to use nested
functions. I tried to untangle the first specimen I encountered 
before realising that it was quite an amount of work (the nested function
sees and uses a number of variables from the “host” function that
are in scope like they were global variables, this makes things just insane).

lcalc: is no surprise. It uses a number of obsolete features, not sure
how long gcc itself will build it.

pynac: 
https://github.com/pynac/pynac/pull/192
https://github.com/pynac/pynac/issues/193
for starters.

linbox:
https://github.com/linbox-team/linbox/issues/39
more on linbox specifically later.

symmetrica:
In the first instance a function returning an “int” has return
statement with no values. Should be trivial but I didn’t
dig too much.

gfan:
some C++ constructor problem.

On most of these switching to gcc/g++ solved the problem expect for
linbox which revealed some tricky C++ problems with that approach.
linbox uses fflas-ffpack and givaro, themselves having been compiled
with clang++. 
In another post I mentioned that most vendors (clang and GNU in particular)
where following a common ABI for C++. The problem is that there is now
several versions of the ABI and g++ and clang++ on OS X default on 
different one. You can get g++ to change to the right ABI but then the 
linker get confused thinking you mix different architectures. This is probably
solvable but show that it would be more sane to compile all C++ libraries
that will be included in sage with the same compiler. Stuff called by pexpect
doesn’t matter so much, but in the list above that means lcalc, pynac and
linbox need to be fixed [ratpoints and symmetrica are C, gfan is used via
pexpect].

I was surprised sympow didn’t make it in the list but it did compile.

François

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to