Add a INSTRUMENT_WITH_SANITIZERS CMake flag, and make RUN_TESTS_UNDER_VALGRIND default to false.
Also simplify the Travis CI config and start running a couple OS X builds with Valgrind.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 421cc7c..7fa2ecb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,14 +10,23 @@
 
 set(FRUIT_COMPILE_FLAGS "-std=c++11 -W -Wall")
 if((${CMAKE_BUILD_TYPE} STREQUAL "Debug"))
-  set(FRUIT_COMPILE_FLAGS "${FRUIT_COMPILE_FLAGS} -g -O0 -Werror -DFRUIT_EXTRA_DEBUG -D_GLIBCXX_DEBUG")
+  set(FRUIT_COMPILE_FLAGS "${FRUIT_COMPILE_FLAGS} -g -Werror -DFRUIT_EXTRA_DEBUG -D_GLIBCXX_DEBUG")
   if((((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.8.99"))
      OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
      AND NOT ${RUN_TESTS_UNDER_VALGRIND})
-    set(FRUIT_COMPILE_FLAGS "${FRUIT_COMPILE_FLAGS} -fsanitize=undefined,address")
-    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined,address")
   endif()
 endif()
+
+set(RUN_TESTS_UNDER_VALGRIND FALSE CACHE BOOL "Whether to run Fruit tests under valgrind")
+set(INSTRUMENT_WITH_SANITIZERS FALSE CACHE BOOL "Whether to instrument code with code sanitizers")
+if (${RUN_TESTS_UNDER_VALGRIND} AND ${INSTRUMENT_WITH_SANITIZERS})
+  message(FATAL_ERROR "At most one of RUN_TESTS_UNDER_VALGRIND and INSTRUMENT_WITH_SANITIZERS can be used, but both were specified.")
+endif()
+if(${INSTRUMENT_WITH_SANITIZERS})
+  set(FRUIT_COMPILE_FLAGS "${FRUIT_COMPILE_FLAGS} -fsanitize=undefined,address")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined,address")
+endif()
+
 add_definitions(${FRUIT_COMPILE_FLAGS})
 
 include_directories(${CMAKE_SOURCE_DIR}/include)