From 4d192c227e6c7a00b82aef4aca71a3a77ac0dbd1 Mon Sep 17 00:00:00 2001
From: eb <eb@221aa14e-8319-0410-a670-987f0aec2ac5>
Date: Wed, 25 Feb 2009 21:58:41 +0000
Subject: Merged mld/fix_makefile_gen -r10446:10509 to trunk.  This cleans up
 the generation of the Makefile.gen's that occurs in gr-trellis, lib/gengen
 and lib/filter.

If you change any code generator such that it generates a different
set of generated file names, you must execute "make generate-makefile"
in a non-VPATH build to regenerate the Makefile.gen's.  Once they are
regenerated, commit them to the repo.



git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10511 221aa14e-8319-0410-a670-987f0aec2ac5
---
 gnuradio-core/src/lib/filter/Makefile.am           | 58 +++++++------------
 .../src/lib/filter/generate_gr_fir_sysconfig.py    |  8 ++-
 .../filter/generate_gr_fir_sysconfig_generic.py    |  6 +-
 .../src/lib/filter/generate_gr_fir_util.py         |  6 +-
 gnuradio-core/src/lib/gengen/Makefile.am           | 55 +++++++-----------
 gnuradio-core/src/python/build_utils.py            | 65 ++++++++++++++++------
 6 files changed, 105 insertions(+), 93 deletions(-)

(limited to 'gnuradio-core/src')

diff --git a/gnuradio-core/src/lib/filter/Makefile.am b/gnuradio-core/src/lib/filter/Makefile.am
index 20c7da3a2f..aaf7d41e0b 100644
--- a/gnuradio-core/src/lib/filter/Makefile.am
+++ b/gnuradio-core/src/lib/filter/Makefile.am
@@ -1,5 +1,5 @@
 #
-# Copyright 2001,2002,2004,2005,2006,2007,2008 Free Software Foundation, Inc.
+# Copyright 2001,2002,2004,2005,2006,2007,2008,2009 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -34,7 +34,7 @@ noinst_LTLIBRARIES = libfilter.la libfilter-qa.la
 # these scripts generate FIR code
 #
 
-CODE_GENERATOR = 					\
+code_generator = 					\
 	generate_all.py					\
 	generate_gr_fir_XXX.py				\
 	generate_gr_fir_filter_XXX.py			\
@@ -62,41 +62,28 @@ CODE_GENERATOR = 					\
 	gr_freq_xlating_fir_filter_XXX.h.t		\
 	gr_freq_xlating_fir_filter_XXX.i.t
 
-include Makefile.gen
+# include the srcdir's Makefile.gen; doing this creates an implicit
+# dependency between $(srcdir)/Makefile.in and $(srcdir)/Makefile.gen.
+include $(srcdir)/Makefile.gen
 
-# Ensure parallel make does the right thing.
-# http://sources.redhat.com/automake/automake.html#Multiple-Outputs
+# Source built by Python into $(builddir)
+python_built_sources =		\
+	$(GENERATED_H)		\
+	$(GENERATED_I)		\
+	$(GENERATED_CC)		\
+	filter_generated.i
 
-STAMPS = generate-stamp
+BUILT_SOURCES = $(python_built_sources)
 
-generate-stamp: $(CODE_GENERATOR)
-	@rm -f generate-tmp
-	@touch generate-tmp
-	PYTHONPATH=$(top_srcdir)/gnuradio-core/src/python srcdir=$(srcdir) $(PYTHON) $(srcdir)/generate_all.py
-	@mv -f generate-tmp $@
+# Required when including Makefile.gen.gen
 
+STAMPS =
+gen_sources = $(BUILT_SOURCES)
+gen_sources_deps = $(core_generator)
+MOSTLYCLEANFILES = $(BUILT_SOURCES) *.pyc
 
