# SPDX-License-Identifier: Apache-2.0
#
# Copyright (c) 2024 Google LLC.

# FindThreads module for locating threads implementation.
#
# The module defines the following variables:
#
# 'Threads_FOUND'
# Indicates if threads are supported.
#
# 'CMAKE_THREAD_LIBS_INIT'
# The threads library to use. Zephyr provides threads implementation and no
# special flags are needed, so this will be empty.
#
# 'CMAKE_USE_PTHREADS_INIT'
# Indicates if threads are pthread compatible.
#
# This module is compatible with FindThreads module from CMake.
# The original implementation tries to find threads library using various
# methods (e.g. checking if pthread library is present or compiling example
# program to check if the implementation is provided by libc), but it's not
# able to detect pthread implementation provided by Zephyr.

include(FindPackageHandleStandardArgs)

set(Threads_FOUND FALSE)

if(DEFINED CONFIG_POSIX_THREADS)
  set(Threads_FOUND TRUE)
  set(CMAKE_THREAD_LIBS_INIT )
  set(CMAKE_USE_PTHREADS_INIT 1)
endif()

find_package_handle_standard_args(Threads DEFAULT_MSG Threads_FOUND)

if(Threads_FOUND AND NOT TARGET Threads::Threads)
  # This is just an empty interface, because we don't need to provide any
  # options. Nevertheless this library must exist, because third-party modules
  # can link it to their own libraries.
  add_library(Threads::Threads INTERFACE IMPORTED)
endif()
