Hello, I'm still undecided with this. I see the benefit, but I see quite a few subtle issues with it as well. I'd like to see a more evolved patch before judging.
* Bruno Haible wrote on Tue, Apr 18, 2006 at 02:43:42PM CEST: > > + @defmac AC_PROG_MKDIR_P > + @acindex{AC_PROG_MKDIR_P} > + @ovindex mkdir_p > + Set output variable @code{mkdir_p} to a command that ensures that for > + each argument, a directory named by this argument exists, creating it > + and its parent directories if needed. > + > + This macro uses the @samp{mkdir} command if possible. It may also fall > + back to the @samp{install-sh -d} command. > + > + Autoconf comes with a copy of @file{install-sh} that you can use. If > + you use @code{AC_PROG_MKDIR_P}, you must include @file{install-sh} in > + your distribution. > + @end defmac > + First, this description does not document that `install_sh' will be set and AC_SUBSTed. This description does not make it clear that @mkdir_p@ may only be used in files later used as input to `make'. The naive user may choose to use $mkdir_p in, say, shell scripts, maybe in configure.ac even: on his GNU/Linux system, that will work fine, and not expose the limitations. For the internal, undocumented Automake macro this may have been ok, but for a generic, documented Autoconf macro this is definitely not ok. This also opens up the question of whether we could actually make $mkdir_p work in shell scripts as well, and if, how. Surely it'd have to be mkdir_p='${install_sh} -d' then, and track down further issues with how $install_sh may have been set. Unfortunately, this setting changed over past Automake versions: now there may be a $(SHELL) prepending it (automake/m4/install-sh.m4): install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} Probably best to link to the documentation of AS_MKDIR_P for use in configure.ac itself, and forbid use in other, non-M4sh shell scripts. The next issue that comes with this macro is that, because both Automake and Autoconf race for setting $install_sh and $mkdir_p currently, it depends on the order in which the user invokes AC_PROG_MKDIR_P and AM_INIT_AUTOMAKE, which will win. This certainly needs to be documented, or better even, a preferred order be enforced by AC_BEFORE et al. The proposed macro for Autoconf disallows user overrides for both $install_sh and $mkdir_p, whereas Automake would override the latter only. Cheers, Ralf