From 64bd95b216f833779e3558517375e8d0895fcc03 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 22 Jun 2010 08:01:57 +0000 Subject: mkdir --- m4/Makefile.am | 1 + m4/mkdirp.m4 | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 m4/mkdirp.m4 (limited to 'm4') diff --git a/m4/Makefile.am b/m4/Makefile.am index 3afad7e810..5ef28bae08 100644 --- a/m4/Makefile.am +++ b/m4/Makefile.am @@ -21,6 +21,7 @@ lib-prefix.m4\ libxml2.m4\ longdouble.m4\ longlong.m4\ +mkdir.m4\ nls.m4\ pkg.m4\ po.m4\ diff --git a/m4/mkdirp.m4 b/m4/mkdirp.m4 new file mode 100644 index 0000000000..064c158dd8 --- /dev/null +++ b/m4/mkdirp.m4 @@ -0,0 +1,63 @@ +## -*- Autoconf -*- +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + MKDIR_P='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + MKDIR_P='$(mkinstalldirs)' + else + MKDIR_P='$(install_sh) -d' + fi +fi +AC_SUBST([MKDIR_P])]) -- cgit v1.2.3-18-g5258