Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: Why do you need makefile in perl?

by taint (Chaplain)
on Dec 17, 2013 at 22:27 UTC ( #1067539=note: print w/replies, xml ) Need Help??

in reply to Why do you need makefile in perl?

Greetings, venky4289.

It's hard to know where to start on this -- volumes could be written. But I'll do my best to be concise. Traditionally Make has been a standard, integral part of UNIX, and UNIX-like (*NIX) systems. In fact, that's how you often built the system you were installing. This makes for a great deal of flexibility, and personalization -- hey, everybody likes choices. Anyway, This wasn't the case, with MS-DOS/Windows, presumably because they were a "for profit" company, and they already had a product they sold, that provided a make. On the other hand, this also paved the way for the likes of ActiveState. Well, given that Perl is free, and the fact that MS products didn't come with a free version of make, someone created nmake (I've forgotten details, and wikipedia doesn't provide accurate details). Which was a free version of make. That would run within dos (MS-DOS). Did you know that make will allow you to build Perl, and install it where ever you want to? Did you also know that every time you download a Perl Module, and unpack it, you can use Perl, and make to make, and install it? Did you also know that having make allows you to install 16 (or more) different versions of Perl, and by simply providing PERFIX=, you can install them anywhere you want to? See also: perlbrew

I wish I could clearly recall the actual origin, and author of nmake. But I'll update this, if I do (recall/find it).

Hope this helped, and best wishes.


UPDATE here's the oldest reference I could find where Microsoft references nmake:;en-us;Q132084
UPDATE Here's also a related article, on PerlMonks: 803600
Yes. What say about me, is true.

Replies are listed 'Best First'.
Re^2: Why do you need makefile in perl?
by hdb (Monsignor) on Dec 18, 2013 at 07:58 UTC

    Wow, if this is the concise version, I don't want to have to read the comprehensive one.

    Btw, nmake on Windows is from Microsoft according to Wikipedia.


      "-- volumes could be written. But I'll do my best to be concise."
      I did. But part of being concise also means being complete. :)

      Yes. M$ does have a version. But their version is not the original. Wikipedia also complains of the way the document was written. You don't suppose an M$ employee wrote it, do you? :)

      As memory serves; it was either Redhat (Cygnus), or ATT. ATT had a UNIX environment for early Windows, and NT. I've got both copies. But haven't had time to look thoroughly enough to find it.

      The original nmake dates back to the '80's, and my memory isn't so good with tiny, seemingly insignificant details about MS-DOS -- an interpreter I've tried hard to forget. ;)

      All the best, hdb.


      UPDATE; forgot to cite Cygnus
      See also: Cygnus solutions
      Yes. What say about me, is true.
Re^2: Why do you need makefile in perl?
by venky4289 (Novice) on Dec 18, 2013 at 07:44 UTC

    Thanks for the Reply. Now i got an idea, But can you please tell me waht does each command do ? perl make make test make install

      perl Makefile.PL sets up the necessary build directories and creates a Makefile.

      make builds the module by copying the contents of <t>lib/ into blib ("build library"); if there are any XS modules, these get compiled at this point.

      make test runs all the tests vs. the code now in blib to verify that it passes its tests.

      make install copies the code in blib to the local Perl module directory as defined in the Perl install.

      make disttest verifies that we have all the files we expect, we don't have any files we don't expect, and that they are all in the right relative locations when we ready the code for distribution; it also rechecks that the ready-for-distribution code still passes its tests.

      make dist creates a tar ball of the source we want to distribute.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1067539]
[marto]: good morning all

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (10)
As of 2018-07-17 08:05 GMT
Find Nodes?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?

    Results (358 votes). Check out past polls.