From 29e57229497711a3a294f437b59afa6ddc36a3d8 Mon Sep 17 00:00:00 2001 From: Mircea Trofin Date: Mon, 15 Jun 2020 12:14:51 -0700 Subject: [PATCH] Revert "[llvm] Added support for stand-alone cmake object libraries." This reverts commit 695c7d6313d74dc02222f6497d4c4985d67f433f. Breaks windows (e.g. http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/16497) Likely to cause problems with XCode. --- llvm/cmake/modules/AddLLVM.cmake | 46 +++++-------------------------- llvm/lib/Analysis/CMakeLists.txt | 3 -- llvm/lib/Analysis/LLVMBuild.txt | 3 ++ llvm/lib/Analysis/ML/CMakeLists.txt | 4 +-- llvm/lib/Analysis/ML/LLVMBuild.txt | 21 ++++++++++++++ llvm/lib/Passes/LLVMBuild.txt | 2 +- llvm/unittests/Analysis/ML/CMakeLists.txt | 1 + 7 files changed, 34 insertions(+), 46 deletions(-) create mode 100644 llvm/lib/Analysis/ML/LLVMBuild.txt diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 959e0da..e25c72f 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -390,13 +390,8 @@ endfunction(set_windows_version_resource_properties) # SHARED;STATIC # STATIC by default w/o BUILD_SHARED_LIBS. # SHARED by default w/ BUILD_SHARED_LIBS. -# OBJECT_ONLY -# builds an OBJECT target, irrespective of BUILD_SHARED_LIBS. -# Cannot be mixed with SHARED, STATIC, or OBJECT. # OBJECT # Also create an OBJECT library target. Default if STATIC && SHARED. -# The OBJECT target will be named obj.${name} and will have an empty link -# interface. # MODULE # Target ${name} might not be created on unsupported platforms. # Check with "if(TARGET ${name})". @@ -426,7 +421,7 @@ endfunction(set_windows_version_resource_properties) # ) function(llvm_add_library name) cmake_parse_arguments(ARG - "MODULE;SHARED;STATIC;OBJECT;OBJECT_ONLY;DISABLE_LLVM_LINK_LLVM_DYLIB;SONAME;NO_INSTALL_RPATH;COMPONENT_LIB" + "MODULE;SHARED;STATIC;OBJECT;DISABLE_LLVM_LINK_LLVM_DYLIB;SONAME;NO_INSTALL_RPATH;COMPONENT_LIB" "OUTPUT_NAME;PLUGIN_TOOL;ENTITLEMENTS;BUNDLE_PATH" "ADDITIONAL_HEADERS;DEPENDS;LINK_COMPONENTS;LINK_LIBS;OBJLIBS" ${ARGN}) @@ -441,10 +436,6 @@ function(llvm_add_library name) llvm_process_sources(ALL_FILES ${ARG_UNPARSED_ARGUMENTS} ${ARG_ADDITIONAL_HEADERS}) endif() - if ((ARG_STATIC OR ARG_SHARED OR ARG_OBJECT) AND ARG_OBJECT_ONLY) - message(ERROR "OBJECT_ONLY should appear alone, without STATIC|SHARED|OBJECT") - endif() - if(ARG_MODULE) if(ARG_SHARED OR ARG_STATIC) message(WARNING "MODULE with SHARED|STATIC doesn't make sense.") @@ -461,12 +452,12 @@ function(llvm_add_library name) if(BUILD_SHARED_LIBS AND NOT ARG_STATIC) set(ARG_SHARED TRUE) endif() - if(NOT ARG_SHARED AND NOT ARG_OBJECT_ONLY) + if(NOT ARG_SHARED) set(ARG_STATIC TRUE) endif() endif() - # Generate the extra objlib + # Generate objlib if((ARG_SHARED AND ARG_STATIC) OR ARG_OBJECT) # Generate an obj library for both targets. set(obj_name "obj.${name}") @@ -532,10 +523,8 @@ function(llvm_add_library name) elseif(ARG_SHARED) add_windows_version_resource_file(ALL_FILES ${ALL_FILES}) add_library(${name} SHARED ${ALL_FILES}) - elseif(ARG_STATIC) - add_library(${name} STATIC ${ALL_FILES}) else() - add_library(${name} OBJECT ${ALL_FILES}) + add_library(${name} STATIC ${ALL_FILES}) endif() if(ARG_COMPONENT_LIB) @@ -646,11 +635,11 @@ function(llvm_add_library name) get_property(lib_deps GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_${name}) endif() - if(ARG_SHARED) + if(ARG_STATIC) + set(libtype PUBLIC) + else() # We can use PRIVATE since SO knows its dependent libs. set(libtype PRIVATE) - else() - set(libtype PUBLIC) endif() target_link_libraries(${name} ${libtype} @@ -686,27 +675,6 @@ function(llvm_add_library name) endif() endfunction() -# Add a target which is logically and deployment-wise part of another one -# (owner), but - perhaps because it has optional build dependencies - may be -# built separately. -# The owner consumes it via target_link_libraries (or equivalent syntax). -# -# PUBLIC creates an OBJECT library, so linking it in the owner translates to -# linking the object files in this target as if they were built by the owner. -# -# PRIVATE creates a STATIC library, so linking it would drop objects that are -# not referenced. -macro (add_llvm_internal_library name) - cmake_parse_arguments(ARG "PUBLIC;PRIVATE" "" "" ${ARGN}) - if (ARG_PUBLIC) - add_llvm_library(${name} OBJECT_ONLY DISABLE_LLVM_LINK_LLVM_DYLIB - ${ARG_UNPARSED_ARGUMENTS}) - else() - add_llvm_library(${name} STATIC DISABLE_LLVM_LINK_LLVM_DYLIB - ${ARG_UNPARSED_ARGUMENTS}) - endif() -endmacro() - function(add_llvm_install_targets target) cmake_parse_arguments(ARG "" "COMPONENT;PREFIX;SYMLINK" "DEPENDS" ${ARGN}) if(ARG_COMPONENT) diff --git a/llvm/lib/Analysis/CMakeLists.txt b/llvm/lib/Analysis/CMakeLists.txt index cd9a688..faf0a31 100644 --- a/llvm/lib/Analysis/CMakeLists.txt +++ b/llvm/lib/Analysis/CMakeLists.txt @@ -108,7 +108,4 @@ add_llvm_component_library(LLVMAnalysis DEPENDS intrinsics_gen - - LINK_LIBS - PRIVATE LLVMMLPolicies ) diff --git a/llvm/lib/Analysis/LLVMBuild.txt b/llvm/lib/Analysis/LLVMBuild.txt index d73b55f..ef52c41 100644 --- a/llvm/lib/Analysis/LLVMBuild.txt +++ b/llvm/lib/Analysis/LLVMBuild.txt @@ -14,6 +14,9 @@ ; ;===------------------------------------------------------------------------===; +[common] +subdirectories = ML + [component_0] type = Library name = Analysis diff --git a/llvm/lib/Analysis/ML/CMakeLists.txt b/llvm/lib/Analysis/ML/CMakeLists.txt index cb49954..28a5f98 100644 --- a/llvm/lib/Analysis/ML/CMakeLists.txt +++ b/llvm/lib/Analysis/ML/CMakeLists.txt @@ -1,6 +1,4 @@ -set(BUILD_SHARED_LIBS OFF) - -add_llvm_internal_library(LLVMMLPolicies PUBLIC +add_llvm_component_library(LLVMMLPolicies InlineFeaturesAnalysis.cpp DEPENDS diff --git a/llvm/lib/Analysis/ML/LLVMBuild.txt b/llvm/lib/Analysis/ML/LLVMBuild.txt new file mode 100644 index 0000000..a0bb919 --- /dev/null +++ b/llvm/lib/Analysis/ML/LLVMBuild.txt @@ -0,0 +1,21 @@ +;===- ./lib/Analysis/ML/LLVMBuild.txt --------------------------*- Conf -*--===; +; +; Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +; See https://llvm.org/LICENSE.txt for license information. +; SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +; +;===------------------------------------------------------------------------===; +; +; 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 +; +;===------------------------------------------------------------------------===; + +[component_0] +type = Library +name = MLPolicies +parent = Analysis +required_libraries = Core Support diff --git a/llvm/lib/Passes/LLVMBuild.txt b/llvm/lib/Passes/LLVMBuild.txt index 438fc5c..14586b6 100644 --- a/llvm/lib/Passes/LLVMBuild.txt +++ b/llvm/lib/Passes/LLVMBuild.txt @@ -18,4 +18,4 @@ type = Library name = Passes parent = Libraries -required_libraries = AggressiveInstCombine Analysis CodeGen Core Coroutines IPO InstCombine Scalar Support Target TransformUtils Vectorize Instrumentation +required_libraries = AggressiveInstCombine Analysis MLPolicies CodeGen Core Coroutines IPO InstCombine Scalar Support Target TransformUtils Vectorize Instrumentation diff --git a/llvm/unittests/Analysis/ML/CMakeLists.txt b/llvm/unittests/Analysis/ML/CMakeLists.txt index 2cd6dbe..8d1c903 100644 --- a/llvm/unittests/Analysis/ML/CMakeLists.txt +++ b/llvm/unittests/Analysis/ML/CMakeLists.txt @@ -2,6 +2,7 @@ set(LLVM_LINK_COMPONENTS Analysis AsmParser Core + MLPolicies Support TransformUtils ) -- 2.7.4