drm_hwcomposer: Add meson.build file

This allows building without an AOSP tree, which significantly reduces
system requirements.

Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
diff --git a/bufferinfo/meson.build b/bufferinfo/meson.build
new file mode 100644
index 0000000..f53d1b9
--- /dev/null
+++ b/bufferinfo/meson.build
@@ -0,0 +1,5 @@
+src_common += files(
+    'legacy/BufferInfoLibdrm.cpp',
+    'BufferInfoGetter.cpp',
+    'BufferInfoMapperMetadata.cpp',
+)
diff --git a/drm/meson.build b/drm/meson.build
new file mode 100644
index 0000000..7bef11a
--- /dev/null
+++ b/drm/meson.build
@@ -0,0 +1,15 @@
+src_common += files(
+    'DrmAtomicStateManager.cpp',
+    'DrmConnector.cpp',
+    'DrmCrtc.cpp',
+    'DrmDevice.cpp',
+    'DrmDisplayPipeline.cpp',
+    'DrmEncoder.cpp',
+    'DrmFbImporter.cpp',
+    'DrmMode.cpp',
+    'DrmPlane.cpp',
+    'DrmProperty.cpp',
+    'ResourceManager.cpp',
+    'UEventListener.cpp',
+    'VSyncWorker.cpp',
+)
diff --git a/hwc2_device/meson.build b/hwc2_device/meson.build
new file mode 100644
index 0000000..7e6b8f4
--- /dev/null
+++ b/hwc2_device/meson.build
@@ -0,0 +1,19 @@
+src_hwc2_device = files(
+    'hwc2_device.cpp',
+    'DrmHwcTwo.cpp',
+    'HwcDisplayConfigs.cpp',
+    'HwcDisplay.cpp',
+    'HwcLayer.cpp',
+)
+
+shared_library(
+    'hwcomposer.drm',
+    src_hwc2_device,
+    name_prefix : '',
+    cpp_args : common_cpp_flags + hwc2_cpp_flags,
+    dependencies : deps,
+    install : true,
+    link_whole: drmhwc_common,
+    install_dir : get_option('libdir') / 'hw',
+    include_directories: inc_include,
+)
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..266163e
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,50 @@
+project(
+    'drm_hwcomposer',
+    ['c', 'cpp'],
+    version : '2',
+    license : 'APACHE-2.0',
+    meson_version : '>= 0.56',
+    default_options : ['buildtype=debugoptimized', 'b_ndebug=if-release', 'c_std=c11', 'cpp_std=c++17', 'cpp_rtti=false']
+)
+
+inc_include = [include_directories('.')]
+
+src_common = files(
+    'compositor/DrmKmsPlan.cpp',
+    'backend/BackendManager.cpp',
+    'backend/Backend.cpp',
+    'backend/BackendClient.cpp',
+)
+
+deps = [
+    dependency('cutils'),
+    dependency('drm'),
+    dependency('hardware'),
+    dependency('hidlbase'),
+    dependency('log'),
+    dependency('sync'),
+    dependency('ui'),
+    dependency('utils'),
+]
+
+common_cpp_flags = [
+    '-DUSE_IMAPPER4_METADATA_API',
+]
+
+hwc2_cpp_flags = [
+    '-DHWC2_INCLUDE_STRINGIFICATION',
+    '-DHWC2_USE_CPP11',
+]
+
+subdir('drm')
+subdir('bufferinfo')
+
+drmhwc_common = static_library(
+    'drm_hwcomposer_common',
+    src_common,
+# TODO remove hwc2 flags from common code (backends needs rework)
+    cpp_args : common_cpp_flags + hwc2_cpp_flags,
+    dependencies : deps,
+)
+
+subdir('hwc2_device')