Hi

I'm working on a new build system called Meson and as part of development I
try to convert build systems of existing projects into Meson to see that it
fullfillls the requirements of real processes. I did a trial conversion of
Mesa because it seemed like an interesting challenge as it has lots of code
generation and other unorthodox stuff.

Attached is a patch that compiles most of Mesa with Meson. It does not do
all drivers and there are probably other things missing as well. Here's how
it stacks up against the Scons compile:

build time (not directly comparable, as Meson compiles less code)

Scons: 1m 13s
Meson: 40s

no-op build time

Scons: 4.7s
Meson: 0.04s

If someone wants to try it out themselves, first they need to get the
latest Meson from trunk (the version in Debian is too old) and Ninja from
distro packages (usually called ninja-build):

https://github.com/jpakkane/meson

Then apply the attached patch to trunk (it's originally on top of
commit 74e100affc0ac1). Then cd into source root and do the following

mkdir buildmeson
cd buildmeson
path/to/meson.py ..
ninja

If it dies halfway through just run ninja again. This is a dependency bug,
which I'll try to get fixed soon.

This was a fun challenge, hope some of you find it interesting,
From 60c2dfb7f60112cb364230e706503fba88277fe0 Mon Sep 17 00:00:00 2001
From: Jussi Pakkanen <[email protected]>
Date: Sat, 26 Jul 2014 21:37:12 +0300
Subject: [PATCH] Meson compilation experiment.

---
 include/git_sha1.h.in                    |   5 +
 include/meson.build                      |  15 ++
 meson.build                              |  17 ++
 src/gallium/auxiliary/meson.build        | 211 +++++++++++++++++++++
 src/gallium/drivers/galahad/meson.build  |   6 +
 src/gallium/drivers/identity/meson.build |   5 +
 src/gallium/drivers/llvmpipe/meson.build |  48 +++++
 src/gallium/drivers/meson.build          |   5 +
 src/gallium/drivers/softpipe/meson.build |  34 ++++
 src/gallium/meson.build                  |   3 +
 src/glsl/meson.build                     | 139 ++++++++++++++
 src/loader/meson.build                   |   3 +
 src/mapi/glapi/gen/extension_helper.py   |   0
 src/mapi/glapi/gen/glX_XML.py            |   0
 src/mapi/glapi/gen/glX_proto_common.py   |   0
 src/mapi/glapi/gen/glX_proto_recv.py     |   0
 src/mapi/glapi/gen/glX_proto_send.py     |   0
 src/mapi/glapi/gen/glX_proto_size.py     |   0
 src/mapi/glapi/gen/glX_server_table.py   |   0
 src/mapi/glapi/gen/gl_SPARC_asm.py       |   0
 src/mapi/glapi/gen/gl_XML.py             |   0
 src/mapi/glapi/gen/gl_apitemp.py         |   4 +-
 src/mapi/glapi/gen/gl_enums.py           |   4 +-
 src/mapi/glapi/gen/gl_genexec.py         |   4 +-
 src/mapi/glapi/gen/gl_gentable.py        |   0
 src/mapi/glapi/gen/gl_offsets.py         |   0
 src/mapi/glapi/gen/gl_procs.py           |   4 +-
 src/mapi/glapi/gen/gl_table.py           |   6 +-
 src/mapi/glapi/gen/gl_x86-64_asm.py      |   0
 src/mapi/glapi/gen/gl_x86_asm.py         |   0
 src/mapi/glapi/gen/license.py            |   0
 src/mapi/glapi/gen/mesadef.py            |   0
 src/mapi/glapi/gen/meson.build           | 120 ++++++++++++
 src/mapi/glapi/gen/remap_helper.py       |   4 +-
 src/mapi/glapi/gen/typeexpr.py           |   0
 src/mapi/glapi/glapi_entrypoint.c        |   2 +-
 src/mapi/glapi/meson.build               |  14 ++
 src/mapi/meson.build                     |   2 +
 src/mesa/meson.build                     | 312 +++++++++++++++++++++++++++++++
 src/meson.build                          |   6 +
 40 files changed, 966 insertions(+), 7 deletions(-)
 create mode 100644 include/git_sha1.h.in
 create mode 100644 include/meson.build
 create mode 100644 meson.build
 create mode 100644 src/gallium/auxiliary/meson.build
 create mode 100644 src/gallium/drivers/galahad/meson.build
 create mode 100644 src/gallium/drivers/identity/meson.build
 create mode 100644 src/gallium/drivers/llvmpipe/meson.build
 create mode 100644 src/gallium/drivers/meson.build
 create mode 100644 src/gallium/drivers/softpipe/meson.build
 create mode 100644 src/gallium/meson.build
 create mode 100644 src/glsl/meson.build
 create mode 100644 src/loader/meson.build
 mode change 100644 => 100755 src/mapi/glapi/gen/extension_helper.py
 mode change 100644 => 100755 src/mapi/glapi/gen/glX_XML.py
 mode change 100644 => 100755 src/mapi/glapi/gen/glX_proto_common.py
 mode change 100644 => 100755 src/mapi/glapi/gen/glX_proto_recv.py
 mode change 100644 => 100755 src/mapi/glapi/gen/glX_proto_send.py
 mode change 100644 => 100755 src/mapi/glapi/gen/glX_proto_size.py
 mode change 100644 => 100755 src/mapi/glapi/gen/glX_server_table.py
 mode change 100644 => 100755 src/mapi/glapi/gen/gl_SPARC_asm.py
 mode change 100644 => 100755 src/mapi/glapi/gen/gl_XML.py
 mode change 100644 => 100755 src/mapi/glapi/gen/gl_apitemp.py
 mode change 100644 => 100755 src/mapi/glapi/gen/gl_enums.py
 mode change 100644 => 100755 src/mapi/glapi/gen/gl_genexec.py
 mode change 100644 => 100755 src/mapi/glapi/gen/gl_gentable.py
 mode change 100644 => 100755 src/mapi/glapi/gen/gl_offsets.py
 mode change 100644 => 100755 src/mapi/glapi/gen/gl_procs.py
 mode change 100644 => 100755 src/mapi/glapi/gen/gl_table.py
 mode change 100644 => 100755 src/mapi/glapi/gen/gl_x86-64_asm.py
 mode change 100644 => 100755 src/mapi/glapi/gen/gl_x86_asm.py
 mode change 100644 => 100755 src/mapi/glapi/gen/license.py
 mode change 100644 => 100755 src/mapi/glapi/gen/mesadef.py
 create mode 100644 src/mapi/glapi/gen/meson.build
 mode change 100644 => 100755 src/mapi/glapi/gen/remap_helper.py
 mode change 100644 => 100755 src/mapi/glapi/gen/typeexpr.py
 create mode 100644 src/mapi/glapi/meson.build
 create mode 100644 src/mapi/meson.build
 create mode 100644 src/mesa/meson.build
 create mode 100644 src/meson.build

