Doxygen skeleton

Change-Id: I2bd370c9cfd9e86a4d11c5b2bca3cf6aca031076
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5fa2341..bf49f98 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,5 +31,21 @@
 # configurations. They are warnings, not errors.
 set(CMAKE_CXX_FLAGS "-Wall -Wextra -pedantic ${CMAKE_CXX_FLAGS}")
 
+find_package(Doxygen)
+option(WITH_DOCS "Create and install internal documentation (needs Doxygen)" ${DOXYGEN_FOUND})
+
 find_package(docopt REQUIRED)
 find_package(spdlog REQUIRED)
+
+if(WITH_DOCS)
+    set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
+    set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
+    configure_file(${doxyfile_in} ${doxyfile} @ONLY)
+    add_custom_target(doc
+        COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile}
+        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+        COMMENT "Generating API documentation with Doxygen"
+        VERBATIM
+        SOURCES ${doxyfile_in}
+        )
+endif()