in reply to Make vs. Perl

Nick Ing-Simmons wrote pmake, a Perl implementation of make. I don't know where to find it; a manual CPAN search didn't turn up anything, and there's another same-named "pmake" out there that's a parallel-implementation of make which returns more Google hits. Update:It uses the Make.pm module, which is available on CPAN.

Cons is a more "purely Perl" make substitute. The configuration files are Perl scripts that call an API to establish targets and dependencies. Dependency analysis and builds are all carried out by a single top-level executable, not through recursive invocation of the tool.

makepp (a.k.a. make++) is a Perl re-implementation of make that preserves Makefile syntax, but uses the Cons build-engine model of a single top-level process.

Lastly, Rich Miller created a utility named "perlmake" for IDX Systems Corp., but I don't think it's been publicly released.

Replies are listed 'Best First'.
RE: Make vs. Perl
by tedv (Pilgrim) on Nov 15, 2000 at 22:39 UTC
    What about a module that gives me a make interface I can use from a script that does other things. I guess I could just do a system("make $foo") or "cons $foo" or whatever, but I was hoping for a module with a real API to set up dependancies and then fullfill them. I suppose this is what you're talking about. I'll take a look at that. I was hoping for something that wasn't so inbred with Make's horrendous syntax for pattern matching and whatnot...

    -Ted
      Cons has been talking for a long time about moving to an architecture like you're describing--a modular build engine to manage dependencies, with plug-in modules for various dependency scanners, compile tools, etc. The consensus among that community is that itwould be a Good Thing, but no one has actually had time or energy to go ahead and do it.

      I agree completely about the hassles arising from Make.pm being so closely tied to Make's syntax.

      I'm not sure what you want to do in Perl that you couldn't do within a Cons config file itself, since it's just a Perl script. You shouldn't need to do a separate system("cons $foo").