diff --git a/include/git_sha1.h.in b/include/git_sha1.h.in
new file mode 100644
index 0000000..5cbc752
--- /dev/null
+++ b/include/git_sha1.h.in
@@ -0,0 +1,5 @@
+#ifndef GIT_SHA1_H
+#define GIT_SHA1_H
+#define MESA_GIT_SHA1 "git-@GITVERSION@"
+#endif
+
diff --git a/include/meson.build b/include/meson.build
new file mode 100644
index 0000000..fcaae1a
--- /dev/null
+++ b/include/meson.build
@@ -0,0 +1,15 @@
+gittext = run_command('git', 'log', '-n', '1', '--oneline').stdout().strip()
+
+confdata = configuration_data()
+confdata.set('GITVERSION', gittext)
+
+configure_file(input : 'git_sha1.h.in',
+output : 'git_sha1.h',
+configuration : confdata)
+
+# Mesa expects headers to be in a different directory than they
+# are when compiling with Meson. This is a workaround.
+run_command('ln', '-s', '../src/mapi/glapi/gen', 'main', in_builddir : true)
+run_command('ln', '-s', '../src/mapi/glapi/gen', 'glapi', in_builddir : true)
+
+
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..0159518
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,17 @@
+project('mesa', 'c', 'cpp')
+
+subdir('include')
+
+yacc = find_program('yacc')
+lex = find_program('lex')
+
+basic_includes = include_directories('include', 'src/mesa', 'src/mapi', 'src/mapi/glapi/gen', 
+'src/glsl', 'src/gallium/include', 'src/gallium/auxiliary')
+
+add_global_arguments('-DHAVE_PTHREAD=1', '-D_XOPEN_SOURCE=700', '-D_GNU_SOURCE', '-DUSE_X64_64_ASM', '-DGLX_USE_TLS', 
+'-DPACKAGE_VERSION="0.1"', '-DPACKAGE_BUGREPORT="[email protected]"', '-std=c99', language : 'c')
+add_global_arguments('-DHAVE_PTHREAD=1', '-D_XOPEN_SOURCE=700', '-D_GNU_SOURCE', '-DUSE_X64_64_ASM', '-DGLX_USE_TLS',
+'-DPACKAGE_VERSION="0.1"', '-DPACKAGE_BUGREPORT="[email protected]"',     language : 'cpp')
+
+subdir('src')
+
diff --git a/src/gallium/auxiliary/meson.build b/src/gallium/auxiliary/meson.build
new file mode 100644
index 0000000..dae907a
--- /dev/null
+++ b/src/gallium/auxiliary/meson.build
@@ -0,0 +1,211 @@
+c_sources = [
+'cso_cache/cso_cache.c',
+'cso_cache/cso_context.c',
+'cso_cache/cso_hash.c',
+'draw/draw_context.c',
+'draw/draw_fs.c',
+'draw/draw_gs.c',
+'draw/draw_pipe.c',
+'draw/draw_pipe_aaline.c',
+'draw/draw_pipe_aapoint.c',
+'draw/draw_pipe_clip.c',
+'draw/draw_pipe_cull.c',
+'draw/draw_pipe_flatshade.c',
+'draw/draw_pipe_offset.c',
+'draw/draw_pipe_pstipple.c',
+'draw/draw_pipe_stipple.c',
+'draw/draw_pipe_twoside.c',
+'draw/draw_pipe_unfilled.c',
+'draw/draw_pipe_util.c',
+'draw/draw_pipe_validate.c',
+'draw/draw_pipe_vbuf.c',
+'draw/draw_pipe_wide_line.c',
+'draw/draw_pipe_wide_point.c',
+'draw/draw_prim_assembler.c',
+'draw/draw_pt.c',
+'draw/draw_pt_emit.c',
+'draw/draw_pt_fetch.c',
+'draw/draw_pt_fetch_emit.c',
+'draw/draw_pt_fetch_shade_emit.c',
+'draw/draw_pt_fetch_shade_pipeline.c',
+'draw/draw_pt_post_vs.c',
+'draw/draw_pt_so_emit.c',
+'draw/draw_pt_util.c',
+'draw/draw_pt_vsplit.c',
+'draw/draw_vertex.c',
+'draw/draw_vs.c',
+'draw/draw_vs_exec.c',
+'draw/draw_vs_variant.c',
+'hud/font.c',
+'hud/hud_context.c',
+'hud/hud_cpu.c',
+'hud/hud_fps.c',
+'hud/hud_driver_query.c',
+'indices/u_primconvert.c',
+'os/os_misc.c',
+'os/os_process.c',
+'os/os_time.c',
+'pipebuffer/pb_buffer_fenced.c',
+'pipebuffer/pb_buffer_malloc.c',
+'pipebuffer/pb_bufmgr_alt.c',
+'pipebuffer/pb_bufmgr_cache.c',
+'pipebuffer/pb_bufmgr_debug.c',
+'pipebuffer/pb_bufmgr_mm.c',
+'pipebuffer/pb_bufmgr_ondemand.c',
+'pipebuffer/pb_bufmgr_pool.c',
+'pipebuffer/pb_bufmgr_slab.c',
+'pipebuffer/pb_validate.c',
+'postprocess/pp_celshade.c',
+'postprocess/pp_colors.c',
+'postprocess/pp_init.c',
+'postprocess/pp_mlaa.c',
+'postprocess/pp_run.c',
+'postprocess/pp_program.c',
+'rbug/rbug_connection.c',
+'rbug/rbug_context.c',
+'rbug/rbug_core.c',
+'rbug/rbug_demarshal.c',
+'rbug/rbug_texture.c',
+'rbug/rbug_shader.c',
+'rtasm/rtasm_cpu.c',
+'rtasm/rtasm_execmem.c',
+'rtasm/rtasm_x86sse.c',
+'tgsi/tgsi_build.c',
+'tgsi/tgsi_dump.c',
+'tgsi/tgsi_exec.c',
+'tgsi/tgsi_info.c',
+'tgsi/tgsi_iterate.c',
+'tgsi/tgsi_parse.c',
+'tgsi/tgsi_sanity.c',
+'tgsi/tgsi_scan.c',
+'tgsi/tgsi_strings.c',
+'tgsi/tgsi_text.c',
+'tgsi/tgsi_transform.c',
+'tgsi/tgsi_ureg.c',
+'tgsi/tgsi_util.c',
+'translate/translate.c',
+'translate/translate_cache.c',
+'translate/translate_generic.c',
+'translate/translate_sse.c',
+'util/u_debug.c',
+'util/u_debug_describe.c',
+'util/u_debug_flush.c',
+'util/u_debug_memory.c',
+'util/u_debug_refcnt.c',
+'util/u_debug_stack.c',
+'util/u_debug_symbol.c',
+'util/u_dump_defines.c',
+'util/u_dump_state.c',
+'util/u_bitmask.c',
+'util/u_blit.c',
+'util/u_blitter.c',
+'util/u_cache.c',
+'util/u_caps.c',
+'util/u_cpu_detect.c',
+'util/u_dl.c',
+'util/u_draw.c',
+'util/u_draw_quad.c',
+'util/u_format.c',
+'util/u_format_other.c',
+'util/u_format_latc.c',
+'util/u_format_s3tc.c',
+'util/u_format_rgtc.c',
+'util/u_format_etc.c',
+'util/u_format_tests.c',
+'util/u_format_yuv.c',
+'util/u_format_zs.c',
+'util/u_framebuffer.c',
+'util/u_gen_mipmap.c',
+'util/u_handle_table.c',
+'util/u_hash.c',
+'util/u_hash_table.c',
+'util/u_helpers.c',
+'util/u_index_modify.c',
+'util/u_keymap.c',
+'util/u_linear.c',
+'util/u_linkage.c',
+'util/u_network.c',
+'util/u_math.c',
+'util/u_mm.c',
+'util/u_pstipple.c',
+'util/u_ringbuffer.c',
+'util/u_sampler.c',
+'util/u_simple_shaders.c',
+'util/u_slab.c',
+'util/u_snprintf.c',
+'util/u_staging.c',
+'util/u_suballoc.c',
+'util/u_surface.c',
+'util/u_surfaces.c',
+'util/u_texture.c',
+'util/u_tile.c',
+'util/u_transfer.c',
+'util/u_resource.c',
+'util/u_upload_mgr.c',
+'util/u_vbuf.c',
+'vl/vl_csc.c',
+'vl/vl_compositor.c',
+'vl/vl_matrix_filter.c',
+'vl/vl_median_filter.c',
+'vl/vl_decoder.c',
+'vl/vl_mpeg12_decoder.c',
+'vl/vl_mpeg12_bitstream.c',
+'vl/vl_zscan.c',
+'vl/vl_idct.c',
+'vl/vl_mc.c',
+'vl/vl_vertex_buffers.c',
+'vl/vl_video_buffer.c',
+'vl/vl_deint_filter.c']
+
+generated_sources = [
+'indices/u_indices_gen.c',
+'indices/u_unfilled_gen.c',
+'util/u_format_srgb.c',
+'util/u_format_table.c']
+
+gallivm_sources = [
+'gallivm/lp_bld_arit.c',
+'gallivm/lp_bld_arit_overflow.c',
+'gallivm/lp_bld_assert.c',
+'gallivm/lp_bld_bitarit.c',
+'gallivm/lp_bld_const.c',
+'gallivm/lp_bld_conv.c',
+'gallivm/lp_bld_flow.c',
+'gallivm/lp_bld_format_aos.c',
+'gallivm/lp_bld_format_aos_array.c',
+'gallivm/lp_bld_format_float.c',
+'gallivm/lp_bld_format_srgb.c',
+'gallivm/lp_bld_format_soa.c',
+'gallivm/lp_bld_format_yuv.c',
+'gallivm/lp_bld_gather.c',
+'gallivm/lp_bld_init.c',
+'gallivm/lp_bld_intr.c',
+'gallivm/lp_bld_logic.c',
+'gallivm/lp_bld_pack.c',
+'gallivm/lp_bld_printf.c',
+'gallivm/lp_bld_quad.c',
+'gallivm/lp_bld_sample.c',
+'gallivm/lp_bld_sample_aos.c',
+'gallivm/lp_bld_sample_soa.c',
+'gallivm/lp_bld_struct.c',
+'gallivm/lp_bld_swizzle.c',
+'gallivm/lp_bld_tgsi.c',
+'gallivm/lp_bld_tgsi_action.c',
+'gallivm/lp_bld_tgsi_aos.c',
+'gallivm/lp_bld_tgsi_info.c',
+'gallivm/lp_bld_tgsi_soa.c',
+'gallivm/lp_bld_type.c',
+'draw/draw_llvm.c',
+'draw/draw_llvm_sample.c',
+'draw/draw_vs_llvm.c',
+'draw/draw_pt_fetch_shade_pipeline_llvm.c']
+
+gallivm_cpp_sources = [
+'gallivm/lp_bld_debug.cpp',
+'gallivm/lp_bld_misc.cpp']
+
+
+gallium = shared_library('gallium',
+c_sources, #gallivm_sources,
+include_dirs : basic_includes)
+
diff --git a/src/gallium/drivers/galahad/meson.build b/src/gallium/drivers/galahad/meson.build
new file mode 100644
index 0000000..e75c172
--- /dev/null
+++ b/src/gallium/drivers/galahad/meson.build
@@ -0,0 +1,6 @@
+galahad = shared_library('galahad',
+'glhd_objects.c',
+'glhd_context.c',
+'glhd_screen.c',
+include_dirs : basic_includes)
+
diff --git a/src/gallium/drivers/identity/meson.build b/src/gallium/drivers/identity/meson.build
new file mode 100644
index 0000000..0dabc27
--- /dev/null
+++ b/src/gallium/drivers/identity/meson.build
@@ -0,0 +1,5 @@
+identity = shared_library('identity',
+'id_objects.c',
+'id_context.c',
+'id_screen.c',
+include_dirs : basic_includes)
diff --git a/src/gallium/drivers/llvmpipe/meson.build b/src/gallium/drivers/llvmpipe/meson.build
new file mode 100644
index 0000000..ff390fc
--- /dev/null
+++ b/src/gallium/drivers/llvmpipe/meson.build
@@ -0,0 +1,48 @@
+llvmpipe_sources = [
+'lp_bld_alpha.c',
+'lp_bld_blend.c',
+'lp_bld_blend_aos.c',
+'lp_bld_blend_logicop.c',
+'lp_bld_depth.c',
+'lp_bld_interp.c',
+'lp_clear.c',
+'lp_context.c',
+'lp_draw_arrays.c',
+'lp_fence.c',
+'lp_flush.c',
+'lp_jit.c',
+'lp_memory.c',
+'lp_perf.c',
+'lp_query.c',
+'lp_rast.c',
+'lp_rast_debug.c',
+'lp_rast_tri.c',
+'lp_scene.c',
+'lp_scene_queue.c',
+'lp_screen.c',
+'lp_setup.c',
+'lp_setup_line.c',
+'lp_setup_point.c',
+'lp_setup_tri.c',
+'lp_setup_vbuf.c',
+'lp_state_blend.c',
+'lp_state_clip.c',
+'lp_state_derived.c',
+'lp_state_fs.c',
+'lp_state_setup.c',
+'lp_state_gs.c',
+'lp_state_rasterizer.c',
+'lp_state_sampler.c',
+'lp_state_so.c',
+'lp_state_surface.c',
+'lp_state_vertex.c',
+'lp_state_vs.c',
+'lp_surface.c',
+'lp_tex_sample.c',
+'lp_texture.c']
+
+llvmpipe = shared_library('llvmpipe',
+llvmpipe_sources,
+include_dirs : basic_includes)
+
+
diff --git a/src/gallium/drivers/meson.build b/src/gallium/drivers/meson.build
new file mode 100644
index 0000000..e34381a
--- /dev/null
+++ b/src/gallium/drivers/meson.build
@@ -0,0 +1,5 @@
+subdir('galahad')
+subdir('identity')
+#subdir('llvmpipe')
+subdir('softpipe')
+
diff --git a/src/gallium/drivers/softpipe/meson.build b/src/gallium/drivers/softpipe/meson.build
new file mode 100644
index 0000000..02db47e
--- /dev/null
+++ b/src/gallium/drivers/softpipe/meson.build
@@ -0,0 +1,34 @@
+sp_sources = [
+'sp_fs_exec.c',
+'sp_clear.c',
+'sp_fence.c',
+'sp_flush.c',
+'sp_query.c',
+'sp_context.c',
+'sp_draw_arrays.c',
+'sp_prim_vbuf.c',
+'sp_quad_pipe.c',
+'sp_quad_stipple.c',
+'sp_quad_depth_test.c',
+'sp_quad_fs.c',
+'sp_quad_blend.c',
+'sp_screen.c',
+'sp_setup.c',
+'sp_state_blend.c',
+'sp_state_clip.c',
+'sp_state_derived.c',
+'sp_state_sampler.c',
+'sp_state_shader.c',
+'sp_state_so.c',
+'sp_state_rasterizer.c',
+'sp_state_surface.c',
+'sp_state_vertex.c',
+'sp_texture.c',
+'sp_tex_sample.c',
+'sp_tex_tile_cache.c',
+'sp_tile_cache.c',
+'sp_surface.c']
+
+softpipe = shared_library('softpipe', sp_sources,
+include_dirs : basic_includes)
+
diff --git a/src/gallium/meson.build b/src/gallium/meson.build
new file mode 100644
index 0000000..c462fb7
--- /dev/null
+++ b/src/gallium/meson.build
@@ -0,0 +1,3 @@
+subdir('auxiliary')
+subdir('drivers')
+
diff --git a/src/glsl/meson.build b/src/glsl/meson.build
new file mode 100644
index 0000000..a2b0ba9
--- /dev/null
+++ b/src/glsl/meson.build
@@ -0,0 +1,139 @@
+glcpp_lexgen = generator(lex,
+output : '@[email protected]',
+arguments : ['-o', '@OUTPUT@', '@INPUT@'])
+
+glcpp_yaccgen = generator(yacc,
+output : ['@[email protected]', '@[email protected]'],
+arguments : ['-o', '@OUTPUT0@', '-p', 'glcpp_parser_',
+'--defines=@OUTPUT1@', '@INPUT@'])
+
+lexgen = generator(lex,
+output : '@[email protected]',
+arguments : ['-o', '@OUTPUT@', '@INPUT@'])
+
+yaccgen = generator(yacc,
+output : ['@[email protected]', '@[email protected]'],
+arguments : ['-o', '@OUTPUT0@', '-p', '_mesa_glsl_',
+'--defines=@OUTPUT1@', '@INPUT@'])
+
+generated_lexfile = lexgen.process('glsl_lexer.ll')
+generated_yaccfile = yaccgen.process('glsl_parser.yy')
+
+glcpp_lexfile = glcpp_lexgen.process('glcpp/glcpp-lex.l')
+glcpp_yaccfile = glcpp_yaccgen.process('glcpp/glcpp-parse.y')
+
+glcpp_sources = ['ralloc.c', 'glcpp/pp.c']
+
+libgl = shared_library('gl', glcpp_sources,
+glcpp_lexfile, glcpp_yaccfile,
+include_dirs : [basic_includes, include_directories('glcpp')])
+
+# libglsl
+
+glsl_sources = [
+'ast_array_index.cpp',
+'ast_expr.cpp',
+'ast_function.cpp',
+'ast_to_hir.cpp',
+'ast_type.cpp',
+'builtin_functions.cpp',
+'builtin_types.cpp',
+'builtin_variables.cpp',
+'glsl_parser_extras.cpp',
+'glsl_types.cpp',
+'glsl_symbol_table.cpp',
+'hir_field_selection.cpp',
+'ir_basic_block.cpp',
+'ir_builder.cpp',
+'ir_clone.cpp',
+'ir_constant_expression.cpp',
+'ir.cpp',
+'ir_equals.cpp',
+'ir_expression_flattening.cpp',
+'ir_function_can_inline.cpp',
+'ir_function_detect_recursion.cpp',
+'ir_function.cpp',
+'ir_hierarchical_visitor.cpp',
+'ir_hv_accept.cpp',
+'ir_import_prototypes.cpp',
+'ir_print_visitor.cpp',
+'ir_reader.cpp',
+'ir_rvalue_visitor.cpp',
+'ir_set_program_inouts.cpp',
+'ir_validate.cpp',
+'ir_variable_refcount.cpp',
+'linker.cpp',
+'link_atomics.cpp',
+'link_functions.cpp',
+'link_interface_blocks.cpp',
+'link_uniforms.cpp',
+'link_uniform_initializers.cpp',
+'link_uniform_block_active_visitor.cpp',
+'link_uniform_blocks.cpp',
+'link_varyings.cpp',
+'loop_analysis.cpp',
+'loop_controls.cpp',
+'loop_unroll.cpp',
+'lower_clip_distance.cpp',
+'lower_discard.cpp',
+'lower_discard_flow.cpp',
+'lower_if_to_cond_assign.cpp',
+'lower_instructions.cpp',
+'lower_jumps.cpp',
+'lower_mat_op_to_vec.cpp',
+'lower_noise.cpp',
+'lower_offset_array.cpp',
+'lower_packed_varyings.cpp',
+'lower_named_interface_blocks.cpp',
+'lower_packing_builtins.cpp',
+'lower_texture_projection.cpp',
+'lower_variable_index_to_cond_assign.cpp',
+'lower_vec_index_to_cond_assign.cpp',
+'lower_vec_index_to_swizzle.cpp',
+'lower_vector.cpp',
+'lower_vector_insert.cpp',
+'lower_output_reads.cpp',
+'lower_ubo_reference.cpp',
+'opt_algebraic.cpp',
+'opt_array_splitting.cpp',
+'opt_constant_folding.cpp',
+'opt_constant_propagation.cpp',
+'opt_constant_variable.cpp',
+'opt_copy_propagation.cpp',
+'opt_copy_propagation_elements.cpp',
+'opt_cse.cpp',
+'opt_dead_builtin_varyings.cpp',
+'opt_dead_code.cpp',
+'opt_dead_code_local.cpp',
+'opt_dead_functions.cpp',
+'opt_flatten_nested_if_blocks.cpp',
+'opt_flip_matrices.cpp',
+'opt_function_inlining.cpp',
+'opt_if_simplification.cpp',
+'opt_noop_swizzle.cpp',
+'opt_rebalance_tree.cpp',
+'opt_redundant_jumps.cpp',
+'opt_structure_splitting.cpp',
+'opt_swizzle_swizzle.cpp',
+'opt_tree_grafting.cpp',
+'opt_vectorize.cpp',
+'s_expression.cpp',
+'strtod.c'
+]
+
+glsl_generated = [
+'glsl_lexer.cpp',
+'glsl_parser.cpp'
+]
+
+libglsl = shared_library('glsl', glsl_sources,
+generated_lexfile, generated_yaccfile,
+include_dirs : [basic_includes, include_directories('.')]
+)
+
+glsl_compiler_sources = [
+'standalone_scaffolding.cpp',
+'main.cpp'
+]
+
+
diff --git a/src/loader/meson.build b/src/loader/meson.build
new file mode 100644
index 0000000..6f09a16
--- /dev/null
+++ b/src/loader/meson.build
@@ -0,0 +1,3 @@
+loaderlib = shared_library('loader.c', 'pci_id_driver_map.c',
+c_args : '-D__NOT_HAVE_DRM_H')
+
diff --git a/src/mapi/glapi/gen/extension_helper.py b/src/mapi/glapi/gen/extension_helper.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/glX_XML.py b/src/mapi/glapi/gen/glX_XML.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/glX_proto_common.py b/src/mapi/glapi/gen/glX_proto_common.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/glX_proto_recv.py b/src/mapi/glapi/gen/glX_proto_recv.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/glX_proto_send.py b/src/mapi/glapi/gen/glX_proto_send.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/glX_proto_size.py b/src/mapi/glapi/gen/glX_proto_size.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/glX_server_table.py b/src/mapi/glapi/gen/glX_server_table.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/gl_SPARC_asm.py b/src/mapi/glapi/gen/gl_SPARC_asm.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/gl_XML.py b/src/mapi/glapi/gen/gl_XML.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/gl_apitemp.py b/src/mapi/glapi/gen/gl_apitemp.py
old mode 100644
new mode 100755
index 4157032..420e177
--- a/src/mapi/glapi/gen/gl_apitemp.py
+++ b/src/mapi/glapi/gen/gl_apitemp.py
@@ -310,7 +310,7 @@ if __name__ == '__main__':
     file_name = "gl_API.xml"
 
     try:
