diff options
author | Anders Waldenborg <anders@0x63.nu> | 2013-10-15 12:08:59 +0000 |
---|---|---|
committer | Anders Waldenborg <anders@0x63.nu> | 2013-10-15 12:08:59 +0000 |
commit | 6480db4b3afb0adb0ffcedc6e88e3b3f394a86cf (patch) | |
tree | fb5dae0bf434c72c8d6ec1c934d33ab1fdb8aa2a /lib | |
parent | f8f993b675568ea6380ad141371c67679a1b9ac4 (diff) | |
download | external_llvm-6480db4b3afb0adb0ffcedc6e88e3b3f394a86cf.zip external_llvm-6480db4b3afb0adb0ffcedc6e88e3b3f394a86cf.tar.gz external_llvm-6480db4b3afb0adb0ffcedc6e88e3b3f394a86cf.tar.bz2 |
Add AllTargetsBindings sublibrary instead of having static inlines in the llvm-c headers.
This new library will be linked in when using the "all-targets"
component and contains the LLVMInitializeAll* functions.
This means that those functions will exist as real symbols in
the shared library, and can therefore can be called from
bindings that are using ffi the shared library.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192690 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/AllTargetsBindings/AllTargetsBindings.cpp | 42 | ||||
-rw-r--r-- | lib/Target/AllTargetsBindings/CMakeLists.txt | 3 | ||||
-rw-r--r-- | lib/Target/AllTargetsBindings/LLVMBuild.txt | 32 | ||||
-rw-r--r-- | lib/Target/AllTargetsBindings/Makefile | 14 | ||||
-rw-r--r-- | lib/Target/CMakeLists.txt | 2 | ||||
-rw-r--r-- | lib/Target/LLVMBuild.txt | 9 | ||||
-rw-r--r-- | lib/Target/Makefile | 2 |
7 files changed, 95 insertions, 9 deletions
diff --git a/lib/Target/AllTargetsBindings/AllTargetsBindings.cpp b/lib/Target/AllTargetsBindings/AllTargetsBindings.cpp new file mode 100644 index 0000000..5f1a9c9 --- /dev/null +++ b/lib/Target/AllTargetsBindings/AllTargetsBindings.cpp @@ -0,0 +1,42 @@ +//===-- AllTargetsBindings.cpp --------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file implements the llvm-c functions for initialization of +// different aspects of all configured targets. +// +//===----------------------------------------------------------------------===// + +#include "llvm-c/Target.h" +#include "llvm/Support/TargetSelect.h" + +using namespace llvm; + +void LLVMInitializeAllTargetInfos(void) { + InitializeAllTargetInfos(); +} + +void LLVMInitializeAllTargets(void) { + InitializeAllTargets(); +} + +void LLVMInitializeAllTargetMCs(void) { + InitializeAllTargetMCs(); +} + +void LLVMInitializeAllAsmPrinters(void) { + InitializeAllAsmPrinters(); +} + +void LLVMInitializeAllAsmParsers(void) { + InitializeAllAsmParsers(); +} + +void LLVMInitializeAllDisassemblers(void) { + InitializeAllDisassemblers(); +} diff --git a/lib/Target/AllTargetsBindings/CMakeLists.txt b/lib/Target/AllTargetsBindings/CMakeLists.txt new file mode 100644 index 0000000..4b4dc77 --- /dev/null +++ b/lib/Target/AllTargetsBindings/CMakeLists.txt @@ -0,0 +1,3 @@ +add_llvm_library(LLVMAllTargetsBindings + AllTargetsBindings.cpp + ) diff --git a/lib/Target/AllTargetsBindings/LLVMBuild.txt b/lib/Target/AllTargetsBindings/LLVMBuild.txt new file mode 100644 index 0000000..ecf8aca --- /dev/null +++ b/lib/Target/AllTargetsBindings/LLVMBuild.txt @@ -0,0 +1,32 @@ +;===- ./lib/Target/LLVMBuild.txt -------------------------------*- Conf -*--===; +; +; The LLVM Compiler Infrastructure +; +; This file is distributed under the University of Illinois Open Source +; License. See LICENSE.TXT for details. +; +;===------------------------------------------------------------------------===; +; +; This is an LLVMBuild description file for the components in this subdirectory. +; +; For more information on the LLVMBuild system, please see: +; +; http://llvm.org/docs/LLVMBuild.html +; +;===------------------------------------------------------------------------===; + +; This is a special group whose required libraries are extended (by llvm-build) +; with every built target, which makes it easy for tools to include every +; target. +[component_0] +type = LibraryGroup +name = all-targets +parent = Libraries + +; This is the actual library built in this directory. +; It just contains the llvm-c bindings LLVMInitializeAllTarget* functions +[component_1] +type = Library +name = AllTargetsBindings +parent = Libraries +add_to_library_groups = all-targets diff --git a/lib/Target/AllTargetsBindings/Makefile b/lib/Target/AllTargetsBindings/Makefile new file mode 100644 index 0000000..47a6883 --- /dev/null +++ b/lib/Target/AllTargetsBindings/Makefile @@ -0,0 +1,14 @@ +#===- lib/Target/AllTargetsBindings/Makefile ---------------*- Makefile -*-===## +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +##===----------------------------------------------------------------------===## + +LEVEL = ../../.. +LIBRARYNAME = LLVMAllTargetsBindings +BUILD_ARCHIVE = 1 + +include $(LEVEL)/Makefile.common diff --git a/lib/Target/CMakeLists.txt b/lib/Target/CMakeLists.txt index 02ac493..861c999 100644 --- a/lib/Target/CMakeLists.txt +++ b/lib/Target/CMakeLists.txt @@ -14,3 +14,5 @@ foreach(t ${LLVM_TARGETS_TO_BUILD}) message(STATUS "Targeting ${t}") add_subdirectory(${t}) endforeach() + +add_subdirectory("AllTargetsBindings") diff --git a/lib/Target/LLVMBuild.txt b/lib/Target/LLVMBuild.txt index 98d26bc..10dc3dc 100644 --- a/lib/Target/LLVMBuild.txt +++ b/lib/Target/LLVMBuild.txt @@ -16,7 +16,7 @@ ;===------------------------------------------------------------------------===; [common] -subdirectories = AArch64 ARM CppBackend Hexagon MSP430 NVPTX Mips PowerPC R600 Sparc SystemZ X86 XCore +subdirectories = AArch64 ARM CppBackend Hexagon MSP430 NVPTX Mips PowerPC R600 Sparc SystemZ X86 XCore AllTargetsBindings ; This is a special group whose required libraries are extended (by llvm-build) ; with the best execution engine (the native JIT, if available, or the @@ -47,10 +47,3 @@ name = Target parent = Libraries required_libraries = Core MC Support -; This is a special group whose required libraries are extended (by llvm-build) -; with every built target, which makes it easy for tools to include every -; target. -[component_4] -type = LibraryGroup -name = all-targets -parent = Libraries diff --git a/lib/Target/Makefile b/lib/Target/Makefile index 50a360f..cfa2edb 100644 --- a/lib/Target/Makefile +++ b/lib/Target/Makefile @@ -15,6 +15,6 @@ BUILD_ARCHIVE = 1 # value for PARALLEL_DIRS which must be set before Makefile.rules is included include $(LEVEL)/Makefile.config -PARALLEL_DIRS := $(TARGETS_TO_BUILD) +PARALLEL_DIRS := $(TARGETS_TO_BUILD) AllTargetsBindings include $(LLVM_SRC_ROOT)/Makefile.rules |