Make handling of errcodes.h more consistent with other generated headers.
authorRobert Haas <[email protected]>
Fri, 4 Feb 2011 14:28:06 +0000 (09:28 -0500)
committerRobert Haas <[email protected]>
Fri, 4 Feb 2011 14:29:10 +0000 (09:29 -0500)
This fixes make distprep, and seems more robust in other ways as well.
Some special handling is required because errcodes.txt is needed by
some stuff in src/port, but just by src/backend as is the case for the
other generated headers.

While I'm at it, fix a few other things that were overlooked in the
original patch.

src/Makefile
src/backend/Makefile
src/backend/utils/Makefile
src/include/Makefile
src/port/Makefile
src/tools/msvc/clean.bat

index a92153e78370e3d0bbb20130bd722bdf7369647b..4469d2cdf2c004e178d9b9d3c268e913224c4a93 100644 (file)
@@ -30,18 +30,6 @@ SUBDIRS = \
 # don't attempt parallel make here.
 .NOTPARALLEL:
 
-# generate errcodes.h before recursing in the subdirectories
-$(SUBDIRS:%=all-%-recurse): $(top_builddir)/src/include/utils/errcodes.h
-$(SUBDIRS:%=install-%-recurse): $(top_builddir)/src/include/utils/errcodes.h
-
-backend/utils/errcodes.h: backend/utils/generate-errcodes.pl $(top_srcdir)/src/backend/utils/errcodes.txt
-   $(MAKE) -C backend/utils errcodes.h
-
-$(top_builddir)/src/include/utils/errcodes.h: backend/utils/errcodes.h
-   prereqdir=`cd $(dir $<) >/dev/null && pwd` && \
-     cd $(dir $@) && rm -f $(notdir $@) && \
-     $(LN_S) "$$prereqdir/$(notdir $<)" .
-
 $(recurse)
 
 install: install-local
index 7e619326d231da9c6777702b03d0954bfb60d749..2b2c9bb9a225c6f7f3297446236df5b4cc096186 100644 (file)
@@ -114,13 +114,16 @@ endif
 endif # aix
 
 # Update the commonly used headers before building the subdirectories
-$(SUBDIRS:%=%-recursive): $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/catalog/schemapg.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/probes.h
+$(SUBDIRS:%=%-recursive): $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/catalog/schemapg.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/errcodes.h $(top_builddir)/src/include/utils/probes.h
 
 # run this unconditionally to avoid needing to know its dependencies here:
 submake-schemapg:
    $(MAKE) -C catalog schemapg.h
 
-.PHONY: submake-schemapg
+# src/port needs a convenient way to force errcodes.h to get built
+submake-errcodes: $(top_builddir)/src/include/utils/errcodes.h
+
+.PHONY: submake-schemapg submake-errcodes
 
 catalog/schemapg.h: | submake-schemapg
 
@@ -143,6 +146,9 @@ parser/gram.h: parser/gram.y
 utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h
    $(MAKE) -C utils fmgroids.h
 
+utils/errcodes.h: utils/generate-errcodes.pl utils/errcodes.txt
+   $(MAKE) -C utils errcodes.h
+
 utils/probes.h: utils/probes.d
    $(MAKE) -C utils probes.h
 
@@ -167,6 +173,10 @@ $(top_builddir)/src/include/catalog/schemapg.h: catalog/schemapg.h
      cd $(dir $@) && rm -f $(notdir $@) && \
      $(LN_S) "$$prereqdir/$(notdir $<)" .
 
+$(top_builddir)/src/include/utils/errcodes.h: utils/errcodes.h
+   cd $(dir $@) && rm -f $(notdir $@) && \
+       $(LN_S) ../../../$(subdir)/utils/errcodes.h .
+
 $(top_builddir)/src/include/utils/fmgroids.h: utils/fmgroids.h
    prereqdir=`cd $(dir $<) >/dev/null && pwd` && \
      cd $(dir $@) && rm -f $(notdir $@) && \
@@ -187,7 +197,7 @@ distprep:
    $(MAKE) -C parser   gram.c gram.h scan.c
    $(MAKE) -C bootstrap    bootparse.c bootscanner.c
    $(MAKE) -C catalog  schemapg.h postgres.bki postgres.description postgres.shdescription
-   $(MAKE) -C utils    fmgrtab.c fmgroids.h
+   $(MAKE) -C utils    fmgrtab.c fmgroids.h errcodes.h
    $(MAKE) -C utils/misc   guc-file.c
 
 
index c855042100fa014bc41614aa21165814a3162835..837453371802fb2b2fb2f73ea9bc4044d6af779c 100644 (file)
@@ -16,7 +16,7 @@ catalogdir  = $(top_srcdir)/src/backend/catalog
 
 include $(top_srcdir)/src/backend/common.mk
 
-all: fmgroids.h probes.h
+all: errcodes.h fmgroids.h probes.h
 
 $(SUBDIRS:%=%-recursive): fmgroids.h
 
index 3701ad05411d1bfaa8aabc2fa56653f32f8ac99c..0d5f04932b52033fd3b12b282a27cf0fbca51d9e 100644 (file)
@@ -40,6 +40,7 @@ install: all installdirs
 # These headers are needed for server-side development
    $(INSTALL_DATA) pg_config.h    '$(DESTDIR)$(includedir_server)'
    $(INSTALL_DATA) pg_config_os.h '$(DESTDIR)$(includedir_server)'
+   $(INSTALL_DATA) utils/errcodes.h '$(DESTDIR)$(includedir_server)/utils'
    $(INSTALL_DATA) utils/fmgroids.h '$(DESTDIR)$(includedir_server)/utils'
 # We don't use INSTALL_DATA for performance reasons --- there are a lot of files
    cp $(srcdir)/*.h '$(DESTDIR)$(includedir_server)'/ || exit; \
index fc65e4bd3e9636de30b14eb3a176fdf7f192ba63..ca8a9a0e6503ac6e292f090abdeafceb5116d578 100644 (file)
@@ -70,6 +70,13 @@ libpgport_srv.a: $(OBJS_SRV)
 %_srv.o: %.c
    $(CC) $(CFLAGS) $(subst -DFRONTEND,, $(CPPFLAGS)) -c $< -o $@
 
+$(OBJS_SRV): | submake-errcodes
+
+.PHONY: submake-errcodes
+
+submake-errcodes:
+   make -C ../backend submake-errcodes
+
 # Dependency is to ensure that path changes propagate
 
 path.o: path.c pg_config_paths.h
index 753ab39697e89d7f6d84161ddb90b3481add8021..a59bbe55da93df6c10248933e37a837f7db61690 100755 (executable)
@@ -20,6 +20,7 @@ REM Delete files created with GenerateFiles() in Solution.pm
 if exist src\include\pg_config.h del /q src\include\pg_config.h
 if exist src\include\pg_config_os.h del /q src\include\pg_config_os.h
 if %DIST%==1 if exist src\backend\parser\gram.h del /q src\backend\parser\gram.h
+if exist src\include\utils\errcodes.h del /q src\include\utils\errcodes.h
 if exist src\include\utils\fmgroids.h del /q src\include\utils\fmgroids.h
 if exist src\include\utils\probes.h del /q src\include\utils\probes.h