-        (args, trail) = getopt.getopt(sys.argv[1:], "f:c")
+        (args, trail) = getopt.getopt(sys.argv[1:], "f:o:c")
     except Exception,e:
         show_usage()
 
@@ -320,6 +320,8 @@ if __name__ == '__main__':
             file_name = val
         elif arg == "-c":
             es = True
+        elif arg == "-o":
+            sys.stdout = file(val, 'w')
 
     api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
 
diff --git a/src/mapi/glapi/gen/gl_enums.py b/src/mapi/glapi/gen/gl_enums.py
old mode 100644
new mode 100755
index 0214932..c46d641
--- a/src/mapi/glapi/gen/gl_enums.py
+++ b/src/mapi/glapi/gen/gl_enums.py
@@ -201,7 +201,7 @@ def show_usage():
 
 if __name__ == '__main__':
     try:
-        (args, trail) = getopt.getopt(sys.argv[1:], "f:")
+        (args, trail) = getopt.getopt(sys.argv[1:], "f:o:")
     except Exception,e:
         show_usage()
 
@@ -210,6 +210,8 @@ if __name__ == '__main__':
         if arg == "-f":
             api = gl_XML.parse_GL_API( val )
             api_list.append(api);
+        elif arg == "-o":
+            sys.stdout = file(val, 'w')
 
     printer = PrintGlEnums()
     printer.Print( api_list )
