3 ms·
What's your solution for mutliple-output processes like yacc/bison (which creates both an .h and a .c file?)
by beagle3 9y ago
What's your solution for mutliple-output processes like yacc/bison (which creates both an .h and a .c file?)
- aidenn0 9y agoI don't run into those too often. When I do, there are two cases: 1) All dependencies are on only one output file (e.g. link stages that generate .map files, compile phases that generate separate .o and debug files). I just treat these as normal 2) I may need to depend on each of the files (I don't use yacc/bison, but it sounds like this would qualify). I select one file to be the main output and have the .do file for that ensure that the secondary outputs go to a mangled name; I then have the .do files for the secondary outputs rename the mangled file. quick example for generating foo.c/foo.h foo.c.do: generate-file --cout "$3" --hout "$2-mangled.h" foo.h.do: redo-ifchange "$2.c" mv "$2-mangled.h" "$3"
- beagle3 9y agoIf the h output changes but the c doesn’t, this rule will miss it. I once solved it by making a tar file or all the outputs and extracting it to both .c and .h but that’s incredibly kludgy, still looking for a better solution
- aidenn0 9y agoAs long as the timestamp changes on the C file, that's fine, right? At least with the version of redo I use timestamps are used by default, not file contents.