Skip to content

Commit 720af95

Browse files
author
Menooker
authored
Enable dynamic linking MLIR and LLVM (#66)
1 parent 259c918 commit 720af95

File tree

10 files changed

+89
-36
lines changed

10 files changed

+89
-36
lines changed

CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
1010

1111
option(GC_LEGACY_ENABLE ON)
1212
option(GC_TEST_ENABLE "Build the tests" ON)
13+
option(GC_DEV_LINK_LLVM_DYLIB "Link dynamic libraries of LLVM and MLIR. For developers only. Do not use it in packing the library." OFF)
1314

1415
if(GC_LEGACY_ENABLE)
1516
add_subdirectory(legacy/core)

cmake/functions.cmake

+13
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,16 @@ function(gc_add_path list_name paths)
9494
CACHE INTERNAL "${list_name} paths"
9595
)
9696
endfunction()
97+
98+
99+
macro(gc_set_mlir_link_components VAR)
100+
if(GC_DEV_LINK_LLVM_DYLIB)
101+
set(${VAR}
102+
MLIR
103+
)
104+
else()
105+
set(${VAR}
106+
${ARGN}
107+
)
108+
endif()
109+
endmacro()

lib/gc/CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@ if(GC_MLIR_CXX_FLAGS)
22
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GC_MLIR_CXX_FLAGS}")
33
endif()
44

5+
include(functions)
6+
57
add_subdirectory(Dialect)
68
add_subdirectory(Transforms)

lib/gc/Dialect/Linalgx/CMakeLists.txt

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
gc_set_mlir_link_components(MLIR_LINK_COMPONENTS MLIRIR)
2+
13
add_mlir_dialect_library(MLIRLinalgx
24
LinalgxDialect.cpp
35
LinalgxOps.cpp
@@ -9,5 +11,6 @@ add_mlir_dialect_library(MLIRLinalgx
911
MLIRLinalgxOpsIncGen
1012

1113
LINK_LIBS PUBLIC
12-
MLIRIR
13-
)
14+
${MLIR_LINK_COMPONENTS}
15+
)
16+
set_property(GLOBAL APPEND PROPERTY GC_DIALECT_LIBS MLIRLinalgx)

lib/gc/Dialect/Microkernel/CMakeLists.txt

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
gc_set_mlir_link_components(MLIR_LINK_COMPONENTS MLIRIR)
2+
13
add_mlir_dialect_library(MLIRMicrokernel
24
MicrokernelDialect.cpp
35
MicrokernelOps.cpp
@@ -9,5 +11,6 @@ add_mlir_dialect_library(MLIRMicrokernel
911
MLIRMicrokernelOpsIncGen
1012

1113
LINK_LIBS PUBLIC
12-
MLIRIR
13-
)
14+
${MLIR_LINK_COMPONENTS}
15+
)
16+
set_property(GLOBAL APPEND PROPERTY GC_DIALECT_LIBS MLIRMicrokernel)

lib/gc/Dialect/OneDNNGraph/CMakeLists.txt

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
gc_set_mlir_link_components(MLIR_LINK_COMPONENTS MLIRIR)
12
add_mlir_dialect_library(MLIROneDNNGraph
23
OneDNNGraphDialect.cpp
34
OneDNNGraphOps.cpp
@@ -9,5 +10,6 @@ add_mlir_dialect_library(MLIROneDNNGraph
910
MLIROneDNNGraphOpsIncGen
1011

1112
LINK_LIBS PUBLIC
12-
MLIRIR
13-
)
13+
${MLIR_LINK_COMPONENTS}
14+
)
15+
set_property(GLOBAL APPEND PROPERTY GC_DIALECT_LIBS MLIROneDNNGraph)

