| From 4f0a9674ccc4840e6c4e855aff8f982406d88fc7 Mon Sep 17 00:00:00 2001 |
| From: Pirama Arumuga Nainar <pirama@google.com> |
| Date: Wed, 1 May 2019 13:55:14 -0700 |
| Subject: Add a new library, libclang-cxx |
| |
| Squashed CL of the following CLs: |
| f10485c Add a new library, libclang-cxx |
| 9e97b1d Add empty file to silence CMake warning |
| da2ec10 Link clangIndex and clangTooling to libclang_cxx |
| d9424f3 Add exported symbol list for libclang_cxx |
| |
| aosp/872802 |
| Bug: 139945549 |
| |
| Change-Id: I7e9d2d7b170554f43be89e4470f81f4785b08320 |
| --- |
| clang/tools/CMakeLists.txt | 1 + |
| clang/tools/libclang-cxx/CMakeLists.txt | 88 +++++++++++++++++++ |
| clang/tools/libclang-cxx/libclang_cxx.cpp | 7 ++ |
| clang/tools/libclang-cxx/libclang_cxx.exports | 1 + |
| 4 files changed, 97 insertions(+) |
| create mode 100644 clang/tools/libclang-cxx/CMakeLists.txt |
| create mode 100644 clang/tools/libclang-cxx/libclang_cxx.cpp |
| create mode 100644 clang/tools/libclang-cxx/libclang_cxx.exports |
| |
| diff --git a/clang/tools/CMakeLists.txt b/clang/tools/CMakeLists.txt |
| index 223f1f74f3f..1197b5793de 100644 |
| --- a/clang/tools/CMakeLists.txt |
| +++ b/clang/tools/CMakeLists.txt |
| @@ -39,3 +39,4 @@ add_llvm_external_project(clang-tools-extra extra) |
| |
| # libclang may require clang-tidy in clang-tools-extra. |
| add_clang_subdirectory(libclang) |
| +add_clang_subdirectory(libclang-cxx) |
| diff --git a/clang/tools/libclang-cxx/CMakeLists.txt b/clang/tools/libclang-cxx/CMakeLists.txt |
| new file mode 100644 |
| index 00000000000..04cf404b667 |
| --- /dev/null |
| +++ b/clang/tools/libclang-cxx/CMakeLists.txt |
| @@ -0,0 +1,88 @@ |
| +set(SOURCES |
| + libclang_cxx.cpp |
| + ) |
| + |
| +set(LIBS |
| + clangBasic |
| + clangCodeGen |
| + clangDriver |
| + clangFrontend |
| + clangFrontendTool |
| + clangIndex |
| + clangTooling |
| +) |
| + |
| +if (CLANG_ENABLE_ARCMT) |
| + list(APPEND LIBS clangARCMigrate) |
| +endif () |
| + |
| +if (TARGET clangTidyPlugin) |
| + add_definitions(-DCLANG_TOOL_EXTRA_BUILD) |
| + list(APPEND LIBS clangTidyPlugin) |
| + list(APPEND LIBS clangIncludeFixerPlugin) |
| + if(LLVM_ENABLE_MODULES) |
| + list(APPEND LLVM_COMPILE_FLAGS "-fmodules-ignore-macro=CLANG_TOOL_EXTRA_BUILD") |
| + endif() |
| +endif () |
| + |
| +find_library(DL_LIBRARY_PATH dl) |
| +if (DL_LIBRARY_PATH) |
| + list(APPEND LIBS dl) |
| +endif() |
| + |
| +if(NOT WIN32) |
| + set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/libclang_cxx.exports) |
| +endif() |
| + |
| +if( LLVM_ENABLE_PIC ) |
| + set(ENABLE_SHARED SHARED) |
| +endif() |
| + |
| +if(NOT LLVM_ENABLE_PIC AND NOT WIN32) |
| + set(ENABLE_STATIC STATIC) |
| +endif() |
| + |
| +if(WIN32) |
| + set(output_name "libclang_cxx") |
| +else() |
| + set(output_name "clang_cxx") |
| +endif() |
| + |
| +if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW)) |
| + set(LIBS -Wl,--whole-archive ${LIBS} -Wl,--no-whole-archive) |
| +elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") |
| + set(LIBS -Wl,-all_load ${LIBS}) |
| +endif() |
| + |
| +add_clang_library(libclang_cxx ${ENABLE_SHARED} ${ENABLE_STATIC} |
| + OUTPUT_NAME ${output_name} |
| + ${SOURCES} |
| + LINK_LIBS |
| + ${LIBS} |
| + ) |
| + |
| +if(ENABLE_SHARED) |
| + if(WIN32) |
| + set_target_properties(libclang_cxx |
| + PROPERTIES |
| + VERSION ${LIBCLANG_LIBRARY_VERSION} |
| + DEFINE_SYMBOL _CINDEX_LIB_) |
| + elseif(APPLE) |
| + set(LIBCLANG_CXX_LINK_FLAGS " -Wl,-compatibility_version -Wl,1") |
| + set(LIBCLANG_CXX_LINK_FLAGS "${LIBCLANG_CXX_LINK_FLAGS} -Wl,-current_version -Wl,${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}") |
| + |
| + set_property(TARGET libclang_cxx APPEND_STRING PROPERTY |
| + LINK_FLAGS ${LIBCLANG_CXX_LINK_FLAGS}) |
| + else() |
| + set_target_properties(libclang_cxx |
| + PROPERTIES |
| + VERSION ${LIBCLANG_LIBRARY_VERSION} |
| + DEFINE_SYMBOL _CINDEX_LIB_) |
| + # FIXME: _CINDEX_LIB_ affects dllexport/dllimport on Win32. |
| + if(LLVM_ENABLE_MODULES AND NOT WIN32) |
| + target_compile_options(libclang_cxx PRIVATE |
| + "-fmodules-ignore-macro=_CINDEX_LIB_" |
| + ) |
| + endif() |
| + endif() |
| +endif() |
| diff --git a/clang/tools/libclang-cxx/libclang_cxx.cpp b/clang/tools/libclang-cxx/libclang_cxx.cpp |
| new file mode 100644 |
| index 00000000000..ef6a015b998 |
| --- /dev/null |
| +++ b/clang/tools/libclang-cxx/libclang_cxx.cpp |
| @@ -0,0 +1,7 @@ |
| +//===- libclang_cxx.cpp - libclang_cxx Shared Library -----------------------------------===// |
| +//===----------------------------------------------------------------------===// |
| +// |
| +// This file is empty and serves only the purpose of making CMake happy because |
| +// you can't define a target with no sources. |
| +// |
| +//===----------------------------------------------------------------------===// |
| diff --git a/clang/tools/libclang-cxx/libclang_cxx.exports b/clang/tools/libclang-cxx/libclang_cxx.exports |
| new file mode 100644 |
| index 00000000000..3ffc06476e3 |
| --- /dev/null |
| +++ b/clang/tools/libclang-cxx/libclang_cxx.exports |
| @@ -0,0 +1 @@ |
| +_Z*clang* |
| -- |
| 2.25.0.341.g760bfbb309-goog |
| |