Slashdot Mirror


GNU Make 4.0 Released

jones_supa writes "A new major version of the classic GNU Make software has been released. First of all, Make 4.0 has integration support for GNU Guile Scheme. Guile is the extension system of the GNU project that is a Scheme programming language implementation and now in the Make world will be the embedded extension language. 4.0 also features a new 'output-sync' option, 'trace-enables' for tracing of targets, a 'none' flag for the 'debug' argument, and the 'job server' and .ONESHELL features are now supported under Windows. There are also new assignment operators, a new function for writing to files, and other enhancements. It's been reported that Make 4.0 also has more than 80 bug-fixes. More details can be found from their release announcement on the mailing list."

9 of 179 comments (clear)

  1. Re:Lua for GUILE? by kthreadd · · Score: 3, Informative

    From http://www.gnu.org/software/guile/:
    "In addition to Scheme, Guile includes compiler front-ends for ECMAScript and Emacs Lisp (support for Lua is underway),..."

    So unless that page is inaccurate I guess that means it's still underway.

  2. Me gusta! by serviscope_minor · · Score: 5, Informative

    This looks good.

    The --trace option is really nice. For some reason people think it is prettier to have makefiles not print put the compile lines. It is, of course, until it breaks.

    Make is one of those widely misunderstood tools. Despite being far simpler than, e.g. C it seems to be understood much worse. It's also sad that it diverged long ago, but it's good to see GNU trying to make it compatible with the divergent BSD and POSIX variants too.

    One Make to rule them all! While it seems fashionable not to use the GNU tools these days (for instance distros using less featureful and now slower AWKs than gawk by default), GNU Make is truly the superior one. It is very featureful and an excellent part of a build system.

    --
    SJW n. One who posts facts.
    1. Re:Me gusta! by dyingtolive · · Score: 4, Funny

      Any time I want to slack off or if I need some more time to work on something useful rather than the pointless tasks delegated in the name of excess micromanagement, I just kick off a kernel build on three or four different boxes and tell my boss I'm testing a client issue.

      You say pointless, but I think what you mean is ESSENTIAL.

      --
      Support the EFF and Creative Commons. The war is coming, and they're supporting you...
    2. Re:Me gusta! by J'raxis · · Score: 3, Insightful

      Because if the last line of those 1000 lines is "make: *** Error 1", suddenly the one right above it is not so pointless.

  3. I'm ready to replace Make by steveha · · Score: 4, Interesting

    There is a lot I don't like about Make, including GNU Make. The extensions it has received over the years make it incredibly baroque. I can't work on nontrivial makefiles without keeping a copy of the reference manual open to look things up, and the magic differences between tabs and spaces mean I need syntax highlighting to make sure I know what my makefiles really will do.

    So now GUILE integration. How many Slashdot users are big fans of the Scheme language? I appreciate the elegance but I don't want to work in it, and I don't look forward to trying to debug makefiles that make heavy use of it.

    I'm not sure what to use to replace Make though. I'm a Python guy so I would probably want Scons or something like that, but Ruby fans probably want Rake, Java fans probably want Ant, and in general I don't think there is any consensus on what might be the best replacement for Make.

    --
    lf(1): it's like ls(1) but sorts filenames by extension, tersely
    1. Re:I'm ready to replace Make by steveha · · Score: 3, Interesting

      Just like python!

      Actually, no.

      Python lets you use spaces or tabs, and will do pretty much the right thing. You can sometimes get into trouble if you mix spaces and tabs.

      If you have multiple lines and they are indented identically, they are a block. It's easy to indent identically if you use nothing but spaces; still easy if you use nothing but tabs. (If you indent with a mix of tabs and spaces, and use the identical indent on each line, it will still work but this is very non-recommended. If you indent two lines such that they visually line up, but they have spaces and tabs in a non-identical configuration, it won't work right... but Python will raise an exception and warn you.)

      Recommended practice in the Python community is just to use spaces for indenting. Everyone's editor agrees on how that would work. Most editors have an option to use spaces automatically even if you hit a tab when indenting a line.

      The white space situation in Python is not perfect, but you really cannot say that Python has a syntactic distinction between tabs and spaces like Make does.

      Actually, GNU Make has got pretty good in this regard and usually does the correct thing if you use the wrong kind of indent.

      This has not been my experience, but perhaps you are right. I have been using vim with syntax highlighting, and every time I use spaces instead of a tab, the highlighting reveals my mistake and I fix it, so I haven't screwed this up in a while.

      If the tabs vs spaces thing was the only issue with Make, I could live with it (just as I can live with Python's handling of white space). The baroque syntax bothers me much more.

      --
      lf(1): it's like ls(1) but sorts filenames by extension, tersely
    2. Re:I'm ready to replace Make by Anonymous Coward · · Score: 5, Informative

      > Protip: If you need another tool to build a project other than the compiler, then you're doing it wrong.
      Protip: If the only tool your project needs to build is the compiler, it's a trivial project.
      Generating any non-trivial product (package, installer, resources, doc, etc.) takes a pile of tools.

    3. Re:I'm ready to replace Make by Darinbob · · Score: 3, Funny

      I have an Italian compiler. Some times it tells me "your code, she is baroque on line 13".

  4. Re:Scheme?!? by ebno-10db · · Score: 4, Insightful

    Human need contrast, but all lisp-likes provides is data structure like XML. (Haha, this comparison must make LISPers mad.)

    I hope you realize that you've just started a war that will make the Wars of the Reformation seem tame. Get out of Bohemia while you can! I'm staying neutral.