Re: Recursive Makefiles, just build object files

[email protected] (Andy Armstrong)
Newsgroups perl.makemaker
Message-ID <[email protected]>
(and due to an exciting editing accident that email was all over the  
place. "Edit in TextMate" - Schwern knows what I mean :)

On 26 Nov 2007, at 23:49, Andy Armstrong wrote:

> On 26 Nov 2007, at 22:32, Michael G Schwern wrote:
>>> For the current release I've dumped a Makefile.PL in the bundled
>>> library's root that invokes its configure script and then adds a  
>>> 'test'
>>> target to the generated Makefile.
>>
>> I contemplated just this problem for Alien::SVN which does nothing  
>> but build a
>> bundled Subversion library.  The necessary hoops you have to jump  
>> through to
>> override enough of MakeMaker to do this are absurd.  You'll spend  
>> most of your
>> time fighting MakeMaker.
>
>
> I've got it sort of working. It still does the static link step for  
> the subdirectories - but that's quick and the results aren't too  
> offensive.
>
> http://search.cpan.org/src/ANDYA/re-engine-Oniguruma-0.03/Makefile.PL
> http://search.cpan.org/src/ANDYA/re-engine-Oniguruma-0.03/onig/Makefile.PL
> http://search.cpan.org/src/ANDYA/re-engine-Oniguruma-0.03/onig/enc/Makefile.PL
>
> Some oddities: BSD make doesn't see the real subdirs targets in the  
> Makefile if there's a NOP one before them. Maybe it's only seeing  
> the first - not sure. Accordingly my root Makefile.PL has
>
> package MY;
>
> # Need to strip the default subdirs target otherwise BSD make doesn't
> # see the real target for some reason.
>
> sub top_targets {
>    my $tt = shift->SUPER::top_targets( @_ );
>    $tt =~ s{^ subdirs \s .*? ^(\S) }{$1}msgx;
>    return $tt;
> }
>
> package main;
>
> On 26 Nov 2007, at 22:32, Michael G Schwern wrote:
>>> For the current release I've dumped a Makefile.PL in the bundled
>>> library's root that invokes its configure script and then adds a  
>>> 'test'
>>> target to the generated Makefile.
>>
>> I contemplated just this problem for Alien::SVN which does nothing  
>> but build a
>> bundled Subversion library.  The necessary hoops you have to jump  
>> through to
>> override enough of MakeMaker to do this are absurd.  You'll spend  
>> most of your
>> time fighting MakeMaker.
>
> I've got it sortOn 26 Nov 2007, at 22:32, Michael G Schwern wrote:
>>> For the current release I've dumped a Makefile.PL in the bundled
>>> library's root that invokes its configure script and then adds a  
>>> 'test'
>>> target to the generated Makefile.
>>
>> I contemplated just this problem for Alien::SVN which does nothing  
>> but build a
>> bundled Subversion library.  The necessary hoops you have to jump  
>> through to
>> override enough of MakeMaker to do this are absurd.  You'll spend  
>> most of your
>> time fighting MakeMaker.
>
> I've got it working. It still does the static link step for the
> subdirectories - but that's quick and the results aren't too  
> offensive.
>
> http://search.cpan.org/src/ANDYA/re-engine-Oniguruma-0.03/Makefile.PL
> http://search.cpan.org/src/ANDYA/re-engine-Oniguruma-0.03/onig/Makefile.PL
> http://search.cpan.org/src/ANDYA/re-engine-Oniguruma-0.03/onig/enc/Makefile.PL
>
> Some oddities: BSD make doesn't see the real subdirs targets in the
> Makefile if there's a NOP one before them. Maybe it's only seeing the
> first - not sure. Accordingly my root Makefile.PL has
>
>    package MY;
>
>    # Need to strip the default subdirs target otherwise BSD make  
> doesn't
>    # see the real target for some reason.
>
>    sub top_targets {
>        my $tt = shift->SUPER::top_targets( @_ );
>        $tt =~ s{^ subdirs \s .*? ^(\S) }{$1}msgx;
>        return $tt;
>    }
>
>    package main;
>
> The source only Makefile.PLs are bodged up like this:
>
>    sub MY::static {
>        return entab( <<'EOM');
>    static :: $(FIRST_MAKEFILE) $(OBJECT)
>     $(NOECHO) $(NOOP)
>    EOM
>    }
>
> Which trims the static target down a bit. It's not /too/ ugly :)
>
> -- 
> Andy Armstrong, Hexten
>
> of working. It still does the static link step for the
> subdirectories - but that's quick and the results aren't too  
> offensive.
>
> http://search.cpan.org/src/ANDYA/re-engine-Oniguruma-0.03/Makefile.PL
> http://search.cpan.org/src/ANDYA/re-engine-Oniguruma-0.03/onig/Makefile.PL
> http://search.cpan.org/src/ANDYA/re-engine-Oniguruma-0.03/onig/enc/Makefile.PL
>
> Some oddities: BSD make doesn't see the real subdirs targets in the
> Makefile if there's a NOP one before them. Maybe it's only seeing the
> first - not sure. Accordingly my root Makefile.PL has
>
>    package MY;
>
>    # Need to strip the default subdirs target otherwise BSD make  
> doesn't
>    # see the real target for some reason.
>
>    sub top_targets {
>        my $tt = shift->SUPER::top_targets( @_ );
>        $tt =~ s{^ subdirs \s .*? ^(\S) }{$1}msgx;
>        return $tt;
>    }
>
>    package main;
>
> The source only Makefile.PLs are bodged up like this:
>
>    sub MY::static {
>        return entab( <<'EOM');
>    static :: $(FIRST_MAKEFILE) $(OBJECT)
>     $(NOECHO) $(NOOP)
>    EOM
>    }
>
> Which trims the static target down a bit. It's not /too/ ugly :)
>
> -- 
> Andy Armstrong, Hexten
>

-- 
Andy Armstrong, Hexten
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.