+# Build type
+if (CMAKE_CONFIGURATION_TYPES)
+ set(CMAKE_CONFIGURATION_TYPES Release RelWithDebInfo Debug Debugfull Profile)
+ set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING "These are the configuration types we support" FORCE)
+endif()
+
+if(NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build, options are: Release RelWithDebInfo Debug Debugfull Profile None" FORCE)
+endif()
+
+# Output CMake and Quassel versions as well as build type for debug reasons
+message(STATUS "Building Quassel ${QUASSEL_VERSION_STRING}...")
+message(STATUS "Using CMake ${CMAKE_VERSION}")
+message(STATUS "CMake build type: ${CMAKE_BUILD_TYPE}")
+
+# Support ccache if found
+# This should happen before calling project(), so compiler settings are validated.
+option(USE_CCACHE "Enable support for ccache if available" ON)
+if (USE_CCACHE)
+ message(STATUS "Checking for ccache")
+ find_program(CCACHE_PROGRAM ccache)
+ if (CCACHE_PROGRAM)
+ set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
+ message(STATUS "Checking for ccache - enabled")
+ else()
+ message(STATUS "Checking for ccache - not found")
+ endif()
+endif()
+
+# Set up project
+project(Quassel C CXX)