Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:badshah400
cling
433.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 433.patch of Package cling
From 811f0a575231496318b5e9c9a0ff0ed195b16dc0 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer <maxim.cournoyer@gmail.com> Date: Tue, 7 Sep 2021 16:35:07 -0400 Subject: [PATCH] build: Allow building Cling using the Clang shared library. The officially supported way to build LLVM/Clang as a shared library is via the LLVM_BUILD_LLVM_DYLIB and LLVM_LINK_LLVM_DYLIB CMake options (see: https://llvm.org/docs/BuildingADistribution.html). When built this way, the whole of Clang API is exposed as a shared library (libclang-cpp.so). * CMakeLists.txt: Query if we're in shared mode via llvm-config, and register the result as LLVM_LIB_IS_SHARED. [LLVM_LIB_IS_SHARED] <target_link_libraries>: Use the PUBLIC interface of the LLVM shared library. * lib/Interpreter/CMakeLists.txt [LLVM_LIB_IS_SHARED]: When defined, replace the individual Clang components by clang-cpp. * lib/MetaProcessor/CMakeLists.txt: Likewise. * lib/Utils/CMakeLists.txt: Likewise. * tools/Jupyter/CMakeLists.txt: Likewise. * tools/driver/CMakeLists.txt: Likewise. * tools/libcling/CMakeLists.txt: Likewise. --- CMakeLists.txt | 10 ++++++-- lib/Interpreter/CMakeLists.txt | 40 ++++++++++++++++++-------------- lib/MetaProcessor/CMakeLists.txt | 16 +++++++++---- lib/Utils/CMakeLists.txt | 34 +++++++++++++++------------ tools/Jupyter/CMakeLists.txt | 11 ++++++++- tools/driver/CMakeLists.txt | 16 +++---------- tools/libcling/CMakeLists.txt | 38 +++++++++++++++--------------- 7 files changed, 93 insertions(+), 72 deletions(-) Index: cling-1.0/CMakeLists.txt =================================================================== --- cling-1.0.orig/CMakeLists.txt +++ cling-1.0/CMakeLists.txt @@ -23,7 +23,8 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURR "--bindir" "--libdir" "--includedir" - "--prefix") + "--prefix" + "--shared-mode") execute_process( COMMAND ${CONFIG_COMMAND} RESULT_VARIABLE HAD_ERROR @@ -47,6 +48,7 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURR list(GET CONFIG_OUTPUT 2 LIBRARY_DIR) list(GET CONFIG_OUTPUT 3 INCLUDE_DIR) list(GET CONFIG_OUTPUT 4 LLVM_OBJ_ROOT) + list(GET CONFIG_OUTPUT 5 LLVM_LIB_IS_SHARED) if(NOT MSVC_IDE) set(LLVM_ENABLE_ASSERTIONS ${ENABLE_ASSERTIONS} @@ -444,7 +446,11 @@ macro(add_cling_library name) endif() if(TARGET ${name}) - target_link_libraries(${name} INTERFACE ${LLVM_COMMON_LIBS}) + if(LLVM_LIB_IS_SHARED) + target_link_libraries(${name} PUBLIC LLVM) + else() + target_link_libraries(${name} INTERFACE ${LLVM_COMMON_LIBS}) + endif() if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "libcling") install(TARGETS ${name} Index: cling-1.0/lib/Interpreter/CMakeLists.txt =================================================================== --- cling-1.0.orig/lib/Interpreter/CMakeLists.txt +++ cling-1.0/lib/Interpreter/CMakeLists.txt @@ -6,22 +6,28 @@ # LICENSE.TXT for details. #------------------------------------------------------------------------------ -set(LIBS - clingUtils - clangCodeGen - clangDriver - clangFrontend - clangParse - clangSema - clangAnalysis - clangEdit - clangRewrite - clangRewriteFrontend - clangSerialization - clangAST - clangBasic - clangLex -) +if (LLVM_LIB_IS_SHARED) + set(LIBS + clang-cpp + clingUtils) +else() + set(LIBS + clingUtils + clangCodeGen + clangDriver + clangFrontend + clangParse + clangSema + clangAnalysis + clangEdit + clangRewrite + clangRewriteFrontend + clangSerialization + clangAST + clangBasic + clangLex + ) +endif() set(LLVM_LINK_COMPONENTS analysis Index: cling-1.0/lib/MetaProcessor/CMakeLists.txt =================================================================== --- cling-1.0.orig/lib/MetaProcessor/CMakeLists.txt +++ cling-1.0/lib/MetaProcessor/CMakeLists.txt @@ -10,7 +10,16 @@ set( LLVM_LINK_COMPONENTS core support binaryformat -) + ) + +if (LLVM_LIB_IS_SHARED) + set(LIBS clang-cpp) +else() + set(LIBS + clangLex + clangAST + clangBasic) +endif() add_cling_library(clingMetaProcessor OBJECT Display.cpp @@ -21,10 +30,7 @@ add_cling_library(clingMetaProcessor OBJ MetaSema.cpp LINK_LIBS - clangLex - clangAST - clangBasic - + ${LIBS} clingInterpreter clingUtils ) Index: cling-1.0/lib/Utils/CMakeLists.txt =================================================================== --- cling-1.0.orig/lib/Utils/CMakeLists.txt +++ cling-1.0/lib/Utils/CMakeLists.txt @@ -26,21 +26,25 @@ set(LLVM_LINK_COMPONENTS ${LLVM_TARGETS_TO_BUILD} ) -set(LIBS - clangCodeGen - clangDriver - clangFrontend - clangParse - clangSema - clangAnalysis - clangEdit - clangRewrite - clangRewriteFrontend - clangSerialization - clangAST - clangBasic - clangLex -) +if (LLVM_LIB_IS_SHARED) + set(LIBS clang-cpp) +else() + set(LIBS + clangCodeGen + clangDriver + clangFrontend + clangParse + clangSema + clangAnalysis + clangEdit + clangRewrite + clangRewriteFrontend + clangSerialization + clangAST + clangBasic + clangLex + ) +endif() find_library(DL_LIBRARY_PATH dl) if (DL_LIBRARY_PATH) Index: cling-1.0/tools/Jupyter/CMakeLists.txt =================================================================== --- cling-1.0.orig/tools/Jupyter/CMakeLists.txt +++ cling-1.0/tools/Jupyter/CMakeLists.txt @@ -39,6 +39,14 @@ else() endif() endif() +if (LLVM_LIB_IS_SHARED) + set(LIBS + clang-cpp + clingUserInterface + clingMetaProcessor + ${INTERPRETER} + clingUtils) +else() set(LIBS clangAST clangBasic @@ -54,7 +62,8 @@ set(LIBS clingMetaProcessor ${INTERPRETER} clingUtils - ) + ) +endif() if( LLVM_ENABLE_PIC ) set(ENABLE_SHARED SHARED) Index: cling-1.0/tools/driver/CMakeLists.txt =================================================================== --- cling-1.0.orig/tools/driver/CMakeLists.txt +++ cling-1.0/tools/driver/CMakeLists.txt @@ -10,16 +10,8 @@ set(LLVM_NO_DEAD_STRIP 1) set(LLVM_LINK_COMPONENTS Support) -if(BUILD_SHARED_LIBS) - set(LIBS - - clangFrontendTool - - clingInterpreter - clingMetaProcessor - clingUserInterface - clingUtils - ) +if(LLVM_LIB_IS_SHARED) + set(LIBS clang-cpp clingUserInterface) add_cling_executable(cling cling.cpp ) @@ -36,7 +28,7 @@ else() $<TARGET_OBJECTS:obj.clingMetaProcessor> $<TARGET_OBJECTS:obj.clingUtils> ) -endif(BUILD_SHARED_LIBS) +endif(LLVM_LIB_IS_SHARED) set_target_properties(cling PROPERTIES ENABLE_EXPORTS 1) Index: cling-1.0/tools/libcling/CMakeLists.txt =================================================================== --- cling-1.0.orig/tools/libcling/CMakeLists.txt +++ cling-1.0/tools/libcling/CMakeLists.txt @@ -10,21 +10,25 @@ set(SOURCES ADDITIONAL_HEADERS ) -set(LIBS - clangAnalysis - clangDriver - clangFrontend - clangParse - clangSema - clangAST - clangLex - clangSerialization - clangCodeGen - clangBasic - clangEdit +if (LLVM_LIB_IS_SHARED) + set(LIBS clang-cpp) +else() + set(LIBS + clangAnalysis + clangDriver + clangFrontend + clangParse + clangSema + clangAST + clangLex + clangSerialization + clangCodeGen + clangBasic + clangEdit - clingUtils -) + clingUtils + ) +endif() set( LLVM_LINK_COMPONENTS analysis @@ -64,10 +68,6 @@ option(LIBCLING_BUILD_STATIC # set(LLVM_EXPORTED_SYMBOL_FILE) #endif() -if( LLVM_ENABLE_PIC ) - set(ENABLE_SHARED SHARED) -endif() - if((NOT LLVM_ENABLE_PIC OR LIBCLING_BUILD_STATIC) AND NOT WIN32) set(ENABLE_STATIC STATIC) endif()
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor