clang build failure
- Dominant language
- C++
- Stars
- 30.5k
- Forks
- 5.9k
- PR merge metrics
- No merged PRs in 30d
Description
For some reason, cmake's `check_symbol_exists()` does not find some functions from the Posix API, namely preadv(), sengmmsg(), recvmmsg(). These functions are found just fine when building with gcc. See highlighting below.
```
$ clang++-10 --version
clang version 10.0.0-4ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
$ mkdir build-clang10
$ cd build-clang10
$ cmake -DCMAKE_PREFIX_PATH=. -DCMAKE_INSTALL_PREFIX=. -DCMAKE_BUILD_TYPE=RelWithDebugInfo -DBUILD_SHARED_LIBS=OFF -DFOLLY_USE_JEMALLOC=0 -DCMAKE_CXX_COMPILER=clang++-10 ..
...
-- Looking for pthread_atfork
-- Looking for pthread_atfork - not found
-- Looking for accept4
-- Looking for accept4 - not found
-- Looking for getrandom
-- Looking for getrandom - not found
**-- Looking for preadv
-- Looking for preadv - not found
-- Looking for pwritev
-- Looking for pwritev - not found**
-- Looking for clock_gettime
-- Looking for clock_gettime - not found
-- Looking for pipe2
-- Looking for pipe2 - not found
**-- Looking for sendmmsg
-- Looking for sendmmsg - not found
-- Looking for recvmmsg
-- Looking for recvmmsg - not found**
-- Looking for malloc_usable_size
-- Looking for malloc_usable_size - not found
$ make -j2
....
[ 77%] Building CXX object CMakeFiles/folly_base.dir/folly/net/NetOps.cpp.o
/home/dmitry/repo/folly/folly/net/NetOps.cpp:34:32: error: conflicting types for 'recvmmsg'
extern "C" FOLLY_ATTR_WEAK int recvmmsg(
^
/usr/include/x86_64-linux-gnu/sys/socket.h:199:12: note: previous declaration is here
extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
^
```
Contributor guide
Assessment
This issue has not been assessed yet.