diff --git a/policy/its/polkit.its b/policy/its/polkit.its
new file mode 100644
index 000000000..1c37e6bee
--- /dev/null
+++ b/policy/its/polkit.its
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/policy/its/polkit.loc b/policy/its/polkit.loc
new file mode 100644
index 000000000..c7427ec67
--- /dev/null
+++ b/policy/its/polkit.loc
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/policy/meson.build b/policy/meson.build
index def89763d..2a418aa78 100644
--- a/policy/meson.build
+++ b/policy/meson.build
@@ -1,11 +1,43 @@
install_data('org.freedesktop.fwupd.rules',
install_dir : 'share/polkit-1/rules.d')
-i18n.merge_file(
- input: 'org.freedesktop.fwupd.policy.in',
- output: 'org.freedesktop.fwupd.policy',
- type: 'xml',
- po_dir: join_paths(meson.source_root(), 'po'),
- install: true,
- install_dir: join_paths(get_option('datadir'), 'polkit-1', 'actions')
-)
+#meson 0.41.0 added support for data_dirs argument
+if meson.version().version_compare('>=0.41.0')
+ #newer polkit has the ITS rules included
+ if polkit.version().version_compare('>0.113')
+ i18n.merge_file(
+ input: 'org.freedesktop.fwupd.policy.in',
+ output: 'org.freedesktop.fwupd.policy',
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'polkit-1', 'actions') ,
+ type: 'xml',
+ po_dir: join_paths(meson.source_root(), 'po')
+ )
+ #older polkit is missing ITS rules and will fail
+ else
+ i18n.merge_file(
+ input: 'org.freedesktop.fwupd.policy.in',
+ output: 'org.freedesktop.fwupd.policy',
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'polkit-1', 'actions') ,
+ type: 'xml',
+ data_dirs: join_paths(meson.source_root(), 'policy'),
+ po_dir: join_paths(meson.source_root(), 'po')
+ )
+ endif
+#older polkit and older meson, need to do some custom targets
+#see https://github.com/hughsie/fwupd/issues/107
+else
+ envbin = find_program('env')
+ gettext_data_dir = 'GETTEXTDATADIRS=' + join_paths(meson.source_root(), 'policy')
+ custom_target('org.freedesktop.fwupd.policy',
+ input: 'org.freedesktop.fwupd.policy.in',
+ output: 'org.freedesktop.fwupd.policy',
+ command: [envbin, gettext_data_dir, 'msgfmt', '--xml',
+ '--template', '@INPUT@',
+ '-d', join_paths(meson.source_root(), 'po'),
+ '-o', '@OUTPUT@'],
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'polkit-1', 'actions')
+ )
+endif