-$(GENERATED_H) $(GENERATED_I) $(GENERATED_CC) filter_generated.i: generate-stamp
-## Recover from the removal of $@
-	@if test -f $@; then :; else \
-               trap 'rm -rf generate-lock generate-stamp' 1 2 13 15; \
-               if mkdir generate-lock 2>/dev/null; then \
-## This code is being executed by the first process.
-                 rm -f generate-stamp; \
-                 $(MAKE) $(AM_MAKEFLAGS) generate-stamp; \
-                 rmdir generate-lock; \
-               else \
-## This code is being executed by the follower processes.
-## Wait until the first process is done.
-                 while test -d generate-lock; do sleep 1; done; \
-## Succeed if and only if the first process succeeded.
-                 test -f generate-stamp; exit $$?; \
-               fi; \
-             fi
-
-
-BUILT_SOURCES = $(GENERATED_H) $(GENERATED_I) $(GENERATED_CC)
-
+# common way for generating sources from templates, using the above parameters
+include $(top_srcdir)/Makefile.gen.gen
 
 # ----------------------------------------------------------------
 # MD_CPU and MD_SUBCPU are set at configure time by way of 
@@ -195,9 +182,7 @@ EXTRA_libfilter_la_SOURCES =		\
 EXTRA_DIST = 					\
 	3dnow_float_dotprod_really_simple.S	\
 	3dnow_float_dotprod_simple.S		\
-	$(CODE_GENERATOR)			\
-	$(STAMPS)
-
+	$(code_generator)
 
 # work around automake deficiency
 libfilter_la_common_SOURCES = 		\
@@ -341,6 +326,3 @@ swiginclude_HEADERS =			\
 	gr_single_pole_iir_filter_ff.i	\
 	gr_single_pole_iir_filter_cc.i	\
 	$(GENERATED_I)
-
-
-CLEANFILES = $(BUILT_SOURCES) $(STAMPS) *.pyc
diff --git a/gnuradio-core/src/lib/filter/generate_gr_fir_sysconfig.py b/gnuradio-core/src/lib/filter/generate_gr_fir_sysconfig.py
index 16e64bb0c5..b396721937 100755
--- a/gnuradio-core/src/lib/filter/generate_gr_fir_sysconfig.py
+++ b/gnuradio-core/src/lib/filter/generate_gr_fir_sysconfig.py
@@ -1,7 +1,7 @@
 #!/bin/env python
 # -*- python -*-
 #
-# Copyright 2003 Free Software Foundation, Inc.
+# Copyright 2003,2009 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -28,6 +28,9 @@ from generate_utils import *
 
 def make_gr_fir_sysconfig_h ():
     out = open_and_log_name ('gr_fir_sysconfig.h', 'w')
