--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,8 +51,11 @@ endif()
 project(lzo VERSION 2.10 LANGUAGES C)
 
 # configuration options
-option(ENABLE_STATIC "Build static LZO library." ON)
-option(ENABLE_SHARED "Build shared LZO library." OFF)
+option(ENABLE_STATIC   "Build static LZO library." ON)
+option(ENABLE_SHARED   "Build shared LZO library." OFF)
+option(ENABLE_TESTS    "Build tests."              ON)
+option(ENABLE_EXAMPLES "Build examples."           ON)
+option(ENABLE_DOCS     "Install documentation."    ON)
 if(NOT ENABLE_STATIC AND NOT ENABLE_SHARED)
     set(ENABLE_STATIC ON)
 endif()
@@ -127,14 +130,20 @@ macro(lzo_add_executable t)
     endif()
 endmacro()
 # main test driver
+if(ENABLE_TESTS OR ENABLE_EXAMPLES)
 lzo_add_executable(lzotest  lzotest/lzotest.c)
+endif()
 # examples
+if(ENABLE_EXAMPLES)
 lzo_add_executable(dict     examples/dict.c)
 lzo_add_executable(lzopack  examples/lzopack.c)
 lzo_add_executable(overlap  examples/overlap.c)
 lzo_add_executable(precomp  examples/precomp.c)
 lzo_add_executable(precomp2 examples/precomp2.c)
+endif()
+if(ENABLE_TESTS OR ENABLE_EXAMPLES)
 lzo_add_executable(simple   examples/simple.c)
+endif()
 # some boring internal test programs
 if(0)
     lzo_add_executable(align    tests/align.c)
@@ -144,7 +153,7 @@ if(0)
 endif()
 
 # miniLZO
-if(1)
+if(ENABLE_TESTS)
     add_executable(testmini minilzo/testmini.c minilzo/minilzo.c)
     target_include_directories(testmini PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include/lzo") # needed for "lzoconf.h"
 endif()
@@ -263,8 +272,10 @@ add_test(NAME lzotest-03 COMMAND lzotest
 
 if(DEFINED CMAKE_INSTALL_FULL_LIBDIR)
 
-set(f AUTHORS COPYING NEWS THANKS doc/LZO.FAQ doc/LZO.TXT doc/LZOAPI.TXT)
-install(FILES ${f} DESTINATION "${CMAKE_INSTALL_FULL_DOCDIR}")
+if(ENABLE_DOCS)
+    set(f AUTHORS COPYING NEWS THANKS doc/LZO.FAQ doc/LZO.TXT doc/LZOAPI.TXT)
+    install(FILES ${f} DESTINATION "${CMAKE_INSTALL_FULL_DOCDIR}")
+endif()
 
 set(f include/lzo/lzo1.h include/lzo/lzo1a.h include/lzo/lzo1b.h
     include/lzo/lzo1c.h include/lzo/lzo1f.h include/lzo/lzo1x.h
@@ -285,7 +296,7 @@ if(ENABLE_SHARED)
     )
 endif()
 
-if(1)
+if(ENABLE_EXAMPLES)
     set(f lzopack lzotest simple testmini) # examples
     install(TARGETS ${f} DESTINATION "${CMAKE_INSTALL_FULL_LIBEXECDIR}/lzo/examples")
 endif()
