NAME

    Alien::Base::Wrapper - Compiler and linker wrapper for late optional
    Alien utilization

VERSION

    version 0.01

SYNOPSIS

    From the command line:

     % perl -MAlien::Base::Wrapper=Alien::Foo,Alien::Bar -e cc -- -o foo.o -c foo.c
     % perl -MAlien::Base::Wrapper=Alien::Foo,Alien::Bar -e ld -- -o foo foo.o

    From Makefile.PL:

     use Config;
     use ExtUtils::MakeMaker 6.52;
     
     my $cc      = $Config{cc};
     my $ld      = $Config{ld};
     my $libs    = '';
     my $ccflags = $Config{ccflags};
     my %build_requires;
     
     system 'pkg-config', '--exists', 'libfoo';
     if($? == 0)
     {
       $ccflags = `pkg-config --cflags libfoo` . " $ccflags";
       $libs    = `pkg-config --libs   libfoo`;
       delete $build_requires{'Alien::Libfoo'};
       delete $build_requires{'Alien::Base::Wrapper'};
     }
     else
     {
       $cc = '$(FULLPERL) -Iinc -MAlien::Base::Wrapper=Alien::Libfoo -e cc --';
       $ld = '$(FULLPERL) -Iinc -MAlien::Base::Wrapper=Alien::Libfoo -e ld --';
       $build_requires{'Alien::Libfoo'} = 0;
       $build_requires{'Alien::Base::Wrapper'} = 0;
     }
     
     WriteMakefile(
       NAME => 'Foo::XS',
       BUILD_REQUIRES => \%build_requires,
       CC             => $cc,
       LD             => $ld,
       CCFLAGS        => $ccflags,
       LIBS           => [ $libs ],
       ...
     );

DESCRIPTION

    Note: this particular module is still somewhat experimental.

    This module provides a command line wrapper for Alien modules that are
    based on Alien::Base. The idea is to eventually use this to allow
    optional use of Alien modules by XS which cannot probe for a system
    library. Historically an XS module that wanted to use an Alien had to
    always have it as a prerequisite.

    For a working example, please see the Makefile.PL that comes with
    Term::EditLine.

    For a more custom, non Alien::Base based example, see the Makefile.PL
    that comes with PkgConfig::LibPkgConf.

FUNCTIONS

 cc

     % perl -MAlien::Base::Wrapper=Alien::Foo -e cc -- cflags

    Invoke the C compiler with the appropriate flags from Alien::Foo and
    what is provided on the command line.

 ld

     % perl -MAlien::Base::Wrapper=Alien::Foo -e ld -- ldflags

    Invoke the linker with the appropriate flags from Alien::Foo and what
    is provided on the command line.

ENVIRONMENT

    Alien::Base::Wrapper responds to these environment variables:

    ALIEN_BASE_WRAPPER_QUIET

      Do not print the command before executing

SEE ALSO

    Alien::Base, Alien::Base

AUTHOR

    Graham Ollis <plicease@cpan.org>

COPYRIGHT AND LICENSE

    This software is copyright (c) 2017 by Graham Ollis.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

