xref: /aosp_15_r20/external/mesa3d/src/freedreno/afuc/meson.build (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker# Copyright © 2020 Google, Inc
2*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT
3*61046927SAndroid Build Coastguard Worker
4*61046927SAndroid Build Coastguard Workerif with_tests
5*61046927SAndroid Build Coastguard Worker  diff = find_program('diff')
6*61046927SAndroid Build Coastguard Workerendif
7*61046927SAndroid Build Coastguard Worker
8*61046927SAndroid Build Coastguard Workerafuc_parser = custom_target(
9*61046927SAndroid Build Coastguard Worker  'parser.[ch]',
10*61046927SAndroid Build Coastguard Worker  input: 'parser.y',
11*61046927SAndroid Build Coastguard Worker  output: ['parser.c', 'parser.h'],
12*61046927SAndroid Build Coastguard Worker  command: [
13*61046927SAndroid Build Coastguard Worker    prog_bison, '@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@'
14*61046927SAndroid Build Coastguard Worker  ]
15*61046927SAndroid Build Coastguard Worker)
16*61046927SAndroid Build Coastguard Worker
17*61046927SAndroid Build Coastguard Workerafuc_lexer = custom_target(
18*61046927SAndroid Build Coastguard Worker  'lexer.c',
19*61046927SAndroid Build Coastguard Worker  input: 'lexer.l',
20*61046927SAndroid Build Coastguard Worker  output: 'lexer.c',
21*61046927SAndroid Build Coastguard Worker  command: [
22*61046927SAndroid Build Coastguard Worker    prog_flex, '-o', '@OUTPUT@', '@INPUT@'
23*61046927SAndroid Build Coastguard Worker  ]
24*61046927SAndroid Build Coastguard Worker)
25*61046927SAndroid Build Coastguard Worker
26*61046927SAndroid Build Coastguard Workerencode_h = custom_target(
27*61046927SAndroid Build Coastguard Worker  'encode.h',
28*61046927SAndroid Build Coastguard Worker  input: ['afuc.xml'],
29*61046927SAndroid Build Coastguard Worker  output: 'encode.h',
30*61046927SAndroid Build Coastguard Worker  command: [
31*61046927SAndroid Build Coastguard Worker    prog_isaspec_encode, '--xml', '@INPUT@', '--out-h', '@OUTPUT@'
32*61046927SAndroid Build Coastguard Worker  ],
33*61046927SAndroid Build Coastguard Worker)
34*61046927SAndroid Build Coastguard Worker
35*61046927SAndroid Build Coastguard Workerasm = executable(
36*61046927SAndroid Build Coastguard Worker  'afuc-asm',
37*61046927SAndroid Build Coastguard Worker  [
38*61046927SAndroid Build Coastguard Worker    'asm.c',
39*61046927SAndroid Build Coastguard Worker    'util.c',
40*61046927SAndroid Build Coastguard Worker    'util.h',
41*61046927SAndroid Build Coastguard Worker    afuc_lexer,
42*61046927SAndroid Build Coastguard Worker    afuc_parser,
43*61046927SAndroid Build Coastguard Worker    encode_h,
44*61046927SAndroid Build Coastguard Worker  ],
45*61046927SAndroid Build Coastguard Worker  include_directories: [
46*61046927SAndroid Build Coastguard Worker    inc_freedreno_rnn, inc_include, inc_src, inc_util,
47*61046927SAndroid Build Coastguard Worker  ],
48*61046927SAndroid Build Coastguard Worker  link_with: [
49*61046927SAndroid Build Coastguard Worker    libfreedreno_rnn,
50*61046927SAndroid Build Coastguard Worker  ],
51*61046927SAndroid Build Coastguard Worker  dependencies: [],
52*61046927SAndroid Build Coastguard Worker  build_by_default : with_tools.contains('freedreno'),
53*61046927SAndroid Build Coastguard Worker  install: install_fd_decode_tools,
54*61046927SAndroid Build Coastguard Worker)
55*61046927SAndroid Build Coastguard Workerif with_tests
56*61046927SAndroid Build Coastguard Worker  asm_fw = custom_target('afuc_test.fw',
57*61046927SAndroid Build Coastguard Worker    output: 'afuc_test.fw',
58*61046927SAndroid Build Coastguard Worker    command: [asm, files('../.gitlab-ci/traces/afuc_test.asm'), '@OUTPUT@'],
59*61046927SAndroid Build Coastguard Worker  )
60*61046927SAndroid Build Coastguard Worker  asm_fw_a7xx = custom_target('afuc_test_a7xx.fw',
61*61046927SAndroid Build Coastguard Worker    output: 'afuc_test_a7xx.fw',
62*61046927SAndroid Build Coastguard Worker    command: [asm, files('../.gitlab-ci/traces/afuc_test_a7xx.asm'), '@OUTPUT@'],
63*61046927SAndroid Build Coastguard Worker  )
64*61046927SAndroid Build Coastguard Worker  test('afuc-asm',
65*61046927SAndroid Build Coastguard Worker    diff,
66*61046927SAndroid Build Coastguard Worker    args: ['-u', files('../.gitlab-ci/reference/afuc_test.fw'), asm_fw],
67*61046927SAndroid Build Coastguard Worker    suite: 'freedreno',
68*61046927SAndroid Build Coastguard Worker    workdir: dir_source_root
69*61046927SAndroid Build Coastguard Worker  )
70*61046927SAndroid Build Coastguard Worker  test('afuc-asm-a7xx',
71*61046927SAndroid Build Coastguard Worker    diff,
72*61046927SAndroid Build Coastguard Worker    args: ['-u', files('../.gitlab-ci/reference/afuc_test_a7xx.fw'), asm_fw_a7xx],
73*61046927SAndroid Build Coastguard Worker    suite: 'freedreno',
74*61046927SAndroid Build Coastguard Worker    workdir: dir_source_root
75*61046927SAndroid Build Coastguard Worker  )
76*61046927SAndroid Build Coastguard Workerendif
77*61046927SAndroid Build Coastguard Worker
78*61046927SAndroid Build Coastguard Workerafuc_isa = custom_target(
79*61046927SAndroid Build Coastguard Worker  'afuc-isa',
80*61046927SAndroid Build Coastguard Worker  input: ['afuc.xml'],
81*61046927SAndroid Build Coastguard Worker  output: ['afuc-isa.c', 'afuc-isa.h'],
82*61046927SAndroid Build Coastguard Worker  command: [
83*61046927SAndroid Build Coastguard Worker    prog_isaspec_decode, '--xml', '@INPUT@',
84*61046927SAndroid Build Coastguard Worker    '--out-c', '@OUTPUT0@', '--out-h', '@OUTPUT1@',
85*61046927SAndroid Build Coastguard Worker  ],
86*61046927SAndroid Build Coastguard Worker)
87*61046927SAndroid Build Coastguard Worker
88*61046927SAndroid Build Coastguard Worker# Disasm requires mmaping >4GB
89*61046927SAndroid Build Coastguard Workerif cc.sizeof('size_t') > 4
90*61046927SAndroid Build Coastguard Worker  disasm = executable(
91*61046927SAndroid Build Coastguard Worker    'afuc-disasm',
92*61046927SAndroid Build Coastguard Worker    [
93*61046927SAndroid Build Coastguard Worker      'disasm.c',
94*61046927SAndroid Build Coastguard Worker      'emu.c',
95*61046927SAndroid Build Coastguard Worker      'emu.h',
96*61046927SAndroid Build Coastguard Worker      'emu-ds.c',
97*61046927SAndroid Build Coastguard Worker      'emu-regs.c',
98*61046927SAndroid Build Coastguard Worker      'emu-ui.c',
99*61046927SAndroid Build Coastguard Worker      'util.c',
100*61046927SAndroid Build Coastguard Worker      'util.h',
101*61046927SAndroid Build Coastguard Worker      afuc_isa,
102*61046927SAndroid Build Coastguard Worker    ],
103*61046927SAndroid Build Coastguard Worker    include_directories: [
104*61046927SAndroid Build Coastguard Worker      inc_freedreno,
105*61046927SAndroid Build Coastguard Worker      inc_freedreno_rnn,
106*61046927SAndroid Build Coastguard Worker      inc_include,
107*61046927SAndroid Build Coastguard Worker      inc_src,
108*61046927SAndroid Build Coastguard Worker      inc_util,
109*61046927SAndroid Build Coastguard Worker    ],
110*61046927SAndroid Build Coastguard Worker    link_with: [
111*61046927SAndroid Build Coastguard Worker      libfreedreno_rnn,
112*61046927SAndroid Build Coastguard Worker      libisaspec
113*61046927SAndroid Build Coastguard Worker    ],
114*61046927SAndroid Build Coastguard Worker    dependencies: [idep_mesautil, idep_isaspec_decode],
115*61046927SAndroid Build Coastguard Worker    build_by_default : with_tools.contains('freedreno'),
116*61046927SAndroid Build Coastguard Worker    install: install_fd_decode_tools,
117*61046927SAndroid Build Coastguard Worker  )
118*61046927SAndroid Build Coastguard Worker
119*61046927SAndroid Build Coastguard Worker  if with_tests
120*61046927SAndroid Build Coastguard Worker    disasm_fw = custom_target('afuc_test.asm',
121*61046927SAndroid Build Coastguard Worker      output: 'afuc_test.asm',
122*61046927SAndroid Build Coastguard Worker      command: [disasm, '-u', files('../.gitlab-ci/reference/afuc_test.fw')],
123*61046927SAndroid Build Coastguard Worker      capture: true
124*61046927SAndroid Build Coastguard Worker    )
125*61046927SAndroid Build Coastguard Worker    disasm_fw_a7xx = custom_target('afuc_test_a7xx.asm',
126*61046927SAndroid Build Coastguard Worker      output: 'afuc_test_a7xx.asm',
127*61046927SAndroid Build Coastguard Worker      command: [disasm, '-u', files('../.gitlab-ci/reference/afuc_test_a7xx.fw')],
128*61046927SAndroid Build Coastguard Worker      capture: true
129*61046927SAndroid Build Coastguard Worker    )
130*61046927SAndroid Build Coastguard Worker    test('afuc-disasm',
131*61046927SAndroid Build Coastguard Worker      diff,
132*61046927SAndroid Build Coastguard Worker      args: ['-u', files('../.gitlab-ci/reference/afuc_test.asm'), disasm_fw],
133*61046927SAndroid Build Coastguard Worker      suite: 'freedreno',
134*61046927SAndroid Build Coastguard Worker      workdir: dir_source_root
135*61046927SAndroid Build Coastguard Worker    )
136*61046927SAndroid Build Coastguard Worker    test('afuc-disasm-a7xx',
137*61046927SAndroid Build Coastguard Worker      diff,
138*61046927SAndroid Build Coastguard Worker      args: ['-u', files('../.gitlab-ci/reference/afuc_test_a7xx.asm'), disasm_fw_a7xx],
139*61046927SAndroid Build Coastguard Worker      suite: 'freedreno',
140*61046927SAndroid Build Coastguard Worker      workdir: dir_source_root
141*61046927SAndroid Build Coastguard Worker    )
142*61046927SAndroid Build Coastguard Worker  endif
143*61046927SAndroid Build Coastguard Workerendif
144