onnx-mlir/MLIR.cmake

108 lines
3.3 KiB
CMake

# Flags to link with LLVM/MLIR libraries
if(DEFINED ENV{LLVM_PROJECT_ROOT})
set(LLVM_PROJECT_ROOT $ENV{LLVM_PROJECT_ROOT})
if(EXISTS ${LLVM_PROJECT_ROOT})
message(STATUS "LLVM_PROJECT_ROOT " ${LLVM_PROJECT_ROOT})
else()
message(
FATAL_ERROR "The path specified by LLVM_PROJECT_ROOT does not exist: "
${LLVM_PROJECT_ROOT})
endif()
else()
message(FATAL_ERROR "env variable LLVM_PROJECT_ROOT not set")
endif()
if(DEFINED ENV{LLVM_PROJECT_LIB})
set(LLVM_PROJECT_LIB $ENV{LLVM_PROJECT_LIB})
else()
set(LLVM_PROJECT_LIB $ENV{LLVM_PROJECT_ROOT}/build/lib)
endif()
if(EXISTS ${LLVM_PROJECT_LIB})
message(STATUS "LLVM_PROJECT_LIB " ${LLVM_PROJECT_LIB})
else()
message(FATAL_ERROR "The path specified by LLVM_PROJECT_LIB does not exist: "
${LLVM_PROJECT_LIB})
endif()
# include path
set(LLVM_SRC_INCLUDE_PATH ${LLVM_PROJECT_ROOT}/llvm/include)
set(LLVM_BIN_INCLUDE_PATH ${LLVM_PROJECT_ROOT}/build/include)
set(MLIR_SRC_INCLUDE_PATH ${LLVM_PROJECT_ROOT}/llvm/projects/mlir/include)
set(MLIR_BIN_INCLUDE_PATH ${LLVM_PROJECT_ROOT}/build/projects/mlir/include)
set(MLIR_INCLUDE_PATHS
${LLVM_SRC_INCLUDE_PATH};${LLVM_BIN_INCLUDE_PATH};${MLIR_SRC_INCLUDE_PATH};${MLIR_BIN_INCLUDE_PATH})
include_directories(${MLIR_INCLUDE_PATHS})
find_library(MLIRLIBANALYSIS
NAMES MLIRAnalysis
PATHS ${LLVM_PROJECT_LIB}
NO_DEFAULT_PATH)
find_library(MLIRLIBIR NAMES MLIRIR PATHS ${LLVM_PROJECT_LIB} NO_DEFAULT_PATH)
find_library(MLIRLIBPARSER
NAMES MLIRParser
PATHS ${LLVM_PROJECT_LIB}
NO_DEFAULT_PATH)
find_library(MLIRLIBTRANSFORMS
NAMES MLIRTransforms
PATHS ${LLVM_PROJECT_LIB}
NO_DEFAULT_PATH)
find_library(MLIRLIBVECTOROPS
NAMES MLIRVectorOps
PATHS ${LLVM_PROJECT_LIB}
NO_DEFAULT_PATH)
find_library(MLIRLIBSUPPORT
NAMES MLIRSupport
PATHS ${LLVM_PROJECT_LIB}
NO_DEFAULT_PATH)
find_library(MLIRLIBSTANDARDOPS
NAMES MLIRStandardOps
PATHS ${LLVM_PROJECT_LIB}
NO_DEFAULT_PATH)
find_library(LLVMLIBSUPPORT
NAMES LLVMSupport
PATHS ${LLVM_PROJECT_LIB}
NO_DEFAULT_PATH)
# libraries are set according to toy/Ch2
set(MLIRLIBS
${MLIRLIBANALYSIS}
${MLIRLIBIR}
${MLIRLIBPARSER}
${MLIRLIBTRANSFORMS}
${MLIRLIBANALYSIS}
${MLIRLIBVECTOROPS}
${MLIRLIBIR}
${MLIRLIBSUPPORT}
${MLIRLIBSTANDARDOPS}
${LLVMLIBSUPPORT})
# Set up TableGen environment.
include(${LLVM_PROJECT_ROOT}/build/lib/cmake/llvm/TableGen.cmake)
function(onnf_tablegen ofn)
tablegen(MLIR
${ARGV}
"-I${MLIR_SRC_INCLUDE_PATH}"
"-I${MLIR_BIN_INCLUDE_PATH}")
set(TABLEGEN_OUTPUT
${TABLEGEN_OUTPUT} ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
PARENT_SCOPE)
endfunction()
# Import the pre-built mlir TableGen as an imported exetuable. It is required by
# the LLVM TableGen command to have the TableGen target so that changes to the
# table gen utility itself can be detected and cause re-compilation of .td file.
add_executable(mlir-tblgen IMPORTED)
set_property(TARGET mlir-tblgen
PROPERTY IMPORTED_LOCATION
${LLVM_PROJECT_ROOT}/build/bin/mlir-tblgen)
set(MLIR_TABLEGEN_EXE mlir-tblgen)