| -*-Indented-Text-*- |
| GNU Make TODO List |
| ------------------ |
| |
| This list comes both from the authors and from users of GNU make. |
| |
| They are listed in no particular order! |
| |
| Also, I don't guarantee that all of them will be ultimately deemed "good |
| ideas" and implemented. These are just the ones that, at first blush, |
| seem to have some merit (and that I can remember). |
| |
| However, if you see something here you really, really want, speak up. |
| All other things being equal, I will tend to implement things that seem |
| to maximize user satisfaction. |
| |
| If you want to implement some of them yourself, barring the ones I've |
| marked below, have at it! Please contact me first to let me know you're |
| working on it, and give me some info about the design--and, critically, |
| information about any user-visible syntax change, etc. |
| |
| |
| The Top Item |
| ------------ |
| |
| If you know perl (or want to learn DejaGNU or similar), the number one |
| priority on my list of things I don't have time to do right now is |
| fixing up the GNU make test suite. Most importantly it needs to be made |
| "parallelizable", so more than one regression can run at the same time |
| (essentially, make the "work" directory local). Also, the CWD during |
| the test should be in the work directory or, better, a test-specific |
| temporary directory so each test gets a new directory; right now |
| sometimes tests leak files into the main directory which causes |
| subsequent tests to fail (some tests may need to be tweaked). Beyond |
| that, any cleanup done to make writing, reading, or handling tests |
| simpler would be great! Please feel free to make whatever changes you |
| like to the current tests, given some high-level goals, and that you'll |
| port the current tests to whatever you do :). |
| |
| |
| The Rest of the List |
| -------------------- |
| |
| 1) Option to check more than timestamps to determine if targets have |
| changed. This is also a very big one. It's _close_ to my plate :), |
| and I have very definite ideas about how I would like it done. |
| Please pick something else unless you must have this feature. If |
| you try it, please work _extremely_ closely with me on it. |
| |
| 1a) Possibly a special case of this is the .KEEP_STATE feature of Sun's |
| make. Some great folks at W U. in Canada did an implementation of |
| this for a class project. Their approach is reasonable and |
| workable, but doesn't really fit into my ideas for #2. Maybe |
| that's OK. I have paperwork for their work so if you want to do |
| this one talk to me to get what they've already done. |
| |
| [K R Praveen <praveen@cair.res.in>] |
| |
| 2) Currently you can use "%.foo %.bar : %.baz" to mean that one |
| invocation of the rule builds both targets. GNU make needs a way to |
| do that for explicit rules, too. I heard a rumor that some versions |
| of make all you to say "a.foo + a.bar : a.baz" to do this (i.e., a |
| "+" means one invocation builds both). Don't know if this is the |
| best syntax or not... what if you say "a.foo + a.bar a.bam : a.baz"; |
| what does that mean? |
| |
| 3) Multi-token pattern rule matching (allow %1/%2.c : %1/obj/%2.o, |
| etc., or something like that). Maybe using regex? |
| |
| 4) Provide a .TARGETS variable, containing the names of the targets |
| defined in the makefile. |
| |
| Actually, I now think a $(targets ...) function, at least, might be |
| better than a MAKETARGETS variable. The argument would be types of |
| targets to list: "phony" is the most useful one. I suppose |
| "default" might also be useful. Maybe some others; check the |
| bitfields to see what might be handy. |
| |
| 5) Some sort of operating-system independent way of handling paths |
| would be outstanding, so makefiles can be written for UNIX, VMS, |
| DOS, MS-Windows, Amiga, etc. with a minimum of specialization. |
| |
| Or, perhaps related/instead of, some sort of meta-quoting syntax so |
| make can deal with filenames containing spaces, colons, etc. I |
| dunno, maybe something like $[...]? This may well not be worth |
| doing until #1 is done. |
| |
| 6) Right now the .PRECIOUS, .INTERMEDIATE, and .SECONDARY |
| pseudo-targets have different capabilities. For example, .PRECIOUS |
| can take a "%", the others can't. Etc. These should all work the |
| same, insofar as that makes sense. |
| |
| 7) Improved debugging/logging/etc. capabilities. Part of this is done: |
| I introduced a number of debugging enhancements. Tim Magill is (I |
| think) looking into options to control output more selectively. |
| One thing I want to do in debugging is add a flag to allow debugging |
| of variables as they're expanded (!). This would be incredibly |
| verbose, but could be invaluable when nothing else seems to work and |
| you just can't figure it out. The way variables are expanded now |
| means this isn't 100% trivial, but it probably won't be hard. |
| |
| |
| ------------------------------------------------------------------------------- |
| Copyright (C) 1997-2020 Free Software Foundation, Inc. |
| This file is part of GNU Make. |
| |
| GNU Make is free software; you can redistribute it and/or modify it under the |
| terms of the GNU General Public License as published by the Free Software |
| Foundation; either version 3 of the License, or (at your option) any later |
| version. |
| |
| GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY |
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR |
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License along with |
| this program. If not, see <http://www.gnu.org/licenses/>. |