diff --git a/app/meson.build b/app/meson.build
index eb74f215a..8f415084d 100644
--- a/app/meson.build
+++ b/app/meson.build
@@ -49,6 +49,7 @@ foreach app:apps
                   + '_rte_' + d)
          endforeach
          dep_objs += lib_execinfo
+        dep_objs += get_variable('eal_' + get_option('default_library') 
+ '_deps')

          link_libs = []
          if get_option('default_library') == 'static'
diff --git a/config/meson.build b/config/meson.build
index 69f2aeb60..3554c2f90 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -298,3 +298,13 @@ if get_option('b_lto')
          add_project_link_arguments('-Wno-lto-type-mismatch', language: 
'c')
      endif
  endif
+
+# Include EAL dependencies
+foreach p : get_option('eal_deps')
+    name = p.strip()
+    project = subproject(name)
+    project_dep = project.get_variable(name + '_dep')
+    eal_shared_deps += project.get_variable(name + 'shared_dep', 
project_dep)
+    eal_static_deps += project.get_variable(name + 'static_dep', 
project_dep)
+    eal_exclude_list += project.get_variable('eal_header_files', [])
+endforeach
diff --git a/drivers/meson.build b/drivers/meson.build
index 5f9526557..7592866c3 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -99,6 +99,8 @@ foreach subpath:subdirs
                      static_deps += [get_variable('static_rte_' + d)]
                  endif
              endforeach
+            shared_deps += eal_shared_deps
+            static_deps += eal_static_deps
          endif

          if not build
diff --git a/examples/meson.build b/examples/meson.build
index 245d98575..6d07c1f2c 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -95,6 +95,7 @@ foreach example: examples
              endif
              dep_objs += [get_variable(var_name)]
          endforeach
+        dep_objs += get_variable('eal_' + get_option('default_library') 
+ '_deps')
          if allow_experimental_apis
              cflags += '-DALLOW_EXPERIMENTAL_API'
          endif
diff --git a/lib/librte_eal/windows/include/eal/meson.build 
b/lib/librte_eal/windows/include/eal/meson.build
new file mode 100644
index 000000000..75fdbf758
--- /dev/null
+++ b/lib/librte_eal/windows/include/eal/meson.build
@@ -0,0 +1,20 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright (c) 2020, MayaData Inc. All rights reserved.
+# Copyright (c) 2020, DataCore Software Corporation. All rights reserved.
+
+# Copy the headers to the build directory to implement the exclude list.
+
+includes += include_directories('.')
+
+foreach h : eal_headers
+    if not eal_exclude_list.contains(h)
+        if h.startswith('rte_') or not eal_exclude_list.contains('*')
+            configure_file(copy: true, input: join_paths('..', h), 
output: h)
+        endif
+    endif
+endforeach
+
+if not eal_exclude_list.contains('*')
+    subdir('netinet')
+    subdir('sys')
+endif
diff --git a/lib/librte_eal/windows/include/eal/netinet/meson.build 
b/lib/librte_eal/windows/include/eal/netinet/meson.build
new file mode 100644
index 000000000..b7722adf9
--- /dev/null
+++ b/lib/librte_eal/windows/include/eal/netinet/meson.build
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright (c) 2020, MayaData Inc. All rights reserved.
+# Copyright (c) 2020, DataCore Software Corporation. All rights reserved.
+
+# Copy the headers to the build directory to implement the exclude list.
+
+includes += include_directories('.')
+
+foreach h : eal_netinet_headers
+    if not eal_exclude_list.contains('netinet/' + h)
+        configure_file(copy: true, input: join_paths('../../netinet', 
h), output: h)
+    endif
+endforeach
diff --git a/lib/librte_eal/windows/include/eal/sys/meson.build 
b/lib/librte_eal/windows/include/eal/sys/meson.build
new file mode 100644
index 000000000..295c4e7bf
--- /dev/null
+++ b/lib/librte_eal/windows/include/eal/sys/meson.build
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright (c) 2020, MayaData Inc. All rights reserved.
+# Copyright (c) 2020, DataCore Software Corporation. All rights reserved.
+
+# Copy the headers to the build directory to implement the exclude list.
+
+includes += include_directories('.')
+
+foreach h : eal_sys_headers
+    if not eal_exclude_list.contains('sys/' + h)
+        configure_file(copy: true, input: join_paths('../../sys', h), 
output: h)
+    endif
+endforeach
diff --git a/lib/librte_eal/windows/include/meson.build 
b/lib/librte_eal/windows/include/meson.build
index b3534b025..07a747363 100644
--- a/lib/librte_eal/windows/include/meson.build
+++ b/lib/librte_eal/windows/include/meson.build
@@ -1,10 +1,35 @@
  # SPDX-License-Identifier: BSD-3-Clause
  # Copyright 2020 Mellanox Technologies, Ltd

