meson.build revision 7ec681f3
101e04c3fSmrg# Copyright © 2017 Intel Corporation
201e04c3fSmrg
301e04c3fSmrg# Permission is hereby granted, free of charge, to any person obtaining a copy
401e04c3fSmrg# of this software and associated documentation files (the "Software"), to deal
501e04c3fSmrg# in the Software without restriction, including without limitation the rights
601e04c3fSmrg# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
701e04c3fSmrg# copies of the Software, and to permit persons to whom the Software is
801e04c3fSmrg# furnished to do so, subject to the following conditions:
901e04c3fSmrg
1001e04c3fSmrg# The above copyright notice and this permission notice shall be included in
1101e04c3fSmrg# all copies or substantial portions of the Software.
1201e04c3fSmrg
1301e04c3fSmrg# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1401e04c3fSmrg# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1501e04c3fSmrg# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1601e04c3fSmrg# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1701e04c3fSmrg# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1801e04c3fSmrg# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1901e04c3fSmrg# SOFTWARE.
2001e04c3fSmrg
2101e04c3fSmrglibaub = static_library(
2201e04c3fSmrg  'aub',
2301e04c3fSmrg  files('aub_read.c', 'aub_mem.c'),
247ec681f3Smrg  include_directories : [inc_include, inc_src, inc_intel],
257ec681f3Smrg  dependencies : idep_mesautil,
267ec681f3Smrg  link_with : [libintel_common, libintel_dev],
277ec681f3Smrg  c_args : [no_override_init_args],
287ec681f3Smrg  gnu_symbol_visibility : 'hidden',
2901e04c3fSmrg  install : false
3001e04c3fSmrg)
3101e04c3fSmrg
3201e04c3fSmrgaubinator = executable(
3301e04c3fSmrg  'aubinator',
3401e04c3fSmrg  files('aubinator.c'),
357ec681f3Smrg  dependencies : [idep_mesautil, dep_expat, dep_zlib, dep_dl, dep_thread, dep_m],
367ec681f3Smrg  include_directories : [inc_include, inc_src, inc_intel],
377ec681f3Smrg  link_with : [libintel_common, libintel_compiler, libintel_dev, libaub],
387ec681f3Smrg  c_args : [no_override_init_args],
397ec681f3Smrg  gnu_symbol_visibility : 'hidden',
4001e04c3fSmrg  install : true
4101e04c3fSmrg)
4201e04c3fSmrg
4301e04c3fSmrgaubinator_error_decode = executable(
4401e04c3fSmrg  'aubinator_error_decode',
4501e04c3fSmrg  files('aubinator_error_decode.c'),
467ec681f3Smrg  dependencies : [idep_mesautil, dep_zlib, dep_thread],
477ec681f3Smrg  include_directories : [inc_include, inc_src, inc_intel],
487ec681f3Smrg  link_with : [libintel_common, libintel_compiler, libintel_dev],
497ec681f3Smrg  c_args : [no_override_init_args],
507ec681f3Smrg  gnu_symbol_visibility : 'hidden',
5101e04c3fSmrg  install : true
5201e04c3fSmrg)
5301e04c3fSmrg
5401e04c3fSmrgi965_disasm = executable(
5501e04c3fSmrg  'i965_disasm',
5601e04c3fSmrg  files('i965_disasm.c'),
577ec681f3Smrg  dependencies : [idep_mesautil, dep_thread],
587ec681f3Smrg  include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_intel],
597ec681f3Smrg  link_with : [libintel_common, libintel_compiler, libintel_dev],
607ec681f3Smrg  c_args : [no_override_init_args],
617ec681f3Smrg  gnu_symbol_visibility : 'hidden',
6201e04c3fSmrg  install : true
6301e04c3fSmrg)
6401e04c3fSmrg
6501e04c3fSmrgerror2aub = executable(
6601e04c3fSmrg  'intel_error2aub',
6701e04c3fSmrg  files('aub_write.h', 'aub_write.c', 'error2aub.c'),
6801e04c3fSmrg  dependencies : [dep_zlib, dep_dl, dep_thread, dep_m],
697ec681f3Smrg  include_directories : [inc_include, inc_src, inc_intel],
7001e04c3fSmrg  link_with : [libintel_dev],
717ec681f3Smrg  c_args : [no_override_init_args],
727ec681f3Smrg  gnu_symbol_visibility : 'hidden',
7301e04c3fSmrg  install : true
7401e04c3fSmrg)
7501e04c3fSmrg
7601e04c3fSmrgsanitize_data = configuration_data()
7701e04c3fSmrgsanitize_data.set(
7801e04c3fSmrg  'install_libexecdir',
7901e04c3fSmrg  join_paths(get_option('prefix'), get_option('libexecdir'))
8001e04c3fSmrg)
817ec681f3Smrgsanitize_data.set(
827ec681f3Smrg  'install_libdir',
837ec681f3Smrg  join_paths(get_option('prefix'), get_option('libdir'))
847ec681f3Smrg)
8501e04c3fSmrgconfigure_file(
869f464c52Smaya  input : 'intel_sanitize_gpu.in',
879f464c52Smaya  output : '@BASENAME@',
889f464c52Smaya  install_dir : get_option('bindir'),
899f464c52Smaya  install : true,
909f464c52Smaya  configuration : sanitize_data
9101e04c3fSmrg)
9201e04c3fSmrg
9301e04c3fSmrglibintel_sanitize_gpu = shared_library(
9401e04c3fSmrg  'intel_sanitize_gpu',
9501e04c3fSmrg  files('intel_sanitize_gpu.c'),
967ec681f3Smrg  dependencies : [idep_mesautil, dep_dl, dep_thread],
977ec681f3Smrg  include_directories : [inc_include, inc_src, inc_intel],
987ec681f3Smrg  link_with : libintel_common,
997ec681f3Smrg  c_args : [no_override_init_args, c_sse2_args],
1007ec681f3Smrg  gnu_symbol_visibility : 'hidden',
1019f464c52Smaya  install_dir : get_option('libexecdir'),
1029f464c52Smaya  install : true
10301e04c3fSmrg)
10401e04c3fSmrg
10501e04c3fSmrgconfigure_file(
10601e04c3fSmrg  input : 'intel_dump_gpu.in',
10701e04c3fSmrg  output : '@BASENAME@',
1089f464c52Smaya  install_dir : get_option('bindir'),
1099f464c52Smaya  configuration : sanitize_data,
1109f464c52Smaya  install : true
11101e04c3fSmrg)
11201e04c3fSmrg
11301e04c3fSmrglibintel_dump_gpu = shared_library(
11401e04c3fSmrg  'intel_dump_gpu',
1159f464c52Smaya  files(
1167ec681f3Smrg    'intel_context.h', 'gfx8_context.h', 'gfx10_context.h', 'intel_aub.h',
1179f464c52Smaya    'aub_write.h', 'aub_write.c', 'intel_dump_gpu.c',
1189f464c52Smaya  ),
1197ec681f3Smrg  dependencies : [dep_dl, idep_mesautil],
1207ec681f3Smrg  include_directories : [inc_include, inc_src, inc_intel],
12101e04c3fSmrg  link_with : libintel_dev,
1227ec681f3Smrg  c_args : [no_override_init_args],
1237ec681f3Smrg  gnu_symbol_visibility : 'hidden',
1249f464c52Smaya  install_dir : get_option('libexecdir'),
1259f464c52Smaya  install : true
12601e04c3fSmrg)
12701e04c3fSmrg
1287ec681f3Smrgif with_tools.contains('drm-shim')
1297ec681f3Smrg  configure_file(
1307ec681f3Smrg    input : 'intel_stub_gpu.in',
1317ec681f3Smrg    output : '@BASENAME@',
1327ec681f3Smrg    install_dir : get_option('bindir'),
1337ec681f3Smrg    configuration : sanitize_data,
1347ec681f3Smrg    install : true
1357ec681f3Smrg  )
1367ec681f3Smrg
1377ec681f3Smrg  libintel_stub_gpu = shared_library(
1387ec681f3Smrg    ['intel_noop_drm_shim'],
1397ec681f3Smrg    'intel_noop_drm_shim.c',
1407ec681f3Smrg    include_directories: [inc_include, inc_src, inc_intel],
1417ec681f3Smrg    link_with: libintel_dev,
1427ec681f3Smrg    dependencies: [dep_libdrm, dep_drm_shim, idep_mesautil, idep_libintel_common],
1437ec681f3Smrg    gnu_symbol_visibility : 'hidden',
1447ec681f3Smrg    install : true,
1457ec681f3Smrg  )
1467ec681f3Smrgendif
1477ec681f3Smrg
14801e04c3fSmrgif with_tools.contains('intel-ui')
14901e04c3fSmrg  subdir('imgui')
15001e04c3fSmrg
15101e04c3fSmrg  aubinator_viewer = executable(
15201e04c3fSmrg    'aubinator_viewer',
15301e04c3fSmrg    files('aubinator_viewer.cpp', 'aubinator_viewer_decoder.cpp'),
1547ec681f3Smrg    dependencies : [idep_mesautil, dep_zlib, dep_dl, dep_thread, dep_m, libintel_imgui_gtk_dep],
1557ec681f3Smrg    include_directories : [inc_include, inc_src, inc_intel],
1567ec681f3Smrg    link_with : [libintel_common, libintel_compiler, libintel_dev, libaub],
1577ec681f3Smrg    c_args : [no_override_init_args],
1587ec681f3Smrg    gnu_symbol_visibility : 'hidden',
1599f464c52Smaya    cpp_args : ['-fpermissive', '-Wno-parentheses', '-Wno-class-memaccess'],
16001e04c3fSmrg    install : true
16101e04c3fSmrg  )
16201e04c3fSmrgendif
1637ec681f3Smrg
1647ec681f3Smrgbison_command = []
1657ec681f3Smrgif yacc_is_bison
1667ec681f3Smrg  bison_command = [
1677ec681f3Smrg    prog_bison, '@INPUT@', '--defines=@OUTPUT1@',
1687ec681f3Smrg    '--output=@OUTPUT0@'
1697ec681f3Smrg  ]
1707ec681f3Smrgelse
1717ec681f3Smrg  bison_command = [
1727ec681f3Smrg    prog_bison, '-H', '@OUTPUT1@',
1737ec681f3Smrg    '-o', '@OUTPUT0@', '@INPUT@'
1747ec681f3Smrg  ]
1757ec681f3Smrgendif
1767ec681f3Smrg
1777ec681f3Smrgi965_gram_tab = custom_target(
1787ec681f3Smrg  'i965_gram.tab.[ch]',
1797ec681f3Smrg  input : 'i965_gram.y',
1807ec681f3Smrg  output : ['i965_gram.tab.c', 'i965_gram.tab.h'],
1817ec681f3Smrg  command : bison_command
1827ec681f3Smrg)
1837ec681f3Smrg
1847ec681f3Smrgi965_lex_yy_c = custom_target(
1857ec681f3Smrg  'i965_lex.yy.c',
1867ec681f3Smrg  input : 'i965_lex.l',
1877ec681f3Smrg  output : 'i965_lex.yy.c',
1887ec681f3Smrg  command : [prog_flex, '-o', '@OUTPUT@', '@INPUT@']
1897ec681f3Smrg)
1907ec681f3Smrg
1917ec681f3Smrgi965_asm = executable(
1927ec681f3Smrg  'i965_asm',
1937ec681f3Smrg  ['i965_asm.c', i965_gram_tab[0], i965_gram_tab[1], i965_lex_yy_c],
1947ec681f3Smrg  dependencies : [idep_mesautil, dep_thread],
1957ec681f3Smrg  include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_intel],
1967ec681f3Smrg  link_with : [libintel_common, libintel_compiler, libintel_dev],
1977ec681f3Smrg  c_args : [no_override_init_args],
1987ec681f3Smrg  gnu_symbol_visibility : 'hidden',
1997ec681f3Smrg  install : true
2007ec681f3Smrg)
2017ec681f3Smrg
2027ec681f3Smrgasm_testcases = [
2037ec681f3Smrg  ['brw', 'gfx4'],
2047ec681f3Smrg  ['g4x', 'gfx4.5'],
2057ec681f3Smrg  ['ilk', 'gfx5'],
2067ec681f3Smrg  ['snb', 'gfx6'],
2077ec681f3Smrg  ['ivb', 'gfx7'],
2087ec681f3Smrg  ['hsw', 'gfx7.5'],
2097ec681f3Smrg  ['bdw', 'gfx8'],
2107ec681f3Smrg  ['skl', 'gfx9'],
2117ec681f3Smrg  ['icl', 'gfx11'],
2127ec681f3Smrg]
2137ec681f3Smrg
2147ec681f3Smrgtest_runner = find_program('tests/run-test.py')
2157ec681f3Smrgforeach testcase : asm_testcases
2167ec681f3Smrg  _gen_name = testcase[0]
2177ec681f3Smrg  _gen_num = testcase[1]
2187ec681f3Smrg  _gen_folder = join_paths(meson.current_source_dir(), 'tests', _gen_num)
2197ec681f3Smrg  test(
2207ec681f3Smrg    'i965_asm_' + _gen_num, test_runner,
2217ec681f3Smrg    args : [
2227ec681f3Smrg      '--i965_asm', i965_asm,
2237ec681f3Smrg      '--gen_name', _gen_name,
2247ec681f3Smrg      '--gen_folder', _gen_folder,
2257ec681f3Smrg    ],
2267ec681f3Smrg    suite : 'intel',
2277ec681f3Smrg  )
2287ec681f3Smrgendforeach
229