aboutsummaryrefslogtreecommitdiff
path: root/target/s390x/meson.build
blob: a5e1ded93f42d8f7bea892299a29f3f7fd1c1059 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
s390x_ss = ss.source_set()
s390x_ss.add(files(
  'cpu.c',
  'cpu_features.c',
  'cpu_models.c',
  'gdbstub.c',
  'helper.c',
  'interrupt.c',
))

s390x_ss.add(when: 'CONFIG_TCG', if_true: files(
  'cc_helper.c',
  'crypto_helper.c',
  'excp_helper.c',
  'fpu_helper.c',
  'int_helper.c',
  'mem_helper.c',
  'misc_helper.c',
  'translate.c',
  'vec_fpu_helper.c',
  'vec_helper.c',
  'vec_int_helper.c',
  'vec_string_helper.c',
))

s390x_ss.add(when: 'CONFIG_KVM', if_true: files('kvm.c'), if_false: files('kvm-stub.c'))

gen_features = executable('gen-features', 'gen-features.c', native: true,
                          build_by_default: false)

gen_features_h = custom_target('gen-features.h',
                               output: 'gen-features.h',
                               capture: true,
                               command: gen_features)

s390x_ss.add(gen_features_h)

s390x_softmmu_ss = ss.source_set()
s390x_softmmu_ss.add(files(
  'arch_dump.c',
  'diag.c',
  'ioinst.c',
  'machine.c',
  'mmu_helper.c',
  'sigp.c',
))

# Newer kernels on s390 check for an S390_PGSTE program header and
# enable the pgste page table extensions in that case. This makes
# the vm.allocate_pgste sysctl unnecessary. We enable this program
# header if
#  - we build on s390x
#  - we build the system emulation for s390x (qemu-system-s390x)
#  - KVM is enabled
#  - the linker supports --s390-pgste
if host_machine.cpu_family() == 's390x' and cc.has_link_argument('-Wl,--s390-pgste')
  s390x_softmmu_ss.add(when: 'CONFIG_KVM',
                       if_true: declare_dependency(link_args: ['-Wl,--s390-pgste']))
endif

s390x_user_ss = ss.source_set()

target_arch += {'s390x': s390x_ss}
target_softmmu_arch += {'s390x': s390x_softmmu_ss}
target_user_arch += {'s390x': s390x_user_ss}