From d2fa56687f8bd5ac6ebf9d9468d0efd714986a54 Mon Sep 17 00:00:00 2001 From: Ted Kremenek <kremenek@apple.com> Date: Wed, 26 Aug 2009 22:36:44 +0000 Subject: [PATCH] Add initial boilerplate for CIndex, a shared library that will vend high-level source symbol information (harvested by Clang) through a C API. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80166 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang-c/Index.h | 33 +++++++++++++++++++++++ tools/CIndex/CIndex.cpp | 17 ++++++++++++ tools/CIndex/CIndex.exports | 1 + tools/CIndex/Makefile | 54 +++++++++++++++++++++++++++++++++++++ tools/Makefile | 2 +- 5 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 include/clang-c/Index.h create mode 100644 tools/CIndex/CIndex.cpp create mode 100644 tools/CIndex/CIndex.exports create mode 100644 tools/CIndex/Makefile diff --git a/include/clang-c/Index.h b/include/clang-c/Index.h new file mode 100644 index 00000000000..eb1cbd156d6 --- /dev/null +++ b/include/clang-c/Index.h @@ -0,0 +1,33 @@ +/*===-- clang-c/Index.h - Indexing Public C Interface -------------*- C -*-===*\ +|* *| +|* The LLVM Compiler Infrastructure *| +|* *| +|* This file is distributed under the University of Illinois Open Source *| +|* License. See LICENSE.TXT for details. *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header provides a public inferface to a Clang library for extracting *| +|* high-level symbol information from source files without exposing the full *| +|* Clang C++ API. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef CLANG_C_INDEX_H +#define CLANG_C_INDEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Dummy function that serves as an entrance to the library. + * To be replaced with specific functions. + */ +void clang_index_dummy(void); + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/tools/CIndex/CIndex.cpp b/tools/CIndex/CIndex.cpp new file mode 100644 index 00000000000..8eb45452c97 --- /dev/null +++ b/tools/CIndex/CIndex.cpp @@ -0,0 +1,17 @@ +//===- CIndex.cpp - Clang-C Source Indexing Library -----------------------===// +// +// 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 Clang-C Source Indexing library. +// +//===----------------------------------------------------------------------===// + +#include "clang-c/Index.h" + +void clang_index_dummy(void) {} + diff --git a/tools/CIndex/CIndex.exports b/tools/CIndex/CIndex.exports new file mode 100644 index 00000000000..5016571e6cf --- /dev/null +++ b/tools/CIndex/CIndex.exports @@ -0,0 +1 @@ +_clang_index_dummy diff --git a/tools/CIndex/Makefile b/tools/CIndex/Makefile new file mode 100644 index 00000000000..1181d884d92 --- /dev/null +++ b/tools/CIndex/Makefile @@ -0,0 +1,54 @@ +##===- tools/CIndex/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 = CIndex + +CPPFLAGS += -I$(PROJ_SRC_DIR)/../../include -I$(PROJ_OBJ_DIR)/../../include +CXXFLAGS = -fno-rtti + +# Include this here so we can get the configuration of the targets +# that have been configured for construction. We have to do this +# early so we can set up LINK_COMPONENTS before including Makefile.rules +include $(LEVEL)/Makefile.config + +LINK_LIBS_IN_SHARED = 1 +SHARED_LIBRARY = 1 + +LINK_COMPONENTS := bitreader +USEDLIBS = clangIndex.a clangAST.a clangLex.a clangBasic.a + +include $(LEVEL)/Makefile.common + +##===----------------------------------------------------------------------===## +# FIXME: This is copied from the 'lto' makefile. Should we share this? +##===----------------------------------------------------------------------===## + +ifeq ($(HOST_OS),Darwin) + # set dylib internal version number to llvmCore submission number + ifdef LLVM_SUBMIT_VERSION + LLVMLibsOptions := $(LLVMLibsOptions) -Wl,-current_version \ + -Wl,$(LLVM_SUBMIT_VERSION).$(LLVM_SUBMIT_SUBVERSION) \ + -Wl,-compatibility_version -Wl,1 + endif + # extra options to override libtool defaults + LLVMLibsOptions := $(LLVMLibsOptions) \ + -avoid-version \ + -Wl,-exported_symbols_list -Wl,$(PROJ_SRC_DIR)/CIndex.exports \ + -Wl,-dead_strip \ + -Wl,-seg1addr -Wl,0xE0000000 + + # Mac OS X 10.4 and earlier tools do not allow a second -install_name on command line + DARWIN_VERS := $(shell echo $(TARGET_TRIPLE) | sed 's/.*darwin\([0-9]*\).*/\1/') + ifneq ($(DARWIN_VERS),8) + LLVMLibsOptions := $(LLVMLibsOptions) \ + -no-undefined -Wl,-install_name \ + -Wl,"@executable_path/../lib/lib$(LIBRARYNAME)$(SHLIBEXT)" + endif +endif diff --git a/tools/Makefile b/tools/Makefile index 8cc0495faac..3ee73ca2827 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -8,6 +8,6 @@ ##===----------------------------------------------------------------------===## LEVEL := ../../.. -DIRS := clang-cc driver index-test wpa +DIRS := clang-cc driver index-test wpa CIndex include $(LEVEL)/Makefile.common -- GitLab