OSDN Git Service

Make handling of errcodes.h more consistent with other generated headers.
authorRobert Haas <rhaas@postgresql.org>
Fri, 4 Feb 2011 14:28:06 +0000 (09:28 -0500)
committerRobert Haas <rhaas@postgresql.org>
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 a92153e..4469d2c 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 7e61932..2b2c9bb 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 c855042..8374533 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 3701ad0..0d5f049 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 fc65e4b..ca8a9a0 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 753ab39..a59bbe5 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