diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9c3879e..a78b993 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-CMAKE_MINIMUM_REQUIRED (VERSION 2.6.2)
+CMAKE_MINIMUM_REQUIRED (VERSION 2.8.5)
 
 PROJECT (OpenICC)
 
@@ -35,6 +35,16 @@ SET( REVERSE_DOMAIN org.openicc )
 
 SET( ${PROJECT_NAME}_VERSION_MAJORMINOR "${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}" )
 
+include(GNUInstallDirs)
+
+option(ENABLE_TESTS "Build tests (requires static libs)" ON)
+option(ENABLE_TOOLS "Build tools (currently openicc-device)" ON)
+option(ENABLE_STATIC_LIBS "Build static libs" ON)
+
+IF( ENABLE_TESTS )
+  SET(ENABLE_STATIC_LIBS ON)
+ENDIF()
+
 IF( ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
   SET(PLATFORM "OSX")
 ELSEIF( ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 950d3dc..0a89aea 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -16,13 +16,13 @@ SET (TARGET_CMAKE_FOLDER
 
 SET (TARGET_PLUGIN_FOLDER "openicc"
 		CACHE STRING
-		"Optional folder below system library folder where to install openicc plugins. LIB_SUFFIX is honored."
+		"Optional folder below system library folder where to install openicc plugins."
     )
 
 SET (TARGET_PKGCONFIG_FOLDER
 		"pkgconfig"
 		CACHE STRING
-		"The folder below system library folder where to install pkgconfig files. LIB_SUFFIX is honored."
+		"The folder below system library folder where to install pkgconfig files."
     )
 
 SET (TARGET_DOCUMENTATION_FOLDER
@@ -36,10 +36,6 @@ SET (TARGET_DOCUMENTATION_FOLDER
 # Misc.
 #
 
-SET (LIB_SUFFIX ""
-		CACHE STRING
-		"Optional suffix to use on lib folders (e.g. 64 for lib64)"
-    )
 #cmake settings for use by find_package
 CONFIGURE_FILE (
 		"${CMAKE_CURRENT_SOURCE_DIR}/OpenIccConfig.cmake.in"
@@ -49,6 +45,6 @@ CONFIGURE_FILE (
 
 INSTALL ( FILES
 		"${CMAKE_CURRENT_BINARY_DIR}/OpenIccConfig.cmake"
-		DESTINATION lib${LIB_SUFFIX}/cmake/openicc COMPONENT dev
+		DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/openicc COMPONENT dev
 	)
 
diff --git a/cmake/OpenIccConfig.cmake.in b/cmake/OpenIccConfig.cmake.in
index 46dc1ba..373190f 100644
--- a/cmake/OpenIccConfig.cmake.in
+++ b/cmake/OpenIccConfig.cmake.in
@@ -16,7 +16,7 @@
 # Set path to the header file.
 FIND_PATH(OPENICC_INCLUDE_DIR
 	NAMES openicc_version.h
-	PATHS @CMAKE_INSTALL_PREFIX@/include/@TARGET_INCLUDE_FOLDER@
+	PATHS @CMAKE_INSTALL_FULL_INCLUDEDIR@/@TARGET_INCLUDE_FOLDER@
 	NO_DEFAULT_PATH
 )
 MARK_AS_ADVANCED(OPENICC_INCLUDE_DIR)
@@ -25,7 +25,7 @@ MARK_AS_ADVANCED(OPENICC_INCLUDE_DIR)
 # Set path to the library.
 FIND_LIBRARY(OPENICC_LIBRARY
 	NAMES OpenICC openicc-static
-	PATHS @CMAKE_INSTALL_PREFIX@/lib@LIB_SUFFIX@
+	PATHS @CMAKE_INSTALL_FULL_LIBDIR@
 	NO_DEFAULT_PATH
 )
 MARK_AS_ADVANCED(OPENICC_LIBRARY)
diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt
index a60698a..57cf57f 100644
--- a/docs/CMakeLists.txt
+++ b/docs/CMakeLists.txt
@@ -19,5 +19,5 @@ IF( DOXYGEN_FOUND )
   ADD_CUSTOM_TARGET( docu ALL
                      DEPENDS html )
 
-  INSTALL( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc/${PACKAGE_NAME} )
+  INSTALL( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION ${CMAKE_INSTALL_DOCDIR} )
 ENDIF()
diff --git a/extras/CMakeLists.txt b/extras/CMakeLists.txt
index ee939a5..8289b32 100644
--- a/extras/CMakeLists.txt
+++ b/extras/CMakeLists.txt
@@ -13,6 +13,6 @@ CONFIGURE_FILE(
 
 INSTALL( FILES
 		"${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}.pc"
-		DESTINATION lib${LIB_SUFFIX}/${TARGET_PKGCONFIG_FOLDER}
+		DESTINATION ${CMAKE_INSTALL_LIBDIR}/${TARGET_PKGCONFIG_FOLDER}
        )
 
diff --git a/extras/openicc.pc.in b/extras/openicc.pc.in
index 8680344..826a3d0 100644
--- a/extras/openicc.pc.in
+++ b/extras/openicc.pc.in
@@ -1,7 +1,7 @@
 prefix=@CMAKE_INSTALL_PREFIX@
-exec_prefix=${prefix}/bin
-libdir=${prefix}/lib@LIB_SUFFIX@
-includedir=${prefix}/include/@TARGET_INCLUDE_FOLDER@
+exec_prefix=${prefix}/@CMAKE_INSTALL_BINDIR@
+libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
+includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@TARGET_INCLUDE_FOLDER@
 
 Name: @PACKAGE_NAME@
 Description: @PACKAGE_DESCRIPTION@
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 09c6c05..d61f533 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -94,7 +94,7 @@ FIND_PACKAGE( GetText )
 MESSAGE( "GetText: ${GETTEXT_FOUND}" )
 IF( GETTEXT_FOUND )
   SET( USE_GETTEXT TRUE )
-  SET( OI_LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/locale" )
+  SET( OI_LOCALEDIR "${CMAKE_INSTALL_FULL_LOCALEDIR}" )
 ENDIF()
 
 # debug
@@ -106,9 +106,13 @@ ADD_SUBDIRECTORY( include )
 
 ADD_SUBDIRECTORY( libopenicc )
 
-ADD_SUBDIRECTORY( tests )
+IF( ENABLE_TESTS )
+    ADD_SUBDIRECTORY( tests )
+ENDIF()
 
-ADD_SUBDIRECTORY( tools )
+IF( ENABLE_TOOLS )
+    ADD_SUBDIRECTORY( tools )
+ENDIF()
 
 ADD_SUBDIRECTORY( examples )
 
diff --git a/src/include/CMakeLists.txt b/src/include/CMakeLists.txt
index 082eaf8..c37d987 100644
--- a/src/include/CMakeLists.txt
+++ b/src/include/CMakeLists.txt
@@ -16,4 +16,4 @@ SET( CHEADERS_OBJECT_CONFIG_PUBLIC
 INSTALL( FILES
 	${CHEADERS_OBJECT_CONFIG_PUBLIC}
         "${CMAKE_BINARY_DIR}/src/include/openicc_version.h"
-	DESTINATION include/${PROJECT_DOWN_NAME})
+	DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_DOWN_NAME})
diff --git a/src/include/openicc_version.h.in b/src/include/openicc_version.h.in
index 627bd3b..b0b9927 100644
--- a/src/include/openicc_version.h.in
+++ b/src/include/openicc_version.h.in
@@ -8,10 +8,10 @@
 #define OPENICC_VERSION (OPENICC_VERSION_A * 10000 + OPENICC_VERSION_B * 100 + OPENICC_VERSION_C)	/**< version variable */
 
 #define OPENICC_PREFIX         "@CMAKE_INSTALL_PREFIX@"	/**< install variable */
-#define OPENICC_BINDIR         "@CMAKE_INSTALL_PREFIX@/bin"	/**< install variable */
-#define OPENICC_DATADIR        "@CMAKE_INSTALL_PREFIX@/share"	/**< install variable */
-#define OPENICC_LIBDIR         "@CMAKE_INSTALL_PREFIX@/lib@LIB_SUFFIX@"	/**< install variable */
-#define OPENICC_DATADIR        "@CMAKE_INSTALL_PREFIX@/share"	/**< install variable */
+#define OPENICC_BINDIR         "@CMAKE_INSTALL_FULL_BINDIR@"	/**< install variable */
+#define OPENICC_DATADIR        "@CMAKE_INSTALL_FULL_DATAROOTDIR@"	/**< install variable */
+#define OPENICC_LIBDIR         "@CMAKE_INSTALL_FULL_LIBDIR@/"	/**< install variable */
+#define OPENICC_DATADIR        "@CMAKE_INSTALL_FULL_DATAROOTDIR@"	/**< install variable */
 #define OPENICC_SYSCOLORDIR    OPENICC_DATADIR "/color"	/**< install variable */
 #define OPENICC_LOCALEDIR      "@OI_LOCALEDIR@"
 #define OPENICC_CMMSUBPATH     "@OI_CMMSUBPATH@"	/**< install variable */
diff --git a/src/libopenicc/CMakeLists.txt b/src/libopenicc/CMakeLists.txt
index 1db9b0e..b4e7994 100644
--- a/src/libopenicc/CMakeLists.txt
+++ b/src/libopenicc/CMakeLists.txt
@@ -36,14 +36,20 @@ ADD_LIBRARY( OpenICC SHARED ${SOURCES} )
 TARGET_LINK_LIBRARIES (
    OpenICC
    ${EXTRA_LIBS} ${EXTRA_LIBS_CS} )
-ADD_LIBRARY( openicc-static STATIC ${SOURCES} )
-TARGET_LINK_LIBRARIES (
-   openicc-static
-   ${EXTRA_LIBS} ${EXTRA_LIBS_CS} )
 
-INSTALL( TARGETS OpenICC openicc-static
-         RUNTIME DESTINATION bin
-         LIBRARY DESTINATION lib${LIB_SUFFIX}
-         ARCHIVE DESTINATION lib${LIB_SUFFIX} )
+INSTALL( TARGETS OpenICC
+         RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+         LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+         ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} )
 
+IF(ENABLE_STATIC_LIBS)
+   ADD_LIBRARY( openicc-static STATIC ${SOURCES} )
+   TARGET_LINK_LIBRARIES (
+   openicc-static
+   ${EXTRA_LIBS} ${EXTRA_LIBS_CS} )
 
+   INSTALL( TARGETS openicc-static
+            RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+            ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} )
+ENDIF()
diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt
index 8792328..4bb1602 100644
--- a/src/tools/CMakeLists.txt
+++ b/src/tools/CMakeLists.txt
@@ -1,5 +1,5 @@
 # Device listing
 ADD_EXECUTABLE( openicc-device "${CMAKE_CURRENT_SOURCE_DIR}/openicc_device.c" )
 TARGET_LINK_LIBRARIES( openicc-device OpenICC ${EXTRA_LIBS} )
-INSTALL (TARGETS openicc-device DESTINATION bin)
+INSTALL (TARGETS openicc-device DESTINATION ${CMAKE_INSTALL_BINDIR})
 
