This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: export more plugin headers


This is the patch I committed.  Thanks to Rafael for adding a test to
make sure the headers are present.

Tested on x86_64.


Diego.



2009-07-14  Taras Glek  <tglek@mozilla.com>
	    Rafael Espindola  <espindola@google.com>

	* doc/sourcebuild.texi: Document install-plugin target.
	* configure.ac: Added install-plugin target to language makefiles.
	* configure: Regenerate.
	* Makefile.in: (install-plugin): Install more headers,
	depend on lang.install-plugin.

ada/ChangeLog

	* gcc-interface/Make-lang.in (ada.install-plugin): New target for
	installing plugin headers.

cp/ChangeLog

	* Make-lang.in: Added CP_PLUGIN_HEADERS and
	c.install-target to export cp-tree.h cxx-pretty-print.h
	name-lookup.h headers for plugins.

fortran/ChangeLog

	* Make-lang.in (fortran.install-plugin): New target for
	installing plugin headers.

java/ChangeLog

	* Make-lang.in (java.install-plugin): New target for
	installing plugin headers.

objc/ChangeLog

	* Make-lang.in (objc.install-plugin): New target for
	installing plugin headers.

objcp/ChangeLog

	* Make-lang.in (obj-c.install-plugin): New target for
	installing plugin headers.

Index: doc/sourcebuild.texi
===================================================================
--- doc/sourcebuild.texi	(revision 149625)
+++ doc/sourcebuild.texi	(working copy)
@@ -615,6 +615,8 @@ that should be installed.
 @item install-man
 Install man pages for the front end.  This target should ignore
 errors.
+@item install-plugin
+Install headers needed for plugins.
 @item srcextra
 Copies its dependencies into the source directory.  This generally should
 be used for generated files such as Bison output files which are not
Index: java/Make-lang.in
===================================================================
--- java/Make-lang.in	(revision 149625)
+++ java/Make-lang.in	(working copy)
@@ -180,6 +180,7 @@ java.install-common: installdirs
           fi ; \
        done

+java.install-plugin:
 java.install-man:

 java.uninstall:
Index: objc/Make-lang.in
===================================================================
--- objc/Make-lang.in	(revision 149625)
+++ objc/Make-lang.in	(working copy)
@@ -98,6 +98,7 @@ objc.html:
 objc.man:
 objc.srcinfo:
 objc.srcman:
+objc.install-plugin:

 objc.tags: force
 	cd $(srcdir)/objc; etags -o TAGS.sub *.c *.h; \
Index: testsuite/g++.dg/plugin/header-plugin-test.C
===================================================================
--- testsuite/g++.dg/plugin/header-plugin-test.C	(revision 0)
+++ testsuite/g++.dg/plugin/header-plugin-test.C	(revision 0)
@@ -0,0 +1,3 @@
+// Test case for the dumb plugin.
+// { dg-do compile }
+
Index: testsuite/g++.dg/plugin/header_plugin.c
===================================================================
--- testsuite/g++.dg/plugin/header_plugin.c	(revision 0)
+++ testsuite/g++.dg/plugin/header_plugin.c	(revision 0)
@@ -0,0 +1,32 @@
+#include "gcc-plugin.h"
+#include <stdlib.h>
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "tree.h"
+#include "tree-pass.h"
+#include "intl.h"
+
+/* reqs */
+#include "tm.h"
+
+/* gcc/ headers. */
+#include "diagnostic.h"
+#include "c-common.h"
+#include "c-pretty-print.h"
+#include "tree-iterator.h"
+#include "plugin.h"
+#include "tree-flow.h"
+#include "langhooks.h"
+#include "cp/cp-tree.h"
+#include "cp/cxx-pretty-print.h"
+#include "cp/name-lookup.h"
+
+int plugin_is_GPL_compatible;
+
+int
+plugin_init (struct plugin_name_args *plugin_info,
+             struct plugin_gcc_version *version)
+{
+  return 0;
+}
Index: testsuite/g++.dg/plugin/plugin.exp
===================================================================
--- testsuite/g++.dg/plugin/plugin.exp	(revision 149625)
+++ testsuite/g++.dg/plugin/plugin.exp	(working copy)
@@ -49,7 +49,8 @@ load_lib plugin-support.exp
 set plugin_test_list [list \
     { attribute_plugin.c attribute_plugin-test-1.C } \
     { selfassign.c self-assign-test-1.C self-assign-test-2.C
self-assign-test-3.C } \
-    { dumb_plugin.c dumb-plugin-test-1.C } ]
+    { dumb_plugin.c dumb-plugin-test-1.C } \
+    { header_plugin.c header-plugin-test.C } ]

 foreach plugin_test $plugin_test_list {
     # Replace each source file with its full-path name
Index: objcp/Make-lang.in
===================================================================
--- objcp/Make-lang.in	(revision 149625)
+++ objcp/Make-lang.in	(working copy)
@@ -107,6 +107,7 @@ obj-c++.html:
 obj-c++.srcinfo:
 obj-c++.srcextra:
 obj-c++.man:
+obj-c++.install-plugin:

 obj-c++.tags: force
 	cd $(srcdir)/objcp; etags -o TAGS.sub *.y *.c *.h; \
Index: cp/Make-lang.in
===================================================================
--- cp/Make-lang.in	(revision 149625)
+++ cp/Make-lang.in	(working copy)
@@ -41,6 +41,7 @@ CXX_INSTALL_NAME := $(shell echo c++|sed
 GXX_INSTALL_NAME := $(shell echo g++|sed '$(program_transform_name)')
 CXX_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo
c++|sed '$(program_transform_name)')
 GXX_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo
g++|sed '$(program_transform_name)')
+CP_PLUGIN_HEADERS := cp-tree.h cxx-pretty-print.h name-lookup.h

 #
 # Define the names for selecting c++ in LANGUAGES.
