]> git.sur5r.net Git - i3/i3status/blob - m4/ax_extend_srcdir.m4
default config: move disk info out of network info
[i3/i3status] / m4 / ax_extend_srcdir.m4
1 # ===========================================================================
2 #     http://www.gnu.org/software/autoconf-archive/ax_extend_srcdir.html
3 # ===========================================================================
4 #
5 # SYNOPSIS
6 #
7 #   AX_EXTEND_SRCDIR
8 #
9 # DESCRIPTION
10 #
11 #   The AX_EXTEND_SRCDIR macro extends $srcdir by one path component.
12 #
13 #   As an example, when working in /home/michael/i3-4.12/build and calling
14 #   ../configure, your $srcdir is "..". After calling AX_EXTEND_SRCDIR,
15 #   $srcdir will be set to "../../i3-4.12".
16 #
17 #   The result of extending $srcdir is that filenames (e.g. in the output of
18 #   the "backtrace" gdb command) will include one more path component of the
19 #   absolute source path. The additional path component makes it easy for
20 #   users to recognize which files belong to the PACKAGE, and -- provided a
21 #   dist tarball was unpacked -- which version of PACKAGE was used.
22 #
23 #   As an example, in "backtrace", you will see:
24 #
25 #     #0  main (argc=1, argv=0x7fffffff1fc8) at ../../i3-4.12/src/main.c:187
26 #
27 #   instead of:
28 #
29 #     #0  main (argc=1, argv=0x7fffffff1fc8) at ../src/main.c:187
30 #
31 #   In case your code uses the __FILE__ preprocessor directive to refer to
32 #   the filename of the current source file (e.g. in debug messages), using
33 #   the extended path might be undesirable. For this purpose,
34 #   AX_EXTEND_SRCDIR defines the output variable AX_EXTEND_SRCDIR_CPPFLAGS,
35 #   which can be added to AM_CPPFLAGS in Makefile.am in order to define the
36 #   preprocessor directive STRIPPED__FILE__. As an example, when compiling
37 #   the file "../../i3-4.12/src/main.c", STRIPPED__FILE__ evaluates to
38 #   "main.c".
39 #
40 #   There are some caveats: When $srcdir is "." (i.e. when ./configure was
41 #   called instead of ../configure in a separate build directory),
42 #   AX_EXTEND_SRCDIR will still extend $srcdir, but the intended effect will
43 #   not be achieved because of the way automake specifies file paths:
44 #   automake defines COMPILE to use "`test -f '$source' || echo
45 #   '\$(srcdir)/'`$source" in order to prefer files in the current directory
46 #   over specifying $srcdir explicitly.
47 #
48 #   The AX_EXTEND_SRCDIR author is not aware of any way to influence this
49 #   automake behavior. Patches very welcome.
50 #
51 #   To work around this issue, you can use AX_ENABLE_BUILDDIR i.e. by adding
52 #   the following code to configure.ac:
53 #
54 #     AX_ENABLE_BUILDDIR
55 #     dnl ...
56 #     AX_EXTEND_SRCDIR
57 #
58 #   Then also add this bit to Makefile.am (if you wish to use
59 #   STRIPPED__FILE__ in your code):
60 #
61 #     AM_CPPFLAGS = @AX_EXTEND_SRCDIR_CPPFLAGS@
62 #
63 # LICENSE
64 #
65 #   Copyright (c) 2016 Michael Stapelberg <michael@i3wm.org>
66 #
67 #   Copying and distribution of this file, with or without modification, are
68 #   permitted in any medium without royalty provided the copyright notice
69 #   and this notice are preserved.  This file is offered as-is, without any
70 #   warranty.
71
72 #serial 3
73
74 AC_DEFUN([AX_EXTEND_SRCDIR],
75 [dnl
76 AS_CASE([$srcdir],
77   [.|.*|/*],
78   [
79     # pwd -P is specified in IEEE 1003.1 from 2004
80     as_dir=`cd "$srcdir" && pwd -P`
81     as_base=`AS_BASENAME([$as_dir])`
82     srcdir=${srcdir}/../${as_base}
83
84     AC_SUBST([AX_EXTEND_SRCDIR_CPPFLAGS], ["-DSTRIPPED__FILE__=AS_ESCAPE([\"$$(basename $<)\"])"])
85   ])
86 ])dnl AX_EXTEND_SRCDIR