1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 03:23:01 +02:00
llvm-mirror/lib/Support
Eric Fiselier db10580e9b [CMake] Fix pthread handling for out-of-tree builds
LLVM defines `PTHREAD_LIB` which is used by AddLLVM.cmake and various projects
to correctly link the threading library when needed. Unfortunately
`PTHREAD_LIB` is defined by LLVM's `config-ix.cmake` file which isn't installed
and therefore can't be used when configuring out-of-tree builds. This causes
such builds to fail since `pthread` isn't being correctly linked.

This patch attempts to fix that problem by renaming and exporting
`LLVM_PTHREAD_LIB` as part of`LLVMConfig.cmake`. I renamed `PTHREAD_LIB`
because It seemed likely to cause collisions with downstream users of
`LLVMConfig.cmake`.

llvm-svn: 294690
2017-02-10 01:59:20 +00:00
..
Unix Fix LLDB Android AArch64 GCC debug info build 2017-02-02 01:17:49 +00:00
Windows [Support] Add sys::fs::set_current_path() (aka chdir) 2017-01-24 10:32:03 +00:00
Allocator.cpp
APFloat.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
APInt.cpp [APInt] Fix rotl/rotr when the shift amount is greater than the total bit width. 2017-02-07 11:58:22 +00:00
APSInt.cpp
ARMAttributeParser.cpp [ARM] Create objdump subtarget from build attrs 2017-01-18 13:52:12 +00:00
ARMBuildAttrs.cpp Use StringRef instead of raw pointers in ARMBuildAttrs (NFC) 2016-10-05 00:15:18 +00:00
ARMWinEH.cpp
Atomic.cpp Remove all of the legacy home-grown atomic operations LLVM provided 2016-06-02 17:11:11 +00:00
BlockFrequency.cpp
BranchProbability.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
CachePruning.cpp Remove TimeValue usage from llvm/Support 2016-10-24 10:59:17 +00:00
Chrono.cpp Attempt to fix MSVC build broken by r294326 2017-02-07 18:35:36 +00:00
circular_raw_ostream.cpp
CMakeLists.txt [CMake] Fix pthread handling for out-of-tree builds 2017-02-10 01:59:20 +00:00
COM.cpp
CommandLine.cpp CommandLine option: Relax the assertion introduced in r290467 to allows for empty string 2017-01-08 22:30:43 +00:00
Compression.cpp Recommit r292214 "[Support/Compression] - Change zlib API to return Error instead of custom status" 2017-01-17 15:45:07 +00:00
ConvertUTF.cpp Move UTF functions into namespace llvm. 2016-09-30 00:38:45 +00:00
ConvertUTFWrapper.cpp
COPYRIGHT.regex
CrashRecoveryContext.cpp
DAGDeltaAlgorithm.cpp
DataExtractor.cpp
Debug.cpp Attempt to fix build bot after r290597 2016-12-27 10:24:58 +00:00
DeltaAlgorithm.cpp Missing includes. 2016-09-14 08:55:18 +00:00
Dwarf.cpp [DIExpression] Introduce a dedicated DW_OP_LLVM_fragment operation 2016-12-05 18:04:47 +00:00
DynamicLibrary.cpp [Support] Use HAVE_DLOPEN to guard dlopen(3) usage 2016-11-30 15:34:29 +00:00
Errno.cpp
Error.cpp Fix a linefeed at eof. 2016-11-29 17:32:43 +00:00
ErrorHandling.cpp
FileOutputBuffer.cpp Support outputting to /dev/null. 2017-01-09 21:52:35 +00:00
FileUtilities.cpp Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes. 2016-08-23 17:14:32 +00:00
FoldingSet.cpp PR30711: Fix incorrect profiling of 'long long' in FoldingSet, then use it to 2016-10-16 17:49:09 +00:00
FormattedStream.cpp
FormatVariadic.cpp [Support] Introduce llvm::formatv() function. 2016-11-11 23:57:40 +00:00
GlobPattern.cpp Move GlobPattern class from LLD to llvm/Support. 2016-12-20 23:09:09 +00:00
GraphWriter.cpp
Hashing.cpp
Host.cpp [X86] Remove the HLE feature flag. 2017-02-09 06:51:02 +00:00
IntEqClasses.cpp
IntervalMap.cpp
JamCRC.cpp
LEB128.cpp
LineIterator.cpp
LLVMBuild.txt Add an c++ itanium demangler to llvm. 2016-09-06 19:16:48 +00:00
Locale.cpp
LockFileManager.cpp Missing includes. 2016-09-14 08:55:18 +00:00
ManagedStatic.cpp Revamp llvm::once_flag to be closer to std::once_flag 2017-02-05 21:13:06 +00:00
MathExtras.cpp
MD5.cpp [MD5] Use write32le instead of spelling it out with shifts. 2016-11-23 11:49:28 +00:00
Memory.cpp
MemoryBuffer.cpp Add interface to compute number of physical cores on host system 2016-10-13 17:43:20 +00:00
Mutex.cpp
NativeFormatting.cpp Remove dead variable Len. 2017-01-04 19:47:10 +00:00
Options.cpp
Path.cpp Define sys::path::convert_to_slash 2017-01-09 01:47:15 +00:00
PluginLoader.cpp
PrettyStackTrace.cpp Include <cstdarg> in PrettyStackTrace.cpp, fixing the bots. 2016-12-14 19:19:53 +00:00
Process.cpp [Support] Creation of minidump after compiler crash on Windows 2016-05-04 16:56:51 +00:00
Program.cpp
RandomNumberGenerator.cpp [Support] Fix undefined behavior in RandomNumberGenerator. 2016-10-11 18:17:26 +00:00
raw_os_ostream.cpp
raw_ostream.cpp Re-commit r289184, "Support: Use a 64-bit seek in raw_fd_ostream::seek()." with a configure-time check for lseek64. 2016-12-09 05:20:43 +00:00
README.txt.system
regcclass.h
regcname.h
regcomp.c
regengine.inc
regerror.c
regex2.h
regex_impl.h
Regex.cpp [Support] - Fix possible crash in match() of llvm::Regex. 2016-09-02 08:44:46 +00:00
regexec.c
regfree.c
regstrlcpy.c
regutils.h
RWMutex.cpp
ScaledNumber.cpp Replace APFloatBase static fltSemantics data members with getter functions 2016-12-14 11:57:17 +00:00
ScopedPrinter.cpp [Support] Improve flexibility of binary blob formatter. 2016-11-10 20:16:45 +00:00
SearchForAddressOfSpecialSymbol.cpp
SHA1.cpp Fix builbots. 2016-11-23 03:58:12 +00:00
Signals.cpp Search for llvm-symbolizer binary in the same directory as argv[0], before 2016-06-09 00:53:21 +00:00
SmallPtrSet.cpp [SmallPtrSet] Introduce a find primitive and rewrite count/erase in terms of it 2016-12-31 02:33:22 +00:00
SmallVector.cpp
SourceMgr.cpp Use StringRef for MemoryBuffer identifier API (NFC) 2016-10-01 16:38:28 +00:00
SpecialCaseList.cpp Use trigrams to speed up SpecialCaseList. 2016-12-01 02:54:54 +00:00
Statistic.cpp Statistic/Timer: Include timers in PrintStatisticsJSON(). 2016-11-18 19:43:24 +00:00
StringExtras.cpp
StringMap.cpp Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes. 2016-08-23 17:14:32 +00:00
StringPool.cpp
StringRef.cpp Tweak the core loop in StringRef::find to avoid calling memcmp on every 2016-12-11 07:46:21 +00:00
StringSaver.cpp Use StringRef in StringSaver API (NFC) 2016-10-05 01:32:41 +00:00
SystemUtils.cpp
TargetParser.cpp [ARM] Add support for armv7ve triple in llvm (PR31358). 2017-02-09 23:29:14 +00:00
TargetRegistry.cpp Revert "Use StringRef instead of raw pointer in TargetRegistry API (NFC)" 2016-10-01 07:08:23 +00:00
TarWriter.cpp TarWriter: Fix a bug in Ustar header. 2017-01-09 22:55:00 +00:00
Threading.cpp Rename interface for querying physical hardware concurrency 2016-10-17 14:56:53 +00:00
ThreadLocal.cpp
ThreadPool.cpp [ThreadPool] Rollback recent changes until I figure out the breakage. 2016-11-28 09:17:12 +00:00
Timer.cpp Statistic/Timer: Include timers in PrintStatisticsJSON(). 2016-11-18 19:43:24 +00:00
ToolOutputFile.cpp
TrigramIndex.cpp Support escaping in TrigramIndex. 2016-12-02 23:30:16 +00:00
Triple.cpp [ARM] Add support for armv7ve triple in llvm (PR31358). 2017-02-09 23:29:14 +00:00
Twine.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
Unicode.cpp
Valgrind.cpp
Watchdog.cpp
xxhash.cpp Add xxhash to llvm. 2016-09-27 15:45:57 +00:00
YAMLParser.cpp Improve error handling in YAML parsing 2016-11-28 21:38:52 +00:00
YAMLTraits.cpp YAML: Remove Input::MapHNode::isValidKey(), use llvm::is_contained() instead. NFC. 2017-01-04 20:10:43 +00:00