diff --git a/src/mapi/glapi/gen/gl_genexec.py b/src/mapi/glapi/gen/gl_genexec.py
old mode 100644
new mode 100755
index 4609193..9a19793
--- a/src/mapi/glapi/gen/gl_genexec.py
+++ b/src/mapi/glapi/gen/gl_genexec.py
@@ -214,13 +214,15 @@ if __name__ == '__main__':
     file_name = "gl_and_es_API.xml"
 
     try:
-        (args, trail) = getopt.getopt(sys.argv[1:], "m:f:")
+        (args, trail) = getopt.getopt(sys.argv[1:], "m:f:o:")
     except Exception,e:
         show_usage()
 
     for (arg,val) in args:
         if arg == "-f":
             file_name = val
+        elif arg == "-o":
+            sys.stdout = file(val, 'w')
 
     printer = PrintCode()
 
diff --git a/src/mapi/glapi/gen/gl_gentable.py b/src/mapi/glapi/gen/gl_gentable.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/gl_offsets.py b/src/mapi/glapi/gen/gl_offsets.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/gl_procs.py b/src/mapi/glapi/gen/gl_procs.py
old mode 100644
new mode 100755
index b1fffc4..2f16899
--- a/src/mapi/glapi/gen/gl_procs.py
+++ b/src/mapi/glapi/gen/gl_procs.py
@@ -170,7 +170,7 @@ if __name__ == '__main__':
     file_name = "gl_API.xml"
 
     try:
