diff --git a/CMakeLists.txt b/CMakeLists.txt
index bec5c8a..e4f14a9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -50,7 +50,6 @@ if(CMAKE_THREAD_LIBS_INIT)
set(THREAD_LIBRARIES ${CMAKE_THREAD_LIBS_INIT} ${THREAD_LIBRARIES})
endif(CMAKE_THREAD_LIBS_INIT)
-
find_package(PkgConfig)
if(PKGCONFIG_FOUND)
set(HAVE_PKG_CONFIG 1)
@@ -60,11 +59,10 @@ if(USE_SSM)
find_package(SSM)
endif(USE_SSM)
-set(READLINE_LIBRARIES "")
-find_library(READLINE_LIBRARIES readline)
-if(READLINE_LIBRARIES )
+find_package(Readline)
+if(READLINE_FOUND)
add_definitions(-DHAVE_LIBREADLINE=1)
-endif(READLINE_LIBRARIES )
+endif(READLINE_FOUND)
include(CheckFunctionExists)
check_function_exists(longjmp HAVE_LONGJMP)
diff --git a/Dockerfile.test b/Dockerfile.test
index e26d19a..2d1628d 100644
--- a/Dockerfile.test
+++ b/Dockerfile.test
@@ -20,3 +20,13 @@ COPY ./ /yp-spur
RUN mkdir -p /yp-spur/build
WORKDIR /yp-spur/build
RUN cmake .. && make -j && make test && make install
+# check that ypspur-interpreter is built without readline
+RUN ldd ypspur-interpreter | grep libreadline.so; test $? -eq 1
+
+RUN apt-get install -y --no-install-recommends libreadline-dev
+
+RUN mkdir -p /yp-spur/build-readline
+WORKDIR /yp-spur/build-readline
+RUN cmake .. && make -j && make test && make install
+# check that ypspur-interpreter is built with readline
+RUN ldd ypspur-interpreter | grep libreadline.so
diff --git a/cmake/modules/FindReadline.cmake b/cmake/modules/FindReadline.cmake
new file mode 100644
index 0000000..c50a117
--- /dev/null
+++ b/cmake/modules/FindReadline.cmake
@@ -0,0 +1,19 @@
+# Find readline library
+
+find_path(READLINE_INCLUDE_DIRS readline/readline.h
+ HINTS ENV READLINE_DIR
+ PATH_SUFFIXES include
+)
+find_library(READLINE_LIBRARIES_FOUND
+ NAMES readline
+ HINTS ENV READLINE_DIR
+)
+if(READLINE_LIBRARIES_FOUND)
+ set(READLINE_LIBRARIES readline)
+endif(READLINE_LIBRARIES_FOUND)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(READLINE
+ DEFAULT_MSG READLINE_LIBRARIES
+ READLINE_INCLUDE_DIRS
+)
diff --git a/cmake/modules/FindSSM.cmake b/cmake/modules/FindSSM.cmake
index 3437d31..c50ca22 100644
--- a/cmake/modules/FindSSM.cmake
+++ b/cmake/modules/FindSSM.cmake
@@ -22,4 +22,3 @@ find_package_handle_standard_args(SSM
SSM_INCLUDE_DIRS
SSM_EXECUTABLE
)
-
diff --git a/cmake/modules/GetGitRevision.cmake b/cmake/modules/GetGitRevision.cmake
index 0a13659..c4771e9 100644
--- a/cmake/modules/GetGitRevision.cmake
+++ b/cmake/modules/GetGitRevision.cmake
@@ -24,4 +24,3 @@ function(get_git_revision)
set(GIT_REVISION ${REVISION} PARENT_SCOPE)
endfunction(get_git_revision)
-
diff --git a/package.xml b/package.xml
index b0d0da4..1dba4ef 100644
--- a/package.xml
+++ b/package.xml
@@ -7,7 +7,11 @@
MIT
cmake
+
+ libreadline-dev
+
catkin
+ libreadline
cmake