Skip to content

Commit 8343e3c

Browse files
authored
Merge pull request rust-lang#108 from wasmerio/master
Added target as features
2 parents 1d36721 + d644466 commit 8343e3c

File tree

3 files changed

+51
-4
lines changed

3 files changed

+51
-4
lines changed

.travis.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ include_base: &BASE
2828
- export LLVM_PATH=/usr/share/llvm-${LLVM_VERSION}/cmake/
2929
- sed -i -e 's/llvm-sys = ".*"/llvm-sys = "'${LLVM_VERSION_SHORT}'"/' Cargo.toml
3030
script:
31-
- cargo build --no-default-features --features "llvm${LLVM_VERSION_DASH}" --color=always
32-
- cargo test --no-default-features --features "llvm${LLVM_VERSION_DASH}" --verbose --color=always
31+
- cargo build --no-default-features --features "target-all,llvm${LLVM_VERSION_DASH}" --color=always
32+
- cargo test --no-default-features --features "target-all,llvm${LLVM_VERSION_DASH}" --verbose --color=always
3333

3434
matrix:
3535
fast_finish: true
@@ -154,7 +154,7 @@ matrix:
154154
- export PATH=/usr/lib/llvm-8/bin/:$HOME/.local/bin:$PATH
155155
- export LLVM_PATH=/usr/share/llvm-8/cmake/
156156
script:
157-
- cargo doc --no-default-features --features llvm8-0 --color=always
157+
- cargo doc --no-default-features --features "target-all,llvm8-0" --color=always
158158
- echo '<meta http-equiv="refresh" content="1; url=inkwell/index.html">' > target/doc/index.html
159159
rust: nightly
160160
name: "GitHub IO Documentation Deployment"

Cargo.toml

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ categories = ["development-tools::ffi"]
1111
edition = "2018"
1212

1313
[features]
14-
default = []
14+
default = ['target-all']
1515
llvm3-6 = []
1616
llvm3-7 = []
1717
llvm3-8 = []
@@ -21,6 +21,38 @@ llvm5-0 = []
2121
llvm6-0 = []
2222
llvm7-0 = []
2323
llvm8-0 = []
24+
target-x86 = []
25+
target-arm = []
26+
target-mips = []
27+
target-aarch64 = []
28+
target-amdgpu = []
29+
target-systemz = []
30+
target-hexagon = []
31+
target-nvptx = []
32+
target-msp430 = []
33+
target-xcore = []
34+
target-powerpc = []
35+
target-sparc = []
36+
target-bpf = []
37+
target-lanai = []
38+
target-webassembly = []
39+
target-all = [
40+
'target-x86',
41+
'target-arm',
42+
'target-mips',
43+
'target-aarch64',
44+
'target-amdgpu',
45+
'target-systemz',
46+
'target-hexagon',
47+
'target-nvptx',
48+
'target-msp430',
49+
'target-xcore',
50+
'target-powerpc',
51+
'target-sparc',
52+
'target-bpf',
53+
'target-lanai',
54+
'target-webassembly'
55+
]
2456

2557
[dependencies]
2658
either = "1.5"

src/targets.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ impl Target {
9595
}
9696

9797
// REVIEW: Should this just initialize all? Is opt into each a good idea?
98+
#[cfg(feature = "target-x86")]
9899
pub fn initialize_x86(config: &InitializationConfig) {
99100
use llvm_sys::target::{LLVMInitializeX86Target, LLVMInitializeX86TargetInfo, LLVMInitializeX86TargetMC, LLVMInitializeX86Disassembler, LLVMInitializeX86AsmPrinter, LLVMInitializeX86AsmParser};
100101

@@ -125,6 +126,7 @@ impl Target {
125126
}
126127
}
127128

129+
#[cfg(feature = "target-arm")]
128130
pub fn initialize_arm(config: &InitializationConfig) {
129131
use llvm_sys::target::{LLVMInitializeARMTarget, LLVMInitializeARMTargetInfo, LLVMInitializeARMTargetMC, LLVMInitializeARMDisassembler, LLVMInitializeARMAsmPrinter, LLVMInitializeARMAsmParser};
130132

@@ -155,6 +157,7 @@ impl Target {
155157
}
156158
}
157159

160+
#[cfg(feature = "target-mips")]
158161
pub fn initialize_mips(config: &InitializationConfig) {
159162
use llvm_sys::target::{LLVMInitializeMipsTarget, LLVMInitializeMipsTargetInfo, LLVMInitializeMipsTargetMC, LLVMInitializeMipsDisassembler, LLVMInitializeMipsAsmPrinter, LLVMInitializeMipsAsmParser};
160163

@@ -185,6 +188,7 @@ impl Target {
185188
}
186189
}
187190