-includes += include_directories('.')
-
-headers += files(
+eal_headers = [
          'rte_os.h',
          'rte_virt2phys.h',
          'rte_windows.h',
-)
+]
+
+headers += files(eal_headers)
+
+eal_headers += [
+        'dirent.h',
+        'fnmatch.h',
+        'getopt.h',
+        'pthread.h',
+        'regex.h',
+        'sched.h',
+        'unistd.h',
+]
+
+eal_sys_headers = [
+        'queue.h',
+]
+
+eal_netinet_headers = [
+        'in.h',
+        'ip.h',
+]
+
+if eal_exclude_list.length() == 0
+        includes += include_directories('.')
+else
+        subdir('eal')
+endif
diff --git a/lib/meson.build b/lib/meson.build
index e5597f174..b4cf1b07c 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -91,6 +91,8 @@ foreach l:libraries
              shared_deps += [get_variable('shared_rte_' + d)]
              static_deps += [get_variable('static_rte_' + d)]
          endforeach
+        shared_deps += eal_shared_deps
+        static_deps += eal_static_deps
      endif

      if not build
diff --git a/meson.build b/meson.build
index 61d9a4f5f..13f50517f 100644
--- a/meson.build
+++ b/meson.build
@@ -21,6 +21,9 @@ dpdk_drivers = []
  dpdk_extra_ldflags = []
  dpdk_libs_disabled = []
  dpdk_drvs_disabled = []
+eal_shared_deps = []
+eal_static_deps = []
+eal_exclude_list = []
  abi_version_file = files('ABI_VERSION')

  if host_machine.cpu_family().startswith('x86')
@@ -31,19 +34,20 @@ elif host_machine.cpu_family().startswith('ppc')
      arch_subdir = 'ppc'
  endif

+# do configuration and get tool paths
+subdir('buildtools')
+subdir('config')
+
  # configure the build, and make sure configs here and in config folder are
  # able to be included in any file. We also store a global array of 
include dirs
  # for passing to pmdinfogen scripts
  global_inc = include_directories('.', 'config',
      'lib/librte_eal/include',
-    'lib/librte_eal/@0@/include'.format(host_machine.system()),
+    'lib/librte_eal/@0@/include@1@'.format(host_machine.system(),
+        (eal_exclude_list.length() != 0) ? '/eal' : ''),
      'lib/librte_eal/@0@/include'.format(arch_subdir),
  )

-# do configuration and get tool paths
-subdir('buildtools')
-subdir('config')
-
  # build libs and drivers
  subdir('buildtools/pmdinfogen')
  subdir('lib')
diff --git a/meson_options.txt b/meson_options.txt
index 9bf18ab6b..b28eb8ba3 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -6,6 +6,8 @@ option('disable_drivers', type: 'string', value: '',
      description: 'Comma-separated list of drivers to explicitly disable.')
  option('drivers_install_subdir', type: 'string', value: 
'dpdk/pmds-<VERSION>',
      description: 'Subdirectory of libdir where to install PMDs. 
Defaults to using a versioned subdirectory.')
+option('eal_deps', type: 'array', value: [],
+    description: 'Environment Abstraction Layer dependencies')
  option('enable_docs', type: 'boolean', value: false,
      description: 'build documentation')
  option('enable_kmods', type: 'boolean', value: false,
diff --git a/subprojects/test/meson.build b/subprojects/test/meson.build
new file mode 100644
index 000000000..911626f23
--- /dev/null
+++ b/subprojects/test/meson.build
@@ -0,0 +1,31 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright (c) 2020, MayaData Inc. All rights reserved.
+# Copyright (c) 2020, DataCore Software Corporation. All rights reserved.
+
+project('TEST', 'C',
+    version: '0.0.0',
+    license: 'BSD',
+    default_options: ['buildtype=release','default_library=static'],
+    meson_version: '>= 0.47.1'
+)
+
+cc = meson.get_compiler('c')
+
+includes = include_directories('.')
+
+eal_header_files =[
+    'pthread.h',
+    'sched.h',
+]
+
+test_static_dep = declare_dependency(
+    include_directories : includes,
+    link_args : [ '-lws2_32', '-lrpcrt4' ],
+)
+
+test_shared_dep = declare_dependency(
+    include_directories : includes,
+    link_args : [ '-lws2_32', '-lrpcrt4' ],
+)
+
+test_dep = test_static_dep
