Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

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

by Zaxo (Archbishop)
on Dec 22, 2007 at 06:35 UTC ( [id://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)

Replies are listed 'Best First'.
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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://658620]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2024-04-20 03:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found