+    if not out:
+        return
+
     out.write (copyright)
 
     out.write (
@@ -96,6 +99,9 @@ gr_fir_sysconfig *gr_fir_sysconfig_singleton ();
 
 def make_gr_fir_sysconfig_cc ():
     out = open_and_log_name ('gr_fir_sysconfig.cc', 'w')
+    if not out:
+        return
+
     out.write (copyright)
 
     out.write (
diff --git a/gnuradio-core/src/lib/filter/generate_gr_fir_sysconfig_generic.py b/gnuradio-core/src/lib/filter/generate_gr_fir_sysconfig_generic.py
index 8f79c020d8..03caadaf91 100755
--- a/gnuradio-core/src/lib/filter/generate_gr_fir_sysconfig_generic.py
+++ b/gnuradio-core/src/lib/filter/generate_gr_fir_sysconfig_generic.py
@@ -1,7 +1,7 @@
 #!/bin/env python
 # -*- python -*-
 #
-# Copyright 2003 Free Software Foundation, Inc.
+# Copyright 2003,2009 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -28,6 +28,8 @@ from generate_utils import *
 
 def make_gr_fir_sysconfig_generic_h ():
     out = open_and_log_name ('gr_fir_sysconfig_generic.h', 'w')
+    if not out:
+        return
     out.write (copyright)
 
     out.write (
@@ -110,6 +112,8 @@ gr_fir_sysconfig_generic::get_gr_fir_%s_info (std::vector<gr_fir_%s_info> *info)
 
 def make_gr_fir_sysconfig_generic_cc ():
     out = open_and_log_name ('gr_fir_sysconfig_generic.cc', 'w')
+    if not out:
+        return
     out.write (copyright)
 
     out.write (
diff --git a/gnuradio-core/src/lib/filter/generate_gr_fir_util.py b/gnuradio-core/src/lib/filter/generate_gr_fir_util.py
index 3119562c40..4f5f5ce06a 100755
--- a/gnuradio-core/src/lib/filter/generate_gr_fir_util.py
+++ b/gnuradio-core/src/lib/filter/generate_gr_fir_util.py
@@ -1,6 +1,6 @@
 #!/bin/env python
 #
-# Copyright 2003 Free Software Foundation, Inc.
+# Copyright 2003,2009 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -44,6 +44,8 @@ def make_info (out, sig):
 
 def make_gr_fir_util_h ():
     out = open_and_log_name ('gr_fir_util.h', 'w')
+    if not out:
+        return
     out.write (copyright)
 
     out.write (
@@ -142,6 +144,8 @@ gr_fir_util::get_gr_fir_%s_info (std::vector<gr_fir_%s_info> *info)
     
 def make_gr_fir_util_cc ():
     out = open_and_log_name ('gr_fir_util.cc', 'w')
+    if not out:
+        return
     out.write (copyright)
     out.write ('''
 
diff --git a/gnuradio-core/src/lib/gengen/Makefile.am b/gnuradio-core/src/lib/gengen/Makefile.am
index aaf9dd5fcd..85ab94f38d 100644
--- a/gnuradio-core/src/lib/gengen/Makefile.am
+++ b/gnuradio-core/src/lib/gengen/Makefile.am
@@ -1,5 +1,5 @@
 #
-# Copyright 2001,2002,2004,2006,2007,2008 Free Software Foundation, Inc.
+# Copyright 2001,2002,2004,2006,2007,2008,2009 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -29,7 +29,7 @@ noinst_LTLIBRARIES = libgengen.la
 # ----------------------------------------------------------------
 # these scripts generate code
 
-CODE_GENERATOR = 			\
+core_generator = 			\
 	generate_all.py			\
 	generate_common.py		\
 	gr_add_XX.cc.t			\
@@ -117,46 +117,33 @@ CODE_GENERATOR = 			\
 	gr_moving_average_XX.h.t	\
 	gr_moving_average_XX.i.t
 
-include Makefile.gen
+# include the srcdir's Makefile.gen; doing this creates an implicit
+# dependency between $(srcdir)/Makefile.in and $(srcdir)/Makefile.gen.
+include $(srcdir)/Makefile.gen
 
-# Ensure parallel make does the right thing.
-# http://sources.redhat.com/automake/automake.html#Multiple-Outputs
+# Source built by Python into $(builddir)
+python_built_sources =		\
+	$(GENERATED_H)		\
+	$(GENERATED_I)		\
+	$(GENERATED_CC)		\
+	gengen_generated.i
 
-STAMPS = generate-stamp
+BUILT_SOURCES = $(python_built_sources)
 
-generate-stamp: $(CODE_GENERATOR)
-	@rm -f generate-tmp
-	@touch generate-tmp
-	PYTHONPATH=$(top_srcdir)/gnuradio-core/src/python srcdir=$(srcdir) $(PYTHON) $(srcdir)/generate_all.py
-	@mv -f generate-tmp $@
+# Required when including Makefile.gen.gen
 
+STAMPS =
+gen_sources = $(BUILT_SOURCES)
+gen_sources_deps = $(core_generator)
+MOSTLYCLEANFILES = $(BUILT_SOURCES) *.pyc
 
-$(GENERATED_H) $(GENERATED_I) $(GENERATED_CC) gengen_generated.i : generate-stamp
-## Recover from the removal of $@
-	@if test -f $@; then :; else \
-               trap 'rm -rf generate-lock generate-stamp' 1 2 13 15; \
-               if mkdir generate-lock 2>/dev/null; then \
-## This code is being executed by the first process.
-                 rm -f generate-stamp; \
-                 $(MAKE) $(AM_MAKEFLAGS) generate-stamp; \
-                 rmdir generate-lock; \
-               else \
-## This code is being executed by the follower processes.
-## Wait until the first process is done.
-                 while test -d generate-lock; do sleep 1; done; \
-## Succeed if and only if the first process succeeded.
-                 test -f generate-stamp; exit $$?; \
-               fi; \
-             fi
-
-
-BUILT_SOURCES = $(GENERATED_H) $(GENERATED_I) $(GENERATED_CC)
+# common way for generating sources from templates, using the above parameters
+include $(top_srcdir)/Makefile.gen.gen
 
 # ----------------------------------------------------------------
 
 EXTRA_DIST = 				\
-	$(CODE_GENERATOR)		\
-	$(STAMPS)
+	$(core_generator)
 
 libgengen_la_SOURCES = 			\
 	$(GENERATED_CC)			
@@ -177,4 +164,4 @@ swiginclude_HEADERS =			\
 	gengen.i			\
 	gengen_generated.i		
 
-CLEANFILES = $(BUILT_SOURCES) $(STAMPS) *.pyc
+CLEANFILES = $(BUILT_SOURCES) *.pyc
diff --git a/gnuradio-core/src/python/build_utils.py b/gnuradio-core/src/python/build_utils.py
index f1c533a23a..c7acf6bd0f 100644
--- a/gnuradio-core/src/python/build_utils.py
+++ b/gnuradio-core/src/python/build_utils.py
@@ -1,5 +1,5 @@
 #
-# Copyright 2004 Free Software Foundation, Inc.
+# Copyright 2004,2009 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -33,6 +33,23 @@ except KeyError, e:
     srcdir = "."
 srcdir = srcdir + '/'
 
+# set do_makefile to either true or false dependeing on the environment
+try:
+    if os.environ['do_makefile'] == '0':
+        do_makefile = False
+    else:
+        do_makefile = True
+except KeyError, e:
+    do_makefile = False
+
+# set do_sources to either true or false dependeing on the environment
+try:
+    if os.environ['do_sources'] == '0':
+        do_sources = False
+    else:
+        do_sources = True
+except KeyError, e:
+    do_sources = True
 
 name_dict = {}
 
@@ -44,28 +61,39 @@ def log_output_name (name):
     entry.append (name)
     
 def open_and_log_name (name, dir):
-    f = open (name, dir)
+    global do_sources
+    if do_sources:
+        f = open (name, dir)
+    else:
+        f = None
     log_output_name (name)
     return f
 
 def expand_template (d, template_filename, extra = ""):
     '''Given a dictionary D and a TEMPLATE_FILENAME, expand template into output file
     '''
+    global do_sources
     output_extension = extract_extension (template_filename)
     template = open_src (template_filename, 'r')
     output_name = d['NAME'] + extra + '.' + output_extension
     log_output_name (output_name)
-    output = open (output_name, 'w')
-    do_substitution (d, template, output)
+    if do_sources:
+        output = open (output_name, 'w')
+        do_substitution (d, template, output)
+        output.close ()
     template.close ()
-    output.close ()
 
 def output_glue (dirname):
     output_makefile_fragment ()
     output_ifile_include (dirname)
-    
+
 def output_makefile_fragment ():
-    f = open ('Makefile.gen', 'w')
+    global do_makefile
+    if not do_makefile:
+        return
+# overwrite the source, which must be writable; this should have been
+# checked for beforehand in the top-level Makefile.gen.gen .
+    f = open_src ('Makefile.gen', 'w')
     f.write ('#\n# This file is machine generated.  All edits will be overwritten\n#\n')
     output_subfrag (f, 'h')
     output_subfrag (f, 'i')
@@ -73,16 +101,18 @@ def output_makefile_fragment ():
     f.close ()
 
 def output_ifile_include (dirname):
-    f = open ('%s_generated.i' % (dirname,), 'w')
-    f.write ('//\n// This file is machine generated.  All edits will be overwritten\n//\n')
-    files = name_dict.setdefault ('i', [])
-    files.sort ()
-    f.write ('%{\n')
-    for file in files:
-        f.write ('#include <%s>\n' % (file[0:-1] + 'h',))
-    f.write ('%}\n\n')
-    for file in files:
-        f.write ('%%include <%s>\n' % (file,))
+    global do_sources
+    if do_sources:
+        f = open ('%s_generated.i' % (dirname,), 'w')
+        f.write ('//\n// This file is machine generated.  All edits will be overwritten\n//\n')
+        files = name_dict.setdefault ('i', [])
+        files.sort ()
+        f.write ('%{\n')
+        for file in files:
+            f.write ('#include <%s>\n' % (file[0:-1] + 'h',))
+        f.write ('%}\n\n')
+        for file in files:
+            f.write ('%%include <%s>\n' % (file,))
 
 def output_subfrag (f, ext):
     files = name_dict.setdefault (ext, [])
@@ -91,7 +121,6 @@ def output_subfrag (f, ext):
     for file in files:
         f.write (" \\\n\t%s" % (file,))
     f.write ("\n\n")
-    
 
 def extract_extension (template_name):
     # template name is something like: GrFIRfilterXXX.h.t
-- 
cgit v1.2.3