facebook / facebook/folly

clang build failure

Open
#1,731 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.