[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Automake-NG] [FYI] [ng] general: new internal vars to hold path of curr
From: |
Stefano Lattarini |
Subject: |
[Automake-NG] [FYI] [ng] general: new internal vars to hold path of current Makefile{, .in, .am} |
Date: |
Mon, 30 Jul 2012 20:20:29 +0200 |
This is preferable to having to use the '%MAKEFILE%', '%MAKEFILE-IN%'
and '%MAKEFILE-AM%' transforms in several places, and will enable us
to do more sweeping refactorings in the future.
* automake.in (generate_makefile): Define new private make variables:
- am.relpath.makefile.am
- am.relpath.makefile.in
- am.relpath.makefile
* automake.in (handle_configure, handle_clean, generate_makefile),
lib/am/configure.am, lib/am/check-typos.am, lib/am/clean.am: Adjust
throughout to use them instead of the corresponding transforms.
* t/remake.sh: Adjust and extend grepping checks.
Signed-off-by: Stefano Lattarini <address@hidden>
---
automake.in | 31 ++++++++++++++-----------------
lib/am/check-typos.am | 2 +-
lib/am/clean.am | 4 ++--
lib/am/configure.am | 9 +++++----
t/remake.sh | 5 ++++-
5 files changed, 26 insertions(+), 25 deletions(-)
diff --git a/automake.in b/automake.in
index 4747083..f8e5c9b 100644
--- a/automake.in
+++ b/automake.in
@@ -3570,21 +3570,17 @@ sub handle_config_headers ()
qw/$(am.config-hdr.local) $(am.config-hdr.non-local)/);
}
-# &handle_configure ($MAKEFILE_AM, $MAKEFILE_IN, $MAKEFILE, @INPUTS)
-# ------------------------------------------------------------------
+# &handle_configure ($MAKEFILE, @INPUTS)
+# --------------------------------------
# Handle remaking and configure stuff.
# We need the name of the input file, to do proper remaking rules.
-sub handle_configure ($$$@)
+sub handle_configure ($@)
{
- my ($makefile_am, $makefile_in, $makefile, @inputs) = @_;
+ my ($makefile, @inputs) = @_;
prog_error 'empty @inputs'
unless @inputs;
- my ($rel_makefile_am, $rel_makefile_in) = prepend_srcdir ($makefile_am,
- $makefile_in);
- my $rel_makefile = basename $makefile;
-
my $colon_infile = ':' . join (':', @inputs);
$colon_infile = '' if $colon_infile eq ":$makefile.in";
my @rewritten = rewrite_inputs_into_dependencies ($makefile, @inputs);
@@ -3602,13 +3598,10 @@ sub handle_configure ($$$@)
$output_rules .= file_contents
('configure',
new Automake::Location,
- MAKEFILE => $rel_makefile,
'MAKEFILE-DEPS' => "@rewritten",
'CONFIG-MAKEFILE' => ($relative_dir eq '.') ? '$@' : '$(subdir)/$@',
- 'MAKEFILE-IN' => $rel_makefile_in,
'HAVE-MAKEFILE-IN-DEPS' => (@include_stack > 0),
'MAKEFILE-IN-DEPS' => "@include_stack",
- 'MAKEFILE-AM' => $rel_makefile_am,
'AUTOMAKE-OPTIONS' => $automake_options,
'MAKEFILE-AM-SOURCES' => "$makefile$colon_infile",
'REGEN-ACLOCAL-M4' => $regen_aclocal_m4,
@@ -3910,8 +3903,8 @@ sub handle_user_recursion ()
}
}
-# handle_clean ($MAKEFILE)
-# ------------------------
+# handle_clean()
+# --------------
# Handle all 'clean' targets.
sub handle_clean ($)
{
@@ -3940,7 +3933,7 @@ sub handle_clean ($)
'CLEAN-DIRS' => "@dplain",
'DISTCLEAN-DIRS' => "@ddist",
'MAINTAINERCLEAN-DIRS' => "@dmaint",
- 'MAKEFILE' => basename $makefile);
+ );
}
@@ -6861,6 +6854,11 @@ sub generate_makefile ($$)
# Must do this after reading .am file.
define_variable ('subdir', INTERNAL, $relative_dir);
define_variable ('am.conf.aux-dir', INTERNAL, $am_config_aux_dir);
+ define_variable ('am.relpath.makefile', INTERNAL, basename ($makefile));
+ define_variable ('am.relpath.makefile.am', INTERNAL,
+ prepend_srcdir ($makefile_am));
+ define_variable ('am.relpath.makefile.in', INTERNAL,
+ prepend_srcdir ($makefile_in));
# If DIST_SUBDIRS is defined, make sure SUBDIRS is, so that
# recursive rules are enabled.
@@ -6874,7 +6872,7 @@ sub generate_makefile ($$)
verbatim ('am-dir');
handle_config_headers;
- handle_configure ($makefile_am, $makefile_in, $makefile, @inputs);
+ handle_configure ($makefile, @inputs);
handle_gettext;
handle_libraries;
handle_ltlibraries;
@@ -6937,8 +6935,7 @@ sub generate_makefile ($$)
my $output_checks = '';
# See if any _SOURCES (or _LIBADD, or ...) variable were misspelled.
- $output_checks .= preprocess_file ("$libdir/am/check-typos.am",
- MAKEFILE => basename ($makefile));
+ $output_checks .= preprocess_file ("$libdir/am/check-typos.am");
# Bail out if we have encountered errors at make runtime. The
# relevant diagnostic should have already been reported by any
# call to the function '$(am.error)', so we just print a generic
diff --git a/lib/am/check-typos.am b/lib/am/check-typos.am
index 89e7db7..f4629fe 100644
--- a/lib/am/check-typos.am
+++ b/lib/am/check-typos.am
@@ -120,7 +120,7 @@ ifdef .am/sanity-checks-failed
$(shell rm -f $(am.dir)/check-typos-stamp.mk)
$(error Some Automake-NG sanity checks failed)
else
-$(am.dir)/check-typos-stamp.mk: %MAKEFILE% | $(am.dir)
+$(am.dir)/check-typos-stamp.mk: $(am.relpath.makefile) | $(am.dir)
@if \
$(MAKE) --no-print-directory AM_FORCE_SANITY_CHECKS=yes .am/nil; \
then \
diff --git a/lib/am/clean.am b/lib/am/clean.am
index e49a6be..8b6f571 100644
--- a/lib/am/clean.am
+++ b/lib/am/clean.am
@@ -64,9 +64,9 @@ maintainer-clean-generic:
# this, and it's not unreasonable to expect user-defined rules might
# do that as well).
distclean:
- rm -f %MAKEFILE% $(am__config_distclean_files)
+ rm -f $(am.relpath.makefile) $(am__config_distclean_files)
maintainer-clean:
- rm -f %MAKEFILE% $(am__config_distclean_files)
+ rm -f $(am.relpath.makefile) $(am__config_distclean_files)
.PHONY: clean mostlyclean distclean maintainer-clean \
clean-generic mostlyclean-generic distclean-generic maintainer-clean-generic
diff --git a/lib/am/configure.am b/lib/am/configure.am
index 13a936b..5399047 100644
--- a/lib/am/configure.am
+++ b/lib/am/configure.am
@@ -19,7 +19,8 @@
## --------------------- ##
## This rule remakes the Makefile.in.
-%MAKEFILE-IN%: %MAINTAINER-MODE% %MAKEFILE-AM% %MAKEFILE-IN-DEPS%
$(am.remake.configure-deps)
+$(am.relpath.makefile.in): %MAINTAINER-MODE% $(am.relpath.makefile.am) \
+ %MAKEFILE-IN-DEPS% $(am.remake.configure-deps)
## If configure.ac or one of configure's dependencies has changed, all
## Makefile.in are to be updated; it is then more efficient to run
## automake on all the Makefiles at once. It also allow Automake to be
@@ -47,9 +48,9 @@
## Ensure that GNU make doesn't remove Makefile if ./config.status (below)
## is interrupted. Otherwise, the user would need to know to rerun
## ./config.status to recreate the lost Makefile.
-.PRECIOUS: %MAKEFILE%
+.PRECIOUS: $(am.relpath.makefile)
## This rule remakes the Makefile.
-%MAKEFILE%: %MAKEFILE-DEPS% $(top_builddir)/config.status
+$(am.relpath.makefile): %MAKEFILE-DEPS% $(top_builddir)/config.status
## If Makefile is to be updated because of config.status, then run
## config.status without argument in order to (i) rerun all the
## AC_CONFIG_COMMANDS including those that are not visible to
@@ -71,7 +72,7 @@
## Avoid the "deleted header file" problem for the dependencies.
?HAVE-MAKEFILE-IN-DEPS?%MAKEFILE-IN-DEPS%:
-am.dist.common-files += %MAKEFILE-AM%
+am.dist.common-files += $(am.relpath.makefile.am)
## --------------------------- ##
diff --git a/t/remake.sh b/t/remake.sh
index b883d2a..1e50eee 100755
--- a/t/remake.sh
+++ b/t/remake.sh
@@ -33,6 +33,9 @@ mkdir sub
$ACLOCAL
$AUTOMAKE
-grep '^Makefile' sub/Makefile.in
+grep -i makefile sub/Makefile.in # For debugging.
+grep '^am\.relpath\.makefile = Makefile$' sub/Makefile.in
+grep '^am\.relpath\.makefile\.in = \$(srcdir)/Makefile\.in$' sub/Makefile.in
+grep '^am\.relpath\.makefile\.am = \$(srcdir)/Makefile\.am$' sub/Makefile.in
:
--
1.7.12.rc0
- [Automake-NG] [FYI] [ng] general: new internal vars to hold path of current Makefile{, .in, .am},
Stefano Lattarini <=