diff --git a/drivers/common/meson.build b/drivers/common/meson.build
index 7ac1ca73a..abb4f1529 100644
--- a/drivers/common/meson.build
+++ b/drivers/common/meson.build
@@ -6,6 +6,6 @@ if is_windows
 endif
 
 std_deps = ['eal']
-drivers = ['cpt', 'dpaax', 'iavf', 'mvep', 'octeontx', 'octeontx2', 'qat', 'sfc_efx']
+drivers = ['cpt', 'dpaax', 'iavf', 'mvep', 'octeontx', 'octeontx2', 'sfc_efx']
 config_flag_fmt = 'RTE_LIBRTE_@0@_COMMON'
 driver_name_fmt = 'rte_common_@0@'
diff --git a/drivers/common/qat/meson.build b/drivers/common/qat/meson.build
index 8de249289..3409162d0 100644
--- a/drivers/common/qat/meson.build
+++ b/drivers/common/qat/meson.build
@@ -1,15 +1,66 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017-2018 Intel Corporation
 
-# This does not build a driver, but instead holds common files for
-# the crypto and compression drivers.
-build = false
-reason = '' # sentinal value to suppress printout
-qat_deps = ['bus_pci']
-qat_sources = files('qat_common.c',
+config_flag_fmt = 'RTE_LIBRTE_@0@_COMMON'
+driver_name_fmt = 'rte_common_@0@'
+
+qat_crypto = true
+qat_crypto_path = 'crypto/qat'
+qat_crypto_relpath = '../../' + qat_crypto_path
+qat_compress = true
+qat_compress_path = 'compress/qat'
+qat_compress_relpath = '../../' + qat_compress_path
+
+if disabled_drivers.contains(qat_crypto_path)
+	qat_crypto = false
+	dpdk_drvs_disabled += qat_crypto_path
+	set_variable(qat_crypto_path.underscorify() + '_disable_reason',
+			'Explicitly disabled via build config')
+endif
+if disabled_drivers.contains(qat_compress_path)
+	qat_compress = false
+	dpdk_drvs_disabled += qat_compress_path
+	set_variable(qat_compress_path.underscorify() + '_disable_reason',
+			'Explicitly disabled via build config')
+endif
+
+libcrypto = dependency('libcrypto', required: false)
+if qat_crypto and not libcrypto.found()
+	qat_crypto = false
+	dpdk_drvs_disabled += qat_crypto_path
+	set_variable(qat_crypto_path.underscorify() + '_disable_reason',
+			'missing dependency, libcrypto')
+endif
+
+# The driver should not build if both compression and crypto are disabled
+#FIXME common code depends on compression files so check only compress!
+if not qat_compress # and not qat_crypto
+	build = false
+	reason = '' # rely on reason for compress/crypto above
+	subdir_done()
+endif
+
+deps += ['bus_pci', 'cryptodev', 'net', 'compressdev']
+sources += files('qat_common.c',
 		'qat_qp.c',
 		'qat_device.c',
 		'qat_logs.c')
-qat_includes = [include_directories('.', 'qat_adf')]
-qat_ext_deps = []
-qat_cflags = []
+includes += include_directories('qat_adf',
+		qat_crypto_relpath,
+		qat_compress_relpath)
+
+if qat_compress
+	foreach f: ['qat_comp_pmd.c', 'qat_comp.c']
+		sources += files(join_paths(qat_compress_relpath, f))
+	endforeach
+endif
+
+if qat_crypto
+	foreach f: ['qat_sym_pmd.c', 'qat_sym.c', 'qat_sym_session.c',
+			'qat_asym_pmd.c', 'qat_asym.c']
+		sources += files(join_paths(qat_crypto_relpath, f))
+	endforeach
+	deps += ['security']
+	ext_deps += libcrypto
+	cflags += ['-DBUILD_QAT_SYM', '-DBUILD_QAT_ASYM']
+endif
diff --git a/drivers/compress/qat/rte_pmd_qat_version.map b/drivers/common/qat/rte_common_qat_version.map
similarity index 100%
rename from drivers/compress/qat/rte_pmd_qat_version.map
rename to drivers/common/qat/rte_common_qat_version.map
diff --git a/drivers/compress/meson.build b/drivers/compress/meson.build
index bea1720a0..3a4723c0c 100644
--- a/drivers/compress/meson.build
+++ b/drivers/compress/meson.build
@@ -5,7 +5,7 @@ if is_windows
 	subdir_done()
 endif
 
-drivers = ['isal', 'octeontx', 'qat', 'zlib']
+drivers = ['isal', 'octeontx', 'zlib']
 
 std_deps = ['compressdev'] # compressdev pulls in all other needed deps
 config_flag_fmt = 'RTE_LIBRTE_PMD_@0@'
diff --git a/drivers/compress/qat/meson.build b/drivers/compress/qat/meson.build
deleted file mode 100644
index a00246980..000000000
--- a/drivers/compress/qat/meson.build
+++ /dev/null
@@ -1,17 +0,0 @@
-# SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2017-2018 Intel Corporation
-
-
-# Add our sources files to the list
-qat_sources += files('qat_comp_pmd.c',
-		     'qat_comp.c')
-qat_includes += include_directories('.')
-qat_deps += 'compressdev'
-qat_ext_deps += dep
-
-# build the whole driver
-sources += qat_sources
-cflags += qat_cflags
-deps += qat_deps
-ext_deps += qat_ext_deps
-includes += qat_includes
diff --git a/drivers/crypto/meson.build b/drivers/crypto/meson.build
index 25b99c19c..bd7a940e6 100644
--- a/drivers/crypto/meson.build
+++ b/drivers/crypto/meson.build
@@ -19,7 +19,6 @@ drivers = ['aesni_gcm',
 	   'octeontx',
 	   'octeontx2',
 	   'openssl',
-	   'qat',
 	   'scheduler',
 	   'snow3g',
 	   'virtio',
diff --git a/drivers/crypto/qat/meson.build b/drivers/crypto/qat/meson.build
deleted file mode 100644
index a225f374a..000000000
--- a/drivers/crypto/qat/meson.build
+++ /dev/null
@@ -1,23 +0,0 @@
-# SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2017-2018 Intel Corporation
-
-# this does not build the QAT driver, instead that is done in the compression
-# driver which comes later. Here we just add our sources files to the list
-build = false
-reason = '' # sentinal value to suppress printout
-dep = dependency('libcrypto', required: false)
-qat_includes += include_directories('.')
-qat_deps += 'cryptodev'
-qat_deps += 'net'
-qat_deps += 'security'
-if dep.found()
-	# Add our sources files to the list
-	qat_sources += files('qat_sym_pmd.c',
-			     'qat_sym.c',
-			     'qat_sym_session.c',
-			     'qat_asym_pmd.c',
-			     'qat_asym.c')
-	qat_ext_deps += dep
-	qat_cflags += '-DBUILD_QAT_SYM'
-	qat_cflags += '-DBUILD_QAT_ASYM'
-endif
diff --git a/drivers/meson.build b/drivers/meson.build
index b5ac483d3..b95b00583 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -6,6 +6,7 @@ subdirs = [
 	'common',
 	'bus',
 	'common/mlx5', # depends on bus.
+	'common/qat', # depends on bus.
 	'mempool', # depends on common and bus.
 	'net',     # depends on common, bus, mempool
 	'raw',     # depends on common, bus and net.