Design Of lib/System
====================

The software in this directory is designed to completely shield LLVM from any
and all operating system specific functionality. It is not intended to be a
complete operating system wrapper (such as ACE), but only to provide the
functionality necessary to support LLVM.

The software located here, of necessity, has very specific and stringent design
rules. Violation of these rules means that cracks in the shield could form and
the primary goal of the library is defeated. By consistently using this library,
LLVM becomes more easily ported to new platforms since the only thing requiring
porting is this library.

Complete documentation for the library can be found in the file:
  llvm/docs/SystemLibrary.html
or at this URL:
  http://llvm.org/docs/SystemLibrary.html

While we recommend that you read the more detailed documentation, for the
impatient, here's a high level summary of the library's requirements.

 1. No system header files are to be exposed through the interface.
 2. Std C++ and Std C header files are okay to be exposed through the interface.
 3. No exposed system-specific functions.
 4. No exposed system-specific data.
 5. Data in lib/System classes must use only simple C++ intrinsic types.
 6. Errors are handled by returning "true" and setting an optional std::string
 7. Library must not throw any exceptions, period.
 8. Interface functions must not have throw() specifications.
 9. No duplicate function impementations are permitted within an operating
    system class.

To accomplish these requirements, the library has numerous design criteria that
must be satisfied. Here's a high level summary of the library's design criteria:

 1. No unused functionality (only what LLVM needs)
 2. High-Level Interfaces
 3. Use Opaque Classes
 4. Common Implementations
 5. Multiple Implementations
 6. Minimize Memory Allocation
 7. No Virtual Methods