Peter Makholm <peter@makholm.net> writes:
> iBog
/tmp/p2p/perl/Math-Simple-1.23 brother$ make
> make: *** No rule to make target `Simple.inl', needed by `pure_all'. Stop.
> iBog
/tmp/p2p/perl/Math-Simple-1.23 brother$
>
> Nogen som det er lykkes at lave et modul med Inline::C?
Det ser ud til at Inline::MakeMaker er skrevet til at virke sammen med
en tidligere udgave af h2xs og eller ExtUtils::MakeMaker.
Tidligere så det ud til at standarden for paker med moduler at lægge
filerne til et modul Foo.pm i følgende struktur:
Foo-1.23/
Foo-1.23/Makefile.PL
Foo-1.23/Foo.pm
Foo-1.23/Foo/
Foo-1.23/Foo/Bar.pm
Men da jeg nu kaldte h2xs for at lave et skelet til en pakke lavede
den følgende;
Foo-1.23/
Foo-1.23/Makefile.PL
Foo-1.23/lib/Foo.pm
Foo-1.23/lib/Foo/
Foo-1.23/lib/Foo/Bar.pm
Det vil sige at når Inline::MakeMaker tilføjer følgende til den
Makefile der genereres:
# Well, not quite. Inline::MakeMaker is adding this:
# --- MakeMaker inline section:
..SUFFIXES: .pm .inl
..pm.inl:
$(PERL) -Mblib -MInline=NOISY,_INSTALL_ -MFoo -e1 1.23 $(INST_ARCHLIB)
pure_all :: Foo.inl
# The End is here.
Så kan den ikke lave Simple.inl fordi ovenstående regl baserer sig på
at der ligger en Foo.pm i det katelog man kalder make fra. Så
problemet er at Inline::MakeMaker ikke er fulgt med tiden?
Desuden tror jeg ikke ovenstående vil gøre det "korrekte" når Foo::Bar
også indeholder Inline::C-sektioner. Jeg tror ikke at C-kode vil blive
oversat på installeringstidspunktet, men først af hver enkelt bruger
første gang de bruger modulet. Noget tilsvarende gør sig nok gældende
for Morten Guldagers moduler, det virker men C-kode skal oversættes af
hver enkelt bruger.
--
Peter Makholm | According to the hacker ethic, the meaning of life
peter@makholm.net | is not Friday, but it is not Sunday either
http://hacking.dk | -- Pekka Himanen