On 11/01/11 18:59, Tom Lane wrote: > =?UTF-8?B?SmFuIFVyYmHFhHNraQ==?= <wulc...@wulczer.org> writes: >> On 11/01/11 17:11, Tom Lane wrote: >>> Huh? Why in the world would the specific location of the #include have >>> anything to do with the problem? > >> I'v having a hard time convincing make to generate errcodes.h before >> compiling any .c file that includes postgres.h. The only way I found was >> to make src/include/errcodes.h a dependancy of the all target. > > Peter would probably be a better person than me to answer that, but I > imagine that what you want is similar to what src/backend/Makefile does > for parser/gram.h, only applied at the src/ level or maybe even the > root.
OK, that was a nudge in the right direction. Basing the rules from src/backend/Makefile I changed src/Makefile to rebuild src/include/errcodes.h before building the subdirectories and... it failed miserably. There's some trickery beyond my understanding here. There's a rule like this in src/backend/Makefile: $(SUBDIRS:%=%-recursive): $(top_builddir)/src/include/parser/gram.h that triggers checking whether gram.h needs to be rebuilt before recursing into each SUBDIR. A similar trick in src/Makefile doesn't work, because it's src/backend/common.mk that is responsible for the SUBDIR-recursive calls, and src/Makefile does not include it. >From what I gathered by reading Makefile.global, the $(recurse) call in enters each SUBDIR and builds a target called <target>-<subdir>-recurse. And actually, if I change my rule to read: $(SUBDIRS:%=all-%-recurse): $(top_builddir)/src/include/utils/errcodes.h it works. Now whether that's acceptable or not is another thing entirely... Cheers, Jan -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers