diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt --- a/mlir/CMakeLists.txt +++ b/mlir/CMakeLists.txt @@ -52,9 +52,10 @@ add_subdirectory(include/mlir) add_subdirectory(lib) -add_subdirectory(tools) add_subdirectory(unittests) add_subdirectory(test) +# Tools needs to come late to ensure that MLIR_STATIC_LIBS is populated. +add_subdirectory(tools) if( LLVM_INCLUDE_EXAMPLES ) add_subdirectory(examples) @@ -77,7 +78,6 @@ PATTERN "*.td" PATTERN "LICENSE.TXT" ) - install(DIRECTORY ${MLIR_INCLUDE_DIR}/mlir ${MLIR_INCLUDE_DIR}/mlir-c DESTINATION include COMPONENT mlir-headers diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake --- a/mlir/cmake/modules/AddMLIR.cmake +++ b/mlir/cmake/modules/AddMLIR.cmake @@ -26,3 +26,29 @@ endif() set_target_properties(${target} PROPERTIES LINK_FLAGS ${link_flags}) endfunction(whole_archive_link) + +macro(add_mlir_library name) + cmake_parse_arguments(ARG + "SHARED;INSTALL_WITH_TOOLCHAIN" + "" + "ADDITIONAL_HEADERS" + ${ARGN}) + set(srcs) + if(ARG_SHARED) + set(LIBTYPE SHARED) + else() + # llvm_add_library ignores BUILD_SHARED_LIBS if STATIC is explicitly set, + # so we need to handle it here. + if(BUILD_SHARED_LIBS) + set(LIBTYPE SHARED) + else() + set(LIBTYPE STATIC) + endif() + if(NOT XCODE) + # The Xcode generator doesn't handle object libraries correctly. + list(APPEND LIBTYPE OBJECT) + endif() + set_property(GLOBAL APPEND PROPERTY MLIR_STATIC_LIBS ${name}) + endif() + add_llvm_library(${name} ${LIBTYPE} ${ARG_UNPARSED_ARGUMENTS} ${srcs}) +endmacro(add_mlir_library) diff --git a/mlir/lib/Analysis/CMakeLists.txt b/mlir/lib/Analysis/CMakeLists.txt --- a/mlir/lib/Analysis/CMakeLists.txt +++ b/mlir/lib/Analysis/CMakeLists.txt @@ -12,7 +12,7 @@ Verifier.cpp ) -add_llvm_library(MLIRAnalysis +add_mlir_library(MLIRAnalysis CallGraph.cpp InferTypeOpInterface.cpp Liveness.cpp @@ -35,7 +35,7 @@ LLVMSupport ) -add_llvm_library(MLIRLoopAnalysis +add_mlir_library(MLIRLoopAnalysis AffineAnalysis.cpp AffineStructures.cpp LoopAnalysis.cpp diff --git a/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt b/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt --- a/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt +++ b/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRAffineToStandard +add_mlir_library(MLIRAffineToStandard AffineToStandard.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Conversion/GPUToCUDA/CMakeLists.txt b/mlir/lib/Conversion/GPUToCUDA/CMakeLists.txt --- a/mlir/lib/Conversion/GPUToCUDA/CMakeLists.txt +++ b/mlir/lib/Conversion/GPUToCUDA/CMakeLists.txt @@ -1,5 +1,5 @@ if(MLIR_CUDA_CONVERSIONS_ENABLED) - add_llvm_library(MLIRGPUtoCUDATransforms + add_mlir_library(MLIRGPUtoCUDATransforms ConvertKernelFuncToCubin.cpp ConvertLaunchFuncToCudaCalls.cpp diff --git a/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt b/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt --- a/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt +++ b/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt @@ -2,7 +2,7 @@ mlir_tablegen(GPUToNVVM.cpp.inc -gen-rewriters) add_public_tablegen_target(MLIRGPUToNVVMIncGen) -add_llvm_library(MLIRGPUtoNVVMTransforms +add_mlir_library(MLIRGPUtoNVVMTransforms LowerGpuOpsToNVVMOps.cpp DEPENDS diff --git a/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt b/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt --- a/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt +++ b/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRGPUtoROCDLTransforms +add_mlir_library(MLIRGPUtoROCDLTransforms LowerGpuOpsToROCDLOps.cpp LINK_LIBS diff --git a/mlir/lib/Conversion/GPUToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/GPUToSPIRV/CMakeLists.txt --- a/mlir/lib/Conversion/GPUToSPIRV/CMakeLists.txt +++ b/mlir/lib/Conversion/GPUToSPIRV/CMakeLists.txt @@ -2,7 +2,7 @@ mlir_tablegen(GPUToSPIRV.cpp.inc -gen-rewriters) add_public_tablegen_target(MLIRGPUToSPIRVIncGen) -add_llvm_library(MLIRGPUtoSPIRVTransforms +add_mlir_library(MLIRGPUtoSPIRVTransforms ConvertGPUToSPIRV.cpp ConvertGPUToSPIRVPass.cpp diff --git a/mlir/lib/Conversion/LinalgToLLVM/CMakeLists.txt b/mlir/lib/Conversion/LinalgToLLVM/CMakeLists.txt --- a/mlir/lib/Conversion/LinalgToLLVM/CMakeLists.txt +++ b/mlir/lib/Conversion/LinalgToLLVM/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRLinalgToLLVM +add_mlir_library(MLIRLinalgToLLVM LinalgToLLVM.cpp ADDITIONAL_HEADER_DIRS @@ -19,4 +19,3 @@ LLVMCore LLVMSupport ) - diff --git a/mlir/lib/Conversion/LinalgToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/LinalgToSPIRV/CMakeLists.txt --- a/mlir/lib/Conversion/LinalgToSPIRV/CMakeLists.txt +++ b/mlir/lib/Conversion/LinalgToSPIRV/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRLinalgToSPIRVTransforms +add_mlir_library(MLIRLinalgToSPIRVTransforms LinalgToSPIRV.cpp LinalgToSPIRVPass.cpp diff --git a/mlir/lib/Conversion/LoopToStandard/CMakeLists.txt b/mlir/lib/Conversion/LoopToStandard/CMakeLists.txt --- a/mlir/lib/Conversion/LoopToStandard/CMakeLists.txt +++ b/mlir/lib/Conversion/LoopToStandard/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRLoopToStandard +add_mlir_library(MLIRLoopToStandard ConvertLoopToStandard.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt b/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt --- a/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt +++ b/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRLoopsToGPU +add_mlir_library(MLIRLoopsToGPU LoopsToGPU.cpp LoopsToGPUPass.cpp diff --git a/mlir/lib/Conversion/StandardToLLVM/CMakeLists.txt b/mlir/lib/Conversion/StandardToLLVM/CMakeLists.txt --- a/mlir/lib/Conversion/StandardToLLVM/CMakeLists.txt +++ b/mlir/lib/Conversion/StandardToLLVM/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRStandardToLLVM +add_mlir_library(MLIRStandardToLLVM ConvertStandardToLLVM.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Conversion/StandardToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/StandardToSPIRV/CMakeLists.txt --- a/mlir/lib/Conversion/StandardToSPIRV/CMakeLists.txt +++ b/mlir/lib/Conversion/StandardToSPIRV/CMakeLists.txt @@ -2,7 +2,7 @@ mlir_tablegen(StandardToSPIRV.cpp.inc -gen-rewriters) add_public_tablegen_target(MLIRStandardToSPIRVIncGen) -add_llvm_library(MLIRStandardToSPIRVTransforms +add_mlir_library(MLIRStandardToSPIRVTransforms ConvertStandardToSPIRV.cpp ConvertStandardToSPIRVPass.cpp LegalizeStandardForSPIRV.cpp diff --git a/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt b/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt --- a/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt +++ b/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRVectorToLLVM +add_mlir_library(MLIRVectorToLLVM ConvertVectorToLLVM.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Conversion/VectorToLoops/CMakeLists.txt b/mlir/lib/Conversion/VectorToLoops/CMakeLists.txt --- a/mlir/lib/Conversion/VectorToLoops/CMakeLists.txt +++ b/mlir/lib/Conversion/VectorToLoops/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRVectorToLoops +add_mlir_library(MLIRVectorToLoops ConvertVectorToLoops.cpp ADDITIONAL_HEADER_DIRS @@ -18,4 +18,3 @@ LLVMSupport ) - diff --git a/mlir/lib/Dialect/AffineOps/CMakeLists.txt b/mlir/lib/Dialect/AffineOps/CMakeLists.txt --- a/mlir/lib/Dialect/AffineOps/CMakeLists.txt +++ b/mlir/lib/Dialect/AffineOps/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRAffineOps +add_mlir_library(MLIRAffineOps AffineOps.cpp AffineValueMap.cpp DialectRegistration.cpp diff --git a/mlir/lib/Dialect/CMakeLists.txt b/mlir/lib/Dialect/CMakeLists.txt --- a/mlir/lib/Dialect/CMakeLists.txt +++ b/mlir/lib/Dialect/CMakeLists.txt @@ -11,7 +11,7 @@ add_subdirectory(StandardOps) add_subdirectory(VectorOps) -add_llvm_library(MLIRDialect +add_mlir_library(MLIRDialect Traits.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Dialect/FxpMathOps/CMakeLists.txt b/mlir/lib/Dialect/FxpMathOps/CMakeLists.txt --- a/mlir/lib/Dialect/FxpMathOps/CMakeLists.txt +++ b/mlir/lib/Dialect/FxpMathOps/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRFxpMathOps +add_mlir_library(MLIRFxpMathOps IR/FxpMathOps.cpp IR/DialectRegistration.cpp Transforms/LowerUniformRealMath.cpp diff --git a/mlir/lib/Dialect/GPU/CMakeLists.txt b/mlir/lib/Dialect/GPU/CMakeLists.txt --- a/mlir/lib/Dialect/GPU/CMakeLists.txt +++ b/mlir/lib/Dialect/GPU/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRGPU +add_mlir_library(MLIRGPU IR/GPUDialect.cpp IR/DialectRegistration.cpp Transforms/AllReduceLowering.cpp diff --git a/mlir/lib/Dialect/LLVMIR/CMakeLists.txt b/mlir/lib/Dialect/LLVMIR/CMakeLists.txt --- a/mlir/lib/Dialect/LLVMIR/CMakeLists.txt +++ b/mlir/lib/Dialect/LLVMIR/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRLLVMIR +add_mlir_library(MLIRLLVMIR IR/LLVMDialect.cpp ADDITIONAL_HEADER_DIRS @@ -16,7 +16,7 @@ MLIRSupport ) -add_llvm_library(MLIRNVVMIR +add_mlir_library(MLIRNVVMIR IR/NVVMDialect.cpp ADDITIONAL_HEADER_DIRS @@ -34,7 +34,7 @@ LLVMCore ) -add_llvm_library(MLIRROCDLIR +add_mlir_library(MLIRROCDLIR IR/ROCDLDialect.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Dialect/Linalg/Analysis/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Analysis/CMakeLists.txt --- a/mlir/lib/Dialect/Linalg/Analysis/CMakeLists.txt +++ b/mlir/lib/Dialect/Linalg/Analysis/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRLinalgAnalysis +add_mlir_library(MLIRLinalgAnalysis DependenceAnalysis.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt b/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt --- a/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt +++ b/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRLinalgEDSC +add_mlir_library(MLIRLinalgEDSC Builders.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Dialect/Linalg/IR/CMakeLists.txt b/mlir/lib/Dialect/Linalg/IR/CMakeLists.txt --- a/mlir/lib/Dialect/Linalg/IR/CMakeLists.txt +++ b/mlir/lib/Dialect/Linalg/IR/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRLinalgOps +add_mlir_library(MLIRLinalgOps LinalgOps.cpp LinalgTypes.cpp LinalgRegistration.cpp diff --git a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt --- a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt +++ b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRLinalgTransforms +add_mlir_library(MLIRLinalgTransforms Fusion.cpp LinalgTransforms.cpp LinalgToLoops.cpp @@ -29,4 +29,3 @@ MLIRVectorOps LLVMSupport ) - diff --git a/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt --- a/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt +++ b/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRLinalgUtils +add_mlir_library(MLIRLinalgUtils Utils.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Dialect/LoopOps/CMakeLists.txt b/mlir/lib/Dialect/LoopOps/CMakeLists.txt --- a/mlir/lib/Dialect/LoopOps/CMakeLists.txt +++ b/mlir/lib/Dialect/LoopOps/CMakeLists.txt @@ -1,5 +1,5 @@ file(GLOB globbed *.c *.cpp) -add_llvm_library(MLIRLoopOps +add_mlir_library(MLIRLoopOps ${globbed} EDSC/Builders.cpp diff --git a/mlir/lib/Dialect/OpenMP/CMakeLists.txt b/mlir/lib/Dialect/OpenMP/CMakeLists.txt --- a/mlir/lib/Dialect/OpenMP/CMakeLists.txt +++ b/mlir/lib/Dialect/OpenMP/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIROpenMP +add_mlir_library(MLIROpenMP IR/OpenMPDialect.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Dialect/QuantOps/CMakeLists.txt b/mlir/lib/Dialect/QuantOps/CMakeLists.txt --- a/mlir/lib/Dialect/QuantOps/CMakeLists.txt +++ b/mlir/lib/Dialect/QuantOps/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRQuantOps +add_mlir_library(MLIRQuantOps IR/DialectRegistration.cpp IR/QuantOps.cpp IR/QuantTypes.cpp diff --git a/mlir/lib/Dialect/SDBM/CMakeLists.txt b/mlir/lib/Dialect/SDBM/CMakeLists.txt --- a/mlir/lib/Dialect/SDBM/CMakeLists.txt +++ b/mlir/lib/Dialect/SDBM/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRSDBM +add_mlir_library(MLIRSDBM SDBM.cpp SDBMExpr.cpp SDBMDialect.cpp diff --git a/mlir/lib/Dialect/SPIRV/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/CMakeLists.txt --- a/mlir/lib/Dialect/SPIRV/CMakeLists.txt +++ b/mlir/lib/Dialect/SPIRV/CMakeLists.txt @@ -2,7 +2,7 @@ mlir_tablegen(SPIRVCanonicalization.inc -gen-rewriters) add_public_tablegen_target(MLIRSPIRVCanonicalizationIncGen) -add_llvm_library(MLIRSPIRV +add_mlir_library(MLIRSPIRV DialectRegistration.cpp LayoutUtils.cpp SPIRVDialect.cpp diff --git a/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt --- a/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt +++ b/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRSPIRVSerialization +add_mlir_library(MLIRSPIRVSerialization Deserializer.cpp Serializer.cpp SPIRVBinaryUtils.cpp diff --git a/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt --- a/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt +++ b/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRSPIRVTransforms +add_mlir_library(MLIRSPIRVTransforms DecorateSPIRVCompositeTypeLayoutPass.cpp LowerABIAttributesPass.cpp diff --git a/mlir/lib/Dialect/StandardOps/CMakeLists.txt b/mlir/lib/Dialect/StandardOps/CMakeLists.txt --- a/mlir/lib/Dialect/StandardOps/CMakeLists.txt +++ b/mlir/lib/Dialect/StandardOps/CMakeLists.txt @@ -1,5 +1,5 @@ file(GLOB globbed *.c *.cpp) -add_llvm_library(MLIRStandardOps +add_mlir_library(MLIRStandardOps ${globbed} EDSC/Builders.cpp EDSC/Intrinsics.cpp diff --git a/mlir/lib/Dialect/VectorOps/CMakeLists.txt b/mlir/lib/Dialect/VectorOps/CMakeLists.txt --- a/mlir/lib/Dialect/VectorOps/CMakeLists.txt +++ b/mlir/lib/Dialect/VectorOps/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRVectorOps +add_mlir_library(MLIRVectorOps DialectRegistration.cpp VectorOps.cpp VectorTransforms.cpp diff --git a/mlir/lib/EDSC/CMakeLists.txt b/mlir/lib/EDSC/CMakeLists.txt --- a/mlir/lib/EDSC/CMakeLists.txt +++ b/mlir/lib/EDSC/CMakeLists.txt @@ -3,7 +3,7 @@ CoreAPIs.cpp ) -add_llvm_library(MLIREDSC +add_mlir_library(MLIREDSC Builders.cpp ADDITIONAL_HEADER_DIRS @@ -15,7 +15,7 @@ LLVMSupport ) -add_llvm_library(MLIREDSCInterface +add_mlir_library(MLIREDSCInterface CoreAPIs.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/ExecutionEngine/CMakeLists.txt b/mlir/lib/ExecutionEngine/CMakeLists.txt --- a/mlir/lib/ExecutionEngine/CMakeLists.txt +++ b/mlir/lib/ExecutionEngine/CMakeLists.txt @@ -1,5 +1,5 @@ llvm_map_components_to_libnames(outlibs "nativecodegen" "IPO") -add_llvm_library(MLIRExecutionEngine +add_mlir_library(MLIRExecutionEngine ExecutionEngine.cpp OptUtils.cpp diff --git a/mlir/lib/IR/CMakeLists.txt b/mlir/lib/IR/CMakeLists.txt --- a/mlir/lib/IR/CMakeLists.txt +++ b/mlir/lib/IR/CMakeLists.txt @@ -1,5 +1,5 @@ file(GLOB globbed *.c *.cpp) -add_llvm_library(MLIRIR +add_mlir_library(MLIRIR ${globbed} ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Parser/CMakeLists.txt b/mlir/lib/Parser/CMakeLists.txt --- a/mlir/lib/Parser/CMakeLists.txt +++ b/mlir/lib/Parser/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRParser +add_mlir_library(MLIRParser Lexer.cpp Parser.cpp Token.cpp diff --git a/mlir/lib/Pass/CMakeLists.txt b/mlir/lib/Pass/CMakeLists.txt --- a/mlir/lib/Pass/CMakeLists.txt +++ b/mlir/lib/Pass/CMakeLists.txt @@ -1,5 +1,5 @@ file(GLOB globbed *.c *.cpp) -add_llvm_library(MLIRPass +add_mlir_library(MLIRPass ${globbed} ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Quantizer/CMakeLists.txt b/mlir/lib/Quantizer/CMakeLists.txt --- a/mlir/lib/Quantizer/CMakeLists.txt +++ b/mlir/lib/Quantizer/CMakeLists.txt @@ -1,5 +1,5 @@ # Support. -add_llvm_library(MLIRQuantizerSupport +add_mlir_library(MLIRQuantizerSupport Support/Configuration.cpp Support/ConstraintAnalysisGraph.cpp Support/Metadata.cpp @@ -19,7 +19,7 @@ ) # Configurations. -add_llvm_library(MLIRQuantizerFxpMathConfig +add_mlir_library(MLIRQuantizerFxpMathConfig Configurations/FxpMathConfig.cpp ADDITIONAL_HEADER_DIRS @@ -38,7 +38,7 @@ ) # Transforms. -add_llvm_library(MLIRQuantizerTransforms +add_mlir_library(MLIRQuantizerTransforms Transforms/AddDefaultStatsTestPass.cpp Transforms/InferQuantizedTypesPass.cpp Transforms/RemoveInstrumentationPass.cpp diff --git a/mlir/lib/Support/CMakeLists.txt b/mlir/lib/Support/CMakeLists.txt --- a/mlir/lib/Support/CMakeLists.txt +++ b/mlir/lib/Support/CMakeLists.txt @@ -7,7 +7,7 @@ TranslateClParser.cpp ) -add_llvm_library(MLIRSupport +add_mlir_library(MLIRSupport FileUtilities.cpp StorageUniquer.cpp ToolUtilities.cpp @@ -20,7 +20,7 @@ ${LLVM_PTHREAD_LIB} ) -add_llvm_library(MLIROptMain +add_mlir_library(MLIROptMain MlirOptMain.cpp ADDITIONAL_HEADER_DIRS @@ -34,7 +34,7 @@ LLVMSupport ) -add_llvm_library(MLIRTranslateClParser +add_mlir_library(MLIRTranslateClParser TranslateClParser.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Target/CMakeLists.txt b/mlir/lib/Target/CMakeLists.txt --- a/mlir/lib/Target/CMakeLists.txt +++ b/mlir/lib/Target/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRTargetLLVMIRModuleTranslation +add_mlir_library(MLIRTargetLLVMIRModuleTranslation LLVMIR/DebugTranslation.cpp LLVMIR/ModuleTranslation.cpp @@ -19,7 +19,7 @@ MLIRTranslation ) -add_llvm_library(MLIRTargetLLVMIR +add_mlir_library(MLIRTargetLLVMIR LLVMIR/ConvertFromLLVMIR.cpp LLVMIR/ConvertToLLVMIR.cpp @@ -36,7 +36,8 @@ LLVMIRReader LLVMSupport ) -add_llvm_library(MLIRTargetNVVMIR + +add_mlir_library(MLIRTargetNVVMIR LLVMIR/ConvertToNVVMIR.cpp ADDITIONAL_HEADER_DIRS @@ -56,7 +57,7 @@ LLVMSupport ) -add_llvm_library(MLIRTargetROCDLIR +add_mlir_library(MLIRTargetROCDLIR LLVMIR/ConvertToROCDLIR.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/lib/Transforms/CMakeLists.txt b/mlir/lib/Transforms/CMakeLists.txt --- a/mlir/lib/Transforms/CMakeLists.txt +++ b/mlir/lib/Transforms/CMakeLists.txt @@ -1,6 +1,6 @@ add_subdirectory(Utils) -add_llvm_library(MLIRTransforms +add_mlir_library(MLIRTransforms AffineDataCopyGeneration.cpp AffineLoopInvariantCodeMotion.cpp Canonicalizer.cpp diff --git a/mlir/lib/Transforms/Utils/CMakeLists.txt b/mlir/lib/Transforms/Utils/CMakeLists.txt --- a/mlir/lib/Transforms/Utils/CMakeLists.txt +++ b/mlir/lib/Transforms/Utils/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRTransformUtils +add_mlir_library(MLIRTransformUtils FoldUtils.cpp GreedyPatternRewriteDriver.cpp InliningUtils.cpp diff --git a/mlir/lib/Translation/CMakeLists.txt b/mlir/lib/Translation/CMakeLists.txt --- a/mlir/lib/Translation/CMakeLists.txt +++ b/mlir/lib/Translation/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_library(MLIRTranslation +add_mlir_library(MLIRTranslation Translation.cpp ADDITIONAL_HEADER_DIRS diff --git a/mlir/tools/CMakeLists.txt b/mlir/tools/CMakeLists.txt --- a/mlir/tools/CMakeLists.txt +++ b/mlir/tools/CMakeLists.txt @@ -3,3 +3,4 @@ add_subdirectory(mlir-opt) add_subdirectory(mlir-tblgen) add_subdirectory(mlir-translate) +add_subdirectory(mlir-shlib) diff --git a/mlir/tools/mlir-opt/CMakeLists.txt b/mlir/tools/mlir-opt/CMakeLists.txt --- a/mlir/tools/mlir-opt/CMakeLists.txt +++ b/mlir/tools/mlir-opt/CMakeLists.txt @@ -4,6 +4,7 @@ set(LIB_LIBS MLIRAnalysis + MLIRIR MLIRLLVMIR MLIROptMain MLIRParser @@ -12,6 +13,7 @@ MLIRSupport LLVMSupport ) + add_llvm_library(MLIRMlirOptLib mlir-opt.cpp diff --git a/mlir/tools/mlir-shlib/CMakeLists.txt b/mlir/tools/mlir-shlib/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/mlir/tools/mlir-shlib/CMakeLists.txt @@ -0,0 +1,42 @@ +# Building libmlir-cpp.so fails if LLVM_ENABLE_PIC=Off +if (NOT LLVM_ENABLE_PIC) + return() +endif() + +# Building libmlir-cpp.so may not work on MSVC +if (MSVC) + return() +endif() + +get_property(mlir_libs GLOBAL PROPERTY MLIR_STATIC_LIBS) +list(REMOVE_DUPLICATES mlir_libs) + +foreach (lib ${mlir_libs}) + if(XCODE) + # Xcode doesn't support object libraries, so we have to trick it into + # linking the static libraries instead. + list(APPEND _DEPS "-force_load" ${lib}) + else() + list(APPEND _OBJECTS $) + endif() + list(APPEND _DEPS $) +endforeach () + +if(MLIR_LINK_MLIR_DYLIB) + set(INSTALL_WITH_TOOLCHAIN INSTALL_WITH_TOOLCHAIN) +endif() + +# libMLIR.so depends on LLVM components. To avoid multiple +# copies of those LLVM components, libMLIR.so depends on libLLVM.so. +# This probably won't work some LLVM components are not included +# in libLLVM.so. +if(LLVM_BUILD_LLVM_DYLIB) + add_llvm_library(MLIR + SHARED + ${INSTALL_WITH_TOOLCHAIN} + + mlir-shlib.cpp + ) + target_link_libraries(MLIR PRIVATE LLVM ${LLVM_PTHREAD_LIB}) + whole_archive_link(MLIR ${mlir_libs}) +endif() diff --git a/mlir/tools/mlir-shlib/mlir-shlib.cpp b/mlir/tools/mlir-shlib/mlir-shlib.cpp new file mode 100644 --- /dev/null +++ b/mlir/tools/mlir-shlib/mlir-shlib.cpp @@ -0,0 +1 @@ +// Intentionally empty source file to make CMake happy