191+
#[cfg(feature = "target-aarch64")]
188192
pub fn initialize_aarch64(config: &InitializationConfig) {
189193
use llvm_sys::target::{LLVMInitializeAArch64Target, LLVMInitializeAArch64TargetInfo, LLVMInitializeAArch64TargetMC, LLVMInitializeAArch64Disassembler, LLVMInitializeAArch64AsmPrinter, LLVMInitializeAArch64AsmParser};
190194

@@ -246,6 +250,7 @@ impl Target {
246250
}
247251

248252
// TODOC: Called R600 in 3.6
253+
#[cfg(feature = "target-amdgpu")]
249254
#[llvm_versions(3.7..=latest)]
250255
pub fn initialize_amd_gpu(config: &InitializationConfig) {
251256
use llvm_sys::target::{LLVMInitializeAMDGPUTarget, LLVMInitializeAMDGPUTargetInfo, LLVMInitializeAMDGPUTargetMC, LLVMInitializeAMDGPUAsmPrinter, LLVMInitializeAMDGPUAsmParser};
@@ -275,6 +280,7 @@ impl Target {
275280
}
276281
}
277282

283+
#[cfg(feature = "target-systemz")]
278284
pub fn initialize_system_z(config: &InitializationConfig) {
279285
use llvm_sys::target::{LLVMInitializeSystemZTarget, LLVMInitializeSystemZTargetInfo, LLVMInitializeSystemZTargetMC, LLVMInitializeSystemZDisassembler, LLVMInitializeSystemZAsmPrinter, LLVMInitializeSystemZAsmParser};
280286

@@ -305,6 +311,7 @@ impl Target {
305311
}
306312
}
307313

314+
#[cfg(feature = "target-hexagon")]
308315
pub fn initialize_hexagon(config: &InitializationConfig) {
309316
use llvm_sys::target::{LLVMInitializeHexagonTarget, LLVMInitializeHexagonTargetInfo, LLVMInitializeHexagonTargetMC, LLVMInitializeHexagonDisassembler, LLVMInitializeHexagonAsmPrinter};
310317

@@ -333,6 +340,7 @@ impl Target {
333340
}
334341
}
335342

343+
#[cfg(feature = "target-nvptx")]
336344
pub fn initialize_nvptx(config: &InitializationConfig) {
337345
use llvm_sys::target::{LLVMInitializeNVPTXTarget, LLVMInitializeNVPTXTargetInfo, LLVMInitializeNVPTXTargetMC, LLVMInitializeNVPTXAsmPrinter};
338346

@@ -378,6 +386,7 @@ impl Target {
378386
}
379387
}
380388

389+
#[cfg(feature = "target-msp430")]
381390
pub fn initialize_msp430(config: &InitializationConfig) {
382391
use llvm_sys::target::{LLVMInitializeMSP430Target, LLVMInitializeMSP430TargetInfo, LLVMInitializeMSP430TargetMC, LLVMInitializeMSP430AsmPrinter};
383392

@@ -404,6 +413,7 @@ impl Target {
404413
}
405414
}
406415

416+
#[cfg(feature = "target-xcore")]
407417
pub fn initialize_x_core(config: &InitializationConfig) {
408418
use llvm_sys::target::{LLVMInitializeXCoreTarget, LLVMInitializeXCoreTargetInfo, LLVMInitializeXCoreTargetMC, LLVMInitializeXCoreDisassembler, LLVMInitializeXCoreAsmPrinter};
409419

@@ -432,6 +442,7 @@ impl Target {
432442
}
433443
}
434444

445+
#[cfg(feature = "target-powerpc")]
435446
pub fn initialize_power_pc(config: &InitializationConfig) {
436447
use llvm_sys::target::{LLVMInitializePowerPCTarget, LLVMInitializePowerPCTargetInfo, LLVMInitializePowerPCTargetMC, LLVMInitializePowerPCDisassembler, LLVMInitializePowerPCAsmPrinter, LLVMInitializePowerPCAsmParser};
437448

@@ -462,6 +473,7 @@ impl Target {
462473
}
463474
}
464475

476+
#[cfg(feature = "target-sparc")]
465477
pub fn initialize_sparc(config: &InitializationConfig) {
466478
use llvm_sys::target::{LLVMInitializeSparcTarget, LLVMInitializeSparcTargetInfo, LLVMInitializeSparcTargetMC, LLVMInitializeSparcDisassembler, LLVMInitializeSparcAsmPrinter, LLVMInitializeSparcAsmParser};
467479

@@ -493,6 +505,7 @@ impl Target {
493505
}
494506

495507
// TODOC: Disassembler only supported in LLVM 4.0+
508+
#[cfg(feature = "target-bpf")]
496509
#[llvm_versions(3.7..=latest)]
497510
pub fn initialize_bpf(config: &InitializationConfig) {
498511
use llvm_sys::target::{LLVMInitializeBPFTarget, LLVMInitializeBPFTargetInfo, LLVMInitializeBPFTargetMC, LLVMInitializeBPFAsmPrinter};
@@ -527,6 +540,7 @@ impl Target {
527540
}
528541
}
529542

543+
#[cfg(feature = "target-lanai")]
530544
#[llvm_versions(4.0..=latest)]
531545
pub fn initialize_lanai(config: &InitializationConfig) {
532546
use llvm_sys::target::{LLVMInitializeLanaiTargetInfo, LLVMInitializeLanaiTarget, LLVMInitializeLanaiTargetMC, LLVMInitializeLanaiAsmPrinter, LLVMInitializeLanaiAsmParser, LLVMInitializeLanaiDisassembler};
@@ -590,6 +604,7 @@ impl Target {
590604
}
591605
}
592606

607+
#[cfg(feature = "target-webassembly")]
593608
#[llvm_versions(8.0..=latest)]
594609
pub fn initialize_webassembly(config: &InitializationConfig) {
595610
use llvm_sys::target::{LLVMInitializeWebAssemblyTargetInfo, LLVMInitializeWebAssemblyTarget, LLVMInitializeWebAssemblyTargetMC, LLVMInitializeWebAssemblyAsmPrinter, LLVMInitializeWebAssemblyAsmParser, LLVMInitializeWebAssemblyDisassembler};

0 commit comments

Comments
 (0)