@@ -189,6 +190,19 @@ $(DESTDIR)$(man1dir)/$(GXX_INSTALL_NAME)
 	-$(INSTALL_DATA) $< $@
 	-chmod a-x $@

+c++.install-plugin: installdirs
+# We keep the directory structure for files in config and .def files. All
+# other files are flattened to a single directory.
+	headers="$(CP_PLUGIN_HEADERS)"; \
+	for file in $$headers; do \
+	  path=$(srcdir)/cp/$$file; \
+	  dest=$(plugin_includedir)/cp/$$file; \
+	  echo $(INSTALL_DATA) $$path $(DESTDIR)$$dest; \
+	  dir=`dirname $$dest`; \
+	  $(mkinstalldirs) $(DESTDIR)$$dir; \
+	  $(INSTALL_DATA) $$path $(DESTDIR)$$dest; \
+	done
+
 c++.uninstall:
 	-rm -rf $(DESTDIR)$(bindir)/$(CXX_INSTALL_NAME)$(exeext)
 	-rm -rf $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext)
Index: ada/gcc-interface/Make-lang.in
===================================================================
--- ada/gcc-interface/Make-lang.in	(revision 149625)
+++ ada/gcc-interface/Make-lang.in	(working copy)
@@ -714,6 +714,7 @@ install-gnatlib-obj:
 	$(MAKE) -C ada $(FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib-obj

 ada.install-man:
+ada.install-plugin:

 ada.uninstall:
 	-$(RM) $(DESTDIR)$(bindir)/gnatbind$(exeext)
Index: fortran/Make-lang.in
===================================================================
--- fortran/Make-lang.in	(revision 149625)
+++ fortran/Make-lang.in	(working copy)
@@ -234,6 +234,8 @@ fortran.install-common: install-finclude
 	  fi ; \
 	fi

+fortran.install-plugin:
+
 fortran.install-info: $(DESTDIR)$(infodir)/gfortran.info

 fortran.install-man: $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext)
Index: configure.ac
===================================================================
--- configure.ac	(revision 149625)
+++ configure.ac	(working copy)
@@ -3942,7 +3942,7 @@ touch Make-hooks
 target_list="all.cross start.encap rest.encap tags \
 	install-common install-man install-info install-pdf dvi pdf \
 	html uninstall info man srcextra srcman srcinfo \
-	mostlyclean clean distclean maintainer-clean"
+	mostlyclean clean distclean maintainer-clean install-plugin"

 for t in $target_list
 do
Index: Makefile.in
===================================================================
--- Makefile.in	(revision 149625)
+++ Makefile.in	(working copy)
@@ -4079,10 +4079,11 @@ PLUGIN_HEADERS = $(TREE_H) $(CONFIG_H) $
   $(GGC_H) $(TREE_DUMP_H) $(PRETTY_PRINT_H) \
   $(tm_file_list) $(tm_include_list) $(tm_p_file_list) $(tm_p_include_list) \
   $(host_xm_file_list) $(host_xm_include_list) $(xm_include_list) \
-  intl.h $(PLUGIN_VERSION_H)
+  intl.h $(PLUGIN_VERSION_H) $(DIAGNOSTIC_H) $(C_COMMON_H)
$(C_PRETTY_PRINT_H) \
+  tree-iterator.h $(PLUGIN_H) $(TREE_FLOW_H) langhooks.h

 # Install the headers needed to build a plugin.
-install-plugin: installdirs
+install-plugin: installdirs lang.install-plugin
 # We keep the directory structure for files in config and .def files. All
 # other files are flattened to a single directory.
 	$(mkinstalldirs) $(DESTDIR)$(plugin_includedir)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]