Add the ability to turn shared library compilation on and off

Change-Id: Ib9eacfbc894bb2b66aafff3b930c63e2ad8a555e
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c4c89bc..7b65b03 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -91,6 +91,10 @@
        "Build for Android. Use build_android.sh instead of setting this."
        OFF)
 
+OPTION(BUILD_SHARED
+       "Build a dynamically linkable version of Ceres Solver."
+       ON)
+
 # To get a more static build, try the following line on Mac and Linux:
 # SET(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
 
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
index a7f1d97..9e2e1ae 100644
--- a/internal/ceres/CMakeLists.txt
+++ b/internal/ceres/CMakeLists.txt
@@ -205,7 +205,7 @@
 
 # Don't build a DLL on MSVC. Supporting Ceres as a DLL on Windows involves
 # nontrivial changes that we haven't made yet.
-IF (NOT MSVC AND NOT BUILD_ANDROID)
+IF (NOT MSVC AND NOT BUILD_ANDROID AND BUILD_SHARED)
   ADD_LIBRARY(ceres_shared SHARED ${CERES_LIBRARY_SOURCE})
   TARGET_LINK_LIBRARIES(ceres_shared ${CERES_LIBRARY_DEPENDENCIES})
   SET_TARGET_PROPERTIES(ceres_shared PROPERTIES
@@ -218,7 +218,7 @@
           LIBRARY DESTINATION lib${LIB_SUFFIX}
           ARCHIVE DESTINATION lib${LIB_SUFFIX})
 
-ENDIF (NOT MSVC AND NOT BUILD_ANDROID)
+ENDIF (NOT MSVC AND NOT BUILD_ANDROID AND BUILD_SHARED)
 
 IF (BUILD_TESTING AND GFLAGS)
   ADD_LIBRARY(gtest gmock_gtest_all.cc gmock_main.cc)