Sylvestre's blog

Status of LLVM in Debian

· sylvestre · Debian · 2 commentaires

Here is some updates on the LLVM world into Debian.
LLVM and CLANG getting better and better after each release. After some lag, it is now time to have all these packages up-to-date into the archive.

Here is an update of their status in Debian:

  • LLVM
    LLVM 2.8 and 2.9 are now available into the archive.
    For version 2.8, Matthias Klose deserves most of the credit.
    Version 2.9 is available in experimental.

    They both build pretty well on most of the architectures besides kfreebsd. It is on my TODO list.

  • Clang. A C/C++ compiler.
    clang 2.8 and 2.9 are respectively available in unstable and experimental.
    These versions cover most of C/C++ specifications and more and more big software (Qt, Boost, Scilab, etc) succeed to be built with it.

    Like LLVM, it is available under most of the Debian architectures (but I haven't tested the quality of the ASM generated).

    clang can be used just like gcc. With most of software, calling configure/make with CC="clang" or CXX="clang" should be enought.

  • * Dragonegg
    Dragonegg is a gcc plugin (llvm-gcc-4.5) which allows gcc to use optimizer and code generators of LLVM.
    It is now straightforward to use:

    llvm-gcc -o foo foo.c

    I have lighten the "contact" between the gcc version used to build the extension and the version used to run it.
    It required the exact same version of gcc (even if the sources say it is probably a too strong requirement).

    Now, a warning like this one is displayed:

    Potential incompatible plugin version. GCC: 4.5.3. Expected: 4.5.2
    Defines 'dragonegg_disable_version_check' as env variable to remove this warning
    Please note that unexpected errors might occur.

    If there is a better way to tackle this issue, I will be happy to hear it.

  • llvm-defaults
    Last but not least, I uploaded llvm-defaults, a work of Arthur Loiret. This package allows a similar behavior to gcc-defaults. The installation of llvm will provide the default version of llvm.

Deprecated stuffs:

  • llvm
    The llvm package has been removed. Actually, it was just the version 2.6 of llvm (see bug #625729). llvm (from llvm-defaults) is now providing the favorite version of llvm.

  • llvm-gcc-4.2
    Upstream stopped the development of this plugin.
    It has been removed from the archive (see bug #626007) and dragonegg is taking the relay.

  • llvm-snapshot
    llvm-snapshot (see bug #626083) followed the same direction as llvm-gcc-4.2

  • llvm-2.7
    llvm-2.7 is still in the archive (see bug #626081) because of some reverse dependencies...

2 commentaires

Joe Buck ·

Since the only differences between gcc version x.y.z and x.y.z+1 are bug fixes, it’s probably safe if the version number differs only in the third part. But if y is different, that spells serious trouble (crashes or bad code could be expected), since there will be much larger internal changes. If you’re going to allow version mismatch, I would recommend only allowing a mismatch in the third part.

foo ·

Les commentaires sont clos : ce blog est une archive statique.