GNU Make - Dependencies on non program code

Posted by Tim Post on Stack Overflow See other posts from Stack Overflow or by Tim Post
Published on 2010-05-23T01:41:40Z Indexed on 2010/05/23 1:50 UTC
Read the original article Hit count: 253

Filed under:
|
|
|

A requirement for a program I am writing is that it must be able to trust a configuration file. To accomplish this, I am using several kinds of hashing algorithms to generate a hash of the file at compile time, this produces a header with the hashes as constants.

Dependencies for this are pretty straight forward, my program depends on config_hash.h, which has a target that produces it.

The makefile looks something like this :

config_hash.h:
    $(SH) genhash config/config_file.cfg > $(srcdir)/config_hash.h

$(PROGRAM): config_hash.h $(PROGRAM_DEPS)
    $(CC) ... ... ... 

I'm using the -M option to gcc, which is great for dealing with dependencies. If my header changes, my program is rebuilt.

My problem is, I need to be able to tell if the config file has changed, so that config_hash.h is re-generated. I'm not quite sure how explain that kind of dependency to GNU make.

I've tried listing config/config_file.cfg as a dependency for config_hash.h, and providing a .PHONY target for config_file.cfg without success. Obviously, I can't rely on the -M switch to gcc to help me here, since the config file is not a part of any object code.

Any suggestions? Unfortunately, I can't post much of the Makefile, or I would have just posted the whole thing.

© Stack Overflow or respective owner

Related posts about c

    Related posts about gcc