diff --git a/llvm/docs/LLVMBuild.rst b/llvm/docs/LLVMBuild.rst --- a/llvm/docs/LLVMBuild.rst +++ b/llvm/docs/LLVMBuild.rst @@ -220,6 +220,11 @@ If given, the name to use for the actual library file on disk. If not given, the name is derived from the component name itself. + - ``prefix`` **[optional]** + + If given, the prefix used when deriving the library filename from + ``library_name``. If not given, use the ``LLVM`` prefix. + - ``required_libraries`` **[optional]** If given, a list of the names of ``Library`` or ``LibraryGroup`` diff --git a/llvm/utils/llvm-build/llvmbuild/componentinfo.py b/llvm/utils/llvm-build/llvmbuild/componentinfo.py --- a/llvm/utils/llvm-build/llvmbuild/componentinfo.py +++ b/llvm/utils/llvm-build/llvmbuild/componentinfo.py @@ -116,6 +116,7 @@ def parse_items(items): kwargs = ComponentInfo.parse_items(items) kwargs['library_name'] = items.get_optional_string('library_name') + kwargs['prefix'] = items.get('prefix') kwargs['required_libraries'] = items.get_list('required_libraries') kwargs['add_to_library_groups'] = items.get_list( 'add_to_library_groups') @@ -128,13 +129,16 @@ return LibraryComponentInfo(subpath, **kwargs) def __init__(self, subpath, name, dependencies, parent, library_name, - required_libraries, add_to_library_groups, installed): + prefix, required_libraries, add_to_library_groups, installed): ComponentInfo.__init__(self, subpath, name, dependencies, parent) # If given, the name to use for the library instead of deriving it from # the component name. self.library_name = library_name + # If given, override the default component prefix. + self.prefix = prefix + # The names of the library components which are required when linking # with this component. self.required_libraries = list(required_libraries) @@ -175,6 +179,12 @@ def get_library_name(self): return self.library_name or self.name + def get_library_prefix(self): + if self.prefix is None: + return 'LLVM' + else: + return self.prefix + def get_prefixed_library_name(self): """ get_prefixed_library_name() -> str @@ -184,13 +194,9 @@ """ basename = self.get_library_name() + prefix = self.get_library_prefix() - # FIXME: We need to get the prefix information from an explicit project - # object, or something. - if basename in ('gtest', 'gtest_main'): - return basename - - return 'LLVM%s' % basename + return '%s%s' % (prefix, basename) def get_llvmconfig_component_name(self): return self.get_library_name().lower() @@ -204,9 +210,9 @@ return OptionalLibraryComponentInfo(subpath, **kwargs) def __init__(self, subpath, name, dependencies, parent, library_name, - required_libraries, add_to_library_groups, installed): + prefix, required_libraries, add_to_library_groups, installed): LibraryComponentInfo.__init__(self, subpath, name, dependencies, parent, - library_name, required_libraries, + library_name, prefix, required_libraries, add_to_library_groups, installed) class LibraryGroupComponentInfo(ComponentInfo): diff --git a/llvm/utils/unittest/LLVMBuild.txt b/llvm/utils/unittest/LLVMBuild.txt --- a/llvm/utils/unittest/LLVMBuild.txt +++ b/llvm/utils/unittest/LLVMBuild.txt @@ -17,6 +17,7 @@ [component_0] type = Library name = gtest +prefix = parent = Libraries required_libraries = Support installed = 0 @@ -24,6 +25,7 @@ [component_1] type = Library name = gtest_main +prefix = parent = Libraries required_libraries = gtest installed = 0