From: Siva Chandra Reddy Date: Thu, 17 Mar 2022 20:34:22 +0000 (+0000) Subject: [libc][NFC] Add the platform independent file target only if mutex is available. X-Git-Tag: upstream/15.0.7~13176 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c236b41e451a4b25767ff16fcd025b05a4a8e0c4;p=platform%2Fupstream%2Fllvm.git [libc][NFC] Add the platform independent file target only if mutex is available. The platform independent file implementation is not an entrypoint so it cannot be excluded via the entrypoints.txt file. Hence, we need a special treatment to exclude it from the build. Reviewed By: michaelrj Differential Revision: https://reviews.llvm.org/D121947 --- diff --git a/libc/src/__support/CMakeLists.txt b/libc/src/__support/CMakeLists.txt index 6483779..8ac10d2 100644 --- a/libc/src/__support/CMakeLists.txt +++ b/libc/src/__support/CMakeLists.txt @@ -54,7 +54,10 @@ add_header_library( integer_operations.h ) +# Thread support is used by other support libraries. So, we add the "threads" +# before other directories. +add_subdirectory(threads) + add_subdirectory(File) add_subdirectory(FPUtil) add_subdirectory(OSUtil) -add_subdirectory(threads) diff --git a/libc/src/__support/File/CMakeLists.txt b/libc/src/__support/File/CMakeLists.txt index 1240324..e80eaa2 100644 --- a/libc/src/__support/File/CMakeLists.txt +++ b/libc/src/__support/File/CMakeLists.txt @@ -1,3 +1,9 @@ +if(NOT (TARGET libc.src.__support.threads.mutex)) + # Not all platforms have a mutex implementation. If mutex is unvailable, + # we just skip everything about files. + return() +endif() + add_object_library( file SRCS @@ -5,7 +11,7 @@ add_object_library( HDRS file.h DEPENDS - libc.src.__support.threads.thread + libc.src.__support.threads.mutex libc.include.errno libc.src.errno.errno ) diff --git a/libc/src/__support/threads/CMakeLists.txt b/libc/src/__support/threads/CMakeLists.txt index a2792c3..6ded0da 100644 --- a/libc/src/__support/threads/CMakeLists.txt +++ b/libc/src/__support/threads/CMakeLists.txt @@ -1,11 +1,19 @@ +add_header_library( + mutex_common + HDRS + mutex_common.h +) + if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS}) add_subdirectory(${LIBC_TARGET_OS}) endif() -add_header_library( - thread - HDRS - mutex.h - DEPENDS - .${LIBC_TARGET_OS}.thread -) +if(TARGET libc.src.__support.threads.${LIBC_TARGET_OS}.mutex) + add_header_library( + mutex + HDRS + mutex.h + DEPENDS + .${LIBC_TARGET_OS}.mutex + ) +endif() diff --git a/libc/src/__support/threads/linux/CMakeLists.txt b/libc/src/__support/threads/linux/CMakeLists.txt index 53a150a..5dd154d5 100644 --- a/libc/src/__support/threads/linux/CMakeLists.txt +++ b/libc/src/__support/threads/linux/CMakeLists.txt @@ -1,9 +1,10 @@ add_header_library( - thread + mutex HDRS mutex.h DEPENDS libc.include.sys_syscall libc.src.__support.CPP.atomic libc.src.__support.OSUtil.osutil + libc.src.__support.threads.mutex_common ) diff --git a/libc/src/__support/threads/linux/mutex.h b/libc/src/__support/threads/linux/mutex.h index e4e06e9..5926fd9 100644 --- a/libc/src/__support/threads/linux/mutex.h +++ b/libc/src/__support/threads/linux/mutex.h @@ -11,7 +11,7 @@ #include "src/__support/CPP/atomic.h" #include "src/__support/OSUtil/syscall.h" // For syscall functions. -#include "src/__support/threads/mutex.h" +#include "src/__support/threads/mutex_common.h" #include #include diff --git a/libc/src/__support/threads/mutex.h b/libc/src/__support/threads/mutex.h index f585dcd..1015333 100644 --- a/libc/src/__support/threads/mutex.h +++ b/libc/src/__support/threads/mutex.h @@ -9,18 +9,6 @@ #ifndef LLVM_LIBC_SRC_SUPPORT_THREAD_MUTEX_H #define LLVM_LIBC_SRC_SUPPORT_THREAD_MUTEX_H -namespace __llvm_libc { - -enum class MutexError : int { - NONE, - BUSY, - TIMEOUT, - UNLOCK_WITHOUT_LOCK, - BAD_LOCK_STATE, -}; - -} // namespace __llvm_libc - // Platform independent code will include this header file which pulls // the platfrom specific specializations using platform macros. // diff --git a/libc/src/__support/threads/mutex_common.h b/libc/src/__support/threads/mutex_common.h new file mode 100644 index 0000000..2fde20a --- /dev/null +++ b/libc/src/__support/threads/mutex_common.h @@ -0,0 +1,24 @@ +//===--- Common definitions useful for mutex implementations ----*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_SRC_SUPPORT_THREAD_MUTEX_COMMON_H +#define LLVM_LIBC_SRC_SUPPORT_THREAD_MUTEX_COMMON_H + +namespace __llvm_libc { + +enum class MutexError : int { + NONE, + BUSY, + TIMEOUT, + UNLOCK_WITHOUT_LOCK, + BAD_LOCK_STATE, +}; + +} // namespace __llvm_libc + +#endif // LLVM_LIBC_SRC_SUPPORT_THREAD_MUTEX_COMMON_H diff --git a/libc/src/stdlib/CMakeLists.txt b/libc/src/stdlib/CMakeLists.txt index e1bf45f..77a4073 100644 --- a/libc/src/stdlib/CMakeLists.txt +++ b/libc/src/stdlib/CMakeLists.txt @@ -280,7 +280,7 @@ add_entrypoint_object( 20 # For constinit of the atexit callback list. DEPENDS libc.src.__support.CPP.blockstore - libc.src.__support.threads.thread + libc.src.__support.threads.mutex ) add_entrypoint_object( diff --git a/libc/src/threads/CMakeLists.txt b/libc/src/threads/CMakeLists.txt index 2a4f04de..a02fc16 100644 --- a/libc/src/threads/CMakeLists.txt +++ b/libc/src/threads/CMakeLists.txt @@ -31,7 +31,7 @@ add_entrypoint_object( mtx_init.h DEPENDS libc.include.threads - libc.src.__support.threads.thread + libc.src.__support.threads.mutex ) add_entrypoint_object( @@ -42,7 +42,7 @@ add_entrypoint_object( mtx_destroy.h DEPENDS libc.include.threads - libc.src.__support.threads.thread + libc.src.__support.threads.mutex ) add_entrypoint_object( @@ -53,7 +53,7 @@ add_entrypoint_object( mtx_lock.h DEPENDS libc.include.threads - libc.src.__support.threads.thread + libc.src.__support.threads.mutex ) add_entrypoint_object( @@ -64,7 +64,7 @@ add_entrypoint_object( mtx_unlock.h DEPENDS libc.include.threads - libc.src.__support.threads.thread + libc.src.__support.threads.mutex ) add_entrypoint_object( diff --git a/libc/src/threads/linux/CMakeLists.txt b/libc/src/threads/linux/CMakeLists.txt index 5ca715b..6706c42 100644 --- a/libc/src/threads/linux/CMakeLists.txt +++ b/libc/src/threads/linux/CMakeLists.txt @@ -34,7 +34,7 @@ add_header_library( libc.include.threads libc.src.__support.CPP.atomic libc.src.__support.OSUtil.osutil - libc.src.__support.threads.thread + libc.src.__support.threads.mutex ) add_entrypoint_object( @@ -105,7 +105,7 @@ add_entrypoint_object( DEPENDS .threads_utils libc.include.threads - libc.src.__support.threads.thread + libc.src.__support.threads.mutex ) add_entrypoint_object(