Skip to content

Enable dynamic linking MLIR and LLVM #66

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 20 commits into from
May 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")

option(GC_LEGACY_ENABLE ON)
option(GC_TEST_ENABLE "Build the tests" ON)
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)

if(GC_LEGACY_ENABLE)
add_subdirectory(legacy/core)
Expand Down
13 changes: 13 additions & 0 deletions cmake/functions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,16 @@ function(gc_add_path list_name paths)
CACHE INTERNAL "${list_name} paths"
)
endfunction()


macro(gc_set_mlir_link_components VAR)
if(GC_DEV_LINK_LLVM_DYLIB)
set(${VAR}
MLIR
)
else()
set(${VAR}
${ARGN}
)
endif()
endmacro()
2 changes: 2 additions & 0 deletions lib/gc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@ if(GC_MLIR_CXX_FLAGS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GC_MLIR_CXX_FLAGS}")
endif()

include(functions)

add_subdirectory(Dialect)
add_subdirectory(Transforms)
7 changes: 5 additions & 2 deletions lib/gc/Dialect/Linalgx/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
gc_set_mlir_link_components(MLIR_LINK_COMPONENTS MLIRIR)

add_mlir_dialect_library(MLIRLinalgx
LinalgxDialect.cpp
LinalgxOps.cpp
Expand All @@ -9,5 +11,6 @@ add_mlir_dialect_library(MLIRLinalgx
MLIRLinalgxOpsIncGen

LINK_LIBS PUBLIC
MLIRIR
)
${MLIR_LINK_COMPONENTS}
)
set_property(GLOBAL APPEND PROPERTY GC_DIALECT_LIBS MLIRLinalgx)
7 changes: 5 additions & 2 deletions lib/gc/Dialect/Microkernel/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
gc_set_mlir_link_components(MLIR_LINK_COMPONENTS MLIRIR)

add_mlir_dialect_library(MLIRMicrokernel
MicrokernelDialect.cpp
MicrokernelOps.cpp
Expand All @@ -9,5 +11,6 @@ add_mlir_dialect_library(MLIRMicrokernel
MLIRMicrokernelOpsIncGen

LINK_LIBS PUBLIC
MLIRIR
)
${MLIR_LINK_COMPONENTS}
)
set_property(GLOBAL APPEND PROPERTY GC_DIALECT_LIBS MLIRMicrokernel)
6 changes: 4 additions & 2 deletions lib/gc/Dialect/OneDNNGraph/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
gc_set_mlir_link_components(MLIR_LINK_COMPONENTS MLIRIR)
add_mlir_dialect_library(MLIROneDNNGraph
OneDNNGraphDialect.cpp
OneDNNGraphOps.cpp
Expand All @@ -9,5 +10,6 @@ add_mlir_dialect_library(MLIROneDNNGraph
MLIROneDNNGraphOpsIncGen

LINK_LIBS PUBLIC
MLIRIR
)
${MLIR_LINK_COMPONENTS}
)
set_property(GLOBAL APPEND PROPERTY GC_DIALECT_LIBS MLIROneDNNGraph)
12 changes: 8 additions & 4 deletions lib/gc/Transforms/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
gc_set_mlir_link_components(MLIR_LINK_COMPONENTS
MLIRIR
MLIRSupport
MLIRBufferizationToMemRef
MLIRBufferizationPipelines)

add_mlir_library(GCPasses
OneDNNGraphToLinalg.cpp
TileNamed.cpp
Expand All @@ -10,9 +16,7 @@ add_mlir_library(GCPasses

LINK_LIBS PUBLIC
${mlir_dialect_libs}
${MLIR_LINK_COMPONENTS}
MLIROneDNNGraph
MLIRIR
MLIRSupport
MLIRBufferizationToMemRef
MLIRBufferizationPipelines
)
set_property(GLOBAL APPEND PROPERTY GC_PASS_LIBS GCPasses)
3 changes: 0 additions & 3 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)

add_subdirectory(dnnl)
add_subdirectory(gc-cpu-runner)
add_subdirectory(gc-opt)
57 changes: 35 additions & 22 deletions src/gc-cpu-runner/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,23 +1,34 @@
# the dependency list copied from mlir/tools/mlir-cpu-runner/CMakeLists.txt of upstream
set(LLVM_LINK_COMPONENTS
Core
Support
nativecodegen
native
)
set(MLIR_LINK_COMPONENTS
MLIRAnalysis
MLIRBuiltinToLLVMIRTranslation
MLIRExecutionEngine
MLIRIR
MLIRJitRunner
MLIRLLVMDialect
MLIRLLVMToLLVMIRTranslation
MLIRToLLVMIRTranslationRegistration
MLIRParser
MLIRTargetLLVMIRExport
MLIRSupport
)
if(GC_DEV_LINK_LLVM_DYLIB)
set(LLVM_LINK_COMPONENTS
LLVM
)
set(MLIR_LINK_COMPONENTS
MLIR
MLIRExecutionEngineShared
MLIRJitRunner
)
else()
# the dependency list copied from mlir/tools/mlir-cpu-runner/CMakeLists.txt of upstream
set(LLVM_LINK_COMPONENTS
Core
Support
nativecodegen
native
)
set(MLIR_LINK_COMPONENTS
MLIRAnalysis
MLIRBuiltinToLLVMIRTranslation
MLIRExecutionEngine
MLIRIR
MLIRJitRunner
MLIRLLVMDialect
MLIRLLVMToLLVMIRTranslation
MLIRToLLVMIRTranslationRegistration
MLIRParser
MLIRTargetLLVMIRExport
MLIRSupport
)
endif()

if(GC_MLIR_CXX_FLAGS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GC_MLIR_CXX_FLAGS}")
Expand All @@ -26,8 +37,10 @@ endif()
#LLVM_LINK_COMPONENTS is processed by LLVM cmake in add_llvm_executable
set(gc_cpu_runner_libs
${MLIR_LINK_COMPONENTS})
add_llvm_executable(gc-cpu-runner gc-cpu-runner.cpp)
add_mlir_tool(gc-cpu-runner
gc-cpu-runner.cpp
)
llvm_update_compile_flags(gc-cpu-runner)

target_link_libraries(gc-cpu-runner PRIVATE ${gc_cpu_runner_libs})
llvm_update_compile_flags(gc-cpu-runner)
mlir_check_all_link_libraries(gc-cpu-runner)
17 changes: 16 additions & 1 deletion src/gc-opt/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,23 @@
if(GC_DEV_LINK_LLVM_DYLIB)
set(MLIR_LINK_COMPONENTS
MLIR
)
get_property(dialect_libs GLOBAL PROPERTY GC_DIALECT_LIBS)
get_property(conversion_libs GLOBAL PROPERTY GC_PASS_LIBS)
else()
set(MLIR_LINK_COMPONENTS
MLIROptLib
)
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
endif()

set(gc_opt_libs
${dialect_libs}
${conversion_libs}
MLIROptLib
${MLIR_LINK_COMPONENTS}
GCPasses)

if(GC_MLIR_CXX_FLAGS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GC_MLIR_CXX_FLAGS}")
endif()
Expand Down