]> 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>
Sat, 25 May 2019 18:25:09 +0000 (21:25 +0300)
commit00ba9fa2992b960cfd3b3ecf5a8454101d65b23e
tree14d244e3a6e0d78dc98a5064768580b4fca0819c
parent3d1a7a1d45d19285a8ce703c1d68097b83db9d63
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>
(cherry picked from commit 5f87be42f0ae0126938624a1419a572607078217)
CMakeLists.txt
configure.ac
include/event2/util.h