Using pthread in Swift

(Bryan Chan) #1

I am trying to use a C library (e.g. libfoo) by using Swift Package
manager to create a module map for the C library and import it into
Swift code. I was able to do this for a few other libraries without
any issue. In this case, the header file of the C library includes
<pthread.h>, which seems to cause conflicts with the Glibc module.

Here is an excerpt from the compiler errors:

error: declaration of 'pthread_mutex_t' must be imported from module
'SwiftGlibc.C.signal' before it is required
pthread_mutex_t *getFooMutex();
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:128:3: note:
previous declaration is here
} pthread_mutex_t;

What is the correct way to do this? Why isn't swiftc able to tell that
pthread.h belongs to Glibc, and avoid parsing it again as part of