Skip to content

Commit

Permalink
[libc][NFC] Add the platform independent file target only if mutex is…
Browse files Browse the repository at this point in the history
… 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
  • Loading branch information
Siva Chandra Reddy committed Mar 18, 2022
1 parent c80198b commit c236b41
Show file tree
Hide file tree
Showing 10 changed files with 60 additions and 30 deletions.
5 changes: 4 additions & 1 deletion libc/src/__support/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
8 changes: 7 additions & 1 deletion libc/src/__support/File/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
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
file.cpp
HDRS
file.h
DEPENDS
libc.src.__support.threads.thread
libc.src.__support.threads.mutex
libc.include.errno
libc.src.errno.errno
)
22 changes: 15 additions & 7 deletions libc/src/__support/threads/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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()
3 changes: 2 additions & 1 deletion libc/src/__support/threads/linux/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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
)
2 changes: 1 addition & 1 deletion libc/src/__support/threads/linux/mutex.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 <linux/futex.h>
#include <stdint.h>
Expand Down
12 changes: 0 additions & 12 deletions libc/src/__support/threads/mutex.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
//
Expand Down
24 changes: 24 additions & 0 deletions libc/src/__support/threads/mutex_common.h
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion libc/src/stdlib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
8 changes: 4 additions & 4 deletions libc/src/threads/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand Down
4 changes: 2 additions & 2 deletions libc/src/threads/linux/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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(
Expand Down

0 comments on commit c236b41

Please sign in to comment.