Beefy Boxes and Bandwidth Generously Provided by pair Networks kudra
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Declaring a dependency on syscall.ph (and getting it generated)

by Zaxo (Archbishop)
on Dec 22, 2007 at 06:35 UTC ( #658620=note: print w/ replies, xml ) Need Help??


in reply to Declaring a dependency on syscall.ph (and getting it generated)

That's easy in a makefile. Just preface your command line with a tab under a ".ph" target.

After Compline,
Zaxo


Comment on Re: Declaring a dependency on syscall.ph (and getting it generated)
Re^2: Declaring a dependency on syscall.ph (and getting it generated)
by diotalevi (Canon) on Dec 22, 2007 at 15:48 UTC

    Perhaps you didn't understand the question. I know of many ways to generate things during module-building. What I don't know about is if there is an existing package which already handles .ph file dependencies. If not, what I don't know about is how to generate this sanely myself. I have a guess but I quickly run directly into shell quoting issues and guessing about what compiler options mean. It gets ugly rather quickly. Or... well... maybe it's possible to write a Module::Build plugin which could handle getting the compiler to find the syscall.h file.


    Makefile.PL

    WriteMakefile( ... CC => "$^X bin/fake-cc", # shell quoting matters here! );

    bin/fake-cc

    #!perl for ( map extract_paths( $_ ), @ARGV ) { # stash this somewhere, I guess. } # etc.

    ⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊

      I am not aware of an existing mechanism to detect the .ph files and build them. A simple way could be to add something like this in then Makefile.PL:
      if (!eval { require "sys/syscall.ph"; 1 }) { my $save_pwd = cwd; chdir "/usr/include" or die $!; system("h2ph", "sys/syscall.ph"); chdir $save_pwd or die $!; }

      Of course, this should be only run on Unix systems. But not all Unix systems have include files installed, so one has to be protected from this fact. Also, Makefile.PL is often not run under root permissions, so the above would fail. It's also possible that even "make install" is not run as root, so maybe it should also be possible to install the .ph into some other directory.

      Or maybe it would be safer to not use .ph files at all and move the required stuff into an XS module?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://658620]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (5)
As of 2014-04-17 05:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (440 votes), past polls