function get_links(package)
    local links = {
        "MLIRAMX",
        "MLIRAMXToLLVMIRTranslation",
        "MLIRAMXTransforms",
        "MLIRAffine",
        "MLIRAffineAnalysis",
        "MLIRAffineBufferizableOpInterfaceImpl",
        "MLIRAffineToStandard",
        "MLIRAffineTransforms",
        "MLIRAffineTransformsTestPasses",
        "MLIRAffineUtils",
        "MLIRAnalysis",
        "MLIRArithmetic",
        "MLIRArithmeticToLLVM",
        "MLIRArithmeticToSPIRV",
        "MLIRArithmeticTransforms",
        "MLIRAsync",
        "MLIRAsyncToLLVM",
        "MLIRAsyncTransforms",
        "MLIRBufferization",
        "MLIRBufferizationToMemRef",
        "MLIRBufferizationTransforms",
        "MLIRCAPIAsync",
        "MLIRCAPIConversion",
        "MLIRCAPIDebug",
        "MLIRCAPIExecutionEngine",
        "MLIRCAPIGPU",
        "MLIRCAPIIR",
        "MLIRCAPIInterfaces",
        "MLIRCAPILLVM",
        "MLIRCAPILinalg",
        "MLIRCAPIPDL",
        "MLIRCAPIQuant",
        "MLIRCAPIRegistration",
        "MLIRCAPISCF",
        "MLIRCAPIShape",
        "MLIRCAPISparseTensor",
        "MLIRCAPIStandard",
        "MLIRCAPITensor",
        "MLIRCAPITransforms",
        "MLIRCallInterfaces",
        "MLIRCastInterfaces",
        "MLIRComplex",
        "MLIRComplexToLLVM",
        "MLIRComplexToStandard",
        "MLIRControlFlowInterfaces",
        "MLIRCopyOpInterface",
        "MLIRDLTI",
        "MLIRDLTITestPasses",
        "MLIRDataLayoutInterfaces",
        "MLIRDerivedAttributeOpInterface",
        "MLIRDialect",
        "MLIRDialectUtils",
        "MLIREmitC",
        "MLIRExecutionEngine",
        "MLIRGPUOps",
        "MLIRGPUTestPasses",
        "MLIRGPUToGPURuntimeTransforms",
        "MLIRGPUToNVVMTransforms",
        "MLIRGPUToROCDLTransforms",
        "MLIRGPUToSPIRV",
        "MLIRGPUToVulkanTransforms",
        "MLIRGPUTransforms",
        "MLIRIR",
        "MLIRInferTypeOpInterface",
        "MLIRJitRunner",
        "MLIRLLVMCommonConversion",
        "MLIRLLVMIR",
        "MLIRLLVMIRTransforms",
        "MLIRLLVMToLLVMIRTranslation",
        "MLIRLinalg",
        "MLIRLinalgAnalysis",
        "MLIRLinalgBufferizableOpInterfaceImpl",
        "MLIRLinalgTestPasses",
        "MLIRLinalgToLLVM",
        "MLIRLinalgToSPIRV",
        "MLIRLinalgToStandard",
        "MLIRLinalgTransforms",
        "MLIRLinalgUtils",
        "MLIRLoopLikeInterface",
        "MLIRLspServerLib",
        "MLIRMath",
        "MLIRMathTestPasses",
        "MLIRMathToLLVM",
        "MLIRMathToLibm",
        "MLIRMathToSPIRV",
        "MLIRMathTransforms",
        "MLIRMemRef",
        "MLIRMemRefTestPasses",
        "MLIRMemRefToLLVM",
        "MLIRMemRefToSPIRV",
        "MLIRMemRefTransforms",
        "MLIRMemRefUtils",
        "MLIRMlirOptMain",
        "MLIRModuleBufferization",
        "MLIRNVVMIR",
        "MLIRNVVMToLLVMIRTranslation",
        "MLIROpenACC",
        "MLIROpenACCToLLVM",
        "MLIROpenACCToLLVMIRTranslation",
        "MLIROpenACCToSCF",
        "MLIROpenMP",
        "MLIROpenMPToLLVM",
        "MLIROpenMPToLLVMIRTranslation",
        "MLIROptLib",
        "MLIRPDL",
        "MLIRPDLInterp",
        "MLIRPDLLAST",
        "MLIRPDLLParser",
        "MLIRPDLToPDLInterp",
        "MLIRParser",
        "MLIRPass",
        "MLIRPresburger",
        "MLIRQuant",
        "MLIRROCDLIR",
        "MLIRROCDLToLLVMIRTranslation",
        "MLIRReconcileUnrealizedCasts",
        "MLIRReduce",
        "MLIRReduceLib",
        "MLIRRewrite",
        "MLIRSCF",
        "MLIRSCFTestPasses",
        "MLIRSCFToGPU",
        "MLIRSCFToOpenMP",
        "MLIRSCFToSPIRV",
        "MLIRSCFToStandard",
        "MLIRSCFTransforms",
        "MLIRSCFUtils",
        "MLIRSPIRV",
        "MLIRSPIRVBinaryUtils",
        "MLIRSPIRVConversion",
        "MLIRSPIRVDeserialization",
        "MLIRSPIRVModuleCombiner",
        "MLIRSPIRVSerialization",
        "MLIRSPIRVTestPasses",
        "MLIRSPIRVToLLVM",
        "MLIRSPIRVTransforms",
        "MLIRSPIRVTranslateRegistration",
        "MLIRSPIRVUtils",
        "MLIRShape",
        "MLIRShapeOpsTransforms",
        "MLIRShapeTestPasses",
        "MLIRShapeToStandard",
        "MLIRSideEffectInterfaces",
        "MLIRSparseTensor",
        "MLIRSparseTensorPipelines",
        "MLIRSparseTensorTransforms",
        "MLIRSparseTensorUtils",
        "MLIRStandard",
        "MLIRStandardOpsTestPasses",
        "MLIRStandardOpsTransforms",
        "MLIRStandardToLLVM",
        "MLIRStandardToSPIRV",
        "MLIRSupport",
        "MLIRSupportIndentedOstream",
        "MLIRTableGen",
        "MLIRTargetCpp",
        "MLIRTargetLLVMIRExport",
        "MLIRTargetLLVMIRImport",
        "MLIRTensor",
        "MLIRTensorInferTypeOpInterfaceImpl",
        "MLIRTensorTilingInterfaceImpl",
        "MLIRTensorTransforms",
        "MLIRTensorUtils",
        "MLIRTestAnalysis",
        "MLIRTestDialect",
        "MLIRTestIR",
        "MLIRTestPass",
        "MLIRTestReducer",
        "MLIRTestRewrite",
        "MLIRTestStandardToLLVM",
        "MLIRTestTransforms",
        "MLIRTilingInterface",
        "MLIRToLLVMIRTranslationRegistration",
        "MLIRTosa",
        "MLIRTosaTestPasses",
        "MLIRTosaToLinalg",
        "MLIRTosaToSCF",
        "MLIRTosaToStandard",
        "MLIRTosaTransforms",
        "MLIRTransformUtils",
        "MLIRTransforms",
        "MLIRTranslation",
        "MLIRVector",
        "MLIRVectorInterfaces",
        "MLIRVectorTestPasses",
        "MLIRVectorToGPU",
        "MLIRVectorToLLVM",
        "MLIRVectorToROCDL",
        "MLIRVectorToSCF",
        "MLIRVectorToSPIRV",
        "MLIRVectorTransforms",
        "MLIRVectorUtils",
        "MLIRViewLikeInterface"
    }

    local links_arch
    if package:is_arch("x86_64", "i386", "x64", "x86") then
        links_arch = {
            "MLIRX86Vector",
            "MLIRX86VectorToLLVMIRTranslation",
            "MLIRX86VectorTransforms"}
    elseif package:is_arch("arm64", "armv7") then
        links_arch = {
            "MLIRArmNeon",
            "MLIRArmNeon2dToIntr",
            "MLIRArmNeonToLLVMIRTranslation",
            "MLIRArmSVE",
            "MLIRArmSVEToLLVMIRTranslation",
            "MLIRArmSVETransforms"}
    end
    if links_arch then
        table.join2(links, links_arch)
    end
    return links
end

function main(package, component)
    component:add("links", get_links(package))
end