diff -purN a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt 2017-02-13 22:59:10.000000000 +0000 +++ b/CMakeLists.txt 2017-08-08 14:19:10.325817085 +0100 @@ -8,11 +8,16 @@ include(FindThreads) enable_testing() -# Detect the build type from the $FLAVOR environment variable -if ("$ENV{FLAVOR}" MATCHES "debug") - set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "type of build" FORCE) -else () - set(CMAKE_BUILD_TYPE "Release" CACHE STRING "type of build" FORCE) +if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + # Detect the build type from the $FLAVOR environment variable + # Default to optimized Release builds when unspecified. + if ("$ENV{FLAVOR}" MATCHES "debug") + set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "type of build" FORCE) + elseif ("$ENV{FLAVOR}" MATCHES "profile") + set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "type of build" FORCE) + else () + set(CMAKE_BUILD_TYPE "Release" CACHE STRING "type of build" FORCE) + endif () endif () if (NOT WIN32) diff -purN a/Makefile b/Makefile --- a/Makefile 2017-02-13 22:59:10.000000000 +0000 +++ b/Makefile 2017-08-08 14:19:16.939829578 +0100 @@ -21,6 +21,10 @@ ifdef TOOLCHAIN CMAKE_FLAGS += -DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN) endif +ifdef BUILD_TYPE + CMAKE_FLAGS += -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) +endif + # make V=1 shortcut for VERBOSE=1 ifdef V VERBOSE=1