-        (args, trail) = getopt.getopt(sys.argv[1:], "f:c")
+        (args, trail) = getopt.getopt(sys.argv[1:], "f:o:c")
     except Exception,e:
         show_usage()
 
@@ -180,6 +180,8 @@ if __name__ == '__main__':
             file_name = val
         elif arg == "-c":
             es = True
+        elif arg == "-o":
+            sys.stdout = file(val, 'w')
 
     api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
     printer = PrintGlProcs(es)
diff --git a/src/mapi/glapi/gen/gl_table.py b/src/mapi/glapi/gen/gl_table.py
old mode 100644
new mode 100755
index fd38468..b9608e1
--- a/src/mapi/glapi/gen/gl_table.py
+++ b/src/mapi/glapi/gen/gl_table.py
@@ -209,12 +209,13 @@ if __name__ == '__main__':
     file_name = "gl_API.xml"
 
     try:
-        (args, trail) = getopt.getopt(sys.argv[1:], "f:m:c:")
+        (args, trail) = getopt.getopt(sys.argv[1:], "f:m:c:o:")
     except Exception,e:
         show_usage()
 
     mode = "table"
     es = None
+    outfile = None
     for (arg,val) in args:
         if arg == "-f":
             file_name = val
@@ -222,6 +223,9 @@ if __name__ == '__main__':
             mode = val
         elif arg == "-c":
             es = val
+        elif arg == "-o":
+            sys.stdout = file(val, 'w')
+
 
     if mode == "table":
         printer = PrintGlTable(es)
