101e04c3fSmrg# Copyright © 2017 Broadcom
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
2101e04c3fSmrgfiles_libv3d = files(
2201e04c3fSmrg  'v3d_blit.c',
2301e04c3fSmrg  'v3d_bufmgr.c',
2401e04c3fSmrg  'v3d_bufmgr.h',
2501e04c3fSmrg  'v3d_cl.c',
2601e04c3fSmrg  'v3d_cl.h',
2701e04c3fSmrg  'v3d_context.c',
2801e04c3fSmrg  'v3d_context.h',
2901e04c3fSmrg  'v3d_fence.c',
3001e04c3fSmrg  'v3d_formats.c',
3101e04c3fSmrg  'v3d_job.c',
3201e04c3fSmrg  'v3d_program.c',
3301e04c3fSmrg  'v3d_query.c',
347ec681f3Smrg  'v3d_query.h',
357ec681f3Smrg  'v3d_query_pipe.c',
367ec681f3Smrg  'v3d_query_perfcnt.c',
3701e04c3fSmrg  'v3d_resource.c',
3801e04c3fSmrg  'v3d_resource.h',
3901e04c3fSmrg  'v3d_screen.c',
4001e04c3fSmrg  'v3d_screen.h',
4101e04c3fSmrg  'v3d_uniforms.c',
4201e04c3fSmrg)
4301e04c3fSmrg
4401e04c3fSmrgfiles_per_version = files(
4501e04c3fSmrg  'v3dx_draw.c',
4601e04c3fSmrg  'v3dx_emit.c',
4701e04c3fSmrg  'v3dx_format_table.c',
4801e04c3fSmrg  'v3dx_job.c',
4901e04c3fSmrg  'v3dx_rcl.c',
5001e04c3fSmrg  'v3dx_state.c',
5101e04c3fSmrg)
5201e04c3fSmrg
539f464c52Smayav3d_args = ['-DV3D_BUILD_NEON']
549f464c52Smaya
5501e04c3fSmrgdep_v3dv3 = dependency('v3dv3', required: false)
5601e04c3fSmrgif dep_v3dv3.found()
579f464c52Smaya  v3d_args += '-DUSE_V3D_SIMULATOR'
5801e04c3fSmrgendif
5901e04c3fSmrg
6001e04c3fSmrgv3d_versions = ['33', '41']
6101e04c3fSmrg
6201e04c3fSmrgper_version_libs = []
6301e04c3fSmrgforeach ver : v3d_versions
6401e04c3fSmrg  per_version_libs += static_library(
6501e04c3fSmrg    'v3d-v' + ver,
667ec681f3Smrg    [files_per_version, v3d_xml_pack],
6701e04c3fSmrg    include_directories : [
6801e04c3fSmrg      inc_src, inc_include, inc_gallium, inc_gallium_aux, inc_broadcom,
699f464c52Smaya      inc_gallium_drivers,
7001e04c3fSmrg    ],
717ec681f3Smrg    c_args : [v3d_args, '-DV3D_VERSION=' + ver],
727ec681f3Smrg    gnu_symbol_visibility : 'hidden',
737ec681f3Smrg    dependencies : [dep_v3dv3, dep_libdrm, dep_valgrind, idep_nir_headers],
7401e04c3fSmrg)
7501e04c3fSmrg
7601e04c3fSmrgendforeach
7701e04c3fSmrg
789f464c52Smayav3d_neon_c_args = []
799f464c52Smayaif host_machine.cpu_family() == 'arm'
809f464c52Smaya    v3d_neon_c_args = '-mfpu=neon'
819f464c52Smayaendif
829f464c52Smaya
8301e04c3fSmrglibv3d = static_library(
8401e04c3fSmrg  'v3d',
857ec681f3Smrg  [
867ec681f3Smrg    files_libv3d,
877ec681f3Smrg    v3d_xml_pack,
887ec681f3Smrg  ],
8901e04c3fSmrg  include_directories : [
9001e04c3fSmrg    inc_src, inc_include, inc_gallium, inc_gallium_aux, inc_broadcom,
917ec681f3Smrg    inc_simulator, inc_gallium_drivers,
9201e04c3fSmrg  ],
937ec681f3Smrg  c_args : [v3d_args],
947ec681f3Smrg  cpp_args : [v3d_args],
957ec681f3Smrg  gnu_symbol_visibility : 'hidden',
9601e04c3fSmrg  dependencies : [dep_v3dv3, dep_libdrm, dep_valgrind, idep_nir_headers],
977ec681f3Smrg  link_with: [per_version_libs],
9801e04c3fSmrg)
9901e04c3fSmrg
10001e04c3fSmrgdriver_v3d = declare_dependency(
10101e04c3fSmrg  compile_args : '-DGALLIUM_V3D',
10201e04c3fSmrg  link_with : [libv3d, libv3dwinsys, libbroadcom_cle, libbroadcom_v3d],
10301e04c3fSmrg  dependencies : idep_nir,
10401e04c3fSmrg)
105