lib/gc/Transforms/CMakeLists.txt

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
gc_set_mlir_link_components(MLIR_LINK_COMPONENTS
2+
MLIRIR
3+
MLIRSupport
4+
MLIRBufferizationToMemRef
5+
MLIRBufferizationPipelines)
6+
17
add_mlir_library(GCPasses
28
OneDNNGraphToLinalg.cpp
39
TileNamed.cpp
@@ -10,9 +16,7 @@ add_mlir_library(GCPasses
1016

1117
LINK_LIBS PUBLIC
1218
${mlir_dialect_libs}
19+
${MLIR_LINK_COMPONENTS}
1320
MLIROneDNNGraph
14-
MLIRIR
15-
MLIRSupport
16-
MLIRBufferizationToMemRef
17-
MLIRBufferizationPipelines
1821
)
22+
set_property(GLOBAL APPEND PROPERTY GC_PASS_LIBS GCPasses)

src/CMakeLists.txt

-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
2-
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
3-
41
add_subdirectory(dnnl)
52
add_subdirectory(gc-cpu-runner)
63
add_subdirectory(gc-opt)

src/gc-cpu-runner/CMakeLists.txt

+35-22
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,34 @@
1-
# the dependency list copied from mlir/tools/mlir-cpu-runner/CMakeLists.txt of upstream
2-
set(LLVM_LINK_COMPONENTS
3-
Core
4-
Support
5-
nativecodegen
6-
native
7-
)
8-
set(MLIR_LINK_COMPONENTS
9-
MLIRAnalysis
10-
MLIRBuiltinToLLVMIRTranslation
11-
MLIRExecutionEngine
12-
MLIRIR
13-
MLIRJitRunner
14-
MLIRLLVMDialect
15-
MLIRLLVMToLLVMIRTranslation
16-
MLIRToLLVMIRTranslationRegistration
17-
MLIRParser
18-
MLIRTargetLLVMIRExport
19-
MLIRSupport
20-
)
1+
if(GC_DEV_LINK_LLVM_DYLIB)
2+
set(LLVM_LINK_COMPONENTS
3+
LLVM
4+
)
5+
set(MLIR_LINK_COMPONENTS
6+
MLIR
7+
MLIRExecutionEngineShared
8+
MLIRJitRunner
9+
)
10+
else()
11+
# the dependency list copied from mlir/tools/mlir-cpu-runner/CMakeLists.txt of upstream
12+
set(LLVM_LINK_COMPONENTS
13+
Core
14+
Support
15+
nativecodegen
16+
native
17+
)
18+
set(MLIR_LINK_COMPONENTS
19+
MLIRAnalysis
20+
MLIRBuiltinToLLVMIRTranslation
21+
MLIRExecutionEngine
22+
MLIRIR
23+
MLIRJitRunner
24+
MLIRLLVMDialect
25+
MLIRLLVMToLLVMIRTranslation
26+
MLIRToLLVMIRTranslationRegistration
27+
MLIRParser
28+
MLIRTargetLLVMIRExport
29+
MLIRSupport
30+
)
31+
endif()
2132

2233
if(GC_MLIR_CXX_FLAGS)
2334
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GC_MLIR_CXX_FLAGS}")
@@ -26,8 +37,10 @@ endif()
2637
#LLVM_LINK_COMPONENTS is processed by LLVM cmake in add_llvm_executable
2738
set(gc_cpu_runner_libs
2839
${MLIR_LINK_COMPONENTS})
29-
add_llvm_executable(gc-cpu-runner gc-cpu-runner.cpp)
40+
add_mlir_tool(gc-cpu-runner
41+
gc-cpu-runner.cpp
42+
)
43+
llvm_update_compile_flags(gc-cpu-runner)
3044

3145
target_link_libraries(gc-cpu-runner PRIVATE ${gc_cpu_runner_libs})
32-
llvm_update_compile_flags(gc-cpu-runner)
3346
mlir_check_all_link_libraries(gc-cpu-runner)

src/gc-opt/CMakeLists.txt

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,23 @@
1+
if(GC_DEV_LINK_LLVM_DYLIB)
2+
set(MLIR_LINK_COMPONENTS
3+
MLIR
4+
)
5+
get_property(dialect_libs GLOBAL PROPERTY GC_DIALECT_LIBS)
6+
get_property(conversion_libs GLOBAL PROPERTY GC_PASS_LIBS)
7+
else()
8+
set(MLIR_LINK_COMPONENTS
9+
MLIROptLib
10+
)
11+
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
12+
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
13+
endif()
14+
115
set(gc_opt_libs
216
${dialect_libs}
317
${conversion_libs}
4-
MLIROptLib
18+
${MLIR_LINK_COMPONENTS}
519
GCPasses)
20+
621
if(GC_MLIR_CXX_FLAGS)
722
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GC_MLIR_CXX_FLAGS}")
823
endif()

0 commit comments

Comments
 (0)