[package] name = "inkwell" version = "0.5.0" authors = ["Daniel Kolsoi "] description = "Inkwell aims to help you pen your own programming languages by safely wrapping llvm-sys." documentation = "https://thedan64.github.io/inkwell/" repository = "https://github.com/TheDan64/inkwell" readme = "README.md" keywords = ["llvm", "safe", "wrapper"] license = "Apache-2.0" categories = ["development-tools::ffi"] edition = "2021" [features] default = ["target-all"] # Please update internal_macros::FEATURE_VERSIONS when adding a new LLVM version llvm4-0 = ["llvm-sys-40"] llvm5-0 = ["llvm-sys-50"] llvm6-0 = ["llvm-sys-60"] llvm7-0 = ["llvm-sys-70"] llvm8-0 = ["llvm-sys-80"] llvm9-0 = ["llvm-sys-90"] llvm10-0 = ["llvm-sys-100"] llvm11-0 = ["llvm-sys-110"] llvm12-0 = ["llvm-sys-120"] llvm13-0 = ["llvm-sys-130"] llvm14-0 = ["llvm-sys-140"] llvm15-0 = ["llvm-sys-150"] llvm16-0 = ["llvm-sys-160"] llvm17-0 = ["llvm-sys-170"] llvm18-0 = ["llvm-sys-180"] # Don't link against LLVM libraries. This is useful if another dependency is # installing LLVM. See llvm-sys for more details. We can't enable a single # `no-llvm-linking` feature across the board of llvm versions, as it'll cause # cargo to try and download and compile them all. See # https://github.com/rust-lang/cargo/issues/3494 llvm4-0-no-llvm-linking = ["llvm4-0", "llvm-sys-40/no-llvm-linking"] llvm5-0-no-llvm-linking = ["llvm5-0", "llvm-sys-50/no-llvm-linking"] llvm6-0-no-llvm-linking = ["llvm6-0", "llvm-sys-60/no-llvm-linking"] llvm7-0-no-llvm-linking = ["llvm7-0", "llvm-sys-70/no-llvm-linking"] llvm8-0-no-llvm-linking = ["llvm8-0", "llvm-sys-80/no-llvm-linking"] llvm9-0-no-llvm-linking = ["llvm9-0", "llvm-sys-90/no-llvm-linking"] llvm10-0-no-llvm-linking = ["llvm10-0", "llvm-sys-100/no-llvm-linking"] llvm11-0-no-llvm-linking = ["llvm11-0", "llvm-sys-110/no-llvm-linking"] llvm12-0-no-llvm-linking = ["llvm12-0", "llvm-sys-120/no-llvm-linking"] llvm13-0-no-llvm-linking = ["llvm13-0", "llvm-sys-130/no-llvm-linking"] llvm14-0-no-llvm-linking = ["llvm14-0", "llvm-sys-140/no-llvm-linking"] llvm15-0-no-llvm-linking = ["llvm15-0", "llvm-sys-150/no-llvm-linking"] llvm16-0-no-llvm-linking = ["llvm16-0", "llvm-sys-160/no-llvm-linking"] llvm17-0-no-llvm-linking = ["llvm17-0", "llvm-sys-170/no-llvm-linking"] llvm18-0-no-llvm-linking = ["llvm18-0", "llvm-sys-180/no-llvm-linking"] # Linking preference. # If none of these are enabled, it defaults to force static linking. # # Force dynamic linking against LLVM libraries. See llvm-sys for more details llvm12-0-force-dynamic = ["llvm12-0", "llvm-sys-120/force-dynamic"] llvm13-0-force-dynamic = ["llvm13-0", "llvm-sys-130/force-dynamic"] llvm14-0-force-dynamic = ["llvm14-0", "llvm-sys-140/force-dynamic"] llvm15-0-force-dynamic = ["llvm15-0", "llvm-sys-150/force-dynamic"] llvm16-0-force-dynamic = ["llvm16-0", "llvm-sys-160/force-dynamic"] llvm17-0-force-dynamic = ["llvm17-0", "llvm-sys-170/force-dynamic"] llvm18-0-force-dynamic = ["llvm18-0", "llvm-sys-180/force-dynamic"] # Prefer dynamic linking against LLVM libraries. See llvm-sys for more details llvm12-0-prefer-dynamic = ["llvm12-0", "llvm-sys-120/prefer-dynamic"] llvm13-0-prefer-dynamic = ["llvm13-0", "llvm-sys-130/prefer-dynamic"] llvm14-0-prefer-dynamic = ["llvm14-0", "llvm-sys-140/prefer-dynamic"] llvm15-0-prefer-dynamic = ["llvm15-0", "llvm-sys-150/prefer-dynamic"] llvm16-0-prefer-dynamic = ["llvm16-0", "llvm-sys-160/prefer-dynamic"] llvm17-0-prefer-dynamic = ["llvm17-0", "llvm-sys-170/prefer-dynamic"] llvm18-0-prefer-dynamic = ["llvm18-0", "llvm-sys-180/prefer-dynamic"] # Force static linking against LLVM libraries. See llvm-sys for more details llvm12-0-force-static = ["llvm12-0", "llvm-sys-120/force-static"] llvm13-0-force-static = ["llvm13-0", "llvm-sys-130/force-static"] llvm14-0-force-static = ["llvm14-0", "llvm-sys-140/force-static"] llvm15-0-force-static = ["llvm15-0", "llvm-sys-150/force-static"] llvm16-0-force-static = ["llvm16-0", "llvm-sys-160/force-static"] llvm17-0-force-static = ["llvm17-0", "llvm-sys-170/force-static"] llvm18-0-force-static = ["llvm18-0", "llvm-sys-180/force-static"] # Prefer static linking against LLVM libraries. See llvm-sys for more details llvm12-0-prefer-static = ["llvm12-0", "llvm-sys-120/prefer-static"] llvm13-0-prefer-static = ["llvm13-0", "llvm-sys-130/prefer-static"] llvm14-0-prefer-static = ["llvm14-0", "llvm-sys-140/prefer-static"] llvm15-0-prefer-static = ["llvm15-0", "llvm-sys-150/prefer-static"] llvm16-0-prefer-static = ["llvm16-0", "llvm-sys-160/prefer-static"] llvm17-0-prefer-static = ["llvm17-0", "llvm-sys-170/prefer-static"] llvm18-0-prefer-static = ["llvm18-0", "llvm-sys-180/prefer-static"] # Don't force linking to libffi on non-windows platforms. Without this feature # inkwell always links to libffi on non-windows platforms. no-libffi-linking = [] target-x86 = [] target-arm = [] target-mips = [] target-aarch64 = [] target-amdgpu = [] target-systemz = [] target-hexagon = [] target-nvptx = [] target-msp430 = [] target-xcore = [] target-powerpc = [] target-sparc = [] target-bpf = [] target-lanai = [] target-webassembly = [] target-riscv = [] target-loongarch = [] target-syncvm = [] target-all = [ "target-x86", "target-arm", "target-mips", "target-aarch64", "target-amdgpu", "target-systemz", "target-hexagon", "target-nvptx", "target-msp430", "target-xcore", "target-powerpc", "target-sparc", "target-bpf", "target-lanai", "target-webassembly", "target-riscv", "target-loongarch", ] experimental = ["static-alloc"] nightly = ["inkwell_internals/nightly"] [dependencies] inkwell_internals = { path = "./internal_macros", version = "0.10.0" } llvm-sys-40 = { package = "llvm-sys", version = "40.4", optional = true } llvm-sys-50 = { package = "llvm-sys", version = "50.4", optional = true } llvm-sys-60 = { package = "llvm-sys", version = "60.6", optional = true } llvm-sys-70 = { package = "llvm-sys", version = "70.4", optional = true } llvm-sys-80 = { package = "llvm-sys", version = "80.3", optional = true } llvm-sys-90 = { package = "llvm-sys", version = "90.2.1", optional = true } llvm-sys-100 = { package = "llvm-sys", version = "100.2.3", optional = true } llvm-sys-110 = { package = "llvm-sys", version = "110.0.3", optional = true } llvm-sys-120 = { package = "llvm-sys", version = "120.2.4", optional = true } llvm-sys-130 = { package = "llvm-sys", version = "130.0.4", optional = true } llvm-sys-140 = { package = "llvm-sys", version = "140.0.2", optional = true } llvm-sys-150 = { package = "llvm-sys", version = "150.0.3", optional = true } llvm-sys-160 = { package = "llvm-sys", version = "160.1.0", optional = true } llvm-sys-170 = { package = "llvm-sys", version = "170.0.1", optional = true } llvm-sys-180 = { package = "llvm-sys", version = "180.0.0", optional = true } either = "1.5" libc = "0.2" once_cell = "1.16" thiserror = "1.0.48" static-alloc = { version = "0.2", optional = true } serde = { version = "1.0", default-features = false, features = ["derive"], optional = true } [dev-dependencies] regex = "1" [badges] codecov = { repository = "TheDan64/inkwell" }