is it possible to avoid re-run configure and do incremental builds when some sub-makefiles has been changed?

32 Views Asked by At

GCC defines the sub-makefile as Make-lang.in, and it contains:

tiny_OBJS = \
    tiny/tiny1.o \
    $(END)

When I add some component, I changed it to:

tiny_OBJS = \
    tiny/tiny1.o \
    tiny/tiny-token.o \
    tiny/tiny-lexer.o \
    $(END)

So all the rest is untouched, and I want make an incremental builds on those 2 new files and don't re-compiler anything else. The problem is that if I don't re-run the configure, it gives me some un-declaration problems, seems the new file had not been recognized.

I'm not sure whether I did something wrong or the autoconf is designed to re-run configure at this situation. If it is, can I have some hooks to avoid it? as re-compiler everything takes too long.

1

There are 1 best solutions below

0
MadScientist On

If you change a *.in file, you have to re-run something because the *.in file has to be converted into the real makefile.

First, any typical autotools makefile (such as generated by automake) has a rule in it for doing this automatically so you don't have to do anything by hand: if you run make and it sees that your .in file has been changed, it will automatically update it for you in the most efficient way possible then restart the make.

If your makefiles don't have such a rule you'll have to do it by hand. You certainly do not need to re-run autoconf to generate a new configure, and you don't even need to run configure. You can run config.status which just rebuilds the output files using the existing configuration. See: https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/config_002estatus-Invocation.html