]> granicus.if.org Git - libevent/commit
Define `_GNU_SOURCE` properly/consistently per autoconf
authorEnji Cooper <yaneurabeya@gmail.com>
Mon, 25 Feb 2019 19:59:15 +0000 (11:59 -0800)
committerAzat Khuzhin <azat@libevent.org>
Wed, 27 Feb 2019 20:18:12 +0000 (23:18 +0300)
commit5f87be42f0ae0126938624a1419a572607078217
treefd0cb4a95279f8d09e1727e611bf64e8a9ef5657
parenta30d6d85219ea80c16df6da4f6a9430254e5a0da
Define `_GNU_SOURCE` properly/consistently per autoconf

Although `_GNU_SOURCE` can be defined as an arbitrary #define per the
glibc docs [1], it's best to define it in a manner consistent with the way
that autoconf defines it, i.e., `1`.

While this shouldn't matter in most cases, it does when the headers from
other projects follow the poorly defined GNU convention implemented by
autoconf and are included after the libevent's util.h header. An example
failure with clang, similar to the failure I encountered, is as follows:
```
$ printf "#define _GNU_SOURCE\n#define _GNU_SOURCE 1" | clang -c -x c -
<stdin>:2:9: warning: '_GNU_SOURCE' macro redefined [-Wmacro-redefined]
        ^
<stdin>:1:9: note: previous definition is here
        ^
1 warning generated.
```

This happened when compiling python [2] with a stale homebrew util.h file from
libevent (which admittedly would not happen in a correct libevent install, as the
header should be installed under /usr/local/include/event2/util.h). However, if
both headers had been combined (which is more likely), it would have failed as
shown above.

Removing the ad hoc definition unbreaks compiling python's pyconfig.h.in header
when included after util.h from libevent.

1. http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
2. https://github.com/python/cpython/blob/master/configure.ac#L126

Closes: #773 (cherry-picked)
Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
CMakeLists.txt
configure.ac
include/event2/util.h