IDL dependency tracking



Here's a patch that adds dependency tracking support to the ORBit2 IDL
compiler, and uses the new feature throughout the build. I also
sanitized the IDL build in other ways while I was at it. No more
infinite loops of error output when you make a mistake in an IDL
file. :-)

ORBit2 passes `make distcheck' with this, for me anyway. gmake-isms
are properly restricted to maintainer-mode.

Does anyone object to this? Once I get this in I'd like to fix IDL
compilation for the rest of GNOME 2.


Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/ORBit2/ChangeLog,v
retrieving revision 1.122
diff -u -p -r1.122 ChangeLog
--- ChangeLog	2001/08/13 22:39:41	1.122
+++ ChangeLog	2001/08/14 08:21:45
@@ -1,3 +1,46 @@
+2001-08-13  Maciej Stachowiak  <mjs noisehavoc org>
+
+	Implemented dependency tracking in the IDL compiler (much like the
+	similar feature of gcc) and use it everywhere.
+
+	* src/idl-compiler/orbit-idl-c-deps.c (orbit_idl_output_c_deps,
+	output_deps): New pass that outputs dependency info in a format
+	suitable for including into a Makefile.
+	* src/idl-compiler/orbit-idl-main.c (main): Add a --deps switch
+	which takes a filename argument.
+	* src/idl-compiler/orbit-idl-c-backend.h,
+	src/idl-compiler/orbit-idl-c-backend.c (orbit_idl_output_c):
+	Output dependencies when requested.
+	(orbit_idl_c_filename_for_pass, out_for_pass): Split out the code
+	that generates the output filename for each pass and make it
+	public, to help the new dependency pass.
+	* src/idl-compiler/orbit-idl-driver.c (orbit_idl_to_backend):
+	Always pass IDLF_SRCFILES flag, since SRCFILE nodes are required
+	by the dependency generation pass.
+	* src/idl-compiler/orbit-idl-c-headers.c (ch_output_types): Only
+	output weird stuff for SRCFILE nodes when suppressing includes.
+	* src/idl-compiler/orbit-idl3-types.h: Add dependency pass and a
+	#define for the number of passes, to help avoid magic numbers in
+	code.
+	* src/idl-compiler/Makefile.am: Add orbit-idl-c-deps.c to build. 
+
+	* Makefile.shared: Common Makefile segment that has the
+	appropriate rules for building IDL files and generating dependency
+	info for targets of IDL sources.
+
+	* include/orbit/dynamic/Makefile.am,
+	include/orbit/orb-core/Makefile.am, include/orbit/poa/Makefile.am,
+	src/orb/dynamic/Makefile.am, src/orb/include/Makefile.am,
+	src/orb/orb-core/Makefile.am, src/orb/poa/Makefile.am,
+	src/services/name/Makefile.am, test/Makefile.am,
+	test/everything/Makefile.am, test/inhibit/Makefile.am,
+	test/poa/Makefile.am: Use Makefile.shared and IDL dependencies to
+	simplify and sanitize IDL compilation.
+
+	* include/orbit/dynamic/.cvsignore,
+	include/orbit/orb-core/.cvsignore, include/orbit/poa/.cvsignore:
+	Ignore .deps directories.
+
 2001-08-14  Michael Meeks  <michael ximian com>
 
 	* src/idl-compiler/orbit-idl-c-headers.c
Index: Makefile.shared
===================================================================
RCS file: Makefile.shared
diff -N Makefile.shared
--- /dev/null	Tue May  5 16:32:27 1998
+++ Makefile.shared	Tue Aug 14 04:21:45 2001
@@ -0,0 +1,19 @@
+IDL_COMPILER = $(top_builddir)/src/idl-compiler/orbit-idl
+
+%.h %-stubs.c %-skels.c %-common.c %-imodule.c %-skelimpl.c: $(IDL_DIR)%.idl $(IDL_COMPILER)
+	-(rm -f $(*).h $(*)-stubs.c $(*)-skels.c $(*)-common.c $(*)-imodule.c $(*)-skelimpl.c || true) > /dev/null
+	$(IDL_COMPILER) $(IDL_FLAGS) --deps .deps/$*.idl.P $<
+	for I in $(*).h $(*)-stubs.c $(*)-skels.c $(*)-common.c $(*)-imodule.c $(*)-skelimpl.c; do \
+		if test -f $$I; then \
+			sed -e 's,OObject,Object,g' -e 's,TTypeCode,TypeCode,g' $$I > $$I.out; \
+			mv $$I.out $$I ; \
+		fi; \
+	done
+
+if MAINTAINER_MODE
+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
+IDL_DEP_FILES = $(IDL_FILES:%.idl=.deps/%.idl.P)
+-include $(IDL_DEP_FILES)
+distclean-local:
+	-rm -rf .deps
+endif
Index: include/orbit/dynamic/.cvsignore
===================================================================
RCS file: /cvs/gnome/ORBit2/include/orbit/dynamic/.cvsignore,v
retrieving revision 1.2
diff -u -p -r1.2 .cvsignore
--- include/orbit/dynamic/.cvsignore	2001/03/22 12:37:55	1.2
+++ include/orbit/dynamic/.cvsignore	2001/08/14 08:21:45
@@ -1,3 +1,4 @@
 Makefile
 Makefile.in
 dynamic-defs.h
+.deps
Index: include/orbit/dynamic/Makefile.am
===================================================================
RCS file: /cvs/gnome/ORBit2/include/orbit/dynamic/Makefile.am,v
retrieving revision 1.2
diff -u -p -r1.2 Makefile.am
--- include/orbit/dynamic/Makefile.am	2001/06/19 15:01:24	1.2
+++ include/orbit/dynamic/Makefile.am	2001/08/14 08:21:45
@@ -2,3 +2,20 @@ dynamicincludedir=$(includedir)/orbit/dy
 dynamicinclude_HEADERS= \
 	dynamic.h	\
 	dynamic-defs.h
+
+BUILT_SOURCES=dynamic-defs.h
+
+IDL_FLAGS=-I$(top_srcdir)/src/idl/CORBA_PIDL			\
+	-I$(top_srcdir)/src/idl/CORBA				\
+	-I$(top_srcdir)/src/orb/orb-core			\
+	-I$(top_srcdir)/src/idl/misc				\
+	--define=Object=OObject --define=TypeCode=TTypeCode	\
+	--noskels --nodefskels --nostubs --nocommon --noidata	\
+        --showcpperrors 
+IDL_DIR=$(top_srcdir)/src/orb/dynamic/
+IDL_FILES=dynamic-defs.idl
+
+include $(top_srcdir)/Makefile.shared
+
+CLEANFILES=$(BUILT_SOURCES)
+
Index: include/orbit/orb-core/.cvsignore
===================================================================
RCS file: /cvs/gnome/ORBit2/include/orbit/orb-core/.cvsignore,v
retrieving revision 1.3
diff -u -p -r1.3 .cvsignore
--- include/orbit/orb-core/.cvsignore	2001/06/19 15:01:24	1.3
+++ include/orbit/orb-core/.cvsignore	2001/08/14 08:21:45
@@ -5,3 +5,4 @@ iop-defs.h
 poa-defs.h
 dynamic-defs.h
 orbit-interface.h
+.deps
Index: include/orbit/orb-core/Makefile.am
===================================================================
RCS file: /cvs/gnome/ORBit2/include/orbit/orb-core/Makefile.am,v
retrieving revision 1.8
diff -u -p -r1.8 Makefile.am
--- include/orbit/orb-core/Makefile.am	2001/07/11 17:56:39	1.8
+++ include/orbit/orb-core/Makefile.am	2001/08/14 08:21:45
@@ -29,10 +29,25 @@ orbcoreinclude_HEADERS= \
 	corba-any-type.h		\
 	orbit-interface.h
 
-IDL = $(top_builddir)/src/idl-compiler/orbit-idl
-IDLOUT = corba-defs.h iop-defs.h
+BUILT_SOURCES = corba-defs.h iop-defs.h orbit-interface.h
 
-$(IDLOUT) runidl: $(top_srcdir)/src/orb/orb-core/corba-defs.idl $(IDL)
-	-(rm -f $(IDLOUT) || true) > /dev/null
-	$(IDL) -I$(top_srcdir)/src/idl/CORBA_PIDL -I$(top_srcdir)/src/idl/CORBA --noskels --nodefskels --nostubs --nocommon --noidata \
-                --showcpperrors $(top_srcdir)/src/orb/orb-core/corba-defs.idl
+IDL_FLAGS_NO_DEFS = -I$(top_srcdir)/src/idl/CORBA_PIDL	\
+	-I$(top_srcdir)/src/idl/CORBA			\
+	-I$(top_srcdir)/src/idl/interop			\
+	--noskels --nodefskels --nostubs --noidata	\
+	--nocommon					\
+        --showcpperrors
+IDL_FLAGS = $(IDL_FLAGS_NO_DEFS)		\
+	 --define=Object=OObject		\
+	--define=TypeCode=TTypeCode
+IDL_FILES=corba-defs.idl iop-defs.idl orbit-interface.idl
+IDL_DIR=$(top_srcdir)/src/orb/orb-core/
+
+include $(top_srcdir)/Makefile.shared
+
+orbit-interface.h: $(top_srcdir)/src/orb/orb-core/orbit-interface.idl $(IDL_COMPILER)
+	-(rm -f orbit-interface.h || true ) > /dev/null
+	$(IDL_COMPILER) $(IDL_FLAGS_NO_DEFS) --deps .deps/orbit-interface.idl.P $<
+
+
+CLEANFILES=$(BUILT_SOURCES)
Index: include/orbit/poa/.cvsignore
===================================================================
RCS file: /cvs/gnome/ORBit2/include/orbit/poa/.cvsignore,v
retrieving revision 1.3
diff -u -p -r1.3 .cvsignore
--- include/orbit/poa/.cvsignore	2001/03/30 15:22:53	1.3
+++ include/orbit/poa/.cvsignore	2001/08/14 08:21:45
@@ -1,3 +1,4 @@
 Makefile
 Makefile.in
 poa-defs.h
+.deps
Index: include/orbit/poa/Makefile.am
===================================================================
RCS file: /cvs/gnome/ORBit2/include/orbit/poa/Makefile.am,v
retrieving revision 1.4
diff -u -p -r1.4 Makefile.am
--- include/orbit/poa/Makefile.am	2001/07/31 14:39:40	1.4
+++ include/orbit/poa/Makefile.am	2001/08/14 08:21:45
@@ -8,3 +8,19 @@ poainclude_HEADERS= \
 	portableserver-poa-type.h \
 	portableserver-current-type.h \
 	orbit-adaptor.h
+
+
+BUILT_SOURCES = poa-defs.h
+
+IDL_FLAGS =  -I$(top_srcdir)/src/idl/CORBA_PIDL				\
+	-I$(top_srcdir)/src/idl/CORBA					\
+	-I$(top_srcdir)/src/orb/orb-core				\
+	-I$(top_srcdir)/src/idl/misc					\
+	--define=Object=OObject --define=TypeCode=TTypeCode		\
+	--noskels --nodefskels --nostubs --nocommon --noidata		\
+        --showcpperrors
+IDL_FILES= POA-defs.idl
+IDL_DIR=$(top_srcdir)/src/orb/poa/
+include $(top_srcdir)/Makefile.shared
+
+CLEANFILES=$(BUILT_SOURCES)
Index: src/idl-compiler/Makefile.am
===================================================================
RCS file: /cvs/gnome/ORBit2/src/idl-compiler/Makefile.am,v
retrieving revision 1.13
diff -u -p -r1.13 Makefile.am
--- src/idl-compiler/Makefile.am	2001/07/23 22:25:43	1.13
+++ src/idl-compiler/Makefile.am	2001/08/14 08:21:45
@@ -35,6 +35,7 @@ orbit_idl_SOURCES=orbit-idl-main.c \
         orbit-idl-c-typecode.c \
         orbit-idl-c-marshal.c \
         orbit-idl-c-demarshal.c \
+        orbit-idl-c-deps.c \
 	orbit-idl-marshal.c \
 	orbit-idl-marshal.h
 
Index: src/idl-compiler/orbit-idl-c-backend.c
===================================================================
RCS file: /cvs/gnome/ORBit2/src/idl-compiler/orbit-idl-c-backend.c,v
retrieving revision 1.12
diff -u -p -r1.12 orbit-idl-c-backend.c
--- src/idl-compiler/orbit-idl-c-backend.c	2001/07/23 22:25:43	1.12
+++ src/idl-compiler/orbit-idl-c-backend.c	2001/08/14 08:21:45
@@ -32,7 +32,7 @@ orbit_idl_output_c(OIDL_Output_Tree *tre
   ci.do_impl_hack = 1;
   ci.do_skel_defs = rinfo->do_skel_defs;
   ci.ctxt = tree->ctxt;
-  for(i = 0; i < 6; i++) {
+  for(i = 0; i < OUTPUT_NUM_PASSES; i++) {
     if( (1 << i) & rinfo->enabled_passes) {
       ci.fh = out_for_pass(rinfo->input_filename, 1 << i, rinfo);
       
@@ -55,31 +55,33 @@ orbit_idl_output_c(OIDL_Output_Tree *tre
       case OUTPUT_IMODULE:
 	orbit_idl_output_c_imodule(tree, rinfo, &ci);
 	break;
+      case OUTPUT_DEPS:
+	orbit_idl_output_c_deps(tree, rinfo, &ci);
+	break;
       }
-      pclose(ci.fh);
+      if (1 << i == OUTPUT_DEPS)
+	fclose(ci.fh);
+      else 
+	pclose(ci.fh);
     }
   }
   g_string_free(ci.ext_dcls,TRUE);
 }
 
-static FILE *
-out_for_pass(const char *input_filename, int pass, OIDL_Run_Info *rinfo)
+char *
+orbit_idl_c_filename_for_pass (const char *input_filename, 
+                               int pass)
 {
-  char *tack_on = NULL; /* Quiet gcc */
-  char *basein;
-  char *ctmp;
-  char *cmdline;
-
-  basein = g_alloca(strlen(input_filename) + sizeof("-skelimpl.c"));
-  ctmp = g_path_get_basename(input_filename);
-  strcpy(basein, ctmp);
-  g_free(ctmp);
-
-  ctmp = strrchr(basein, '.');
-
-  g_assert(ctmp);
-
-  *ctmp = '\0';
+  char *filename;
+  char *basename;
+  char *dot;
+  const char *tack_on = NULL;
+  
+  basename = g_path_get_basename (input_filename);
+  dot = strrchr (basename, '.');
+  if (dot != NULL) {
+    *dot = '\0';
+  }
 
   switch(pass) {
   case OUTPUT_STUBS:
@@ -105,10 +107,27 @@ out_for_pass(const char *input_filename,
     break;
   }
 
-  strcat(basein, tack_on);
+  filename = g_strconcat (basename, tack_on, NULL);
+  g_free (basename);
+  return filename;
+}
+
+static FILE *
+out_for_pass(const char *input_filename, int pass, OIDL_Run_Info *rinfo)
+{
+  char *output_filename;
+  char *cmdline;
 
-  cmdline = g_alloca(strlen(rinfo->output_formatter) + strlen(basein) 
-		   + sizeof(" > "));
-  sprintf(cmdline, "%s > %s", rinfo->output_formatter, basein);
-  return popen(cmdline, "w");
+  if (pass == OUTPUT_DEPS) {
+    return fopen (rinfo->deps_file, "w");
+  } else {
+    output_filename = orbit_idl_c_filename_for_pass (input_filename, pass);
+
+    cmdline = g_alloca(strlen(rinfo->output_formatter) + strlen(output_filename) 
+		       + sizeof(" > "));
+    sprintf(cmdline, "%s > %s", rinfo->output_formatter, output_filename);
+
+    g_free (output_filename);
+    return popen(cmdline, "w");
+  }
 }
Index: src/idl-compiler/orbit-idl-c-backend.h
===================================================================
RCS file: /cvs/gnome/ORBit2/src/idl-compiler/orbit-idl-c-backend.h,v
retrieving revision 1.26
diff -u -p -r1.26 orbit-idl-c-backend.h
--- src/idl-compiler/orbit-idl-c-backend.h	2001/07/23 22:25:43	1.26
+++ src/idl-compiler/orbit-idl-c-backend.h	2001/08/14 08:21:45
@@ -29,12 +29,14 @@ typedef struct {
 void orbit_idl_output_c(OIDL_Output_Tree *tree, OIDL_Run_Info *rinfo);
 
 /* Used internally */
+char *orbit_idl_c_filename_for_pass (const char *input_filename, int pass);
 void orbit_idl_output_c_headers(OIDL_Output_Tree *tree, OIDL_Run_Info *rinfo, OIDL_C_Info *ci);
 void orbit_idl_output_c_stubs(OIDL_Output_Tree *tree, OIDL_Run_Info *rinfo, OIDL_C_Info *ci);
 void orbit_idl_output_c_skeletons(OIDL_Output_Tree *tree, OIDL_Run_Info *rinfo, OIDL_C_Info *ci);
 void orbit_idl_output_c_common(OIDL_Output_Tree *tree, OIDL_Run_Info *rinfo, OIDL_C_Info *ci);
 void orbit_idl_output_c_skelimpl(OIDL_Output_Tree *tree, OIDL_Run_Info *rinfo, OIDL_C_Info *ci);
 void orbit_idl_output_c_imodule(OIDL_Output_Tree *tree, OIDL_Run_Info *rinfo, OIDL_C_Info *ci);
+void orbit_idl_output_c_deps(OIDL_Output_Tree *tree, OIDL_Run_Info *rinfo, OIDL_C_Info *ci);
 
 void orbit_output_typecode(OIDL_C_Info *ci, IDL_tree ts);
 
Index: src/idl-compiler/orbit-idl-c-deps.c
===================================================================
RCS file: orbit-idl-c-deps.c
diff -N orbit-idl-c-deps.c
--- /dev/null	Tue May  5 16:32:27 1998
+++ orbit-idl-c-deps.c	Tue Aug 14 04:21:45 2001
@@ -0,0 +1,86 @@
+/**************************************************************************
+
+    orbit-idl-c-deps.c (Dependency generation)
+
+    Copyright (C) 2001 Maciej Stachowiak
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+***************************************************************************/
+
+#include "config.h"
+#include "orbit-idl-c-backend.h"
+
+#include <string.h>
+#include <ctype.h>
+
+static void
+output_deps(IDL_tree tree, 
+	    OIDL_Run_Info *rinfo, 
+	    OIDL_C_Info *ci);
+
+
+void
+orbit_idl_output_c_deps (OIDL_Output_Tree *tree,
+			 OIDL_Run_Info *rinfo, 
+			 OIDL_C_Info *ci)
+{
+  int i;
+
+  for(i = 0; i < OUTPUT_NUM_PASSES - 1; i++) {
+    fprintf (ci->fh, "%s ", orbit_idl_c_filename_for_pass (rinfo->input_filename, 1 << i));
+  }
+  fprintf (ci->fh, ": ");
+  
+  output_deps (tree->tree, rinfo, ci);
+
+  fprintf (ci->fh, "\n");
+}
+
+
+
+static void
+output_deps(IDL_tree tree, 
+	    OIDL_Run_Info *rinfo, 
+	    OIDL_C_Info *ci)
+{
+  if(!tree) return;
+
+  switch(IDL_NODE_TYPE(tree)) {
+  case IDLN_SRCFILE:
+    {
+	char *idlfn = IDL_SRCFILE(tree).filename;
+        fprintf (ci->fh, " \\\n\t%s", idlfn);
+    }
+    break;
+  case IDLN_MODULE:
+    output_deps(IDL_MODULE(tree).definition_list, rinfo, ci);
+    break;
+  case IDLN_LIST:
+    {
+      IDL_tree sub;
+
+      for(sub = tree; sub; sub = IDL_LIST(sub).next) {
+	output_deps(IDL_LIST(sub).data, rinfo, ci);
+      }
+    }
+    break;
+  case IDLN_INTERFACE:
+    output_deps(IDL_INTERFACE(tree).body, rinfo, ci);
+    break;
+  default:
+    break;
+  }
+}
Index: src/idl-compiler/orbit-idl-c-headers.c
===================================================================
RCS file: /cvs/gnome/ORBit2/src/idl-compiler/orbit-idl-c-headers.c,v
retrieving revision 1.52
diff -u -p -r1.52 orbit-idl-c-headers.c
--- src/idl-compiler/orbit-idl-c-headers.c	2001/08/13 22:39:42	1.52
+++ src/idl-compiler/orbit-idl-c-headers.c	2001/08/14 08:21:46
@@ -148,21 +148,23 @@ ch_output_types(IDL_tree tree, OIDL_Run_
     break;
   case IDLN_SRCFILE:
     {
+      if (rinfo->onlytop) {
 	char *idlfn = IDL_SRCFILE(tree).filename;
 	if ( IDL_SRCFILE(tree).seenCnt==0 
-	  && !IDL_SRCFILE(tree).isTop 
+	     && !IDL_SRCFILE(tree).isTop 
 	  && !IDL_SRCFILE(tree).wasInhibit ) {
-	    char *hfn = g_path_get_basename(idlfn), *htail;
-	    htail = strrchr(hfn,'.');
-	    g_assert( htail && strlen(htail)>=2 );
-	    htail[1] = 'h';
-	    htail[2] = 0;
-	    fprintf(ci->fh, "#include \"%s\"\n", hfn);
+	  char *hfn = g_path_get_basename(idlfn), *htail;
+	  htail = strrchr(hfn,'.');
+	  g_assert( htail && strlen(htail)>=2 );
+	  htail[1] = 'h';
+	  htail[2] = 0;
+	  fprintf(ci->fh, "#include \"%s\"\n", hfn);
             g_free(hfn);
 	}
         fprintf(ci->fh, "/* from IDL source file \"%s\" (seen %d, isTop %d, wasInhibit %d) */ \n", 
-	  idlfn, IDL_SRCFILE(tree).seenCnt, IDL_SRCFILE(tree).isTop,
-	  IDL_SRCFILE(tree).wasInhibit);
+		idlfn, IDL_SRCFILE(tree).seenCnt, IDL_SRCFILE(tree).isTop,
+		IDL_SRCFILE(tree).wasInhibit);
+      }
     }
     break;
   case IDLN_CONST_DCL:
Index: src/idl-compiler/orbit-idl-driver.c
===================================================================
RCS file: /cvs/gnome/ORBit2/src/idl-compiler/orbit-idl-driver.c,v
retrieving revision 1.22
diff -u -p -r1.22 orbit-idl-driver.c
--- src/idl-compiler/orbit-idl-driver.c	2001/08/13 22:39:42	1.22
+++ src/idl-compiler/orbit-idl-driver.c	2001/08/14 08:21:46
@@ -53,9 +53,10 @@ orbit_idl_to_backend(const char *filenam
 			       &tree, &namespace,
 			       (rinfo->show_cpp_errors?IDLF_SHOW_CPP_ERRORS:0)
 			       |IDLF_TYPECODES
+			       |IDLF_SRCFILES
 			       |(rinfo->is_pidl?IDLF_XPIDL:0)
 			       |(rinfo->onlytop
-			         ?(IDLF_SRCFILES|IDLF_INHIBIT_INCLUDES):0)
+			         ?(IDLF_INHIBIT_INCLUDES):0)
 			       |IDLF_CODEFRAGS,
 			       rinfo->idl_warn_level);
   rinfo->namespace = namespace;
Index: src/idl-compiler/orbit-idl-main.c
===================================================================
RCS file: /cvs/gnome/ORBit2/src/idl-compiler/orbit-idl-main.c,v
retrieving revision 1.19
diff -u -p -r1.19 orbit-idl-main.c
--- src/idl-compiler/orbit-idl-main.c	2001/07/26 12:30:45	1.19
+++ src/idl-compiler/orbit-idl-main.c	2001/08/14 08:21:47
@@ -49,11 +49,13 @@ static int cl_enable_small_stubs = 0;
 static int cl_enable_small_skels = 0;
 static int cl_disable_idata = 0;
 static int cl_enable_imodule = 0;
+static int cl_add_imodule = 0;
 static gboolean cl_disable_defs_skels = FALSE;
 static gboolean cl_showcpperrors = TRUE;
 static char *cl_output_lang = "c";
 static char *cl_backend_dir = ORBITLIBDIR;
 static gboolean cl_onlytop = FALSE;
+static char *cl_deps_file = NULL;
 
 #define BASE_CPP_ARGS "-D__ORBIT_IDL__ "
 static GString *cl_cpp_args;
@@ -125,12 +127,14 @@ struct poptOption options[] = {
   {"noheaders", '\0', POPT_ARG_NONE, &cl_disable_headers, 0, "Don't output headers", NULL},
   {"noidata", '\0', POPT_ARG_NONE, &cl_disable_idata, 0, "Don't generate Interface type data", NULL},
   {"imodule", 'i', POPT_ARG_NONE, &cl_enable_imodule, 0, "Output only an imodule file", NULL},
-  {"skeleton-impl", '\0', POPT_ARG_NONE, &cl_enable_skeleton_impl, 0, "Don't output headers", NULL},
+  {"add-imodule", '\0', POPT_ARG_NONE, &cl_add_imodule, 0, "Output an imodule file", NULL},
+  {"skeleton-impl", '\0', POPT_ARG_NONE, &cl_enable_skeleton_impl, 0, "Output skeleton implementation", NULL},
   {"backenddir", '\0', POPT_ARG_STRING, &cl_backend_dir, 0, "Override IDL backend library directory", "DIR"},
   {"c-output-formatter", '\0', POPT_ARG_STRING, &c_output_formatter, 0, "Program to use to format output (normally, indent)", "PROGRAM"},
   {"onlytop", '\0', POPT_ARG_NONE, &cl_onlytop, 0, "Inhibit includes", NULL},
   {"pidl", '\0', POPT_ARG_NONE, &cl_is_pidl, 0, "Treat as Pseudo IDL", NULL},
   {"nodefskels", '\0', POPT_ARG_NONE, &cl_disable_defs_skels, 0, "Don't output defs for skels in header", NULL},
+  {"deps", '\0', POPT_ARG_STRING, &cl_deps_file, 0, "Generate dependency info suitable for inclusion in Makefile", "FILENAME"},
   POPT_AUTOHELP
   {NULL, '\0', 0, NULL, 0, NULL, NULL}
 };
@@ -188,7 +192,11 @@ int main(int argc, const char *argv[])
     |(cl_disable_skels?0:OUTPUT_SKELS)
     |(cl_disable_common?0:OUTPUT_COMMON)
     |(cl_disable_headers?0:OUTPUT_HEADERS)
-    |(cl_enable_skeleton_impl?OUTPUT_SKELIMPL:0);
+    |(cl_enable_skeleton_impl?OUTPUT_SKELIMPL:0)
+    |(cl_add_imodule?OUTPUT_IMODULE:0)
+    |(cl_deps_file != NULL?OUTPUT_DEPS:0);
+
+  rinfo.deps_file = cl_deps_file;
 
   if (cl_enable_imodule) /* clobber */
     rinfo.enabled_passes =
Index: src/idl-compiler/orbit-idl3-types.h
===================================================================
RCS file: /cvs/gnome/ORBit2/src/idl-compiler/orbit-idl3-types.h,v
retrieving revision 1.15
diff -u -p -r1.15 orbit-idl3-types.h
--- src/idl-compiler/orbit-idl3-types.h	2001/08/13 22:39:42	1.15
+++ src/idl-compiler/orbit-idl3-types.h	2001/08/14 08:21:47
@@ -10,6 +10,8 @@
 
 typedef struct _OIDL_Marshal_Context OIDL_Marshal_Context;
 
+#define OUTPUT_NUM_PASSES 7
+
 typedef struct {
   char *cpp_args;
   int debug_level;
@@ -23,13 +25,16 @@ typedef struct {
 	 OUTPUT_COMMON=1<<2,
 	 OUTPUT_HEADERS=1<<3,
 	 OUTPUT_SKELIMPL=1<<4,
-	 OUTPUT_IMODULE=1<<5 } enabled_passes;
+	 OUTPUT_IMODULE=1<<5,
+	 OUTPUT_DEPS=1<<6, /* Make sure this is always the last pass or dep output will break. */
+  } enabled_passes;
 
   char *output_formatter;
 
   char *output_language;
   char *input_filename;
   char *backend_directory;
+  char *deps_file;
   gboolean onlytop;
   gboolean small;
   gboolean small_stubs;
Index: src/orb/dynamic/Makefile.am
===================================================================
RCS file: /cvs/gnome/ORBit2/src/orb/dynamic/Makefile.am,v
retrieving revision 1.7
diff -u -p -r1.7 Makefile.am
--- src/orb/dynamic/Makefile.am	2001/07/12 17:38:37	1.7
+++ src/orb/dynamic/Makefile.am	2001/08/14 08:21:47
@@ -5,7 +5,6 @@ liborb_dynamic_la_SOURCES= \
 	$(DYNAMIC_IDLOUT) \
 	dynany.c
 
-IDL = $(top_builddir)/src/idl-compiler/orbit-idl
 INCLUDES= \
 	-I$(top_srcdir)/include \
 	-I$(top_srcdir)/src/orb \
@@ -18,17 +17,15 @@ DYNAMIC_IDLOUT=dynamic-defs-common.c dyn
 
 BUILT_SOURCES=$(DYNAMIC_IDLOUT)
 
-$(DYNAMIC_IDLOUT) runidl_dynamic: dynamic-defs.idl $(IDL)
-	-(rm -f $(DYNAMIC_IDLOUT) || true) > /dev/null
-	$(IDL) -I$(top_srcdir)/src/idl/CORBA_PIDL \
-	--define=Object=OObject --define=TypeCode=TTypeCode \
-	-I$(top_srcdir)/src/idl/CORBA \
-	-I$(top_srcdir)/src/idl/misc \
-	-I$(top_srcdir)/src/orb/orb-core \
-	--noskels --nodefskels --nostubs --noidata \
-                --showcpperrors $(top_srcdir)/src/orb/dynamic/dynamic-defs.idl
-	for I in $(DYNAMIC_IDLOUT); do \
-	sed -e 's,OObject,Object,g' -e 's,TTypeCode,TypeCode,g' $$I > $$I.out; \
-	mv $$I.out $$I; done
+IDL_FLAGS= -I$(top_srcdir)/src/idl/CORBA_PIDL			\
+	--define=Object=OObject --define=TypeCode=TTypeCode	\
+	-I$(top_srcdir)/src/idl/CORBA				\
+	-I$(top_srcdir)/src/idl/misc				\
+	-I$(top_srcdir)/src/orb/orb-core			\
+	--noskels --nodefskels --nostubs --noidata		\
+	--showcpperrors
+IDL_FILES=dynamic-defs.idl
+include $(top_srcdir)/Makefile.shared
 
-EXTRA_DIST=dynamic-defs.idl
+EXTRA_DIST=$(IDL_FILES)
+
Index: src/orb/include/Makefile.am
===================================================================
RCS file: /cvs/gnome/ORBit2/src/orb/include/Makefile.am,v
retrieving revision 1.4
diff -u -p -r1.4 Makefile.am
--- src/orb/include/Makefile.am	2001/07/11 17:56:42	1.4
+++ src/orb/include/Makefile.am	2001/08/14 08:21:47
@@ -1,33 +1,3 @@
-noinst_HEADERS=runidl_poa runidl_dynamic
-IDL = $(top_builddir)/src/idl-compiler/orbit-idl
 
-runidl_poa: $(top_srcdir)/src/orb/poa/poa-defs.idl $(IDL)
-	$(IDL) -I$(top_srcdir)/src/idl/CORBA_PIDL \
-	-I$(top_srcdir)/src/idl/CORBA \
-	-I$(top_srcdir)/src/orb/orb-core \
-	-I$(top_srcdir)/src/idl/misc \
-	--define=Object=OObject --define=TypeCode=TTypeCode \
-	--noskels --nodefskels --nostubs --nocommon --noidata \
-                --showcpperrors $(top_srcdir)/src/orb/poa/poa-defs.idl
-	for I in poa-defs.h; do \
-	sed -e 's,OObject,Object,g' -e 's,TTypeCode,TypeCode,g' $$I > $$I.out; \
-	mv $$I.out $$I; done
-	mv -f poa-defs.h $(top_builddir)/include/orbit/poa/poa-defs.h
-	touch runidl_poa
-
-runidl_dynamic: $(top_srcdir)/src/orb/dynamic/dynamic-defs.idl $(IDL)
-	$(IDL) -I$(top_srcdir)/src/idl/CORBA_PIDL \
-	-I$(top_srcdir)/src/idl/CORBA \
-	-I$(top_srcdir)/src/orb/orb-core \
-	-I$(top_srcdir)/src/idl/misc \
-	--define=Object=OObject --define=TypeCode=TTypeCode \
-	--noskels --nodefskels --nostubs --nocommon --noidata \
-                --showcpperrors $(top_srcdir)/src/orb/dynamic/dynamic-defs.idl
-	for I in dynamic-defs.h; do \
-	sed -e 's,OObject,Object,g' -e 's,TTypeCode,TypeCode,g' $$I > $$I.out; \
-	mv $$I.out $$I; done
-	mv -f dynamic-defs.h $(top_builddir)/include/orbit/dynamic/dynamic-defs.h
-	touch runidl_dynamic
-
-BUILT_SOURCES=runidl_poa runidl_dynamic
-CLEANFILES=runidl_poa runidl_dynamic
+all:
+	(cd $(top_builddir)/include; make)
Index: src/orb/orb-core/Makefile.am
===================================================================
RCS file: /cvs/gnome/ORBit2/src/orb/orb-core/Makefile.am,v
retrieving revision 1.25
diff -u -p -r1.25 Makefile.am
--- src/orb/orb-core/Makefile.am	2001/08/09 21:58:10	1.25
+++ src/orb/orb-core/Makefile.am	2001/08/14 08:21:47
@@ -41,58 +41,40 @@ liborb_core_la_SOURCES= \
 	$(IFACE_IDLOUT) \
 	$(main_src)
 
-IDL = $(top_builddir)/src/idl-compiler/orbit-idl
 IDLOUT=corba-defs-common.c
 IOP_IDLOUT=iop-defs-common.c
-OPS_IDLOUT=corba-ops-stubs.c corba-ops-common.c corba-ops.h corba-ops-skels.c
+OPS_IDLOUT= corba-ops.h corba-ops-stubs.c corba-ops-common.c corba-ops-skels.c
 IFACE_IDLOUT=orbit-interface.h orbit-interface-common.c
 
 $(main_src) : $(BUILT_SOURCES)
+IDL_COMPILER = $(top_builddir)/src/idl-compiler/orbit-idl
 
-$(top_builddir)/include/orbit/orb-core/corba-defs.h $(IDLOUT): corba-defs.idl $(IDL)
-	-(rm -f $(IDLOUT) || true) > /dev/null
-	$(IDL) -I$(top_srcdir)/src/idl/CORBA_PIDL -I$(top_srcdir)/src/idl/CORBA \
-	--noskels --nodefskels --nostubs --noidata \
-	--define=Object=OObject --define=TypeCode=TTypeCode \
-                --showcpperrors $(top_srcdir)/src/orb/orb-core/corba-defs.idl
-	for I in $(IDLOUT) corba-defs.h; do \
-	sed -e 's,OObject,Object,g' -e 's,TTypeCode,TypeCode,g' $$I > $$I.out; \
-	mv $$I.out $$I; done; \
-	cp -f corba-defs.h $(top_builddir)/include/orbit/orb-core/corba-defs.h;
-
-$(IOP_IDLOUT): iop-defs.idl $(IDL)
-	-(rm -f $(IOP_IDLOUT) || true) > /dev/null
-	$(IDL) -I$(top_srcdir)/src/idl/CORBA_PIDL \
-	--define=Object=OObject --define=TypeCode=TTypeCode \
-	-I$(top_srcdir)/src/idl/CORBA \
-	-I$(top_srcdir)/src/idl/misc \
-	-I$(top_srcdir)/src/idl/interop \
-	--noskels --nodefskels --nostubs --noidata \
-                --showcpperrors $(top_srcdir)/src/orb/orb-core/iop-defs.idl
-	for I in $(IOP_IDLOUT) iop-defs.h; do \
-	sed -e 's,OObject,Object,g' -e 's,TTypeCode,TypeCode,g' $$I > $$I.out; \
-	mv $$I.out $$I; done; \
-	mv -f iop-defs.h $(top_builddir)/include/orbit/orb-core/iop-defs.h;
+IDL_FLAGS = -I$(top_srcdir)/src/idl/CORBA_PIDL			\
+	-I$(top_srcdir)/src/idl/CORBA				\
+	-I$(top_srcdir)/src/idl/misc				\
+	-I$(top_srcdir)/src/idl/interop				\
+	--noskels --nodefskels --nostubs --noidata --noheaders	\
+	--define=Object=OObject --define=TypeCode=TTypeCode	\
+        --showcpperrors
+IDL_FILES=corba-defs.idl iop-defs.idl corba-ops.idl orbit-interface.idl
+include $(top_srcdir)/Makefile.shared
 
+IDL_FLAGS_CORBA_OPS = --showcpperrors
 $(OPS_IDLOUT): corba-ops.idl $(IDL)
 	-(rm -f $(OPS_IDLOUT) || true) > /dev/null
-	$(IDL) --showcpperrors $(top_srcdir)/src/orb/orb-core/corba-ops.idl
-	for I in $(OPS_IDLOUT); do \
-		sed -e 's,ZZZis_a,_is_a,g' -e 's,ZZis_a,is_a,g' $$I > $$I.out; mv $$I.out $$I; \
-	done; \
-	sed -e "s,Z,_,g" corba-ops-skels.c > corba-ops-skels.c.out; \
+	$(IDL_COMPILER) $(IDL_FLAGS_CORBA_OPS) --deps .deps/corba-ops.idl.P $<
+	for I in $(OPS_IDLOUT); do								\
+		sed -e 's,ZZZis_a,_is_a,g' -e 's,ZZis_a,is_a,g' $$I > $$I.out; mv $$I.out $$I;	\
+	done;											\
+	sed -e "s,Z,_,g" corba-ops-skels.c > corba-ops-skels.c.out;				\
 	mv corba-ops-skels.c.out corba-ops-skels.c;
 
-# This has to be built and installed before we can compile
-# the other bits, since the generated code includes orbit-interface.h
-$(IDLOUT) $(IOP_IDLOUT) $(OPS_IDLOUT) : $(IFACE_IDLOUT)
-
-$(top_builddir)/include/orbit/orb-core/orbit-interface.h $(IFACE_IDLOUT) : orbit-interface.idl $(IDL)
+IDL_FLAGS_INTERFACE = --nostubs --noskels --showcpperrors
+$(IFACE_IDLOUT) : orbit-interface.idl $(IDL)
 	-(rm -f $(IFACE_IDLOUT) || true) > /dev/null
-	$(IDL) --showcpperrors $(top_srcdir)/src/orb/orb-core/orbit-interface.idl
-	cp -f orbit-interface.h $(top_builddir)/include/orbit/orb-core/orbit-interface.h; \
-	rm -f orbit-interface-stubs.c orbit-interface-skels.c
+	$(IDL_COMPILER) $(IDL_FLAGS_INTERFACE) --deps .deps/orbit-interface.idl.P $<
+
 
-BUILT_SOURCES=$(IDLOUT) $(IOP_IDLOUT) $(OPS_IDLOUT) $(IFACE_IDLOUT)
+BUILT_SOURCES= $(IFACE_IDLOUT) $(IDLOUT) $(IOP_IDLOUT) $(OPS_IDLOUT)
 CLEANFILES=$(BUILT_SOURCES)
-EXTRA_DIST=corba-defs.idl iop-defs.idl corba-ops.idl orbit-interface.idl
+EXTRA_DIST=$(IDL_FILES)
Index: src/orb/poa/Makefile.am
===================================================================
RCS file: /cvs/gnome/ORBit2/src/orb/poa/Makefile.am,v
retrieving revision 1.14
diff -u -p -r1.14 Makefile.am
--- src/orb/poa/Makefile.am	2001/07/31 14:39:41	1.14
+++ src/orb/poa/Makefile.am	2001/08/14 08:21:47
@@ -33,15 +33,12 @@ EXTRA_DIST=poa-defs.idl
 BUILT_SOURCES=$(POA_IDLOUT)
 CLEANFILES=$(BUILT_SOURCES)
 
-$(POA_IDLOUT): poa-defs.idl $(IDL)
-	-(rm -f $(POA_IDLOUT) || true) > /dev/null
-	$(IDL) -I$(top_srcdir)/src/idl/CORBA_PIDL \
-	-I$(top_srcdir)/src/idl/CORBA \
-	-I$(top_srcdir)/src/idl/misc \
-	-I$(top_srcdir)/src/orb/orb-core \
-	--noskels --nodefskels --nostubs --noidata \
-	--define=Object=OObject --define=TypeCode=TTypeCode \
-                --showcpperrors $(top_srcdir)/src/orb/poa/poa-defs.idl
-	for I in $(POA_IDLOUT) poa-defs.h; do \
-	sed -e 's,OObject,Object,g' -e 's,TTypeCode,TypeCode,g' $$I > $$I.out; \
-	mv $$I.out $$I; done
+IDL_FLAGS= -I$(top_srcdir)/src/idl/CORBA_PIDL			\
+	-I$(top_srcdir)/src/idl/CORBA				\
+	-I$(top_srcdir)/src/idl/misc				\
+	-I$(top_srcdir)/src/orb/orb-core			\
+	--noskels --nodefskels --nostubs --noidata		\
+	--define=Object=OObject --define=TypeCode=TTypeCode	\
+        --showcpperrors
+IDL_FILES=poa-defs.idl
+include $(top_srcdir)/Makefile.shared
Index: src/services/name/Makefile.am
===================================================================
RCS file: /cvs/gnome/ORBit2/src/services/name/Makefile.am,v
retrieving revision 1.4
diff -u -p -r1.4 Makefile.am
--- src/services/name/Makefile.am	2001/06/19 15:01:32	1.4
+++ src/services/name/Makefile.am	2001/08/14 08:21:47
@@ -24,22 +24,17 @@ INCLUDES = -I. \
 	 $(GLIB_CFLAGS) \
 	$(LINC_CFLAGS)
 
-IDL = $(top_builddir)/src/idl-compiler/orbit-idl
-
 CosNaming_built = 							\
 	CosNaming.h 							\
 	CosNaming-common.c 						\
 	CosNaming-stubs.c 						\
 	CosNaming-skels.c
-
-$(CosNaming_built): my_cosnaming_built
-	@:
 
-my_cosnaming_built: CosNaming.idl $(IDL)
-	$(IDL) $(srcdir)/CosNaming.idl
-	touch my_cosnaming_built
+IDL_FLAGS=--showcpperrors
+IDL_FILES=CosNaming.idl
+include $(top_srcdir)/Makefile.shared
 
-CLEANFILES=my_cosnaming_built
+CLEANFILES=my_cosnaming_built $(BUILT_SOURCES)
 
 DEPS = 	$(top_builddir)/src/orb/libORBit-2.la			\
 	libORBitCosNaming-2.la
Index: test/Makefile.am
===================================================================
RCS file: /cvs/gnome/ORBit2/test/Makefile.am,v
retrieving revision 1.11
diff -u -p -r1.11 Makefile.am
--- test/Makefile.am	2001/08/08 19:10:37	1.11
+++ test/Makefile.am	2001/08/14 08:21:47
@@ -1,6 +1,5 @@
 SUBDIRS = everything inhibit poa
 
-IDL = $(top_builddir)/src/idl-compiler/orbit-idl
 INCLUDES=-I$(top_srcdir)/include \
 	-I$(top_builddir)/include \
 	$(LINC_CFLAGS) \
@@ -42,36 +41,13 @@ typelib_dump_SOURCES=typelib-dump.c
 DYNANY_IDLOUT=dynany.h dynany-common.c
 test_dynany_SOURCES=$(DYNANY_IDLOUT) test-dynany.c
 
-$(ECHO_IDLOUT): echo_built
 
-echo_built: echo.idl $(IDL)
-	$(IDL) --showcpperrors $(srcdir)/echo.idl
-	touch echo_built
-
-$(DYNANY_IDLOUT): dynany_built
-
-dynany_built: dynany.idl $(IDL)
-	$(IDL) --noskels --nostubs --showcpperrors $(srcdir)/dynany.idl
-	touch dynany_built
-
-$(EMPTY_IDLOUT): empty_built
-empty_built: empty.idl $(IDL)
-	$(IDL) --showcpperrors $(srcdir)/empty.idl
-	touch empty_built
-
-$(IDLOUT): test1_built
-test1_built: test1.idl $(IDL)
-	-(rm -f $(IDLOUT) || true) > /dev/null
-	$(IDL) --showcpperrors $(srcdir)/test1.idl
-	touch test1_built
-
-$(TEST_ANY_IDLOUT): test_any_built
-test_any_built: test-any.idl $(IDL)
-	-(rm -f $(TEST_ANY_IDLOUT) || true) > /dev/null
-	$(IDL) --showcpperrors $(srcdir)/test-any.idl
-	touch test_any_built
+IDL_FLAGS =  --showcpperrors
+IDL_FILES=echo.idl empty.idl test-any.idl test1.idl dynany.idk
+include $(top_srcdir)/Makefile.shared
 
+
 BUILT_SOURCES=$(EMPTY_IDLOUT) $(ECHO_IDLOUT) $(IDLOUT) $(TEST_ANY_IDLOUT) $(DYNANY_IDLOUT)
-CLEANFILES=dynany_built echo_built empty_built test1_built test_any_built $(BUILT_SOURCES)
+CLEANFILES=$(BUILT_SOURCES)
 
-EXTRA_DIST=echo.idl empty.idl test-any.idl test1.idl dynany.idl
+EXTRA_DIST=$(IDL_FILES)
Index: test/everything/Makefile.am
===================================================================
RCS file: /cvs/gnome/ORBit2/test/everything/Makefile.am,v
retrieving revision 1.8
diff -u -p -r1.8 Makefile.am
--- test/everything/Makefile.am	2001/07/30 22:24:25	1.8
+++ test/everything/Makefile.am	2001/08/14 08:21:47
@@ -48,16 +48,12 @@ server_SOURCES=server.c ${EVERYTHING_BUI
 server_DEPENDENCES=${EVERYTHING_BUILT} $(included_src)
 server_LDFLAGS = -static -module
 
-ORBIT_IDL = $(top_builddir)/src/idl-compiler/orbit-idl
+IDL_FLAGS= --showcpperrors --add-imodule
+IDL_FILES= everything.idl
+include $(top_srcdir)/Makefile.shared
 
-${EVERYTHING_BUILT}: everything.idl $(ORBIT_IDL)
-	$(ORBIT_IDL) $(srcdir)/everything.idl
-
-everything-imodule.c : everything.idl $(ORBIT_IDL)
-	$(ORBIT_IDL) --imodule $(srcdir)/everything.idl
-
-CLEANFILES = ${EVERYTHING_BUILT} iorfile
-BUILT_SOURCES = ${EVERYTHING_BUILT}
+BUILT_SOURCES = ${EVERYTHING_BUILT} everything-imodule.c
+CLEANFILES = ${BUILT_SOURCES} iorfile
 
 TESTS = $(srcdir)/test.sh
 
Index: test/inhibit/Makefile.am
===================================================================
RCS file: /cvs/gnome/ORBit2/test/inhibit/Makefile.am,v
retrieving revision 1.3
diff -u -p -r1.3 Makefile.am
--- test/inhibit/Makefile.am	2001/06/23 13:37:17	1.3
+++ test/inhibit/Makefile.am	2001/08/14 08:21:47
@@ -1,10 +1,9 @@
-noinst_PROGRAMS=\
+noinst_PROGRAMS=					\
 	test-inhibit
 
-IDL = $(top_builddir)/src/idl-compiler/orbit-idl
-INCLUDES=-I$(top_srcdir)/include \
-	-I$(top_builddir)/include \
-	$(LINC_CFLAGS) \
+INCLUDES=-I$(top_srcdir)/include		\
+	-I$(top_builddir)/include		\
+	$(LINC_CFLAGS)				\
 	$(GLIB_CFLAGS)
 
 LDADD = $(top_builddir)/src/orb/libORBit-2.la
@@ -14,22 +13,13 @@ BAA_IDLOUT=baa.h baa-stubs.c baa-skels.c
 
 test_inhibit_SOURCES=$(FOO_IDLOUT) $(BAA_IDLOUT) test-inhibit.c
 
-$(FOO_IDLOUT): foo_built
+IDL_FLAGS=--showcpperrors
+IDL_FILES=foo.idl baa.idl
+include $(top_srcdir)/Makefile.shared
 
-foo_built: foo.idl $(IDL)
-	-(rm -f $(FOO_IDLOUT) || true) > /dev/null
-	$(IDL) --showcpperrors $(srcdir)/foo.idl
-	touch foo_built
-
-$(BAA_IDLOUT): baa_built
-baa_built: baa.idl $(IDL)
-	-(rm -f $(BAA_IDLOUT) || true) > /dev/null
-	$(IDL) --showcpperrors $(srcdir)/baa.idl
-	touch baa_built
-
 TESTS=test-inhibit
 
 BUILT_SOURCES=$(BAA_IDLOUT) $(FOO_IDLOUT)
-CLEANFILES=foo_built baa_built test1_built $(BUILT_SOURCES)
+CLEANFILES=$(BUILT_SOURCES)
 
-EXTRA_DIST=foo.idl baa.idl
+EXTRA_DIST=$(IDL_FILES)
Index: test/poa/Makefile.am
===================================================================
RCS file: /cvs/gnome/ORBit2/test/poa/Makefile.am,v
retrieving revision 1.5
diff -u -p -r1.5 Makefile.am
--- test/poa/Makefile.am	2001/07/31 00:50:52	1.5
+++ test/poa/Makefile.am	2001/08/14 08:21:47
@@ -1,4 +1,3 @@
-IDL = $(top_builddir)/src/idl-compiler/orbit-idl
 INCLUDES=-I$(top_srcdir)/include \
 	-I$(top_builddir)/include \
 	$(LINC_CFLAGS) \
@@ -32,11 +31,11 @@ check_PROGRAMS = $(TESTS)
 
 LDADD = $(top_builddir)/src/orb/libORBit-2.la
 
-ORBIT_IDL = $(top_builddir)/src/idl-compiler/orbit-idl
-
 POATEST_IDLOUT = poatest.h poatest-common.c poatest-skels.c poatest-stubs.c
-$(POATEST_IDLOUT) : poatest.idl $(ORBIT_IDL)
-	$(IDL) --showcpperrors $<
+
+IDL_FLAGS=--showcpperrors
+IDL_FILES=poatest.idl
+include $(top_srcdir)/Makefile.shared
 
 common_srcs = $(POATEST_IDLOUT) poatest-basic-shell.c poatest-exception.h
 
@@ -51,9 +50,9 @@ poatest_basic08_SOURCES = $(common_srcs)
 poatest_basic09_SOURCES = $(common_srcs) poatest-basic09.c 
 poatest_basic10_SOURCES = $(common_srcs) poatest-basic10.c 
 
-BUILT_SOURCES = $(POATEST_IDLOUT)
-CLEANFILES = dynany_built echo_built empty_built test1_built test_any_built $(BUILT_SOURCES)
-EXTRA_DIST = poatest.idl README
+BUILT_SOURCES=$(POATEST_IDLOUT)
+CLEANFILES=$(BUILT_SOURCES)
+EXTRA_DIST=$(IDL_FILES) README
 
 README : $(POA_TESTS_SRCS)
 	awk -F'*' 'BEGIN { intest = 0; } \




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]