diff --git a/src/mapi/glapi/gen/gl_x86-64_asm.py b/src/mapi/glapi/gen/gl_x86-64_asm.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/gl_x86_asm.py b/src/mapi/glapi/gen/gl_x86_asm.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/license.py b/src/mapi/glapi/gen/license.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/mesadef.py b/src/mapi/glapi/gen/mesadef.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/gen/meson.build b/src/mapi/glapi/gen/meson.build
new file mode 100644
index 0000000..1ea1c3c
--- /dev/null
+++ b/src/mapi/glapi/gen/meson.build
@@ -0,0 +1,120 @@
+xml_files = [
+'gl_and_es_API.xml',
+'AMD_draw_buffers_blend.xml',
+'AMD_performance_monitor.xml',
+'APPLE_object_purgeable.xml',
+'APPLE_vertex_array_object.xml',
+'ARB_base_instance.xml',
+'ARB_blend_func_extended.xml',
+'ARB_clear_buffer_object.xml',
+'ARB_clear_texture.xml',
+'ARB_color_buffer_float.xml',
+'ARB_compressed_texture_pixel_storage.xml',
+'ARB_compute_shader.xml',
+'ARB_copy_buffer.xml',
+'ARB_debug_output.xml',
+'ARB_depth_buffer_float.xml',
+'ARB_depth_clamp.xml',
+'ARB_draw_buffers_blend.xml',
+'ARB_draw_buffers.xml',
+'ARB_draw_elements_base_vertex.xml',
+'ARB_draw_indirect.xml',
+'ARB_draw_instanced.xml',
+'ARB_ES2_compatibility.xml',
+'ARB_ES3_compatibility.xml',
+'ARB_framebuffer_object.xml',
+'ARB_geometry_shader4.xml',
+'ARB_get_program_binary.xml',
+'ARB_gpu_shader5.xml',
+'ARB_instanced_arrays.xml',
+'ARB_internalformat_query.xml',
+'ARB_invalidate_subdata.xml',
+'ARB_map_buffer_range.xml',
+'ARB_multi_bind.xml',
+'ARB_robustness.xml',
+'ARB_sampler_objects.xml',
+'ARB_sample_shading.xml',
+'ARB_seamless_cube_map.xml',
+'ARB_separate_shader_objects.xml',
+'ARB_shader_atomic_counters.xml',
+'ARB_shader_image_load_store.xml',
+'ARB_sync.xml',
+'ARB_texture_buffer_object.xml',
+'ARB_texture_buffer_range.xml',
+'ARB_texture_compression_rgtc.xml',
+'ARB_texture_cube_map_array.xml',
+'ARB_texture_float.xml',
+'ARB_texture_gather.xml',
+'ARB_texture_multisample.xml',
+'ARB_texture_rgb10_a2ui.xml',
+'ARB_texture_rg.xml',
+'ARB_texture_storage_multisample.xml',
+'ARB_texture_storage.xml',
+'ARB_texture_view.xml',
+'ARB_uniform_buffer_object.xml',
+'ARB_vertex_array_object.xml',
+'ARB_vertex_attrib_binding.xml',
+'ARB_vertex_type_2_10_10_10_rev.xml',
+'ARB_viewport_array.xml',
+'es_EXT.xml',
+'EXT_draw_buffers2.xml',
+'EXT_framebuffer_object.xml',
+'EXT_gpu_shader4.xml',
+'EXT_packed_depth_stencil.xml',
+'EXT_provoking_vertex.xml',
+'EXT_separate_shader_objects.xml',
+'EXT_texture_array.xml',
+'EXT_texture_integer.xml',
+'EXT_transform_feedback.xml',
+'GL3x.xml',
+'GL4x.xml',
+'gl_and_glX_API.xml',
+'gl_API.xml',
+'glX_API.xml',
+'INTEL_performance_query.xml',
+'KHR_debug.xml',
+'NV_conditional_render.xml',
+'NV_primitive_restart.xml',
+'NV_texture_barrier.xml',
+'NV_vdpau_interop.xml',
+'OES_EGL_image.xml',
+'OES_fixed_point.xml',
+'OES_single_precision.xml',
+]
+
+
+dispatch = custom_target('dispatch',
+output : 'dispatch.h',
+input : xml_files,
+command : [find_program('gl_table.py'), '-m', 'remap_table', '-f', '@0@/gl_and_es_API.xml'.format(meson.current_source_dir()), '-o', '@OUTPUT@', '@INPUT@'])
+
+glapitable = custom_target('glapitable',
+output : 'glapitable.h',
+input : xml_files,
+command : [find_program('gl_table.py'), '-f', '@0@/gl_and_es_API.xml'.format(meson.current_source_dir()), '-o', '@OUTPUT@', '@INPUT@'])
+
+glapitemp = custom_target('glapitemp',
+output : 'glapitemp.h',
+input : xml_files,
+command : [find_program('gl_apitemp.py'), '-f', '@0@/gl_and_es_API.xml'.format(meson.current_source_dir()), '-o', '@OUTPUT@', '@INPUT@'])
+
+glprocs = custom_target('glprocs',
+output : 'glprocs.h',
+input : xml_files,
+command : [find_program('gl_procs.py'), '-f', '@0@/gl_and_es_API.xml'.format(meson.current_source_dir()), '-o', '@OUTPUT@', '@INPUT@'])
+
+remap_helper = custom_target('remap_helper',
+output : 'remap_helper.h',
+input : xml_files,
+command : [find_program('remap_helper.py'), '-f', '@0@/gl_and_es_API.xml'.format(meson.current_source_dir()), '-o', '@OUTPUT@', '@INPUT@'])
+
+enums = custom_target('enums',
+output : 'enums.c',
+input : xml_files,
+command : [find_program('gl_enums.py'), '-f', '@0@/gl_and_es_API.xml'.format(meson.current_source_dir()), '-o', '@OUTPUT@', '@INPUT@'])
+
+api_exec = custom_target('api_exec',
+output : 'api_exec.c',
+input : xml_files,
+command : [find_program('gl_genexec.py'), '-f', '@0@/gl_and_es_API.xml'.format(meson.current_source_dir()), '-o', '@OUTPUT@', '@INPUT@'])
+
diff --git a/src/mapi/glapi/gen/remap_helper.py b/src/mapi/glapi/gen/remap_helper.py
old mode 100644
new mode 100755
index e1a13d0..406db4b
--- a/src/mapi/glapi/gen/remap_helper.py
+++ b/src/mapi/glapi/gen/remap_helper.py
@@ -172,7 +172,7 @@ if __name__ == '__main__':
     file_name = "gl_API.xml"
 
     try:
-        (args, trail) = getopt.getopt(sys.argv[1:], "f:c:")
+        (args, trail) = getopt.getopt(sys.argv[1:], "f:c:o:")
     except Exception,e:
         show_usage()
 
