Browse Source

cmake: Remove local files for checking threading support

These local copies of CheckForPthreads.c and FindThreads.cmake override
the ones included with CMake. These versions create CMake::Threads, but
Qt6 expects Threads::Threads created by CMake 3.1+. These local versions
seem to be based on old copies from CMake from late 2014 with some
customizations. Let's just use the built-in ones that CMake ships.

This commit also changes CMakeLists.txt files in UI and libobs to
require and link to Threads::Threads.

Co-authored-by: Kurt Kartaltepe <[email protected]>
Ryan Foster 4 years ago
parent
commit
ea9c75bacb
4 changed files with 4 additions and 245 deletions
  1. 3 0
      UI/CMakeLists.txt
  2. 0 38
      cmake/Modules/CheckForPthreads.c
  3. 0 202
      cmake/Modules/FindThreads.cmake
  4. 1 5
      libobs/CMakeLists.txt

+ 3 - 0
UI/CMakeLists.txt

@@ -68,6 +68,8 @@ configure_file(
 set(CMAKE_INCLUDE_CURRENT_DIR TRUE)
 set(CMAKE_INCLUDE_CURRENT_DIR TRUE)
 set(CMAKE_AUTOMOC TRUE)
 set(CMAKE_AUTOMOC TRUE)
 
 
+find_package(Threads REQUIRED)
+
 find_package(Qt5Network ${FIND_MODE})
 find_package(Qt5Network ${FIND_MODE})
 find_package(Qt5Widgets ${FIND_MODE})
 find_package(Qt5Widgets ${FIND_MODE})
 find_package(Qt5Svg ${FIND_MODE})
 find_package(Qt5Svg ${FIND_MODE})
@@ -449,6 +451,7 @@ endif()
 
 
 target_link_libraries(obs
 target_link_libraries(obs
 	libobs
 	libobs
+	Threads::Threads
 	Qt5::Network
 	Qt5::Network
 	Qt5::Widgets
 	Qt5::Widgets
 	Qt5::Svg
 	Qt5::Svg

+ 0 - 38
cmake/Modules/CheckForPthreads.c

@@ -1,38 +0,0 @@
-#include <stdio.h>
-#include <pthread.h>
-#include <unistd.h>
-
-void* runner(void*);
-
-int res = 0;
-#ifdef __CLASSIC_C__
-int main(){
-  int ac;
-  char*av[];
-#else
-int main(int ac, char*av[]){
-#endif
-  pthread_t tid[2];
-  pthread_create(&tid[0], 0, runner, (void*)1);
-  pthread_create(&tid[1], 0, runner, (void*)2);
-
-#if defined(__BEOS__) && !defined(__ZETA__) // (no usleep on BeOS 5.)
-  usleep(1); // for strange behavior on single-processor sun
-#endif
-
-  pthread_join(tid[0], 0);
-  pthread_join(tid[1], 0);
-  if(ac > 1000){return *av[0];}
-  return res;
-}
-
-void* runner(void* args)
-{
-  int cc;
-  for ( cc = 0; cc < 10; cc ++ )
-    {
-    printf("%d CC: %d\n", (int)args, cc);
-    }
-  res ++;
-  return 0;
-}

+ 0 - 202
cmake/Modules/FindThreads.cmake

@@ -1,202 +0,0 @@
-#.rst:
-# FindThreads
-# -----------
-#
-# This module determines the thread library of the system.
-#
-# The following import target is created
-#
-# ::
-#
-#   CMake::Threads
-#
-# The following variables are set
-#
-# ::
-#
-#   THREADS_FOUND
-#   THREADS_LIBRARIES
-#   THREADS_DEFINITIONS
-#
-# Legacy variables
-#
-# ::
-#
-#   CMAKE_THREAD_LIBS_INIT     - the thread library
-#   CMAKE_THREAD_DEFS_INIT     - the thread compile definitions
-#   CMAKE_USE_SPROC_INIT       - are we using sproc?
-#   CMAKE_USE_WIN32_THREADS_INIT - using WIN32 threads?
-#   CMAKE_USE_PTHREADS_INIT    - are we using pthreads
-#   CMAKE_HP_PTHREADS_INIT     - are we using hp pthreads
-#
-# For systems with multiple thread libraries, caller can set
-#
-# ::
-#
-#   CMAKE_THREAD_PREFER_PTHREAD
-
-#=============================================================================
-# Copyright 2002-2014 Kitware, Inc.
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-include(CheckIncludeFiles)
-include(CheckLibraryExists)
-include(CheckSymbolExists)
-set(Threads_FOUND FALSE)
-set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET})
-set(CMAKE_REQUIRED_QUIET ${Threads_FIND_QUIETLY})
-
-# Do we have sproc?
-if(CMAKE_SYSTEM_NAME MATCHES IRIX AND NOT CMAKE_THREAD_PREFER_PTHREAD)
-  check_include_files("sys/types.h;sys/prctl.h"  CMAKE_HAVE_SPROC_H)
-endif()
-
-if(CMAKE_HAVE_SPROC_H AND NOT CMAKE_THREAD_PREFER_PTHREAD)
-  # We have sproc
-  set(CMAKE_USE_SPROC_INIT 1)
-else()
-  # Do we have pthreads?
-  check_include_files("pthread.h" CMAKE_HAVE_PTHREAD_H)
-
-  if(CMAKE_HAVE_PTHREAD_H)
-
-    #
-    # We have pthread.h
-    # Let's check for the library now.
-    #
-
-    set(CMAKE_HAVE_THREADS_LIBRARY)
-
-    # Check if pthread functions are in normal C library
-    check_symbol_exists(pthread_create pthread.h CMAKE_HAVE_LIBC_CREATE)
-    if(CMAKE_HAVE_LIBC_CREATE)
-      set(CMAKE_THREAD_LIBS_INIT "")
-      set(CMAKE_HAVE_THREADS_LIBRARY 1)
-      set(Threads_FOUND TRUE)
-    endif()
-
-    if(NOT Threads_FOUND AND NOT THREADS_HAVE_PTHREAD_ARG)
-      message(STATUS "Check if compiler accepts -pthread")
-      try_run(THREADS_PTHREAD_ARG THREADS_HAVE_PTHREAD_ARG
-        ${CMAKE_BINARY_DIR}
-        ${CMAKE_CURRENT_LIST_DIR}/CheckForPthreads.c
-        COMPILE_DEFINITIONS -pthread
-        CMAKE_FLAGS -DLINK_LIBRARIES:STRING=-pthread
-        COMPILE_OUTPUT_VARIABLE OUTPUT)
-
-      if(THREADS_HAVE_PTHREAD_ARG)
-        if(THREADS_PTHREAD_ARG STREQUAL "2")
-          message(STATUS "Check if compiler accepts -pthread - yes")
-        else()
-          message(STATUS "Check if compiler accepts -pthread - no")
-          file(APPEND
-            ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-            "Determining if compiler accepts -pthread returned ${THREADS_PTHREAD_ARG} instead of 2. The compiler had the following output:\n${OUTPUT}\n\n")
-          set(THREADS_HAVE_PTHREAD_ARG)
-        endif()
-      else()
-        message(STATUS "Check if compiler accepts -pthread - no")
-        file(APPEND
-          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-          "Determining if compiler accepts -pthread failed with the following output:\n${OUTPUT}\n\n")
-      endif()
-    endif()
-
-    if(NOT Threads_FOUND AND THREADS_HAVE_PTHREAD_ARG)
-      set(Threads_FOUND TRUE)
-      set(CMAKE_THREAD_LIBS_INIT "-pthread")
-      set(CMAKE_THREAD_DEFS_INIT "-pthread")
-    endif()
-
-    if(NOT Threads_FOUND)
-      if(NOT CMAKE_HAVE_THREADS_LIBRARY)
-        # Do we have -lpthreads
-        check_library_exists(pthreads pthread_create "" CMAKE_HAVE_PTHREADS_CREATE)
-        if(CMAKE_HAVE_PTHREADS_CREATE)
-          set(CMAKE_THREAD_LIBS_INIT "-lpthreads")
-          set(CMAKE_HAVE_THREADS_LIBRARY 1)
-          set(Threads_FOUND TRUE)
-        endif()
-
-        # Ok, how about -lpthread
-        check_library_exists(pthread pthread_create "" CMAKE_HAVE_PTHREAD_CREATE)
-        if(CMAKE_HAVE_PTHREAD_CREATE)
-          set(CMAKE_THREAD_LIBS_INIT "-lpthread")
-          set(CMAKE_HAVE_THREADS_LIBRARY 1)
-          set(Threads_FOUND TRUE)
-        endif()
-
-        if(CMAKE_SYSTEM MATCHES "SunOS.*")
-          # On sun also check for -lthread
-          check_library_exists(thread thr_create "" CMAKE_HAVE_THR_CREATE)
-          if(CMAKE_HAVE_THR_CREATE)
-            set(CMAKE_THREAD_LIBS_INIT "-lthread")
-            set(CMAKE_HAVE_THREADS_LIBRARY 1)
-            set(Threads_FOUND TRUE)
-          endif()
-        endif()
-      endif()
-    endif()
-
-  endif()
-endif()
-
-if(CMAKE_THREAD_LIBS_INIT OR CMAKE_HAVE_LIBC_CREATE)
-  set(CMAKE_USE_PTHREADS_INIT 1)
-  set(Threads_FOUND TRUE)
-endif()
-
-if(CMAKE_SYSTEM_NAME MATCHES "Windows")
-  set(CMAKE_USE_WIN32_THREADS_INIT 1)
-  set(Threads_FOUND TRUE)
-endif()
-
-if(CMAKE_USE_PTHREADS_INIT)
-  if(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
-    # Use libcma if it exists and can be used.  It provides more
-    # symbols than the plain pthread library.  CMA threads
-    # have actually been deprecated:
-    #   http://docs.hp.com/en/B3920-90091/ch12s03.html#d0e11395
-    #   http://docs.hp.com/en/947/d8.html
-    # but we need to maintain compatibility here.
-    # The CMAKE_HP_PTHREADS setting actually indicates whether CMA threads
-    # are available.
-    check_library_exists(cma pthread_attr_create "" CMAKE_HAVE_HP_CMA)
-    if(CMAKE_HAVE_HP_CMA)
-      set(CMAKE_THREAD_LIBS_INIT "-lcma")
-      set(CMAKE_HP_PTHREADS_INIT 1)
-      set(Threads_FOUND TRUE)
-    endif()
-    set(CMAKE_USE_PTHREADS_INIT 1)
-  endif()
-
-  if(CMAKE_SYSTEM MATCHES "OSF1-V")
-    set(CMAKE_USE_PTHREADS_INIT 0)
-    set(CMAKE_THREAD_LIBS_INIT )
-  endif()
-
-  if(CMAKE_SYSTEM MATCHES "CYGWIN_NT")
-    set(CMAKE_USE_PTHREADS_INIT 1)
-    set(Threads_FOUND TRUE)
-    set(CMAKE_THREAD_LIBS_INIT )
-    set(CMAKE_USE_WIN32_THREADS_INIT 0)
-  endif()
-endif()
-
-set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Threads DEFAULT_MSG Threads_FOUND)
-
-if(THREADS_FOUND)
-  set(THREADS_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
-  set(THREADS_DEFINITIONS "${CMAKE_THREAD_DEFS_INIT}")
-endif()

+ 1 - 5
libobs/CMakeLists.txt

@@ -538,9 +538,6 @@ target_compile_options(libobs
 	PUBLIC
 	PUBLIC
 	${ARCH_SIMD_FLAGS})
 	${ARCH_SIMD_FLAGS})
 
 
-target_compile_options(libobs
-	PUBLIC
-		"${THREADS_DEFINITIONS}")
 target_include_directories(libobs
 target_include_directories(libobs
 	PUBLIC
 	PUBLIC
 		"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
 		"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
@@ -553,8 +550,7 @@ target_link_libraries(libobs
 		${OBS_JANSSON_IMPORT}
 		${OBS_JANSSON_IMPORT}
 		${FFMPEG_LIBRARIES}
 		${FFMPEG_LIBRARIES}
 		${ZLIB_LIBRARIES}
 		${ZLIB_LIBRARIES}
-	PUBLIC
-		${THREADS_LIBRARIES})
+		Threads::Threads)
 
 
 install_obs_core(libobs EXPORT LibObs)
 install_obs_core(libobs EXPORT LibObs)
 install_obs_data(libobs data libobs)
 install_obs_data(libobs data libobs)