i3lock-color

The world's most popular non-default computer lockscreen.
Index Commits Files Refs README LICENSE
m4/ax_enable_builddir.m4 (13211B)
   1 # ===========================================================================
   2 #    http://www.gnu.org/software/autoconf-archive/ax_enable_builddir.html
   3 # ===========================================================================
   4 #
   5 # SYNOPSIS
   6 #
   7 #   AX_ENABLE_BUILDDIR [(dirstring-or-command [,Makefile.mk [,-all]])]
   8 #
   9 # DESCRIPTION
  10 #
  11 #   If the current configure was run within the srcdir then we move all
  12 #   configure-files into a subdir and let the configure steps continue
  13 #   there. We provide an option --disable-builddir to suppress the move into
  14 #   a separate builddir.
  15 #
  16 #   Defaults:
  17 #
  18 #     $1 = $host (overridden with $HOST)
  19 #     $2 = Makefile.mk
  20 #     $3 = -all
  21 #
  22 #   This macro must be called before AM_INIT_AUTOMAKE. It creates a default
  23 #   toplevel srcdir Makefile from the information found in the created
  24 #   toplevel builddir Makefile. It just copies the variables and
  25 #   rule-targets, each extended with a default rule-execution that recurses
  26 #   into the build directory of the current "HOST". You can override the
  27 #   auto-dection through `config.guess` and build-time of course, as in
  28 #
  29 #     make HOST=i386-mingw-cross
  30 #
  31 #   which can of course set at configure time as well using
  32 #
  33 #     configure --host=i386-mingw-cross
  34 #
  35 #   After the default has been created, additional rules can be appended
  36 #   that will not just recurse into the subdirectories and only ever exist
  37 #   in the srcdir toplevel makefile - these parts are read from the $2 =
  38 #   Makefile.mk file
  39 #
  40 #   The automatic rules are usually scanning the toplevel Makefile for lines
  41 #   like '#### $host |$builddir' to recognize the place where to recurse
  42 #   into. Usually, the last one is the only one used. However, almost all
  43 #   targets have an additional "*-all" rule which makes the script to
  44 #   recurse into _all_ variants of the current HOST (!!) setting. The "-all"
  45 #   suffix can be overriden for the macro as well.
  46 #
  47 #   a special rule is only given for things like "dist" that will copy the
  48 #   tarball from the builddir to the sourcedir (or $(PUB)) for reason of
  49 #   convenience.
  50 #
  51 # LICENSE
  52 #
  53 #   Copyright (c) 2009 Guido U. Draheim <guidod@gmx.de>
  54 #   Copyright (c) 2009 Alan Jenkins <alan-jenkins@tuffmail.co.uk>
  55 #
  56 #   This program is free software; you can redistribute it and/or modify it
  57 #   under the terms of the GNU General Public License as published by the
  58 #   Free Software Foundation; either version 3 of the License, or (at your
  59 #   option) any later version.
  60 #
  61 #   This program is distributed in the hope that it will be useful, but
  62 #   WITHOUT ANY WARRANTY; without even the implied warranty of
  63 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
  64 #   Public License for more details.
  65 #
  66 #   You should have received a copy of the GNU General Public License along
  67 #   with this program. If not, see <http://www.gnu.org/licenses/>.
  68 #
  69 #   As a special exception, the respective Autoconf Macro's copyright owner
  70 #   gives unlimited permission to copy, distribute and modify the configure
  71 #   scripts that are the output of Autoconf when processing the Macro. You
  72 #   need not follow the terms of the GNU General Public License when using
  73 #   or distributing such scripts, even though portions of the text of the
  74 #   Macro appear in them. The GNU General Public License (GPL) does govern
  75 #   all other use of the material that constitutes the Autoconf Macro.
  76 #
  77 #   This special exception to the GPL applies to versions of the Autoconf
  78 #   Macro released by the Autoconf Archive. When you make and distribute a
  79 #   modified version of the Autoconf Macro, you may extend this special
  80 #   exception to the GPL to apply to your modified version as well.
  81 
  82 #serial 25
  83 
  84 AC_DEFUN([AX_ENABLE_BUILDDIR],[
  85 AC_REQUIRE([AC_CANONICAL_HOST])[]dnl
  86 AC_REQUIRE([AC_CANONICAL_TARGET])[]dnl
  87 AC_REQUIRE([AX_CONFIGURE_ARGS])[]dnl
  88 AC_REQUIRE([AM_AUX_DIR_EXPAND])[]dnl
  89 AC_BEFORE([$0],[AM_INIT_AUTOMAKE])dnl
  90 AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl
  91 AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl
  92 AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl
  93 SUB="."
  94 AC_ARG_ENABLE([builddir], AS_HELP_STRING(
  95   [--disable-builddir],[disable automatic build in subdir of sources])
  96   ,[SUB="$enableval"], [SUB="auto"])
  97 if test ".$ac_srcdir_defaulted" != ".no" ; then
  98 if test ".$srcdir" = ".." ; then
  99   if test -f config.status ; then
 100     AC_MSG_NOTICE(toplevel srcdir already configured... skipping subdir build)
 101   else
 102     test ".$SUB" = "."  && SUB="."
 103     test ".$SUB" = ".no"  && SUB="."
 104     test ".$TARGET" = "." && TARGET="$target"
 105     test ".$SUB" = ".auto" && SUB="m4_ifval([$1], [$1],[$TARGET])"
 106     if test ".$SUB" != ".." ; then    # we know where to go and
 107       AS_MKDIR_P([$SUB])
 108       echo __.$SUB.__ > $SUB/conftest.tmp
 109       cd $SUB
 110       if grep __.$SUB.__ conftest.tmp >/dev/null 2>/dev/null ; then
 111         rm conftest.tmp
 112         AC_MSG_RESULT([continue configure in default builddir "./$SUB"])
 113       else
 114         AC_MSG_ERROR([could not change to default builddir "./$SUB"])
 115       fi
 116       srcdir=`echo "$SUB" |
 117               sed -e 's,^\./,,;s,[[^/]]$,&/,;s,[[^/]]*/,../,g;s,[[/]]$,,;'`
 118       # going to restart from subdirectory location
 119       test -f $srcdir/config.log   && mv $srcdir/config.log   .
 120       test -f $srcdir/confdefs.h   && mv $srcdir/confdefs.h   .
 121       test -f $srcdir/conftest.log && mv $srcdir/conftest.log .
 122       test -f $srcdir/$cache_file  && mv $srcdir/$cache_file  .
 123       AC_MSG_RESULT(....exec $SHELL $srcdir/[$]0 "--srcdir=$srcdir" "--enable-builddir=$SUB" ${1+"[$]@"})
 124       case "[$]0" in # restart
 125        [[\\/]]* | ?:[[\\/]]*) # Asbolute name
 126          eval $SHELL "'[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;;
 127        *) eval $SHELL "'$srcdir/[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;;
 128       esac ; exit $?
 129     fi
 130   fi
 131 fi fi
 132 test ".$SUB" = ".auto" && SUB="."
 133 dnl ac_path_prog uses "set dummy" to override $@ which would defeat the "exec"
 134 AC_PATH_PROG(SED,gsed sed, sed)
 135 AUX="$am_aux_dir"
 136 AS_VAR_POPDEF([SED])dnl
 137 AS_VAR_POPDEF([AUX])dnl
 138 AS_VAR_POPDEF([SUB])dnl
 139 AC_CONFIG_COMMANDS([buildir],[dnl .............. config.status ..............
 140 AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl
 141 AS_VAR_PUSHDEF([TOP],[top_srcdir])dnl
 142 AS_VAR_PUSHDEF([SRC],[ac_top_srcdir])dnl
 143 AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl
 144 AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl
 145 pushdef([END],[Makefile.mk])dnl
 146 pushdef([_ALL],[ifelse([$3],,[-all],[$3])])dnl
 147   SRC="$ax_enable_builddir_srcdir"
 148   if test ".$SUB" = ".." ; then
 149     if test -f "$TOP/Makefile" ; then
 150       AC_MSG_NOTICE([skipping TOP/Makefile - left untouched])
 151     else
 152       AC_MSG_NOTICE([skipping TOP/Makefile - not created])
 153     fi
 154   else
 155     if test -f "$SRC/Makefile" ; then
 156       a=`grep "^VERSION " "$SRC/Makefile"` ; b=`grep "^VERSION " Makefile`
 157       test "$a" != "$b" && rm "$SRC/Makefile"
 158     fi
 159     if test -f "$SRC/Makefile" ; then
 160     echo "$SRC/Makefile : $SRC/Makefile.in" > $tmp/conftemp.mk
 161     echo "    []@ echo 'REMOVED,,,' >\$[]@" >> $tmp/conftemp.mk
 162       eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null"
 163       if grep '^REMOVED,,,' "$SRC/Makefile" >/dev/null
 164       then rm $SRC/Makefile ; fi
 165       cp $tmp/conftemp.mk $SRC/makefiles.mk~      ## DEBUGGING
 166     fi
 167     if test ! -f "$SRC/Makefile" ; then
 168       AC_MSG_NOTICE([create TOP/Makefile guessed from local Makefile])
 169       x='`' ; cat >$tmp/conftemp.sed <<_EOF
 170 /^\$/n
 171 x
 172 /^\$/bS
 173 x
 174 /\\\\\$/{H;d;}
 175 {H;s/.*//;x;}
 176 bM
 177 :S
 178 x
 179 /\\\\\$/{h;d;}
 180 {h;s/.*//;x;}
 181 :M
 182 s/\\(\\n\\)    /\\1 /g
 183 /^    /d
 184 /^[[     ]]*[[\\#]]/d
 185 /^VPATH *=/d
 186 s/^srcdir *=.*/srcdir = ./
 187 s/^top_srcdir *=.*/top_srcdir = ./
 188 /[[:=]]/!d
 189 /^\\./d
 190 dnl Now handle rules (i.e. lines containing ":" but not " = ").
 191 / = /b
 192 / .= /b
 193 /:/!b
 194 s/:.*/:/
 195 s/ /  /g
 196 s/ \\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/ \\1 \\1[]_ALL\\2/g
 197 s/^\\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/\\1 \\1[]_ALL\\2/
 198 s/  / /g
 199 /^all all[]_ALL[[ :]]/i\\
 200 all-configured : all[]_ALL
 201 dnl dist-all exists... and would make for dist-all-all
 202 s/ [[a-zA-Z0-9-]]*[]_ALL [[a-zA-Z0-9-]]*[]_ALL[]_ALL//g
 203 /[]_ALL[]_ALL/d
 204 a\\
 205     @ HOST="\$(HOST)\" \\\\\\
 206     ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\
 207     ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
 208     ; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
 209     ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\
 210     ; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\
 211     ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
 212     ; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\
 213     ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
 214     ; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done
 215 dnl special rule add-on: "dist" copies the tarball to $(PUB). (source tree)
 216 /dist[]_ALL *:/a\\
 217     @ HOST="\$(HOST)\" \\\\\\
 218     ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\
 219     ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
 220     ; found=$x echo \$\$BUILD | wc -w $x \\\\\\
 221     ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\
 222     ; if test "\$\$found" -eq "0" ; then : \\\\\\
 223     ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
 224     ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
 225     ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\
 226     ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
 227 dnl special rule add-on: "dist-foo" copies all the archives to $(PUB). (source tree)
 228 /dist-[[a-zA-Z0-9]]*[]_ALL *:/a\\
 229     @ HOST="\$(HOST)\" \\\\\\
 230     ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\
 231     ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
 232     ; found=$x echo \$\$BUILD | wc -w $x \\\\\\
 233     ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\
 234     ; if test "\$\$found" -eq "0" ; then : \\\\\\
 235     ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
 236     ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
 237     ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\
 238     ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
 239 dnl special rule add-on: "distclean" removes all local builddirs completely
 240 /distclean[]_ALL *:/a\\
 241     @ HOST="\$(HOST)\" \\\\\\
 242     ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\
 243     ; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\
 244     ; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
 245     ; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\
 246     ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
 247     ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
 248     ; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\
 249     ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
 250     ; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\
 251     ; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\
 252     ; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile
 253 _EOF
 254       cp "$tmp/conftemp.sed" "$SRC/makefile.sed~"            ## DEBUGGING
 255       $SED -f $tmp/conftemp.sed Makefile >$SRC/Makefile
 256       if test -f "$SRC/m4_ifval([$2],[$2],[END])" ; then
 257         AC_MSG_NOTICE([extend TOP/Makefile with TOP/m4_ifval([$2],[$2],[END])])
 258         cat $SRC/END >>$SRC/Makefile
 259       fi ; xxxx="####"
 260       echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$SRC/Makefile
 261       # sanity check
 262       if grep '^; echo "MAKE ' $SRC/Makefile >/dev/null ; then
 263         AC_MSG_NOTICE([buggy sed found - it deletes tab in "a" text parts])
 264         $SED -e '/^@ HOST=/s/^/    /' -e '/^; /s/^/    /' $SRC/Makefile \
 265           >$SRC/Makefile~
 266         (test -s $SRC/Makefile~ && mv $SRC/Makefile~ $SRC/Makefile) 2>/dev/null
 267       fi
 268     else
 269       xxxx="\\#\\#\\#\\#"
 270       # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed
 271       echo "s!^$xxxx [[^|]]* | *$SUB *\$!$xxxx ...... $SUB!" >$tmp/conftemp.sed
 272       $SED -f "$tmp/conftemp.sed" "$SRC/Makefile" >$tmp/mkfile.tmp
 273         cp "$tmp/conftemp.sed" "$SRC/makefiles.sed~"         ## DEBUGGING
 274         cp "$tmp/mkfile.tmp"   "$SRC/makefiles.out~"         ## DEBUGGING
 275       if cmp -s "$SRC/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then
 276         AC_MSG_NOTICE([keeping TOP/Makefile from earlier configure])
 277         rm "$tmp/mkfile.tmp"
 278       else
 279         AC_MSG_NOTICE([reusing TOP/Makefile from earlier configure])
 280         mv "$tmp/mkfile.tmp" "$SRC/Makefile"
 281       fi
 282     fi
 283     AC_MSG_NOTICE([build in $SUB (HOST=$ax_enable_builddir_host)])
 284     xxxx="####"
 285     echo "$xxxx" "$ax_enable_builddir_host" "|$SUB" >>$SRC/Makefile
 286   fi
 287 popdef([END])dnl
 288 AS_VAR_POPDEF([SED])dnl
 289 AS_VAR_POPDEF([AUX])dnl
 290 AS_VAR_POPDEF([SRC])dnl
 291 AS_VAR_POPDEF([TOP])dnl
 292 AS_VAR_POPDEF([SUB])dnl
 293 ],[dnl
 294 ax_enable_builddir_srcdir="$srcdir"                    # $srcdir
 295 ax_enable_builddir_host="$HOST"                        # $HOST / $host
 296 ax_enable_builddir_version="$VERSION"                  # $VERSION
 297 ax_enable_builddir_package="$PACKAGE"                  # $PACKAGE
 298 ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX
 299 ax_enable_builddir_sed="$ax_enable_builddir_sed"       # $SED
 300 ax_enable_builddir="$ax_enable_builddir"               # $SUB
 301 ])dnl
 302 ])