
Reland https://github.com/llvm/llvm-project/pull/150805 Shared libs build was broken. Add `${dialect_libs}` and `${conversion_libs}` to `MLIRRegisterAllExtensions` because it depends on `registerConvert***ToLLVMInterface` functions.
51 lines
1.6 KiB
C++
51 lines
1.6 KiB
C++
//===- mlir-lsp-server.cpp - MLIR Language Server -------------------------===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "mlir/IR/DialectRegistry.h"
|
|
#include "mlir/IR/MLIRContext.h"
|
|
#include "mlir/InitAllDialects.h"
|
|
#include "mlir/InitAllExtensions.h"
|
|
#include "mlir/Tools/lsp-server-support/Protocol.h"
|
|
#include "mlir/Tools/mlir-lsp-server/MlirLspServerMain.h"
|
|
|
|
using namespace mlir;
|
|
|
|
#ifdef MLIR_INCLUDE_TESTS
|
|
namespace test {
|
|
void registerTestDialect(DialectRegistry &);
|
|
void registerTestDynDialect(DialectRegistry &);
|
|
void registerTestTransformDialectExtension(DialectRegistry &);
|
|
} // namespace test
|
|
#endif
|
|
|
|
int main(int argc, char **argv) {
|
|
DialectRegistry registry, empty;
|
|
registerAllDialects(registry);
|
|
registerAllExtensions(registry);
|
|
|
|
#ifdef MLIR_INCLUDE_TESTS
|
|
::test::registerTestDialect(registry);
|
|
::test::registerTestTransformDialectExtension(registry);
|
|
::test::registerTestDynDialect(registry);
|
|
#endif
|
|
|
|
// Returns the registry, except in testing mode when the URI contains
|
|
// "-disable-lsp-registration". Testing for/example of registering dialects
|
|
// based on URI.
|
|
auto registryFn = [®istry,
|
|
&empty](const lsp::URIForFile &uri) -> DialectRegistry & {
|
|
(void)empty;
|
|
#ifdef MLIR_INCLUDE_TESTS
|
|
if (uri.uri().contains("-disable-lsp-registration"))
|
|
return empty;
|
|
#endif
|
|
return registry;
|
|
};
|
|
return failed(MlirLspServerMain(argc, argv, registryFn));
|
|
}
|