Disable threads completely if OpenMP is not present.

This reduces the penalty paid by Mutex lock and unlock operations
in single threaded mode.

Change-Id: I185380bde73fe87e901fc434d152d6c366ff1d5d
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f5aaeed..537a103 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -43,7 +43,7 @@
   # Git Bash (shipped with msysgit)
   SET (LOCAL_GIT_DIRECTORY ${CMAKE_SOURCE_DIR}/.git)
 ELSE (EXISTS ${CMAKE_SOURCE_DIR}/.git)
-  # TODO(keir) Add proper windows support
+  # TODO(keir) Add proper Windows support
 ENDIF (EXISTS ${CMAKE_SOURCE_DIR}/.git)
 
 IF (EXISTS ${LOCAL_GIT_DIRECTORY})
@@ -471,15 +471,35 @@
 
 IF (${OPENMP})
   FIND_PACKAGE(OpenMP)
-  IF(${OPENMP_FOUND})
-    MESSAGE("-- Found OpenMP.")
-    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
-    ADD_DEFINITIONS(-DCERES_USE_OPENMP)
-  ELSE(${OPENMP_FOUND})
-    MESSAGE("-- Can't find OpenMP. Continuing without it.")
-  ENDIF(${OPENMP_FOUND})
 ENDIF (${OPENMP})
 
+IF(${OPENMP_FOUND})
+  MESSAGE("-- Found OpenMP.")
+  ADD_DEFINITIONS(-DCERES_USE_OPENMP)
+  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+  IF ("${UNIX}")
+    # At least on Linux, we need pthreads to be enabled for mutex to
+    # compile.  This may not work on Windows or Android.
+    FIND_PACKAGE(Threads REQUIRED)
+    SET(STATIC_LIBRARY_FLAGS
+        "${STATIC_LIBRARY_FLAGS} ${CMAKE_THREAD_LIBS_INIT}")
+    SET(CMAKE_SHARED_LINKER_FLAGS
+        "${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_THREAD_LIBS_INIT}")
+    ADD_DEFINITIONS(-DCERES_HAVE_PTHREAD)
+    ADD_DEFINITIONS(-DCERES_HAVE_RWLOCK)
+  ENDIF ("${UNIX}")
+ELSE(${OPENMP_FOUND})
+  MESSAGE("-- Can't find OpenMP. Disabling multithreading.")
+  ADD_DEFINITIONS(-DCERES_NO_THREADS)
+ENDIF(${OPENMP_FOUND})
+
+# Disable threads in mutex.h. Someday, after there is OpenMP support in
+# Android, this can get removed. Also turn on a workaround for an NDK bug.
+IF (${BUILD_ANDROID})
+  ADD_DEFINITIONS(-DCERES_NO_THREADS)
+  ADD_DEFINITIONS(-DCERES_WORK_AROUND_ANDROID_NDK_COMPILER_BUG)
+ENDIF (${BUILD_ANDROID})
+
 # Protocol buffers
 OPTION(PROTOBUF
        "Enable protocol buffers support."
@@ -497,25 +517,6 @@
   ADD_DEFINITIONS(-DCERES_NO_PROTOCOL_BUFFERS)
 ENDIF (${PROTOBUF})
 
-
-# Use threads but not on Android, where there is no support for OpenMP yet.
-IF ("${UNIX}" AND NOT ${BUILD_ANDROID})
-  # At least on Linux, we need pthreads to be enabled for mutex to compile.
-  # This may not work on windows or android.
-  FIND_PACKAGE(Threads REQUIRED)
-  SET(STATIC_LIBRARY_FLAGS "${STATIC_LIBRARY_FLAGS} ${CMAKE_THREAD_LIBS_INIT}")
-  SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_THREAD_LIBS_INIT}")
-  ADD_DEFINITIONS(-DCERES_HAVE_PTHREAD)
-  ADD_DEFINITIONS(-DCERES_HAVE_RWLOCK)
-ENDIF ("${UNIX}" AND NOT ${BUILD_ANDROID})
-
-# Disable threads in mutex.h. Someday, after there is OpenMP support in
-# Android, this can get removed. Also turn on a workaround for an NDK bug.
-IF (${BUILD_ANDROID})
-  ADD_DEFINITIONS(-DCERES_NO_THREADS)
-  ADD_DEFINITIONS(-DCERES_WORK_AROUND_ANDROID_NDK_COMPILER_BUG)
-ENDIF (${BUILD_ANDROID})
-
 OPTION(DISABLE_TR1
        "Don't use TR1. This replaces some hash tables with sets. Slower."
        OFF)