--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -38,6 +38,7 @@
 set(CMAKE_CXX_STANDARD 11)
 
 find_package(Threads)
+find_package(PkgConfig REQUIRED)
 
 include_directories(${CMAKE_BINARY_DIR})
 include_directories(${CMAKE_SOURCE_DIR})
@@ -67,13 +68,7 @@
 
 # ------------- Murmur Hash 3 -------------
 
-add_library(thirdparty_murmur OBJECT
-  thirdparty/MurmurHash3/MurmurHash3.cpp
-  thirdparty/MurmurHash3/MurmurHash3.h
-)
-set_target_properties(thirdparty_murmur PROPERTIES
-  CXX_CLANG_TIDY ""
-)
+pkg_check_modules(MURMURHASH3 REQUIRED libmurmurhash)
 
 # ------------- Main Chuffed Definition -------------
 
@@ -190,7 +185,6 @@
   ${VAR_IMPACT_SOURCES}
 
   $<TARGET_OBJECTS:thirdparty_cp_profiler>
-  $<TARGET_OBJECTS:thirdparty_murmur>
 )
 
 if(CP_PROFILER)
@@ -256,7 +250,7 @@
 )
 
 add_executable(fzn-chuffed chuffed/flatzinc/fzn-chuffed.cpp)
-target_link_libraries(fzn-chuffed chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(fzn-chuffed chuffed_fzn chuffed ${CMAKE_THREAD_LIBS_INIT} ${MURMURHASH3_LIBRARIES})
 
 # ------------- Chuffed Examples -------------
 
--- a/chuffed/mdd/circutil.h
+++ b/chuffed/mdd/circutil.h
@@ -37,7 +37,7 @@
 	struct hash {
 		unsigned int operator()(const S& s) const {
 			uint32_t ret;
-			MurmurHash3_x86_32(&s, sizeof(S), SEED, &ret);
+			lmmh_x86_32(&s, sizeof(S), SEED, &ret);
 			return ret;
 		}
 	};
--- a/chuffed/mdd/opcache.cpp
+++ b/chuffed/mdd/opcache.cpp
@@ -3,7 +3,7 @@
 #include <climits>
 #include <cstdlib>
 
-#include <thirdparty/MurmurHash3/MurmurHash3.h>
+#include <murmurhash.h>
 
 #define USE_MURMURHASH
 
@@ -39,7 +39,7 @@
 #else
 	uint32_t ret;
 	cache_sig sig = {(unsigned int)op, a, b};
-	MurmurHash3_x86_32(&sig, sizeof(cache_sig), 5381, &ret);
+	lmmh_x86_32(&sig, sizeof(cache_sig), 5381, &ret);
 	return ret % tablesz;
 #endif
 }
--- a/chuffed/mdd/weighted_dfa.cpp
+++ b/chuffed/mdd/weighted_dfa.cpp
@@ -3,7 +3,7 @@
 #include <algorithm>
 #include <cstring>
 
-#include <thirdparty/MurmurHash3/MurmurHash3.h>
+#include <murmurhash.h>
 
 #define OPCACHE_SZ 100000
 
@@ -230,6 +230,6 @@
 	hash = ((hash << 5) + hash) + a1->var;
 	hash = ((hash << 5) + hash) + a1->sz;
 	uint32_t ret;
-	MurmurHash3_x86_32(&(a1->edges), sizeof(EInfo) * a1->sz, hash, &ret);
+	lmmh_x86_32(&(a1->edges), sizeof(EInfo) * a1->sz, hash, &ret);
 	return ret;
 }
