Skip to content

Commit

Permalink
Use -pthread flag and simplify pthread build logic
Browse files Browse the repository at this point in the history
Sometimes -lpthread is not enough. This has caused build failures on
Gentoo Linux in the past.

The logic also seems needlessly complex. We check for HAVE_PTHREAD on
UNIX platforms even though CMake errors out if pthreads are not
found. Similarly, we have a fallback for HAVE_PTHREAD_SIGNAL being
false even though we always set it to true.
  • Loading branch information
chewi committed Mar 10, 2020
1 parent e8d7cd3 commit a0b3124
Show file tree
Hide file tree
Showing 4 changed files with 5 additions and 29 deletions.
11 changes: 4 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -123,12 +123,10 @@ if (UNIX)
check_type_size (short SIZEOF_SHORT)

# pthread is used on both Linux and Mac
check_library_exists ("pthread" pthread_create "" HAVE_PTHREAD)
if (HAVE_PTHREAD)
list (APPEND libs pthread)
else()
message (FATAL_ERROR "Missing library: pthread")
endif()
set (CMAKE_THREAD_PREFER_PTHREAD TRUE)
set (THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package (Threads REQUIRED)
list (APPEND libs Threads::Threads)

# curl is used on both Linux and Mac
find_package (CURL)
Expand Down Expand Up @@ -269,7 +267,6 @@ if (UNIX)
set (HAVE_CXX_EXCEPTIONS 1)
set (HAVE_CXX_MUTABLE 1)
set (HAVE_CXX_STDLIB 1)
set (HAVE_PTHREAD_SIGNAL 1)
set (SELECT_TYPE_ARG1 int)
set (SELECT_TYPE_ARG234 " (fd_set *)")
set (SELECT_TYPE_ARG5 " (struct timeval *)")
Expand Down
6 changes: 0 additions & 6 deletions res/config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,6 @@
/* Define if you have a POSIX `sigwait` function. */
#cmakedefine HAVE_POSIX_SIGWAIT ${HAVE_POSIX_SIGWAIT}

/* Define if you have POSIX threads libraries and header files. */
#cmakedefine HAVE_PTHREAD ${HAVE_PTHREAD}

/* Define if you have `pthread_sigmask` and `pthread_kill` functions. */
#cmakedefine HAVE_PTHREAD_SIGNAL ${HAVE_PTHREAD_SIGNAL}

/* Define if your compiler defines socklen_t. */
#cmakedefine HAVE_SOCKLEN_T ${HAVE_SOCKLEN_T}

Expand Down
4 changes: 1 addition & 3 deletions src/lib/arch/Arch.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,7 @@
# include "arch/unix/ArchConsoleUnix.h"
# include "arch/unix/ArchDaemonUnix.h"
# include "arch/unix/ArchLogUnix.h"
# if HAVE_PTHREAD
# include "arch/unix/ArchMultithreadPosix.h"
# endif
# include "arch/unix/ArchMultithreadPosix.h"
# include "arch/unix/ArchNetworkBSD.h"
# include "arch/unix/ArchSleepUnix.h"
# include "arch/unix/ArchStringUnix.h"
Expand Down
13 changes: 0 additions & 13 deletions src/lib/arch/unix/ArchMultithreadPosix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,6 @@

#define SIGWAKEUP SIGUSR1

#if !HAVE_PTHREAD_SIGNAL
// boy, is this platform broken. forget about pthread signal
// handling and let signals through to every process. barrier
// will not terminate cleanly when it gets SIGTERM or SIGINT.
# define pthread_sigmask sigprocmask
# define pthread_kill(tid_, sig_) kill(0, (sig_))
# define sigwait(set_, sig_)
# undef HAVE_POSIX_SIGWAIT
# define HAVE_POSIX_SIGWAIT 1
#endif

static
void
setSignalSet(sigset_t* sigset)
Expand Down Expand Up @@ -344,9 +333,7 @@ ArchMultithreadPosix::newThread(ThreadFunc func, void* data)
// can't tell the difference.
if (!m_newThreadCalled) {
m_newThreadCalled = true;
#if HAVE_PTHREAD_SIGNAL
startSignalHandler();
#endif
}

// note that the child thread will wait until we release this mutex
Expand Down

0 comments on commit a0b3124

Please sign in to comment.