Revert increased inline threshold (iff Clang) to exported Ceres target.

- Increasing the inline threshold results in very variable performance
  improvements, and could potentially confuse users if they are trying
  to set the inline threshold themselves.
- As such, we no longer export our inline threshold configuration for
  Clang, but instead document how to change it in the FAQs.

Change-Id: I88e2e0001e4586ba2718535845ed1e4b1a5b72bc
diff --git a/cmake/CeresConfig.cmake.in b/cmake/CeresConfig.cmake.in
index 9468279..9e29d7a 100644
--- a/cmake/CeresConfig.cmake.in
+++ b/cmake/CeresConfig.cmake.in
@@ -278,14 +278,6 @@
       "${CERES_LOCATION} was built with C++11. Ceres target will add "
       "C++11 flags to compile options for targets using it.")
   endif()
-  # Check for -inline-threshold Clang-specific flags.
-  if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
-      CERES_INTERFACE_COMPILE_OPTIONS MATCHES ".*inline\\-threshold.*")
-    message(STATUS "Ceres version ${CERES_VERSION} detected here: "
-      "${CERES_LOCATION} will add flags to increase inline threshold "
-      "to compile options for targets using it and are compiled with "
-      "Clang (improves Eigen performance).")
-  endif()
 endif()
 
 # Set legacy include directories variable for backwards compatibility.
diff --git a/docs/source/faqs.rst b/docs/source/faqs.rst
index 81bd9b7..badf90a 100644
--- a/docs/source/faqs.rst
+++ b/docs/source/faqs.rst
@@ -40,19 +40,29 @@
    poor performance.
 
    Ceres itself will always be compiled with an increased inline threshold
-   (currently 600) when compiled with Clang.  This increased threshold is also
-   added to the interface flags for the exported Ceres CMake target provided
-   that the CMake version is >= 2.8.12 (from which this was supported).  This
-   means that **any user code that links against Ceres using CMake >= 2.8.12
-   (and is compiled with Clang, irrespective of what Ceres was compiled with)
-   will automatically be compiled with the same increased inlining threshold
-   used to compile Ceres**.
-
-   If you are using CMake < 2.8.12 and Clang in your own code which uses Ceres
-   we recommend that you increase the inlining threshold yourself using:
+   (currently 600) when compiled with Clang.  To experiment with this in your
+   own code, you can use the following:
 
 .. code-block:: cmake
 
+    # If using CMake >= 2.8.12:
+    # We recommend you use target_compile_options() to add the inlining flags
+    # to specific targets for fine grained control:
+    #
+    # Use a larger inlining threshold for Clang, since it can hobble Eigen,
+    # resulting in reduced performance. The -Qunused-arguments is needed because
+    # CMake passes the inline threshold to the linker and clang complains about
+    # it (and dies, if compiling with -Werror).
+    target_compile_options(<YOUR_TARGET_NAME> PUBLIC
+      $<$<CXX_COMPILER_ID:Clang>:-Qunused-arguments -mllvm -inline-threshold=600>)
+
+.. code-block:: cmake
+
+    # If using CMake < 2.8.12:
+    # On CMake < 2.8.12 target_compile_options() is not available, so you
+    # cannot add the flags only on a per-target level and must instead set them
+    # for all targets declared after the flags are updated:
+    #
     # Use a larger inlining threshold for Clang, since it can hobble Eigen,
     # resulting in reduced performance. The -Qunused-arguments is needed because
     # CMake passes the inline threshold to the linker and clang complains about
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
index 49f4de3..55643de 100644
--- a/internal/ceres/CMakeLists.txt
+++ b/internal/ceres/CMakeLists.txt
@@ -209,13 +209,6 @@
       "compiler requires -std=c++11. The client is responsible for adding "
       "-std=c++11 when using Ceres.")
   endif()
-
-  message("-- Warning: Detected CMake version: ${CMAKE_VERSION} < 2.8.12, "
-    "which is the minimum required for compile options to be included in an "
-    "exported CMake target, and the detected compiler is Clang. Cannot add "
-    "increased -inline-threshold compile flag to exported Ceres target, but "
-    "this is recommended to improve Eigen's performance on Clang. You will "
-    "have to add this manually to targets using Ceres if desired.")
 else()
   # CMake version >= 2.8.12 supports target_compile_options().
   if (CXX11 AND COMPILER_HAS_CXX11_FLAG)
@@ -228,30 +221,6 @@
     target_compile_options(ceres PUBLIC
       $<$<NOT:$<STREQUAL:$<TARGET_PROPERTY:LINKER_LANGUAGE>,C>>:-std=c++11>)
   endif()
-
-  # Export the use of a larger inlining threshold for Clang into the
-  # exported Ceres target.  The default setting for Clang hobbles Eigen and
-  # increasing this can result in very significant performance improvements,
-  # particularly in auto-diffed CostFunctions.  Exporting this setting into
-  # the Ceres target means any user code linking against Ceres (via CMake)
-  # will use it.  The -Qunused-arguments is needed because CMake passes the
-  # inline threshold to the linker and clang complains about it and dies.
-  #
-  # We use a generator expression such that irrespective of whether Ceres was
-  # compiled using Clang, if user code using Ceres is compiled with Clang
-  # it will still inherit the flags (e.g. if Ceres compiled with GCC to get
-  # OpenMP, but user code compiled with Clang).
-  #
-  # We use INTERFACE (not PUBLIC) here, and add the same flags to
-  # CMAKE_CXX_FLAGS in the root Ceres CMakeLists such that even if
-  # CMake < 2.8.12 is being used to compile Ceres with Clang, we will compile
-  # Ceres, and all of the examples with the increased inline threshold.
-  message("-- Adding compile flags to increase inline threshold to exported "
-    "Ceres CMake target (improves Eigen performance). These will *only* be "
-    "used if Clang is used to compile client code linking against Ceres (using "
-    "CMake). They are not required, and will not be used, for GCC or MSVC.")
-  target_compile_options(ceres INTERFACE
-    $<$<CXX_COMPILER_ID:Clang>:-Qunused-arguments -mllvm -inline-threshold=600>)
 endif()
 
 if (BUILD_SHARED_LIBS)