Re: Introducing ExtUtils::Builder, a new compilation and linking toolkit

[email protected] (Jens Rehsack)
Newsgroups perl.cpan.workers
Organization Comprehensive Perl Archive Network
Message-ID <[email protected]>
On 20.11.12 02:11, Leon Timmermans wrote:
> Hi all,
>
> As a few of you may already know, I've been working on a new
> compilation and linking toolkit, called ExtUtils::Builder. It's
> intended as a replacement for ExtUtils::CBuilder. ExtUtils::CBuilder
> has a number of issues that I'm running into:
> 1) The only thing it does reliably is creating loadable-objects for
> perl. On some platforms it doesn't do shared libraries or executables,
> and static libraries aren't in the picture anywhere. It also insists
> on linking to perl's dependencies on some platforms. This greatly
> reduces the usefulness of the library.
> 2) It can't plan ahead, it can only perform the compiling/linking.
> This is a problem if you for example want to embed it into a Makefile,
> but also if you want to modify the commands before running.
> 3) It's very inflexible in its options. It has for example an
> extra_linker_flags option, but it has a fixed position. Since linker
> flags tend to be very order dependent, this means it's often the wrong
> position. Likewise you can't choose it's exportation method, it always
> does some platform-specific thing (either exporting all or exporting a
> select set of symbols).
>
> These issues all boil down to «it does exactly what is was designed to
> do, don't expect anything more». It goes so deep that a redesign from
> scratch is inevitable to me.
>
> I'm dealing with these issues by using a radically different design in
> EU:B. I'm using builder roles for the compiler and linker that allow
> you to specify what you'd like them to do. The classes implementing
> these roles are essentially drivers for various compilers/linkers.
> These classes build action objects, that can either be executed, or
> turned into a command to be run (e.g. [qw/cc -o foo.o -c foo.c
> -Iheaders/]). There's a separate class that inspects perl's
> configuration uses that to instantiate the known compiler/linker with
> the right options, but the rest of the framework can be used
> independently.
>
> It's currently in a fairly early state (and rather lacking
> documentation); it's known to work on Linux, HP-UX and OS X but it is
> still being ported to other platforms (there is some code for Windows
> already). I can very much use some platform specialists for help
> there.
>
> Patches and comments are very welcome. The code is at
> https://github.com/Leont/extutils-builder

This is really cool stuff for the thing it's designed for. I'm pretty
sure, it will satisfy a hugh amount of developers.

Thanks, Leon
-- 
Jens Rehsack
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.