On Wed, Feb 17, 2016 at 09:22:12PM -0600, Craig A. Berry wrote: > On Wed, Feb 17, 2016 at 6:00 AM, Dave Mitchell <da...@iabyn.com> wrote: > > On Tue, Feb 16, 2016 at 10:34:07AM -0800, Russ Allbery wrote: > >> My preferred solution would be to require Encode as a prerequisite for > >> podlators when building core. Is there any way to do that? > > > > Probably, but the build system isn't my strong point. I tried hacking > > Makefile.SH so that it adds this line to Makefile if Encode hasn't been > > deselected: > > > > cpan/podlators/pm_to_blib: lib/auto/Encode/Encode.so > > > > but then I get this: > > > > make: Circular lib/auto/Encode/Encode.so <- makeppport dependency > > dropped. > > make: Circular DynaLoader.o <- cpan/podlators/pm_to_blib dependency > > dropped. > > > > Anyone have a better clue how to do this? > > > Possibly messing with the following section of code in make_ext.pl > would do something. If it works, it might be depending on Encode > being later in the alphabet than Cwd. If there's more to it than > that, this code could perhaps be changed from saying "build X before > everything else" to "build X before Y." > > { > # Cwd needs to be built before Encode recurses into subdirectories. > # Pod::Simple needs to be built before Pod::Functions > # This seems to be the simplest way to ensure this ordering: > my (@first, @other); > foreach (@extspec) { > if ($_ eq 'Cwd' || $_ eq 'Pod/Simple') { > push @first, $_; > } else { > push @other, $_; > } > } > @extspec = (@first, @other); > }
make_ext.pl on UNIX is only ever called with a single extension to build at a time; all the ordering logic is contained in the Makefile. Perhaps its time to fully integrate the win32/VMS and UNIX halves of make_ext.pl, which were originally shunted together from separate scripts. But that might lose the -j parallelism that is provided by make? -- Art is anything that has a label (especially if the label is "untitled 1")