autoconf-patches
[Top][All Lists]
Advanced

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

Re: [PATCH 1/5] Document AM_MAKEFLAGS workaround to the macro override p


From: Bruno Haible
Subject: Re: [PATCH 1/5] Document AM_MAKEFLAGS workaround to the macro override problem.
Date: Sun, 4 Oct 2009 20:02:35 +0200
User-agent: KMail/1.9.9

Ralf Wildenhues wrote:
> +Makefiles generated by @command{automake} expand @code{$(AM_MAKEFLAGS)}
> +on the command line of submakes, which can be used for propagated overrides
> +(@pxref{Subdirectories, , Automake, automake, @acronym{GNU} Automake}).

Can you add an example for it? Suppose I want to override the MKDIR_P Makefile
variable in all Makefiles - this was what started this discussion -, am I
supposed to use the command

   make MKDIR_P='mkdir -p'

or

   make AM_MAKEFLAGS="MKDIR_P='mkdir -p'"

or even

   make MKDIR_P='mkdir -p' AM_MAKEFLAGS="MKDIR_P='mkdir -p'"

?

With GNU make, the first and the third one work fine. With Solaris make, only
the third one work fine. So probably the syntax to be recommended is the third
one.


Test case:

$ cat > configure.ac <<\EOF
AC_INIT
AM_INIT_AUTOMAKE(dummy,0)
AC_PROG_MKDIR_P
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([2/Makefile])
AC_OUTPUT
EOF
$ cat > Makefile.am <<\EOF
SUBDIRS = 2
all: sub0
sub0:
        $(MKDIR_P) sub0
all-local:
        $(MKDIR_P) sub1
EOF
$ mkdir 2
$ cat > 2/Makefile.am <<\EOF
all: sub2
sub2:
        $(MKDIR_P) sub2
all-local:
        $(MKDIR_P) sub3
EOF
$ touch NEWS README AUTHORS ChangeLog
$ aclocal
$ autoconf
$ automake -a -c

Execution with GNU make:

$ make MKDIR_P='mkdir -p'
Making all in 2
make[1]: entrant dans le répertoire « /tmp/1/2 »
mkdir -p sub3
mkdir -p sub2
make[1]: quittant le répertoire « /tmp/1/2 »
make[1]: entrant dans le répertoire « /tmp/1 »
mkdir -p sub1
make[1]: quittant le répertoire « /tmp/1 »
mkdir -p sub0

$ make AM_MAKEFLAGS="MKDIR_P='mkdir -p'"
Making all in 2
make[1]: entrant dans le répertoire « /tmp/1/2 »
mkdir -p sub3
mkdir -p sub2
make[1]: quittant le répertoire « /tmp/1/2 »
make[1]: entrant dans le répertoire « /tmp/1 »
mkdir -p sub1
make[1]: quittant le répertoire « /tmp/1 »
/arch/x86-linux/gnu/bin/mkdir -p sub0

$ make MKDIR_P='mkdir -p' AM_MAKEFLAGS="MKDIR_P='mkdir -p'"
Making all in 2
make[1]: entrant dans le répertoire « /tmp/1/2 »
mkdir -p sub3
mkdir -p sub2
make[1]: quittant le répertoire « /tmp/1/2 »
make[1]: entrant dans le répertoire « /tmp/1 »
mkdir -p sub1
make[1]: quittant le répertoire « /tmp/1 »
mkdir -p sub0

Execution with Solaris make:

$ make MKDIR_P='mkdir -p'
Making all in 2
/opt/csw/bin/gmkdir -p sub3
/opt/csw/bin/gmkdir -p sub2
/opt/csw/bin/gmkdir -p sub1
mkdir -p sub0

$ make AM_MAKEFLAGS="MKDIR_P='mkdir -p'"
Making all in 2
mkdir -p sub3
mkdir -p sub2
mkdir -p sub1
/opt/csw/bin/gmkdir -p sub0

$ make MKDIR_P='mkdir -p' AM_MAKEFLAGS="MKDIR_P='mkdir -p'"
Making all in 2
mkdir -p sub3
mkdir -p sub2
mkdir -p sub1
mkdir -p sub0

Bruno




reply via email to

[Prev in Thread] Current Thread [Next in Thread]