diff --git a/meson.build b/meson.build
index 7f4f5dca617f6fb4b1c1b1fa62c9e6d3a1c74905..09291a80d20bf73afeda3e10014efcd44bcf156e 100644
--- a/meson.build
+++ b/meson.build
@@ -71,5 +71,9 @@ opendht = shared_library('opendht',
     dependencies : deps,
     cpp_args : ['-DOPENHT_BUILD', '-Dopendht_EXPORTS'])
 
-readline = meson.get_compiler('c').find_library('readline')
-dhtnode = executable('dhtnode', 'tools/dhtnode.cpp', link_with : opendht, dependencies : [readline, msgpack])
+readline = meson.get_compiler('c').find_library('readline', required: get_option('tools'))
+if get_option('tools').enabled()
+    dhtnode = executable('dhtnode', 'tools/dhtnode.cpp',
+        link_with : opendht,
+        dependencies : [readline, msgpack])
+endif
diff --git a/meson_options.txt b/meson_options.txt
index f593362a1cda86709b269b2cfdd7b9851df9da77..290179549a9300ee60606a38aec4a735c3e22394 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,3 +1,4 @@
 option('proxy_client', type : 'feature', value : 'disabled')
 option('proxy_server', type : 'feature', value : 'disabled')
 option('peer_discovery', type : 'feature', value : 'enabled')
+option('tools', type : 'feature', value : 'enabled')