@@ -182,6 +182,8 @@ if __name__ == '__main__':
             file_name = val
         elif arg == "-c":
             es = val
+        elif arg == "-o":
+            sys.stdout = file(val, 'w')
 
     api = gl_XML.parse_GL_API( file_name )
 
diff --git a/src/mapi/glapi/gen/typeexpr.py b/src/mapi/glapi/gen/typeexpr.py
old mode 100644
new mode 100755
diff --git a/src/mapi/glapi/glapi_entrypoint.c b/src/mapi/glapi/glapi_entrypoint.c
index 362a8f1..d94fcd0 100644
--- a/src/mapi/glapi/glapi_entrypoint.c
+++ b/src/mapi/glapi/glapi_entrypoint.c
@@ -45,7 +45,7 @@ extern const GLubyte gl_dispatch_functions_start[];
 #endif /* USE_X86_ASM */
 
 
-#if defined(DISPATCH_FUNCTION_SIZE)
+#if !defined(DISPATCH_FUNCTION_SIZE)
 
 _glapi_proc
 get_entrypoint_address(unsigned int functionOffset)
diff --git a/src/mapi/glapi/meson.build b/src/mapi/glapi/meson.build
new file mode 100644
index 0000000..f2bda77
--- /dev/null
+++ b/src/mapi/glapi/meson.build
@@ -0,0 +1,14 @@
+subdir('gen')
+
+glapi = shared_library('glapi',
+'glapi_dispatch.c',
+'glapi_entrypoint.c',
+'glapi_getproc.c',
+'glapi_nop.c',
+'glapi.c',
+'glapi.h',
+glapitemp, glapitable,
+include_dirs : basic_includes,
+c_args : ['-DMAPI_MODE_UTIL', '-D_GLAPI_NO_EXPORTS']
+)
+
diff --git a/src/mapi/meson.build b/src/mapi/meson.build
new file mode 100644
index 0000000..1fe588c
--- /dev/null
+++ b/src/mapi/meson.build
@@ -0,0 +1,2 @@
+subdir('glapi')
+
diff --git a/src/mesa/meson.build b/src/mesa/meson.build
new file mode 100644
index 0000000..d30b3c8
--- /dev/null
+++ b/src/mesa/meson.build
@@ -0,0 +1,312 @@
+main_sources = [
+    'main/api_arrayelt.c',
+#    'main/api_exec.c',
+    'main/api_loopback.c',
+    'main/api_validate.c',
+    'main/accum.c',
+    'main/arbprogram.c',
+    'main/atifragshader.c',
+    'main/attrib.c',
+    'main/arrayobj.c',
+    'main/blend.c',
+    'main/blit.c',
+    'main/bufferobj.c',
+    'main/buffers.c',
+    'main/clear.c',
+    'main/clip.c',
+    'main/colortab.c',
+    'main/compute.c',
+    'main/condrender.c',
+    'main/context.c',
+    'main/convolve.c',
+    'main/cpuinfo.c',
+    'main/debug.c',
+    'main/depth.c',
+    'main/dlist.c',
+    'main/drawpix.c',
+    'main/drawtex.c',
+    'main/enable.c',
+ #   'main/enums.c',
+    'main/errors.c',
+    'main/es1_conversion.c',
+    'main/eval.c',
+    'main/execmem.c',
+    'main/extensions.c',
+    'main/fbobject.c',
+    'main/feedback.c',
+    'main/ff_fragment_shader.cpp',
+    'main/ffvertex_prog.c',
+    'main/fog.c',
+    'main/formatquery.c',
+    'main/formats.c',
+    'main/format_pack.c',
+    'main/format_unpack.c',
+    'main/framebuffer.c',
+    'main/genmipmap.c',
+    'main/getstring.c',
+    'main/glformats.c',
+    'main/hash.c',
+    'main/hash_table.c',
+    'main/hint.c',
+    'main/histogram.c',
+    'main/image.c',
+    'main/imports.c',
+    'main/light.c',
+    'main/lines.c',
+    'main/matrix.c',
+    'main/mipmap.c',
+    'main/mm.c',
+    'main/multisample.c',
+    'main/objectlabel.c',
+    'main/pack.c',
+    'main/pbo.c',
+    'main/performance_monitor.c',
+    'main/pipelineobj.c',
+    'main/pixel.c',
+    'main/pixelstore.c',
+    'main/pixeltransfer.c',
+    'main/points.c',
+    'main/polygon.c',
+    'main/querymatrix.c',
+    'main/queryobj.c',
+    'main/rastpos.c',
+    'main/readpix.c',
+    'main/remap.c',
+    'main/renderbuffer.c',
+    'main/samplerobj.c',
+    'main/scissor.c',
+    'main/set.c',
+    'main/shaderapi.c',
+    'main/shaderimage.c',
+    'main/shaderobj.c',
+    'main/shader_query.cpp',
+    'main/shared.c',
+    'main/state.c',
+    'main/stencil.c',
+    'main/syncobj.c',
+    'main/texcompress.c',
+    'main/texcompress_cpal.c',
+    'main/texcompress_rgtc.c',
+    'main/texcompress_s3tc.c',
+    'main/texcompress_fxt1.c',
+    'main/texcompress_etc.c',
+    'main/texenv.c',
+    'main/texformat.c',
+    'main/texgen.c',
+    'main/texgetimage.c',
+    'main/teximage.c',
+    'main/texobj.c',
+    'main/texparam.c',
+    'main/texstate.c',
+    'main/texstorage.c',
+    'main/texstore.c',
+    'main/texturebarrier.c',
+    'main/textureview.c',
+    'main/transformfeedback.c',
+    'main/uniform_query.cpp',
+    'main/uniforms.c',
+    'main/varray.c',
+    'main/vdpau.c',
+    'main/version.c',
+    'main/viewport.c',
+    'main/vtxfmt.c',
+]
+
+glget_sources = [
+#    'main/get.c',
+]
+
+math_sources = [
+    'math/m_debug_clip.c',
+    'math/m_debug_norm.c',
+    'math/m_debug_xform.c',
+    'math/m_eval.c',
+    'math/m_matrix.c',
+    'math/m_translate.c',
+    'math/m_vector.c',
+    'math/m_xform.c',
+]
+
+swrast_sources = [
+    'swrast/s_aaline.c',
+    'swrast/s_aatriangle.c',
+    'swrast/s_alpha.c',
+    'swrast/s_atifragshader.c',
+    'swrast/s_bitmap.c',
+    'swrast/s_blend.c',
+    'swrast/s_blit.c',
+    'swrast/s_clear.c',
+    'swrast/s_copypix.c',
+    'swrast/s_context.c',
+    'swrast/s_depth.c',
+    'swrast/s_drawpix.c',
+    'swrast/s_feedback.c',
+    'swrast/s_fog.c',
+    'swrast/s_fragprog.c',
+    'swrast/s_lines.c',
+    'swrast/s_logic.c',
+    'swrast/s_masking.c',
+    'swrast/s_points.c',
+    'swrast/s_renderbuffer.c',
+    'swrast/s_span.c',
+    'swrast/s_stencil.c',
+    'swrast/s_texcombine.c',
+    'swrast/s_texfetch.c',
+    'swrast/s_texfilter.c',
+    'swrast/s_texrender.c',
+    'swrast/s_texture.c',
+    'swrast/s_triangle.c',
+    'swrast/s_zoom.c',
+]
+
+swrast_setup_sources = [
+    'swrast_setup/ss_context.c',
+    'swrast_setup/ss_triangle.c',
+]
+
+tnl_sources = [
+    'tnl/t_context.c',
+    'tnl/t_pipeline.c',
+    'tnl/t_draw.c',
+    'tnl/t_rasterpos.c',
+    'tnl/t_vb_program.c',
+    'tnl/t_vb_render.c',
+    'tnl/t_vb_texgen.c',
+    'tnl/t_vb_texmat.c',
+    'tnl/t_vb_vertex.c',
+    'tnl/t_vb_fog.c',
+    'tnl/t_vb_light.c',
+    'tnl/t_vb_normals.c',
+    'tnl/t_vb_points.c',
+    'tnl/t_vp_build.c',
+    'tnl/t_vertex.c',
+    'tnl/t_vertex_sse.c',
+    'tnl/t_vertex_generic.c',
+]
+
+vbo_sources = [
+    'vbo/vbo_context.c',
+    'vbo/vbo_exec.c',
+    'vbo/vbo_exec_api.c',
+    'vbo/vbo_exec_array.c',
+    'vbo/vbo_exec_draw.c',
+    'vbo/vbo_exec_eval.c',
+    'vbo/vbo_noop.c',
+    'vbo/vbo_primitive_restart.c',
+    'vbo/vbo_rebase.c',
+    'vbo/vbo_split.c',
+    'vbo/vbo_split_copy.c',
+    'vbo/vbo_split_inplace.c',
+    'vbo/vbo_save.c',
+    'vbo/vbo_save_api.c',
+    'vbo/vbo_save_draw.c',
+    'vbo/vbo_save_loopback.c',
+]
+
+statetracker_sources = [
+    'state_tracker/st_atom.c',
+    'state_tracker/st_atom_array.c',
+    'state_tracker/st_atom_blend.c',
+    'state_tracker/st_atom_clip.c',
+    'state_tracker/st_atom_constbuf.c',
+    'state_tracker/st_atom_depth.c',
+    'state_tracker/st_atom_framebuffer.c',
+    'state_tracker/st_atom_msaa.c',
+    'state_tracker/st_atom_pixeltransfer.c',
+    'state_tracker/st_atom_sampler.c',
+    'state_tracker/st_atom_scissor.c',
+    'state_tracker/st_atom_shader.c',
+    'state_tracker/st_atom_rasterizer.c',
+    'state_tracker/st_atom_stipple.c',
+    'state_tracker/st_atom_texture.c',
+    'state_tracker/st_atom_viewport.c',
+    'state_tracker/st_cb_bitmap.c',
+    'state_tracker/st_cb_blit.c',
+    'state_tracker/st_cb_bufferobjects.c',
+    'state_tracker/st_cb_clear.c',
+    'state_tracker/st_cb_condrender.c',
+    'state_tracker/st_cb_flush.c',
+    'state_tracker/st_cb_drawpixels.c',
+    'state_tracker/st_cb_drawtex.c',
+    'state_tracker/st_cb_eglimage.c',
+    'state_tracker/st_cb_fbo.c',
+    'state_tracker/st_cb_feedback.c',
+    'state_tracker/st_cb_msaa.c',
+    'state_tracker/st_cb_program.c',
+    'state_tracker/st_cb_queryobj.c',
+    'state_tracker/st_cb_rasterpos.c',
+    'state_tracker/st_cb_readpixels.c',
+    'state_tracker/st_cb_syncobj.c',
+    'state_tracker/st_cb_strings.c',
+    'state_tracker/st_cb_texture.c',
+    'state_tracker/st_cb_texturebarrier.c',
+    'state_tracker/st_cb_viewport.c',
+    'state_tracker/st_cb_xformfb.c',
+    'state_tracker/st_context.c',
+    'state_tracker/st_debug.c',
+    'state_tracker/st_draw.c',
+    'state_tracker/st_draw_feedback.c',
+    'state_tracker/st_extensions.c',
+    'state_tracker/st_format.c',
+    'state_tracker/st_glsl_to_tgsi.cpp',
+    'state_tracker/st_gen_mipmap.c',
+    'state_tracker/st_manager.c',
+    'state_tracker/st_mesa_to_tgsi.c',
+    'state_tracker/st_program.c',
+    'state_tracker/st_texture.c',
+    'state_tracker/st_vdpau.c',
+]
+
+#env.Append(YACCFLAGS = '-d -p "_mesa_program_"')
+#program_lex = env.CFile('program/lex.yy.c', 'program/program_lexer.l')
+#program_parse = env.CFile('program/program_parse.tab.c',
+#                          'program/program_parse.y')
+
+program_sources = [
+    'program/arbprogparse.c',
+    'program/prog_hash_table.c',
+    'program/ir_to_mesa.cpp',
+    'program/program.c',
+    'program/program_parse_extra.c',
+    'program/prog_cache.c',
+    'program/prog_execute.c',
+    'program/prog_instruction.c',
+    'program/prog_noise.c',
+    'program/prog_optimize.c',
+    'program/prog_opt_constant_fold.c',
+    'program/prog_parameter.c',
+    'program/prog_parameter_layout.c',
+    'program/prog_print.c',
+    'program/prog_statevars.c',
+    'program/programopt.c',
+    'program/sampler.cpp',
+    'program/symbol_table.c',
+    'program/string_to_uint_map.cpp',
+#    program_lex,
+#    program_parse[0],
+]
+
+common_driver_sources =	[
+    'drivers/common/driverfuncs.c',
+    'drivers/common/meta.c',
+    'drivers/common/meta_blit.c',
+    'drivers/common/meta_generate_mipmap.c'
+]
+
+mesa_sources = [
+    main_sources,
+    glget_sources,
+    math_sources,
+    program_sources,
+    vbo_sources,
+    tnl_sources,
+    swrast_sources,
+    swrast_setup_sources,
+    common_driver_sources,
+    statetracker_sources]
+
+mesa = shared_library('mesa', mesa_sources,
+dispatch,
+include_dirs : basic_includes)
+
+
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..c71a404
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,6 @@
+subdir('glsl')
+subdir('loader')
+subdir('mapi')
+subdir('mesa')
+subdir('gallium')
+
-- 
2.0.1

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to