[PATCH] D61804: Support building shared and static libraries simultaneously
Wink Saville via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun May 12 11:41:30 PDT 2019
winksaville updated this revision to Diff 199172.
winksaville added a comment.
Change default to be CLANG_ENABLE_STATIC_LIBRARIES=ON CLANG_ENABLE_SHARED_LIBRARIeS=OFF
Suggested by @beanz
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D61804/new/
https://reviews.llvm.org/D61804
Files:
clang/CMakeLists.txt
clang/cmake/modules/AddClang.cmake
llvm/cmake/modules/AddLLVM.cmake
Index: llvm/cmake/modules/AddLLVM.cmake
===================================================================
--- llvm/cmake/modules/AddLLVM.cmake
+++ llvm/cmake/modules/AddLLVM.cmake
@@ -442,20 +442,20 @@
endif()
if(ARG_SHARED AND ARG_STATIC)
- # static
- set(name_static "${name}_static")
+ # Do shared first
+ set(name_shared "${name}_shared")
if(ARG_OUTPUT_NAME)
set(output_name OUTPUT_NAME "${ARG_OUTPUT_NAME}")
endif()
# DEPENDS has been appended to LLVM_COMMON_LIBS.
- llvm_add_library(${name_static} STATIC
+ llvm_add_library(${name_shared} SHARED
${output_name}
OBJLIBS ${ALL_FILES} # objlib
LINK_LIBS ${ARG_LINK_LIBS}
LINK_COMPONENTS ${ARG_LINK_COMPONENTS}
)
- # FIXME: Add name_static to anywhere in TARGET ${name}'s PROPERTY.
- set(ARG_STATIC)
+ # FIXME: Add name_shared to anywhere in TARGET ${name}'s PROPERTY.
+ set(ARG_SHARED)
endif()
if(ARG_MODULE)
Index: clang/cmake/modules/AddClang.cmake
===================================================================
--- clang/cmake/modules/AddClang.cmake
+++ clang/cmake/modules/AddClang.cmake
@@ -44,8 +44,8 @@
macro(add_clang_library name)
cmake_parse_arguments(ARG
- "SHARED"
- ""
+ "SHARED;STATIC"
+ "OUTPUT_NAME"
"ADDITIONAL_HEADERS"
${ARGN})
set(srcs)
@@ -80,10 +80,20 @@
${ARG_ADDITIONAL_HEADERS} # It may contain unparsed unknown args.
)
endif()
- if(ARG_SHARED)
+ if(ARG_SHARED OR CLANG_ENABLE_SHARED_LIBRARIES)
set(ARG_ENABLE_SHARED SHARED)
endif()
- llvm_add_library(${name} ${ARG_ENABLE_SHARED} ${ARG_UNPARSED_ARGUMENTS} ${srcs})
+ if(ARG_STATIC OR CLANG_ENABLE_STATIC_LIBRARIES)
+ set(ARG_ENABLE_STATIC STATIC)
+ endif()
+ if(ARG_OUTPUT_NAME)
+ set(NAME_OUTPUT OUTPUT_NAME ${ARG_OUTPUT_NAME})
+ elseif(ARG_SHARED AND ARG_STATIC)
+ set(NAME_OUTPUT OUTPUT_NAME ${name})
+ else()
+ set(NAME_OUTPUT)
+ endif()
+ llvm_add_library(${name} ${NAME_OUTPUT} ${ARG_ENABLE_SHARED} ${ARG_ENABLE_STATIC} ${ARG_UNPARSED_ARGUMENTS} ${srcs})
if(TARGET ${name})
target_link_libraries(${name} INTERFACE ${LLVM_COMMON_LIBS})
Index: clang/CMakeLists.txt
===================================================================
--- clang/CMakeLists.txt
+++ clang/CMakeLists.txt
@@ -447,6 +447,9 @@
option(CLANG_ENABLE_ARCMT "Build ARCMT." ON)
option(CLANG_ENABLE_STATIC_ANALYZER "Build static analyzer." ON)
+option(CLANG_ENABLE_SHARED_LIBRARIES "Build libclang* as shared libraries." OFF)
+option(CLANG_ENABLE_STATIC_LIBRARIES "Build libclang* as static libraries." ON)
+
option(CLANG_ENABLE_PROTO_FUZZER "Build Clang protobuf fuzzer." OFF)
if(NOT CLANG_ENABLE_STATIC_ANALYZER AND CLANG_ENABLE_ARCMT)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D61804.199172.patch
Type: text/x-patch
Size: 2745 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190512/fde72a48/attachment.bin>
More information about the llvm-commits
mailing list