diff --git a/contrib/src/liburcu/SHA512SUMS b/contrib/src/liburcu/SHA512SUMS
new file mode 100644
index 0000000000000000000000000000000000000000..c0c230f02b6991fcb357cd35f59b80bf7ec48ddd
--- /dev/null
+++ b/contrib/src/liburcu/SHA512SUMS
@@ -0,0 +1 @@
+c86f2eb260cccb3cb6bd54ddbc0b46e60083fc99423e9403242ebed7f39a2a49c68af933ea6f373e2a9d4f9dc56f5befe030740891e28cf2fabe927a48ff8182  liburcu-0.13.1.tar.bz2
diff --git a/contrib/src/liburcu/package.json b/contrib/src/liburcu/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..b0f36c2aa0a4e7593a161dd1fb458a495a3df245
--- /dev/null
+++ b/contrib/src/liburcu/package.json
@@ -0,0 +1,15 @@
+{
+    "name": "liburcu",
+    "version": "0.13.1",
+    "url": "https://lttng.org/files/urcu/userspace-rcu-__VERSION__.tar.bz2",
+    "deps": [],
+    "patches": [],
+    "win_patches": [],
+    "project_paths": [],
+    "with_env" : "",
+    "custom_scripts": {
+        "pre_build": [],
+        "build": [],
+        "post_build": []
+    }
+}
diff --git a/contrib/src/liburcu/rules.mak b/contrib/src/liburcu/rules.mak
new file mode 100644
index 0000000000000000000000000000000000000000..ee91a5d117b97909e7cff1e930a515b55b3d8d8e
--- /dev/null
+++ b/contrib/src/liburcu/rules.mak
@@ -0,0 +1,24 @@
+# liburcu
+
+LIBURCU_VERSION := 0.13.1
+LIBURCU_URL     := https://lttng.org/files/urcu/userspace-rcu-${LIBURCU_VERSION}.tar.bz2
+
+ifeq ($(call need_pkg "liburcu >= 0.13.1"),)
+PKGS_FOUND += liburcu
+endif
+
+$(TARBALLS)/liburcu-$(LIBURCU_VERSION).tar.bz2:
+	$(call download,$(LIBURCU_URL))
+
+.sum-liburcu: liburcu-$(LIBURCU_VERSION).tar.bz2
+
+liburcu: liburcu-$(LIBURCU_VERSION).tar.bz2 .sum-liburcu
+	$(UNPACK)
+	mv userspace-rcu-$(LIBURCU_VERSION) liburcu-$(LIBURCU_VERSION)
+	$(UPDATE_AUTOCONFIG)
+	$(MOVE)
+
+.liburcu: liburcu
+	cd $< && $(HOSTVARS) ./configure $(HOSTCONF)
+	cd $< && $(MAKE) install
+	touch $@