[Cmake-commits] CMake branch, next, updated. v3.0.0-rc2-1316-g5dd58ca

Stephen Kelly steveire at gmail.com
Thu Mar 20 16:50:11 EDT 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  5dd58cad575785c0ae662796d1a6dfc4c320a11a (commit)
       via  08ae778bf99ca62426159458f80705dbf401652e (commit)
      from  5b45b017c10c8e72eb996e836fdad12e438e1679 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5dd58cad575785c0ae662796d1a6dfc4c320a11a
commit 5dd58cad575785c0ae662796d1a6dfc4c320a11a
Merge: 5b45b01 08ae778
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Mar 20 16:50:08 2014 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Mar 20 16:50:08 2014 -0400

    Merge topic 'target_compile_features' into next
    
    08ae778b Revert topic

diff --cc Source/cmGeneratorExpression.h
index cc46732,5b97e8b..da64515
--- a/Source/cmGeneratorExpression.h
+++ b/Source/cmGeneratorExpression.h
@@@ -137,10 -131,8 +134,9 @@@ private
    mutable std::set<cmTarget*> DependTargets;
    mutable std::set<cmTarget const*> AllTargetsSeen;
    mutable std::set<std::string> SeenTargetProperties;
-   mutable std::set<std::string> SeenCompileNonFeatures;
    mutable std::string Output;
    mutable bool HadContextSensitiveCondition;
 +  bool EvaluateForBuildsystem;
  };
  
  #endif
diff --cc Source/cmTarget.cxx
index 3ad6c43,17c8a4d..aeb477d
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@@ -149,9 -149,7 +149,8 @@@ public
    };
    std::vector<TargetPropertyEntry*> IncludeDirectoriesEntries;
    std::vector<TargetPropertyEntry*> CompileOptionsEntries;
-   std::vector<TargetPropertyEntry*> CompileFeaturesEntries;
    std::vector<TargetPropertyEntry*> CompileDefinitionsEntries;
 +  std::vector<TargetPropertyEntry*> SourceEntries;
    std::vector<cmValueWithOrigin> LinkImplementationPropertyEntries;
  
    mutable std::map<std::string, std::vector<TargetPropertyEntry*> >
@@@ -6761,9 -6394,7 +6582,8 @@@ cmTargetInternalPointer::~cmTargetInter
  {
    deleteAndClear(this->Pointer->IncludeDirectoriesEntries);
    deleteAndClear(this->Pointer->CompileOptionsEntries);
-   deleteAndClear(this->Pointer->CompileFeaturesEntries);
    deleteAndClear(this->Pointer->CompileDefinitionsEntries);
 +  deleteAndClear(this->Pointer->SourceEntries);
    delete this->Pointer;
  }
  
diff --cc Tests/RunCMake/CMakeLists.txt
index 853a870,f9d590a..31e7805
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@@ -49,11 -49,7 +49,8 @@@ add_RunCMake_test(GeneratorToolset
  add_RunCMake_test(TargetPropertyGeneratorExpressions)
  add_RunCMake_test(Languages)
  add_RunCMake_test(ObjectLibrary)
 +add_RunCMake_test(TargetObjects)
  add_RunCMake_test(find_dependency)
- if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
-   add_RunCMake_test(have_feature)
- endif()
  if(NOT WIN32)
    add_RunCMake_test(PositionIndependentCode)
    set(SKIP_VISIBILITY 0)

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=08ae778bf99ca62426159458f80705dbf401652e
commit 08ae778bf99ca62426159458f80705dbf401652e
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Mar 20 21:49:01 2014 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Thu Mar 20 21:49:21 2014 +0100

    Revert topic

diff --git a/Help/command/target_compile_features.rst b/Help/command/target_compile_features.rst
deleted file mode 100644
index 5e9b1b2..0000000
--- a/Help/command/target_compile_features.rst
+++ /dev/null
@@ -1,31 +0,0 @@
-target_compile_features
------------------------
-
-Add expected compiler features to a target.
-
-::
-
-  target_compile_features(<target> <PRIVATE|PUBLIC|INTERFACE> <feature> [...])
-
-Specify compiler features required when compiling a given target.  If the
-feature is not listed in the :variable:`CMAKE_CXX_COMPILE_FEATURES` variable,
-then an error will be reported by CMake.  If the use of the feature requires
-an additional compiler flag, such as ``-std=c++11``, the flag will be added
-automatically.
-
-The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
-specify the scope of the features.  ``PRIVATE`` and ``PUBLIC`` items will
-populate the :prop_tgt:`COMPILE_FEATURES` property of ``<target>``.
-``PUBLIC`` and ``INTERFACE`` items will populate the
-:prop_tgt:`INTERFACE_COMPILE_FEATURES` property of ``<target>``.  Repeated
-calls for the same ``<target>`` append items.
-
-The named ``<target>`` must have been created by a command such as
-:command:`add_executable` or :command:`add_library` and must not be
-an ``IMPORTED`` target.
-
-Arguments to ``target_compile_features`` may use "generator expressions"
-with the syntax ``$<...>``.
-See the :manual:`cmake-generator-expressions(7)` manual for available
-expressions.  See the :manual:`cmake-compile-features(7)` manual for
-information on required and optional compile features.
diff --git a/Help/index.rst b/Help/index.rst
index 2d3f156..a4abfbf 100644
--- a/Help/index.rst
+++ b/Help/index.rst
@@ -27,7 +27,6 @@ Reference Manuals
 
    /manual/cmake-buildsystem.7
    /manual/cmake-commands.7
-   /manual/cmake-compile-features.7
    /manual/cmake-developer.7
    /manual/cmake-generator-expressions.7
    /manual/cmake-generators.7
diff --git a/Help/manual/cmake-commands.7.rst b/Help/manual/cmake-commands.7.rst
index 1294873..fb0d2b5 100644
--- a/Help/manual/cmake-commands.7.rst
+++ b/Help/manual/cmake-commands.7.rst
@@ -91,7 +91,6 @@ These commands may be used freely in CMake projects.
    /command/source_group
    /command/string
    /command/target_compile_definitions
-   /command/target_compile_features
    /command/target_compile_options
    /command/target_include_directories
    /command/target_link_libraries
diff --git a/Help/manual/cmake-compile-features.7.rst b/Help/manual/cmake-compile-features.7.rst
deleted file mode 100644
index c947cb5..0000000
--- a/Help/manual/cmake-compile-features.7.rst
+++ /dev/null
@@ -1,344 +0,0 @@
-.. cmake-manual-description: CMake Compile Features Reference
-
-cmake-compile-features(7)
-*************************
-
-.. only:: html or latex
-
-   .. contents::
-
-Introduction
-============
-
-Project source code may depend on, or be conditional on, the availability
-of certain features of the compiler.  There are three use-cases which arise:
-`Compile Feature Requirements`_, `Optional Compile Features`_
-and `Conditional Compilation Options`_.
-
-While features are typically specified in programming language standards,
-CMake provides a primary user interface based on handling the features,
-not the language standard that introduced the feature.
-
-The :variable:`CMAKE_CXX_KNOWN_FEATURES` variable contains all the features
-known to CMake, regardless of compiler support for the feature.  The
-:variable:`CMAKE_CXX_COMPILE_FEATURES` variable contains all features
-known to the compiler, regardless of language standard or compile flags
-needed to use them.
-
-Features known to CMake are named mostly following the same convention
-as the clang feature test macros.  The are some execptions, such as
-CMake using ``cxx_final`` and ``cxx_override`` instead of the single
-``cxx_override_control`` used by clang.  Compiler-specific extensions
-are named with a prefix denoting the id of the compiler, such as
-``gnuxx_typeof`` and ``msvcxx_sealed``.
-
-Compile Feature Requirements
-============================
-
-Compile feature requirements may be specified with the
-:command:`target_compile_features` command.  For example, if a target must
-be compiled with compiler support for the
-:variable:`cxx_constexpr <CMAKE_CXX_KNOWN_FEATURES>` feature:
-
-.. code-block:: cmake
-
-  add_library(mylib requires_constexpr.cpp)
-  target_compile_features(mylib PRIVATE cxx_constexpr)
-
-In processing the requirement for the ``cxx_constexpr`` feature,
-:manual:`cmake(1)` will ensure that the in-use C++ compiler is capable
-of the feature, and will add any necessary flags such as ``-std=c++11``
-to the compile lines of C++ files in the ``mylib`` target.  A
-``FATAL_ERROR`` is issued if the compiler is not capable of the
-feature.
-
-The exact compile flags and language standard are deliberately not part
-of the user interface for this use-case.  CMake will compute the
-appropriate compile flags to use by considering the features specified
-for each target.  For example, a target may require the ``cxx_constexpr``
-feature, and CMake will add the ``-std=c++11`` flag if using GNU. A
-target may require the ``gnuxx_typeof`` feature, a GNU extension
-which requires the ``-std=gnu++98`` flag. If the target additionally
-requires the ``cxx_constexpr`` feature, then the ``-std=gnu++11`` flag
-will be used instead of ``-std=c++11`` for that compiler.
-
-Such compile flags are added even if the compiler supports the
-particular feature without the flag. For example, the GNU compiler
-supports variadic templates (with a warning) even if ``-std=c++98`` is
-used.  CMake adds the ``-std=c++11`` flag if ``cxx_variadic_templates``
-is specified as a requirement.
-
-In the above example, ``mylib`` requires ``cxx_constexpr`` when it
-is built itself, but consumers of ``mylib`` are not required to use a
-compiler which supports ``cxx_constexpr``.  If the interface of
-``mylib`` does require the ``cxx_constexpr`` feature (or any other
-known feature), that may be specified with the ``PUBLIC`` or
-``INTERFACE`` signatures of :command:`target_compile_features`:
-
-.. code-block:: cmake
-
-  add_library(mylib requires_constexpr.cpp)
-  target_compile_features(mylib PUBLIC cxx_constexpr)
-
-  # main.cpp will be compiled with -std=c++11 on GNU for cxx_constexpr.
-  add_executable(myexe main.cpp)
-  target_link_libraries(myexe mylib)
-
-  # gnu_main.cpp will be compiled with -std=gnu++11 on GNU
-  # for cxx_constexpr and gnuxx_typeof combined.
-  add_executable(myextenstion_exe gnu_main.cpp)
-  target_link_libraries(myextenstion_exe mylib)
-  target_compile_features(myextenstion_exe PRIVATE gnuxx_typeof)
-
-Feature requirements are evaluated transitively by consuming the link
-implementation.  See :manual:`cmake-buildsystem(7)` for more on
-transitive behavior of build properties.
-
-Note that new use of compile feature requirements may expose
-cross-platform bugs in user code.  For example, the GNU compiler uses the
-``gnu++98`` language by default as of GCC version 4.8.  User code may
-be relying on that and expecting the ``typeof`` extension to work.
-However, if the :command:`target_compile_features` command is used to
-specify the requirement for ``cxx_constexpr``, a ``-std=c++11`` flag may
-be added, and the ``typeof`` extension would no longer be available. The
-solution is to specify extensions which are relied upon when starting to
-use the :command:`target_compile_features` command and, in this case,
-specify the ``gnuxx_typeof`` feature too.
-
-If the compiler in use is newer than the :manual:`cmake(1)` in use, the
-compiler may support features which are not recorded as supported by
-CMake.  In such cases, if the version of CMake generally
-:variable:`supports <CMAKE_CXX_KNOWN_FEATURES>`, the feature, it is
-possible to extend the :variable:`CMAKE_CXX_COMPILE_FEATURES` variable
-to allow use of the compiler feature. For example:
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION 3.2)
-
-  if (NOT MSVC_VERSION VERSION_LESS 1900
-      # CMake 3.3 records support for this feature. Add it temporarily
-      # as a workaround here.
-      AND CMAKE_VERSION VERSION_LESS 3.3)
-    list(APPEND CMAKE_CXX_COMPILE_FEATURES cxx_some_known_feature)
-  endif()
-
-  add_library(some_lib some_lib.cpp)
-  target_compile_features(some_lib PRIVATE
-    cxx_some_known_feature) # No error with MSVC 1900 and CMake 3.2.
-
-
-Optional Compile Features
-=========================
-
-Compile features may be preferred if available, without creating a hard
-requirement.  For example, a library may provides alternative
-implementations depending on whether the ``cxx_variadic_templates``
-feature is available:
-
-.. code-block:: c++
-
-  #if Foo_COMPILER_CXX_VARIADIC_TEMPLATES
-  template<int I, int... Is>
-  struct Interface;
-
-  template<int I>
-  struct Interface<I>
-  {
-    static int accumulate()
-    {
-      return I;
-    }
-  };
-
-  template<int I, int... Is>
-  struct Interface
-  {
-    static int accumulate()
-    {
-      return I + Interface<Is...>::accumulate();
-    }
-  };
-  #else
-  template<int I1, int I2 = 0, int I3 = 0, int I4 = 0>
-  struct Interface
-  {
-    static int accumulate() { return I1 + I2 + I3 + I4; }
-  };
-  #endif
-
-Such an interface depends on using the correct preprocessor defines for the
-compiler features.  CMake can generate a header file containing such
-defines using the :module:`WriteCompilerDetectionHeader` module.  The
-module contains the ``write_compiler_detection_header`` function which
-accepts parameters to control the content of the generated header file:
-
-.. code-block:: cmake
-
-  write_compiler_detection_header(
-    FILE "${CMAKE_CURRENT_BINARY_DIR}/foo_compiler_detection.h"
-    PREFIX Foo
-    COMPILERS GNU Clang MSVC
-    FEATURES
-      cxx_variadic_templates
-  )
-
-Such a header file may be used internally in the source code of a project,
-and it may be installed and used in the interface of library code.
-
-For each feature listed in ``FEATURES``, a preprocessor definition
-matching ``${PREFIX}_COMPILER_${FEATURE_NAME_UPPER}`` is created in the
-header file, and defined to either ``1`` or ``0``.
-
-Additionally, some features call for additional defines, such as the
-``cxx_final`` and ``cxx_override`` features. Rather than being used in
-``#ifdef`` code, the ``final`` keyword should be abstracted by a symbol
-which is defined to either ``final``, a compiler-specific equivalent, or
-to empty.  That way, C++ code can be written to unconditionally use the
-symbol, and compiler support determines what it is expanded to:
-
-.. code-block:: c++
-
-  struct Interface {
-    virtual void Execute() = 0;
-  };
-
-  struct Concrete Foo_DECL_CXX_FINAL {
-    void Execute() Foo_DECL_CXX_OVERRIDE;
-  };
-
-In this case, ``Foo_DECL_CXX_FINAL`` will expand to ``final`` if the
-compiler supports the keyword, or to ``sealed`` if certain versions
-of ``MSVC`` are used which do not support ``final``, but use ``sealed``
-in the same position and with the same meaning, or to empty otherwise.
-
-Such symbol definitions match the
-pattern ``${PREFIX}_DECL_${FEATURE_NAME_UPPER}``.
-
-In this use-case, the CMake code will wish to enable a particular language
-standard if available from the compiler. The :prop_tgt:`CXX_STANDARD`
-target property variable may be set to the desired language standard
-for a particular target, and the :variable:`CMAKE_CXX_STANDARD` may be
-set to influence all following targets:
-
-.. code-block:: cmake
-
-  write_compiler_detection_header(
-    FILE "${CMAKE_CURRENT_BINARY_DIR}/foo_compiler_detection.h"
-    PREFIX Foo
-    COMPILERS GNU Clang MSVC
-    FEATURES
-      cxx_final cxx_override
-  )
-
-  # Includes foo_compiler_detection.h and uses the Foo_DECL_CXX_FINAL symbol
-  # which will expand to 'final' if the compiler supports the requested
-  # CXX_STANDARD.
-  add_library(foo foo.cpp)
-  set_property(TARGET foo PROPERTY CXX_STANDARD 11)
-
-  # Includes foo_compiler_detection.h and uses the Foo_DECL_CXX_FINAL symbol
-  # which will expand to 'final' if the compiler supports the feature,
-  # even though CXX_STANDARD is not set explicitly. The requirement of
-  # cxx_constexpr causes CMake to set CXX_STANDARD internally, which
-  # affects the compile flags.
-  add_library(foo_impl foo_impl.cpp)
-  target_compile_features(foo_impl PRIVATE cxx_constexpr)
-
-The ``write_compiler_detection_header`` function also creates compatibility
-code for other features which have standard equivalents.  For example, the
-``cxx_static_assert`` feature is emulated with a template and abstracted
-via the ``${PREFIX}_STATIC_ASSERT`` and ``${PREFIX}_STATIC_ASSERT_MSG``
-function-macros.
-
-Conditional Compilation Options
-===============================
-
-Libraries may provide entirely different header files depending on
-requested compiler features.
-
-For example, a header at ``with_variadics/interface.h`` may contain:
-
-.. code-block:: c++
-
-  template<int I, int... Is>
-  struct Interface;
-
-  template<int I>
-  struct Interface<I>
-  {
-    static int accumulate()
-    {
-      return I;
-    }
-  };
-
-  template<int I, int... Is>
-  struct Interface
-  {
-    static int accumulate()
-    {
-      return I + Interface<Is...>::accumulate();
-    }
-  };
-
-while a header at ``no_variadics/interface.h`` may contain:
-
-.. code-block:: c++
-
-  template<int I1, int I2 = 0, int I3 = 0, int I4 = 0>
-  struct Interface
-  {
-    static int accumulate() { return I1 + I2 + I3 + I4; }
-  };
-
-It would be possible to write a abstraction ``interface.h`` header
-containing something like:
-
-.. code-block:: c++
-
-  #include "foo_compiler_detection.h"
-  #if Foo_COMPILER_CXX_VARIADIC_TEMPLATES
-  #include "with_variadics/interface.h"
-  #else
-  #include "no_variadics/interface.h"
-  #endif
-
-However this could be unmaintainable if there are many files to
-abstract. What is needed is to use alternative include directories
-depending on the compiler capabilities.
-
-CMake provides a ``HAVE_COMPILE_FEATURE``
-:manual:`generator expression <cmake-generator-expressions(7)>` to implement
-such conditions.  This may be used with the
-:command:`target_include_directories`, or :command:`target_link_libraries`
-to set the appropriate :manual:`buildsystem <cmake-buildsystem(7)>`
-properties:
-
-.. code-block:: cmake
-
-  add_library(with_variadics INTERFACE)
-  target_include_directories(with_variadics
-    INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/with_variadics")
-
-  add_library(no_variadics INTERFACE)
-  target_include_directories(no_variadics
-    INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/no_variadics")
-
-  add_library(foo INTERFACE)
-  target_link_libraries(foo
-    INTERFACE
-      $<$<HAVE_COMPILER_FEATURE:cxx_variadic_templates>:have_variadics>
-      $<$<NOT:$<HAVE_COMPILER_FEATURE:cxx_variadic_templates>>:no_variadics>)
-
-Consuming code then simply links to the ``foo`` target as usual and uses
-the feature-appropriate include directory
-
-.. code-block:: cmake
-
-  add_executable(consumer_with consumer_with.cpp)
-  target_link_libraries(consumer_with foo)
-  set_property(TARGET consumer_with CXX_STANDARD 11)
-
-  add_executable(consumer_no consumer_no.cpp)
-  target_link_libraries(consumer_no foo)
diff --git a/Help/manual/cmake-developer.7.rst b/Help/manual/cmake-developer.7.rst
index bed7741..d025d63 100644
--- a/Help/manual/cmake-developer.7.rst
+++ b/Help/manual/cmake-developer.7.rst
@@ -197,33 +197,6 @@ Templates
 Some template code is permitted, but with some limitations. Member templates
 may not be used, and template friends may not be used.
 
-Adding Compile Features
-=======================
-
-CMake reports an error if a compiler whose features are known does not report
-support for a particular requested feature.  A compiler is considered to have
-known features if it reports support for at least one feature.
-
-When adding a new compile feature to CMake, it is therefore necessary to list
-support for the feature for all CompilerIds which already have one or more
-feature supported, if the new feature is available for any version of the
-compiler.
-
-When adding the first supported feature to a particular CompilerId, it is
-necessary to list support for all features
-:variable:`known to cmake <CMAKE_CXX_COMPILE_FEATURES>`, where available for
-the compiler.
-
-When a new version of a known compiler is made available, and there are
-already known features for that compiler, the feature should be listed as
-supported in CMake as soon as reasonably possible.  The feature should only
-be supported after the final release of the new version of the compiler.
-
-Standard-specific variables such ``CMAKE_CXX98_COMPILE_FEATURES`` are
-deliberately not documented.  They only exist for the compiler-specific
-implementation of adding the ``-std`` compile flag for compilers
-which need that.
-
 Help
 ====
 
diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst
index fa26e8f..ac8c3f8 100644
--- a/Help/manual/cmake-generator-expressions.7.rst
+++ b/Help/manual/cmake-generator-expressions.7.rst
@@ -83,9 +83,6 @@ otherwise expands to nothing.
   else ``0``.  If the policy was not set, the warning message for the policy
   will be emitted. This generator expression only works for a subset of
   policies.
-``$<HAVE_COMPILE_FEATURE:feature>``
-  ``1`` if the relevant compiler supports the ``feature``
-  :manual:`compile feature <cmake-compile-features(7)>` , otherwise ``0``.
 
 Informational Expressions
 =========================
diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst
index ecc9cc4..2bbe622 100644
--- a/Help/manual/cmake-modules.7.rst
+++ b/Help/manual/cmake-modules.7.rst
@@ -232,4 +232,3 @@ All Modules
    /module/UsewxWidgets
    /module/Use_wxWindows
    /module/WriteBasicConfigVersionFile
-   /module/WriteCompilerDetectionHeader
diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst
index a6f1ed0..6ea5839 100644
--- a/Help/manual/cmake-properties.7.rst
+++ b/Help/manual/cmake-properties.7.rst
@@ -98,7 +98,6 @@ Properties on Targets
    /prop_tgt/COMPATIBLE_INTERFACE_STRING
    /prop_tgt/COMPILE_DEFINITIONS_CONFIG
    /prop_tgt/COMPILE_DEFINITIONS
-   /prop_tgt/COMPILE_FEATURES
    /prop_tgt/COMPILE_FLAGS
    /prop_tgt/COMPILE_OPTIONS
    /prop_tgt/COMPILE_PDB_NAME
@@ -107,8 +106,6 @@ Properties on Targets
    /prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG
    /prop_tgt/CONFIG_OUTPUT_NAME
    /prop_tgt/CONFIG_POSTFIX
-   /prop_tgt/CXX_STANDARD
-   /prop_tgt/CXX_EXTENSIONS
    /prop_tgt/DEBUG_POSTFIX
    /prop_tgt/DEFINE_SYMBOL
    /prop_tgt/EchoString
@@ -151,7 +148,6 @@ Properties on Targets
    /prop_tgt/INSTALL_RPATH_USE_LINK_PATH
    /prop_tgt/INTERFACE_AUTOUIC_OPTIONS
    /prop_tgt/INTERFACE_COMPILE_DEFINITIONS
-   /prop_tgt/INTERFACE_COMPILE_FEATURES
    /prop_tgt/INTERFACE_COMPILE_OPTIONS
    /prop_tgt/INTERFACE_INCLUDE_DIRECTORIES
    /prop_tgt/INTERFACE_LINK_LIBRARIES
diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst
index dc56331..8b4ce26 100644
--- a/Help/manual/cmake-variables.7.rst
+++ b/Help/manual/cmake-variables.7.rst
@@ -256,9 +256,6 @@ Variables for Languages
    :maxdepth: 1
 
    /variable/CMAKE_COMPILER_IS_GNULANG
-   /variable/CMAKE_CXX_COMPILE_FEATURES
-   /variable/CMAKE_CXX_KNOWN_FEATURES
-   /variable/CMAKE_CXX_STANDARD
    /variable/CMAKE_Fortran_MODDIR_DEFAULT
    /variable/CMAKE_Fortran_MODDIR_FLAG
    /variable/CMAKE_Fortran_MODOUT_FLAG
diff --git a/Help/module/WriteCompilerDetectionHeader.rst b/Help/module/WriteCompilerDetectionHeader.rst
deleted file mode 100644
index 4c81b48..0000000
--- a/Help/module/WriteCompilerDetectionHeader.rst
+++ /dev/null
@@ -1 +0,0 @@
-.. cmake-module:: ../../Modules/WriteCompilerDetectionHeader.cmake
diff --git a/Help/prop_tgt/COMPILE_FEATURES.rst b/Help/prop_tgt/COMPILE_FEATURES.rst
deleted file mode 100644
index dc32825..0000000
--- a/Help/prop_tgt/COMPILE_FEATURES.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-COMPILE_FEATURES
-----------------
-
-Compiler features enabled for this target.
-
-The list of features in this property are a subset of the features listed
-in the :variable:`CMAKE_CXX_COMPILE_FEATURES` variable.
-
-Contents of ``COMPILE_FEATURES`` may use "generator expressions" with the
-syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual for
-available expressions.
diff --git a/Help/prop_tgt/CXX_EXTENSIONS.rst b/Help/prop_tgt/CXX_EXTENSIONS.rst
deleted file mode 100644
index 14e312f..0000000
--- a/Help/prop_tgt/CXX_EXTENSIONS.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CXX_EXTENSIONS
---------------
-
-Boolean specifying whether compiler specific extensions are requested.
-
-This property specifies whether compiler specific extensions should be
-used.  For some compilers, this results in adding a flag such
-as ``-std=gnu++11`` instead of ``-std=c++11`` to the compile line.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-required and optional compile features.
diff --git a/Help/prop_tgt/CXX_STANDARD.rst b/Help/prop_tgt/CXX_STANDARD.rst
deleted file mode 100644
index 719c60d..0000000
--- a/Help/prop_tgt/CXX_STANDARD.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-CXX_STANDARD
-------------
-
-The C++ standard whose features are required to build this target.
-
-This property specifies the C++ standard whose features are required
-to build this target.  For some compilers, this results in adding a
-flag such as ``-std=c++11`` to the compile line.
-
-Supported values are ``98`` and ``11``.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-required and optional compile features.
-
-This property is initialized by the value of
-the :variable:`CMAKE_CXX_STANDARD` variable if it is set when a target
-is created.
diff --git a/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst b/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst
deleted file mode 100644
index 2290a27..0000000
--- a/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-INTERFACE_COMPILE_FEATURES
---------------------------
-
-List of public compile requirements for a library.
-
-Targets may populate this property to publish the compiler features
-required to compile against the headers for the target.  Consuming
-targets can add entries to their own :prop_tgt:`COMPILE_FEATURES`
-property such as ``$<TARGET_PROPERTY:foo,INTERFACE_COMPILE_FEATURES>``
-to require the features specified in the interface of ``foo``.
-
-Contents of ``INTERFACE_COMPILE_FEATURES`` may use "generator expressions"
-with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the
-:manual:`cmake-compile-features(7)` manual for information on required and
-optional compile features.
diff --git a/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst b/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst
deleted file mode 100644
index 15ace87..0000000
--- a/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-CMAKE_CXX_COMPILE_FEATURES
---------------------------
-
-List of features known to the C++ compiler
-
-These features are known to be available for use with the C++ compiler. This
-list is a subset of the features listed in the :variable:`CMAKE_CXX_KNOWN_FEATURES`
-variable.
-
-The features listed here may be used with the :command:`target_compile_features`
-command.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-required and optional compile features.
diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
deleted file mode 100644
index 34a1aad..0000000
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ /dev/null
@@ -1,54 +0,0 @@
-CMAKE_CXX_KNOWN_FEATURES
-------------------------
-
-List of C++ features known to this version of CMake.
-
-The features listed in this variable may be known to be available to the
-C++ compiler.  If the feature is available with the C++ compiler, it will
-be listed in the :variable:`CMAKE_CXX_COMPILE_FEATURES` variable.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-required and optional compile features.
-
-The features known to this version of CMake are:
-
-``cxx_delegating_constructors``
-  Delegating constructors, as defined in N1986_.
-
-.. _N1986: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
-
-``cxx_variadic_templates``
-  Variadic templates, as defined in N2242_.
-
-.. _N2242: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
-
-``cxx_constexpr``
-  Constant expressions, as defined in N2235_.
-
-.. _N2235: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
-
-``cxx_binary_literals``
-  Binary literals, as defined in N3472_.
-
-.. _N3472: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3472.pdf
-
-``cxx_static_assert``
-  Static assert, as defined in N1720_.
-
-.. _N1720: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
-
-``cxx_final``
-  Override control ``final`` keyword, as defined in N2928_.
-
-.. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
-
-``cxx_override``
-  Override control ``override`` keyword, as defined in N2928_.
-
-.. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
-
-``gnuxx_typeof``
-  The GNU typeof extension.
-
-``msvcxx_sealed``
-  The MSVC sealed extension.
diff --git a/Help/variable/CMAKE_CXX_STANDARD.rst b/Help/variable/CMAKE_CXX_STANDARD.rst
deleted file mode 100644
index 014ad42..0000000
--- a/Help/variable/CMAKE_CXX_STANDARD.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_CXX_STANDARD
-------------------
-
-Default value for ``CXX_STANDARD`` property of targets.
-
-This variable is used to initialize the :prop_tgt:`CXX_STANDARD`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-required and optional compile features.
diff --git a/Help/variable/CMAKE_DEBUG_TARGET_PROPERTIES.rst b/Help/variable/CMAKE_DEBUG_TARGET_PROPERTIES.rst
index 3ec45a4..11aed0c 100644
--- a/Help/variable/CMAKE_DEBUG_TARGET_PROPERTIES.rst
+++ b/Help/variable/CMAKE_DEBUG_TARGET_PROPERTIES.rst
@@ -6,8 +6,7 @@ Enables tracing output for target properties.
 This variable can be populated with a list of properties to generate
 debug output for when evaluating target properties.  Currently it can
 only be used when evaluating the :prop_tgt:`INCLUDE_DIRECTORIES`,
-:prop_tgt:`COMPILE_DEFINITIONS`, :prop_tgt:`COMPILE_OPTIONS`,
-:prop_tgt:`AUTOUIC_OPTIONS`, :prop_tgt:`COMPILE_FEATURES`,
+:prop_tgt:`COMPILE_DEFINITIONS`, :prop_tgt:`COMPILE_OPTIONS`, :prop_tgt:`AUTOUIC_OPTIONS`,
 :prop_tgt:`POSITION_INDEPENDENT_CODE` target properties and any other property
 listed in :prop_tgt:`COMPATIBLE_INTERFACE_STRING` and other ``COMPATIBLE_INTERFACE_``
 properties.  It outputs an origin for each entry in the target property.
diff --git a/Modules/CMakeCXXCompiler.cmake.in b/Modules/CMakeCXXCompiler.cmake.in
index 5dfd0d1..35aa6c4 100644
--- a/Modules/CMakeCXXCompiler.cmake.in
+++ b/Modules/CMakeCXXCompiler.cmake.in
@@ -2,13 +2,6 @@ set(CMAKE_CXX_COMPILER "@CMAKE_CXX_COMPILER@")
 set(CMAKE_CXX_COMPILER_ARG1 "@CMAKE_CXX_COMPILER_ARG1@")
 set(CMAKE_CXX_COMPILER_ID "@CMAKE_CXX_COMPILER_ID@")
 set(CMAKE_CXX_COMPILER_VERSION "@CMAKE_CXX_COMPILER_VERSION@")
-set(CMAKE_CXX_COMPILE_FEATURES "@CMAKE_CXX_COMPILE_FEATURES@")
-set(CMAKE_CXX98_COMPILE_FEATURES "@CMAKE_CXX98_COMPILE_FEATURES@")
-set(CMAKE_CXX98_COMPILE_EXTENSIONS "@CMAKE_CXX98_COMPILE_EXTENSIONS@")
-set(CMAKE_CXX11_COMPILE_FEATURES "@CMAKE_CXX11_COMPILE_FEATURES@")
-set(CMAKE_CXX11_COMPILE_EXTENSIONS "@CMAKE_CXX11_COMPILE_EXTENSIONS@")
-set(CMAKE_CXX_DEFAULT_COMPILE_FEATURES "@CMAKE_CXX_DEFAULT_COMPILE_FEATURES@")
-
 set(CMAKE_CXX_PLATFORM_ID "@CMAKE_CXX_PLATFORM_ID@")
 set(CMAKE_CXX_SIMULATE_ID "@CMAKE_CXX_SIMULATE_ID@")
 set(CMAKE_CXX_SIMULATE_VERSION "@CMAKE_CXX_SIMULATE_VERSION@")
diff --git a/Modules/CMakeDetermineCompileFeatures.cmake b/Modules/CMakeDetermineCompileFeatures.cmake
deleted file mode 100644
index 4595cf7..0000000
--- a/Modules/CMakeDetermineCompileFeatures.cmake
+++ /dev/null
@@ -1,60 +0,0 @@
-
-#=============================================================================
-# Copyright 2013 Stephen Kelly <steveire at gmail.com>
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-function(cmake_determine_compile_features lang)
-
-  if(lang STREQUAL CXX AND COMMAND cmake_record_cxx_compile_features)
-    message(STATUS "Detecting ${lang} compile features")
-
-    set(CMAKE_CXX98_COMPILE_FEATURES)
-    set(CMAKE_CXX98_COMPILE_EXTENSIONS)
-    set(CMAKE_CXX11_COMPILE_FEATURES)
-    set(CMAKE_CXX11_COMPILE_EXTENSIONS)
-
-    include("${CMAKE_ROOT}/Modules/Internal/FeatureTesting.cmake")
-
-    cmake_record_cxx_compile_features()
-
-    if(NOT _result EQUAL 0)
-      message(STATUS "Detecting ${lang} compile features - failed")
-      return()
-    endif()
-
-    string(REPLACE "${CMAKE_CXX98_COMPILE_FEATURES}" "" CMAKE_CXX98_COMPILE_EXTENSIONS "${CMAKE_CXX98_COMPILE_EXTENSIONS}")
-    string(REPLACE "${CMAKE_CXX98_COMPILE_EXTENSIONS}" "" CMAKE_CXX11_COMPILE_EXTENSIONS "${CMAKE_CXX11_COMPILE_EXTENSIONS}")
-    string(REPLACE "${CMAKE_CXX11_COMPILE_FEATURES}" "" CMAKE_CXX11_COMPILE_EXTENSIONS "${CMAKE_CXX11_COMPILE_EXTENSIONS}")
-    string(REPLACE "${CMAKE_CXX98_COMPILE_FEATURES}" "" CMAKE_CXX11_COMPILE_FEATURES "${CMAKE_CXX11_COMPILE_FEATURES}")
-    string(REPLACE "${CMAKE_CXX98_COMPILE_FEATURES}" "" CMAKE_CXX98_COMPILE_EXTENSIONS "${CMAKE_CXX98_COMPILE_EXTENSIONS}")
-
-    if(NOT CMAKE_CXX_COMPILE_FEATURES)
-      set(CMAKE_CXX_COMPILE_FEATURES
-        ${CMAKE_CXX98_COMPILE_FEATURES}
-        ${CMAKE_CXX98_COMPILE_EXTENSIONS}
-        ${CMAKE_CXX11_COMPILE_FEATURES}
-        ${CMAKE_CXX11_COMPILE_EXTENSIONS}
-      )
-    endif()
-
-    set(CMAKE_CXX_COMPILE_FEATURES ${CMAKE_CXX_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_CXX98_COMPILE_FEATURES ${CMAKE_CXX98_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_CXX98_COMPILE_EXTENSIONS ${CMAKE_CXX98_COMPILE_EXTENSIONS} PARENT_SCOPE)
-    set(CMAKE_CXX11_COMPILE_FEATURES ${CMAKE_CXX11_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_CXX11_COMPILE_EXTENSIONS ${CMAKE_CXX11_COMPILE_EXTENSIONS} PARENT_SCOPE)
-
-    set(CMAKE_CXX_DEFAULT_COMPILE_FEATURES ${CMAKE_CXX_DEFAULT_COMPILE_FEATURES} PARENT_SCOPE)
-
-    message(STATUS "Detecting ${lang} compile features - done")
-  endif()
-
-endfunction()
diff --git a/Modules/CMakeTestCXXCompiler.cmake b/Modules/CMakeTestCXXCompiler.cmake
index 81561b2..a06c92a 100644
--- a/Modules/CMakeTestCXXCompiler.cmake
+++ b/Modules/CMakeTestCXXCompiler.cmake
@@ -66,9 +66,6 @@ else()
   # Try to identify the ABI and configure it into CMakeCXXCompiler.cmake
   include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
   CMAKE_DETERMINE_COMPILER_ABI(CXX ${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp)
-  # Try to identify the compiler features
-  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake)
-  CMAKE_DETERMINE_COMPILE_FEATURES(CXX)
 
   # Re-configure to save learned information.
   configure_file(
diff --git a/Modules/Compiler/AppleClang-CXX.cmake b/Modules/Compiler/AppleClang-CXX.cmake
index 0372e18..680f720 100644
--- a/Modules/Compiler/AppleClang-CXX.cmake
+++ b/Modules/Compiler/AppleClang-CXX.cmake
@@ -1,6 +1 @@
-include(Compiler/Clang)
-__compiler_clang(CXX)
-
-if(NOT CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")
-  set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
-endif()
+include(Compiler/Clang-CXX)
diff --git a/Modules/Compiler/Clang-CXX-FeatureTests.cmake b/Modules/Compiler/Clang-CXX-FeatureTests.cmake
deleted file mode 100644
index 487333b..0000000
--- a/Modules/Compiler/Clang-CXX-FeatureTests.cmake
+++ /dev/null
@@ -1,19 +0,0 @@
-
-set(_cmake_compiler_test_macro "defined(__clang__) && !defined(__apple_build_version__)")
-
-set(testable_features
-  cxx_delegating_constructors
-  cxx_variadic_templates
-  cxx_constexpr
-  cxx_static_assert
-)
-foreach(feature ${testable_features})
-  set(_cmake_feature_test_${feature} "__has_extension(${feature})")
-endforeach()
-
-unset(testable_features)
-
-set(_cmake_feature_test_gnuxx_typeof "!defined(__STRICT_ANSI__)")
-set(_cmake_feature_test_cxx_final "__has_extension(cxx_override_control)")
-set(_cmake_feature_test_cxx_override "__has_extension(cxx_override_control)")
-set(_cmake_feature_test_cxx_binary_literals "1")
diff --git a/Modules/Compiler/Clang-CXX.cmake b/Modules/Compiler/Clang-CXX.cmake
index 966bae2..0372e18 100644
--- a/Modules/Compiler/Clang-CXX.cmake
+++ b/Modules/Compiler/Clang-CXX.cmake
@@ -4,45 +4,3 @@ __compiler_clang(CXX)
 if(NOT CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")
   set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
 endif()
-
-cmake_policy(GET CMP0025 appleClangPolicy)
-if(NOT appleClangPolicy STREQUAL NEW)
-  return()
-endif()
-
-if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 2.1)
-  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
-  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
-endif()
-
-if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.1)
-  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
-  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
-elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 2.1)
-  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++0x")
-  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++0x")
-endif()
-
-set(CMAKE_CXX_DEFAULT_COMPILE_FEATURES
-  CMAKE_CXX98_COMPILE_FEATURES
-  CMAKE_CXX98_COMPILE_EXTENSIONS
-)
-
-macro(cmake_record_cxx_compile_features)
-  macro(_get_clang_features std_version list)
-    record_compiler_features(CXX "-std=${std_version}" ${list})
-  endmacro()
-
-  if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 2.1)
-    _get_clang_features(gnu++98 CMAKE_CXX98_COMPILE_EXTENSIONS)
-    _get_clang_features(c++98 CMAKE_CXX98_COMPILE_FEATURES)
-  endif()
-
-  if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.1)
-    _get_clang_features(gnu++11 CMAKE_CXX11_COMPILE_EXTENSIONS)
-    _get_clang_features(c++11 CMAKE_CXX11_COMPILE_FEATURES)
-  elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 2.1)
-    _get_clang_features(gnu++0x CMAKE_CXX11_COMPILE_EXTENSIONS)
-    _get_clang_features(c++0x CMAKE_CXX11_COMPILE_FEATURES)
-  endif()
-endmacro()
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
deleted file mode 100644
index 6e835a8..0000000
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ /dev/null
@@ -1,20 +0,0 @@
-
-set(_cmake_compiler_test_macro "defined(__GNUC__)")
-
-set(_cmake_feature_test_gnuxx_typeof "!defined(__STRICT_ANSI__)")
-
-# For GCC 4.7, we can test the standard __cplusplus macro, ...
-# set(isCxx98Mode "__cplusplus >= 199711L")
-# set(isCxx11Mode "__cplusplus >= 201103L")
-# ... but before GCC 4.7, __cplusplus is always defined to 1, so check
-# the old macro.
-# set(isCxx98Mode "!defined(__GXX_EXPERIMENTAL_CXX0X__)")
-# set(isCxx11Mode "defined(__GXX_EXPERIMENTAL_CXX0X__)")
-
-set(_cmake_feature_test_cxx_delegating_constructors "(__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L")
-set(_cmake_feature_test_cxx_variadic_templates "(__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && defined(__GXX_EXPERIMENTAL_CXX0X__)")
-set(_cmake_feature_test_cxx_static_assert "(__GNUC__ * 100 + __GNUC_MINOR__) >= 403 && defined(__GXX_EXPERIMENTAL_CXX0X__)")
-set(_cmake_feature_test_cxx_final "(__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L")
-set(_cmake_feature_test_cxx_override "(__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L")
-set(_cmake_feature_test_cxx_constexpr "(__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && defined(__GXX_EXPERIMENTAL_CXX0X__)")
-set(_cmake_feature_test_cxx_binary_literals "1")
diff --git a/Modules/Compiler/GNU-CXX.cmake b/Modules/Compiler/GNU-CXX.cmake
index e2aa9f8..33d6093 100644
--- a/Modules/Compiler/GNU-CXX.cmake
+++ b/Modules/Compiler/GNU-CXX.cmake
@@ -10,40 +10,3 @@ else()
     set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
   endif()
 endif()
-
-if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.3)
-  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
-  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
-endif()
-
-if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
-  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
-  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
-elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.3)
-  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++0x")
-  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++0x")
-endif()
-
-set(CMAKE_CXX_DEFAULT_COMPILE_FEATURES
-  CMAKE_CXX98_COMPILE_FEATURES
-  CMAKE_CXX98_COMPILE_EXTENSIONS
-)
-
-macro(cmake_record_cxx_compile_features)
-  macro(_get_gcc_features std_version list)
-    record_compiler_features(CXX "-std=${std_version}" ${list})
-  endmacro()
-
-  if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.3)
-    _get_gcc_features(gnu++98 CMAKE_CXX98_COMPILE_EXTENSIONS)
-    _get_gcc_features(c++98 CMAKE_CXX98_COMPILE_FEATURES)
-  endif()
-
-  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
-    _get_gcc_features(c++11 CMAKE_CXX11_COMPILE_FEATURES)
-    _get_gcc_features(gnu++11 CMAKE_CXX11_COMPILE_EXTENSIONS)
-  elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.3)
-    _get_gcc_features(c++0x CMAKE_CXX11_COMPILE_FEATURES)
-    _get_gcc_features(gnu++0x CMAKE_CXX11_COMPILE_EXTENSIONS)
-  endif()
-endmacro()
diff --git a/Modules/Compiler/MSVC-CXX-FeatureTests.cmake b/Modules/Compiler/MSVC-CXX-FeatureTests.cmake
deleted file mode 100644
index 45c23c9..0000000
--- a/Modules/Compiler/MSVC-CXX-FeatureTests.cmake
+++ /dev/null
@@ -1,15 +0,0 @@
-
-set(_cmake_compiler_test_macro "defined(_MSC_VER)")
-
-set(_cmake_feature_test_cxx_delegating_constructors "_MSC_VER >= 1800")
-set(_cmake_feature_test_cxx_variadic_templates "_MSC_VER >= 1800")
-
-set(_cmake_feature_test_msvcxx_sealed "_MSC_VER >= 1400")
-
-set(_cmake_feature_test_cxx_static_assert "_MSC_VER >= 1600")
-
-set(_cmake_feature_test_cxx_final "_MSC_VER >= 1700")
-set(_cmake_feature_test_cxx_override "_MSC_VER >= 1400")
-
-set(_cmake_symbol_alternative_cxx_final "sealed")
-set(_cmake_symbol_alternative_test_cxx_final "_MSC_VER >= 1400")
diff --git a/Modules/Compiler/QCC-CXX-FeatureTests.cmake b/Modules/Compiler/QCC-CXX-FeatureTests.cmake
deleted file mode 100644
index 23e312c..0000000
--- a/Modules/Compiler/QCC-CXX-FeatureTests.cmake
+++ /dev/null
@@ -1,4 +0,0 @@
-
-include(Compiler/GNU-CXX-FeatureTests)
-
-set(_cmake_compiler_test_macro "defined(__QNXNTO__)")
diff --git a/Modules/Internal/FeatureTesting.cmake b/Modules/Internal/FeatureTesting.cmake
deleted file mode 100644
index 92d262c..0000000
--- a/Modules/Internal/FeatureTesting.cmake
+++ /dev/null
@@ -1,57 +0,0 @@
-
-macro(record_compiler_features lang compile_flags feature_list)
-  include("${CMAKE_ROOT}/Modules/Compiler/${CMAKE_${lang}_COMPILER_ID}-${lang}-FeatureTests.cmake" OPTIONAL)
-
-  string(TOLOWER ${lang} lang_lc)
-  file(REMOVE "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.bin")
-  file(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.${lang_lc}" "
-  extern const char features[] = {\"\"\n")
-  foreach(feature ${CMAKE_${lang}_KNOWN_FEATURES})
-    if (_cmake_feature_test_${feature})
-      if (${_cmake_feature_test_${feature}} STREQUAL 1)
-        set(_feature_condition "\"1\" ")
-      else()
-        set(_feature_condition "#if ${_cmake_feature_test_${feature}}\n\"1\"\n#else\n\"0\"\n#endif\n")
-      endif()
-      file(APPEND "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.${lang_lc}" "\"${lang}_FEATURE:\"\n${_feature_condition}\"${feature}\\n\"\n")
-    endif()
-  endforeach()
-  file(APPEND "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.${lang_lc}"
-    "\n};\n\nint main(int, char **) { return 0; }\n")
-
-  try_compile(CMAKE_${lang}_FEATURE_TEST
-    ${CMAKE_BINARY_DIR} "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.${lang_lc}"
-    COMPILE_DEFINITIONS "${compile_flags}"
-    OUTPUT_VARIABLE _output
-    COPY_FILE "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.bin"
-    COPY_FILE_ERROR _copy_error
-    )
-  if(CMAKE_${lang}_FEATURE_TEST AND NOT _copy_error)
-    set(_result 0)
-  else()
-    set(_result 255)
-  endif()
-  unset(CMAKE_${lang}_FEATURE_TEST CACHE)
-
-  if (_result EQUAL 0)
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-      "\n\nDetecting ${lang} [${compile_flags}] compiler features compiled with the following output:\n${_output}\n\n")
-    if(EXISTS "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.bin")
-      file(STRINGS "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.bin"
-        features REGEX "${lang}_FEATURE:.*")
-      foreach(info ${features})
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-          "    Feature record: ${info}\n")
-        string(REPLACE "${lang}_FEATURE:" "" info ${info})
-        string(SUBSTRING ${info} 0 1 has_feature)
-        if(has_feature)
-          string(REGEX REPLACE "^1" "" feature ${info})
-          list(APPEND ${feature_list} ${feature})
-        endif()
-      endforeach()
-    endif()
-  else()
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "Detecting ${lang} [${compile_flags}] compiler features failed to compile with the following output:\n${_output}\n${_copy_error}\n\n")
-  endif()
-endmacro()
diff --git a/Modules/Platform/Windows-MSVC-CXX.cmake b/Modules/Platform/Windows-MSVC-CXX.cmake
index a61b04a..0e85005 100644
--- a/Modules/Platform/Windows-MSVC-CXX.cmake
+++ b/Modules/Platform/Windows-MSVC-CXX.cmake
@@ -4,11 +4,3 @@ if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0)
   set(_FS_CXX " /FS")
 endif()
 __windows_compiler_msvc(CXX)
-
-set(CMAKE_COMPILER_DEFAULT_FEATURES
-  CMAKE_CXX_COMPILE_FEATURES
-)
-
-macro(cmake_record_cxx_compile_features)
-  record_compiler_features(CXX "" CMAKE_CXX_COMPILE_FEATURES)
-endmacro()
diff --git a/Modules/WriteCompilerDetectionHeader.cmake b/Modules/WriteCompilerDetectionHeader.cmake
deleted file mode 100644
index 7fcd047..0000000
--- a/Modules/WriteCompilerDetectionHeader.cmake
+++ /dev/null
@@ -1,270 +0,0 @@
-#.rst:
-# WriteCompilerDetectionHeader
-# ----------------------------
-#
-# Function for generation of compile feature conditionals
-#
-# This module provides the function write_compiler_detection_header().
-#
-# The ``GENERATE_EXPORT_HEADER`` function can be used to generate a file
-# suitable for preprocessor inclusion which contains macros to be
-# used in source code::
-#
-#    write_compiler_detection_header(
-#              FILE <file>
-#              PREFIX <prefix>
-#              [VERSION <version>]
-#              COMPILERS <compiler> [...]
-#              FEATURES <feature> [...]
-#    )
-#
-# The ``write_compiler_detection_header`` function generates the
-# file ``<file>`` with macros which all have the prefix ``<prefix>``.
-#
-# ``VERSION`` may be used to specify a generation compatibility with older
-# CMake versions.  By default, a file is generated with compatibility with
-# the :variable:`CMAKE_MINIMUM_REQUIRED_VERSION`.  Newer CMake versions may
-# generate additional code, and the ``VERSION`` may be used to maintain
-# compatibility in the generated file while allowing the minimum CMake
-# version of the project to be changed indepenendently.
-#
-# At least one ``<compiler>`` and one ``<feature>`` must be listed.
-#
-# Feature Test Macros
-# ===================
-#
-# For each compiler, a preprocessor test of the compiler version is generated
-# denoting whether the each feature is enabled.  A preprocessor macro
-# matching ``${PREFIX}_COMPILER_${FEATURE_NAME_UPPER}`` is generated to
-# contain the value ``0`` or ``1`` depending on whether the compiler in
-# use supports the feature:
-#
-# .. code-block:: cmake
-#
-#    write_compiler_detection_header(
-#      FILE climbingstats_compiler_detection.h
-#      PREFIX ClimbingStats
-#      COMPILERS GNU Clang MSVC
-#      FEATURES cxx_variadic_templates
-#    )
-#
-# .. code-block:: c++
-#
-#    #if ClimbingStats_COMPILER_CXX_VARIADIC_TEMPLATES
-#    template<typename... T>
-#    void someInterface(T t...) { /* ... */ }
-#    #else
-#    // Compatibility versions
-#    template<typename T1>
-#    void someInterface(T1 t1) { /* ... */ }
-#    template<typename T1, typename T2>
-#    void someInterface(T1 t1, T2 t2) { /* ... */ }
-#    template<typename T1, typename T2, typename T3>
-#    void someInterface(T1 t1, T2 t2, T3 t3) { /* ... */ }
-#    #endif
-#
-# Symbol Macros
-# =============
-#
-# Some additional symbol-defines are created for particular features for
-# use as symbols which are conditionally defined empty. The macros for
-# such symbol defines match ``${PREFIX}_DECL_${FEATURE_NAME_UPPER}``:
-#
-# .. code-block:: c++
-#
-#    class MyClass ClimbingStats_DECL_CXX_FINAL
-#    {
-#        ClimbingStats_DECL_CXX_CONSTEXPR int someInterface() { return 42; }
-#    };
-#
-# The ``ClimbingStats_DECL_CXX_FINAL`` macro will expand to ``final`` if the
-# compiler (and its flags) support the ``cxx_final`` feature, and the
-# ``ClimbingStats_DECL_CXX_CONSTEXPR`` macro will expand to ``constexpr``
-# if ``cxx_constexpr`` is supported.
-#
-# In the case of the ``cxx_final`` feature with a version of MSVC which
-# does not support ``final``, the ``ClimbingStats_DECL_CXX_FINAL`` macro
-# expands to ``sealed`` if using a MSVC version which supports that
-# extension.  The MSVC ``sealed`` keyword is an extension which is
-# supported in the same position and meaning as the standardised ``final``
-# keyword.
-#
-# The following features generate corresponding symbol defines:
-#
-# * ``cxx_final``
-# * ``cxx_override``
-# * ``cxx_constexpr``
-#
-# Compatibility Implemetation Macros
-# ==================================
-#
-# Some features are suitable for wrapping in a macro with a backward
-# compatibility implementation if the compiler does not support the feature.
-#
-# When the ``cxx_static_assert`` feature is not provided by the compiler,
-# a compatibility implementation is available via the
-# ``${PREFIX}_STATIC_ASSERT`` and ``${PREFIX}_STATIC_ASSERT_MSG``
-# function-like macros. The macros expand to ``static_assert`` where that
-# compiler feature is available, and to a compatibility implementation
-# otherwise.
-
-#=============================================================================
-# Copyright 2013 Stephen Kelly <steveire at gmail.com>
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-include(${CMAKE_CURRENT_LIST_DIR}/CMakeParseArguments.cmake)
-
-function(_load_compiler_variables CompilerId lang)
-  include("${CMAKE_ROOT}/Modules/Compiler/${CompilerId}-${lang}-FeatureTests.cmake" OPTIONAL)
-  if (NOT _cmake_compiler_test_macro)
-    message(FATAL_ERROR "Compiler ${CompilerId} does not define _cmake_compiler_test_macro")
-  endif()
-  set(COMPILER_TEST_${CompilerId} "${_cmake_compiler_test_macro}" PARENT_SCOPE)
-  foreach(feature ${ARGN})
-    set(_cmake_feature_test_${CompilerId}_${feature} ${_cmake_feature_test_${feature}} PARENT_SCOPE)
-    if (_cmake_symbol_alternative_${feature})
-      set(_cmake_symbol_alternative_${CompilerId}_${feature} ${_cmake_symbol_alternative_${feature}} PARENT_SCOPE)
-      set(_cmake_symbol_alternative_test_${CompilerId}_${feature} ${_cmake_symbol_alternative_test_${feature}} PARENT_SCOPE)
-    endif()
-  endforeach()
-endfunction()
-
-function(write_compiler_detection_header
-    file_keyword file_arg
-    prefix_keyword prefix_arg
-    )
-  if (NOT file_keyword STREQUAL FILE)
-    message(FATAL_ERROR "Wrong parameters for function.")
-  endif()
-  if (NOT prefix_keyword STREQUAL PREFIX)
-    message(FATAL_ERROR "Wrong parameters for function.")
-  endif()
-  set(options)
-  set(oneValueArgs VERSION)
-  set(multiValueArgs COMPILERS FEATURES)
-  cmake_parse_arguments(_WCD "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-
-  if(NOT _WCD_COMPILERS OR NOT _WCD_FEATURES)
-    message(FATAL_ERROR "Invalid arguments.")
-  endif()
-
-  if(_WCD_UNPARSED_ARGUMENTS)
-    message(FATAL_ERROR "Unparsed arguments: ${_WCD_UNPARSED_ARGUMENTS}")
-  endif()
-
-  if(NOT _WCD_VERSION)
-    set(_WCD_VERSION ${CMAKE_MINIMUM_REQUIRED_VERSION})
-  endif()
-#   if (_WCD_VERSION VERSION_LESS 3.0.0) # Version which introduced this function
-#     message(FATAL_ERROR "VERSION parameter too low.")
-#   endif()
-  cmake_policy(GET CMP0025 setting_25)
-  if(NOT setting_25 STREQUAL NEW)
-    message(FATAL_ERROR "Policy CMP0025 must be NEW to use this function.")
-  endif()
-  cmake_policy(GET CMP0046 setting_46)
-  if(NOT setting_46 STREQUAL NEW)
-    message(FATAL_ERROR "Policy CMP0046 must be NEW to use this function.")
-  endif()
-
-  set(ordered_compilers
-    # Order is relevant here. We need to list the compilers which pretend to
-    # be GNU/MSVC before the actual GNU/MSVC compiler.
-    QCC
-    Clang
-    GNU
-    MSVC
-  )
-  foreach(_comp ${_WCD_COMPILERS})
-    list(FIND ordered_compilers ${_comp} idx)
-    if (idx EQUAL -1)
-      message(FATAL_ERROR "Unsupported compiler ${_comp}.")
-    endif()
-  endforeach()
-
-  file(WRITE ${file_arg} "
-// This is a generated file. Do not edit!
-
-#ifndef ${prefix_arg}_COMPILER_DETECTION_H
-#define ${prefix_arg}_COMPILER_DETECTION_H
-
-#if !defined (__clang__)
-#  define __has_extension(ext) 0
-#endif
-")
-
-  foreach(_lang CXX)
-
-    if(_lang STREQUAL CXX)
-      file(APPEND "${file_arg}" "\n#ifdef __cplusplus\n")
-    endif()
-
-    set(pp_if "if")
-    foreach(ordered_compiler ${ordered_compilers})
-      list(FIND _WCD_COMPILERS ${ordered_compiler} idx)
-      if (NOT idx EQUAL -1)
-        _load_compiler_variables(${ordered_compiler} ${_lang} ${_WCD_FEATURES})
-        file(APPEND "${file_arg}" "\n#  ${pp_if} ${COMPILER_TEST_${ordered_compiler}}\n")
-        set(pp_if "elif")
-        foreach(feature ${_WCD_FEATURES})
-          list(FIND CMAKE_${_lang}_KNOWN_FEATURES ${feature} idx)
-          if (NOT idx EQUAL -1)
-            set(_define_check "\n#    define ${prefix_arg}_${CMAKE_PP_NAME_${feature}} 0\n")
-            if (_cmake_feature_test_${ordered_compiler}_${feature} STREQUAL "1")
-              set(_define_check "\n#    define ${prefix_arg}_${CMAKE_PP_NAME_${feature}} 1\n")
-            elseif (_cmake_feature_test_${ordered_compiler}_${feature})
-              set(_define_check "\n#      define ${prefix_arg}_${CMAKE_PP_NAME_${feature}} 0\n")
-              set(_define_check "\n#    if ${_cmake_feature_test_${ordered_compiler}_${feature}}\n#      define ${prefix_arg}_${CMAKE_PP_NAME_${feature}} 1\n#    else${_define_check}#    endif\n")
-            endif()
-            file(APPEND "${file_arg}" "${_define_check}")
-          endif()
-        endforeach()
-      endif()
-    endforeach()
-    if(pp_if STREQUAL "elif")
-      file(APPEND "${file_arg}" "\n#  else\n")
-      foreach(feature ${_WCD_FEATURES})
-        file(APPEND "${file_arg}" "\n#    define ${prefix_arg}_${CMAKE_PP_NAME_${feature}} 0\n")
-      endforeach()
-      file(APPEND "${file_arg}" "\n#  endif\n\n")
-    endif()
-    foreach(feature ${_WCD_FEATURES})
-      set(def_value ${CMAKE_SYMBOL_DEFINE_${feature}})
-      if (def_value)
-        set(def_name ${prefix_arg}_${CMAKE_PP_DECL_${feature}})
-        foreach(ordered_compiler ${ordered_compilers})
-          if (_cmake_symbol_alternative_test_${ordered_compiler}_${feature})
-            set(alternatives "${alternatives}#  elif ${_cmake_symbol_alternative_test_${ordered_compiler}_${feature}}\n#    define ${def_name} ${_cmake_symbol_alternative_${ordered_compiler}_${feature}}\n")
-          endif()
-        endforeach()
-        file(APPEND "${file_arg}" "#  if ${prefix_arg}_${CMAKE_PP_NAME_${feature}}\n#    define ${def_name} ${def_value}\n${alternatives}#  else\n#    define ${def_name}\n#  endif\n\n")
-      endif()
-    endforeach()
-    foreach(feature ${_WCD_FEATURES})
-      if (feature STREQUAL cxx_static_assert)
-        set(def_name ${prefix_arg}_${CMAKE_PP_NAME_cxx_static_assert})
-        set(def_value "${prefix_arg}_STATIC_ASSERT(X)")
-        set(def_value_msg "${prefix_arg}_STATIC_ASSERT_MSG(X, MSG)")
-        set(static_assert_struct "template<bool> struct ${prefix_arg}StaticAssert;\ntemplate<> struct ${prefix_arg}StaticAssert<true>{};\n")
-        set(def_standard "#    define ${def_value} static_assert(X, #X)\n#    define ${def_value_msg} static_assert(X, MSG)")
-        set(def_alternative "${static_assert_struct}#    define ${def_value} sizeof(CMakeStaticAssert<X>)\n#    define ${def_value_msg} sizeof(CMakeStaticAssert<X>)")
-        file(APPEND "${file_arg}" "#  if ${def_name}\n${def_standard}\n#  else\n${def_alternative}\n#  endif\n\n")
-      endif()
-    endforeach()
-    if(_lang STREQUAL CXX)
-      file(APPEND "${file_arg}" "#endif\n")
-    endif()
-
-  endforeach()
-
-  file(APPEND ${file_arg} "\n#endif\n")
-endfunction()
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
index 2f17355..9fb8d9a 100644
--- a/Source/CMakeLists.txt
+++ b/Source/CMakeLists.txt
@@ -328,7 +328,6 @@ foreach(command_file
     cmSourceGroupCommand
     cmSubdirDependsCommand
     cmTargetCompileDefinitionsCommand
-    cmTargetCompileFeaturesCommand
     cmTargetCompileOptionsCommand
     cmTargetIncludeDirectoriesCommand
     cmUseMangledMesaCommand
diff --git a/Source/cmExportBuildFileGenerator.cxx b/Source/cmExportBuildFileGenerator.cxx
index 6c8ebb6..e79206d 100644
--- a/Source/cmExportBuildFileGenerator.cxx
+++ b/Source/cmExportBuildFileGenerator.cxx
@@ -85,9 +85,6 @@ bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os)
     this->PopulateInterfaceProperty("INTERFACE_AUTOUIC_OPTIONS", te,
                                     cmGeneratorExpression::BuildInterface,
                                     properties, missingTargets);
-    this->PopulateInterfaceProperty("INTERFACE_COMPILE_FEATURES", te,
-                                    cmGeneratorExpression::BuildInterface,
-                                    properties, missingTargets);
     this->PopulateInterfaceProperty("INTERFACE_POSITION_INDEPENDENT_CODE",
                                   te, properties);
     const bool newCMP0022Behavior =
diff --git a/Source/cmExportInstallFileGenerator.cxx b/Source/cmExportInstallFileGenerator.cxx
index 89071c0..a83a228 100644
--- a/Source/cmExportInstallFileGenerator.cxx
+++ b/Source/cmExportInstallFileGenerator.cxx
@@ -149,10 +149,6 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
                                   te,
                                   cmGeneratorExpression::InstallInterface,
                                   properties, missingTargets);
-    this->PopulateInterfaceProperty("INTERFACE_COMPILE_FEATURES",
-                                  te,
-                                  cmGeneratorExpression::InstallInterface,
-                                  properties, missingTargets);
 
     const bool newCMP0022Behavior =
                               te->GetPolicyStatusCMP0022() != cmPolicies::WARN
diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx
index 10bd6b0..e127f3a 100644
--- a/Source/cmGeneratorExpression.cxx
+++ b/Source/cmGeneratorExpression.cxx
@@ -103,12 +103,6 @@ const char *cmCompiledGeneratorExpression::Evaluate(
       {
       this->SeenTargetProperties.insert(*p);
       }
-    for(std::set<std::string>::const_iterator
-          p = context.SeenCompileNonFeatures.begin();
-          p != context.SeenCompileNonFeatures.end(); ++p)
-      {
-      this->SeenCompileNonFeatures.insert(*p);
-      }
     if (context.HadError)
       {
       this->Output = "";
diff --git a/Source/cmGeneratorExpression.h b/Source/cmGeneratorExpression.h
index 6bb1bc6..5b97e8b 100644
--- a/Source/cmGeneratorExpression.h
+++ b/Source/cmGeneratorExpression.h
@@ -95,9 +95,6 @@ public:
   std::set<std::string> const& GetSeenTargetProperties() const
     { return this->SeenTargetProperties; }
 
-  std::set<std::string> const& GetSeenCompileNonFeatures() const
-    { return this->SeenCompileNonFeatures; }
-
   std::set<cmTarget const*> const& GetAllTargetsSeen() const
     { return this->AllTargetsSeen; }
 
@@ -134,7 +131,6 @@ private:
   mutable std::set<cmTarget*> DependTargets;
   mutable std::set<cmTarget const*> AllTargetsSeen;
   mutable std::set<std::string> SeenTargetProperties;
-  mutable std::set<std::string> SeenCompileNonFeatures;
   mutable std::string Output;
   mutable bool HadContextSensitiveCondition;
 };
diff --git a/Source/cmGeneratorExpressionDAGChecker.h b/Source/cmGeneratorExpressionDAGChecker.h
index f4155b3..6cbbd2a 100644
--- a/Source/cmGeneratorExpressionDAGChecker.h
+++ b/Source/cmGeneratorExpressionDAGChecker.h
@@ -25,8 +25,7 @@
   SELECT(F, EvaluatingSystemIncludeDirectories, SYSTEM_INCLUDE_DIRECTORIES) \
   SELECT(F, EvaluatingCompileDefinitions,       COMPILE_DEFINITIONS) \
   SELECT(F, EvaluatingCompileOptions,           COMPILE_OPTIONS) \
-  SELECT(F, EvaluatingAutoUicOptions,           AUTOUIC_OPTIONS) \
-  SELECT(F, EvaluatingCompileFeatures,          COMPILE_FEATURES)
+  SELECT(F, EvaluatingAutoUicOptions,           AUTOUIC_OPTIONS)
 
 #define CM_FOR_EACH_TRANSITIVE_PROPERTY(F) \
   CM_FOR_EACH_TRANSITIVE_PROPERTY_IMPL(F, CM_SELECT_BOTH)
diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index d626445..14b2a1a 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -677,45 +677,6 @@ static const struct LinkOnlyNode : public cmGeneratorExpressionNode
 } linkOnlyNode;
 
 //----------------------------------------------------------------------------
-static const struct HaveFeatureNode : public cmGeneratorExpressionNode
-{
-  HaveFeatureNode() {}
-
-  virtual int NumExpectedParameters() const { return 1; }
-
-  std::string Evaluate(const std::vector<std::string> &parameters,
-                       cmGeneratorExpressionContext *context,
-                       const GeneratorExpressionContent *content,
-                       cmGeneratorExpressionDAGChecker *) const
-  {
-    if (!context->HeadTarget)
-      {
-      reportError(context, content->GetOriginalExpression(),
-          "$<HAVE_COMPILER_FEATURE:feature> may only be used with "
-          "targets.  It may not be used with add_custom_command.");
-      return std::string();
-      }
-
-    bool error = false;
-    const bool result = context->Makefile->HaveFeature(context->HeadTarget,
-                                                  parameters.front(),
-                                                  error);
-    if (error)
-      {
-      reportError(context, content->GetOriginalExpression(),
-          "$<HAVE_COMPILER_FEATURE:feature> used with invalid feature.");
-      return std::string();
-      }
-    context->SeenTargetProperties.insert("COMPILE_FEATURES");
-    if (!result)
-      {
-      context->SeenCompileNonFeatures.insert(parameters.front());
-      }
-    return result ? "1" : "0";
-  }
-} haveFeatureNode;
-
-//----------------------------------------------------------------------------
 static const struct ConfigurationNode : public cmGeneratorExpressionNode
 {
   ConfigurationNode() {}
@@ -1638,7 +1599,6 @@ cmGeneratorExpressionNode* GetNode(const std::string &identifier)
     nodeMap["INSTALL_PREFIX"] = &installPrefixNode;
     nodeMap["JOIN"] = &joinNode;
     nodeMap["LINK_ONLY"] = &linkOnlyNode;
-    nodeMap["HAVE_COMPILER_FEATURE"] = &haveFeatureNode;
     }
   NodeMap::const_iterator i = nodeMap.find(identifier);
   if (i == nodeMap.end())
diff --git a/Source/cmGeneratorExpressionEvaluator.h b/Source/cmGeneratorExpressionEvaluator.h
index 120ebd5..a7099cb 100644
--- a/Source/cmGeneratorExpressionEvaluator.h
+++ b/Source/cmGeneratorExpressionEvaluator.h
@@ -26,7 +26,6 @@ struct cmGeneratorExpressionContext
   std::set<cmTarget*> DependTargets;
   std::set<cmTarget const*> AllTargets;
   std::set<std::string> SeenTargetProperties;
-  std::set<std::string> SeenCompileNonFeatures;
   cmMakefile *Makefile;
   std::string Config;
   cmTarget const* HeadTarget; // The target whose property is being evaluated.
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 09c2193..c63de79 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -1460,14 +1460,6 @@ void cmLocalGenerator::AddCompileOptions(
       this->AppendFlagEscape(flags, *i);
       }
     }
-  std::vector<std::string> features;
-  target->GetCompileFeatures(features, config);
-  for(std::vector<std::string>::const_iterator it = features.begin();
-      it != features.end(); ++it)
-    {
-    this->Makefile->AddRequiredTargetFeature(target, *it);
-    }
-  this->AddCompilerRequirementFlag(flags, target, lang);
 }
 
 //----------------------------------------------------------------------------
@@ -2137,34 +2129,6 @@ void cmLocalGenerator::AddSharedFlags(std::string& flags,
     }
 }
 
-//----------------------------------------------------------------------------
-void cmLocalGenerator::
-AddCompilerRequirementFlag(std::string &flags, cmTarget* target,
-                           const std::string& lang)
-{
-  if (lang.empty())
-    {
-    return;
-    }
-  std::string stdProp = lang + "_STANDARD";
-  const char *standard = target->GetProperty(stdProp);
-  if (!standard)
-    {
-    return;
-    }
-  std::string extProp = lang + "_EXTENSIONS";
-  bool ext = target->GetPropertyAsBool(extProp);
-  std::string type = ext ? "EXTENSION" : "STANDARD";
-
-  std::string compile_option =
-            "CMAKE_" + lang + std::string(standard)
-                     + "_" + type + "_COMPILE_OPTION";
-  if (const char *opt = target->GetMakefile()->GetDefinition(compile_option))
-    {
-    this->AppendFlags(flags, opt);
-    }
-}
-
 static void AddVisibilityCompileOption(std::string &flags, cmTarget* target,
                                        cmLocalGenerator *lg,
                                        const std::string& lang)
diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h
index d876958..61488fe 100644
--- a/Source/cmLocalGenerator.h
+++ b/Source/cmLocalGenerator.h
@@ -149,8 +149,6 @@ public:
                                 const std::string& lang);
   void AddConfigVariableFlags(std::string& flags, const std::string& var,
                               const std::string& config);
-  void AddCompilerRequirementFlag(std::string &flags, cmTarget* target,
-                                  const std::string& lang);
   ///! Append flags to a string.
   virtual void AppendFlags(std::string& flags, const char* newFlags);
   virtual void AppendFlagEscape(std::string& flags,
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 99dc1e7..58625fb 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -41,17 +41,6 @@
 #include <ctype.h> // for isspace
 #include <assert.h>
 
-#define FOR_EACH_CXX_FEATURE(F) \
-  F(cxx_delegating_constructors) \
-  F(cxx_variadic_templates) \
-  F(cxx_constexpr) \
-  F(cxx_binary_literals) \
-  F(cxx_static_assert) \
-  F(cxx_final) \
-  F(cxx_override) \
-  F(gnuxx_typeof) \
-  F(msvcxx_sealed)
-
 class cmMakefile::Internals
 {
 public:
@@ -2454,39 +2443,6 @@ const char* cmMakefile::GetDefinition(const std::string& name) const
     {
     this->Internal->VarUsageStack.top().insert(name);
     }
-  if (name == "CMAKE_CXX_KNOWN_FEATURES")
-    {
-#define STRING_LIST_ELEMENT(F) ";" #F
-    return FOR_EACH_CXX_FEATURE(STRING_LIST_ELEMENT) + 1;
-#undef STRING_LIST_ELEMENT
-    }
-#define PP_FEATURE_NAME(F) \
-  if (name == "CMAKE_PP_NAME_" #F) \
-    { \
-    static std::string val = ("COMPILER_" + cmSystemTools::UpperCase(#F)); \
-    return val.c_str(); \
-    }
-  FOR_EACH_CXX_FEATURE(PP_FEATURE_NAME)
-#undef PP_FEATURE_NAME
-
-#define FOR_EACH_CXX_DECL_FEATURE(F) \
-  F(final) \
-  F(override) \
-  F(constexpr)
-
-#define PP_DECL_NAME(F) \
-  if (name == "CMAKE_PP_DECL_cxx_" #F) \
-    { \
-    static std::string val = ("DECL_CXX_" + cmSystemTools::UpperCase(#F)); \
-    return val.c_str(); \
-    } \
-  if (name == "CMAKE_SYMBOL_DEFINE_cxx_" #F) \
-    { \
-    return #F; \
-    }
-  FOR_EACH_CXX_DECL_FEATURE(PP_DECL_NAME)
-#undef PP_DECL_NAME
-
   const char* def = this->Internal->VarStack.top().Get(name);
   if(!def)
     {
@@ -4498,233 +4454,3 @@ void cmMakefile::RecordPolicies(cmPolicies::PolicyMap& pm)
     pm[pid] = this->GetPolicyStatus(pid);
     }
 }
-
-#define FEATURE_STRING(F) , #F
-
-static const char * const CXX_FEATURES[] = {
-  0
-  FOR_EACH_CXX_FEATURE(FEATURE_STRING)
-};
-
-static const char * const CXX_STANDARDS[] = {
-    "98"
-  , "11"
-};
-
-//----------------------------------------------------------------------------
-bool cmMakefile::
-AddRequiredTargetFeature(cmTarget *target, const std::string& feature) const
-{
-  if (cmGeneratorExpression::Find(feature) != std::string::npos)
-    {
-    target->AppendProperty("COMPILE_FEATURES", feature.c_str());
-    return true;
-    }
-  bool isCxxFeature = std::find_if(cmArrayBegin(CXX_FEATURES) + 1,
-              cmArrayEnd(CXX_FEATURES), cmStrCmp(feature))
-              != cmArrayEnd(CXX_FEATURES);
-  if (!isCxxFeature)
-    {
-    return false;
-    }
-
-  const char* cxxFeaturesKnown =
-    this->GetDefinition("CMAKE_CXX_COMPILE_FEATURES");
-
-  if (!cxxFeaturesKnown || !*cxxFeaturesKnown)
-    {
-    // We know of no features for the compiler at all.
-    return true;
-    }
-
-  std::vector<std::string> availableFeatures;
-  cmSystemTools::ExpandListArgument(cxxFeaturesKnown, availableFeatures);
-  if (std::find(availableFeatures.begin(),
-                availableFeatures.end(),
-                feature) == availableFeatures.end())
-    {
-    cmOStringStream e;
-    e << "The compiler feature \"" << feature
-      << "\" is not known to compiler\n\""
-      << this->GetDefinition("CMAKE_CXX_COMPILER_ID") << "\"\nversion "
-      << this->GetDefinition("CMAKE_CXX_COMPILER_VERSION") << ".";
-    this->IssueMessage(cmake::FATAL_ERROR, e.str());
-    return false;
-    }
-
-  target->AppendProperty("COMPILE_FEATURES", feature.c_str());
-
-  bool needCxx98 = true;
-  bool needCxx11 = false;
-  bool needCxxExt = false;
-
-  if (const char *propCxx98 =
-                        this->GetDefinition("CMAKE_CXX98_COMPILE_FEATURES"))
-    {
-    std::vector<std::string> props;
-    cmSystemTools::ExpandListArgument(propCxx98, props);
-    needCxx98 = std::find(props.begin(), props.end(), feature) != props.end();
-    }
-  if (const char *propCxx11 =
-          this->GetDefinition("CMAKE_CXX11_COMPILE_FEATURES"))
-    {
-    std::vector<std::string> props;
-    cmSystemTools::ExpandListArgument(propCxx11, props);
-    needCxx11 = std::find(props.begin(), props.end(), feature) != props.end();
-    }
-
-  if (const char *propCxx98ext =
-          this->GetDefinition("CMAKE_CXX98_COMPILE_EXTENSIONS"))
-    {
-    std::vector<std::string> props;
-    cmSystemTools::ExpandListArgument(propCxx98ext, props);
-    needCxxExt = std::find(props.begin(), props.end(), feature) != props.end();
-    needCxx98 = needCxx98 || needCxxExt;
-    }
-  if (const char *propCxx11ext =
-          this->GetDefinition("CMAKE_CXX11_COMPILE_EXTENSIONS"))
-    {
-    std::vector<std::string> props;
-    cmSystemTools::ExpandListArgument(propCxx11ext, props);
-    bool needCxx11Ext = std::find(props.begin(), props.end(), feature)
-                      != props.end();
-    needCxx11 = needCxx11 || needCxx11Ext;
-    needCxxExt = needCxxExt || needCxx11Ext;
-    }
-
-  const char *existingCxxStandard = target->GetProperty("CXX_STANDARD");
-  if (existingCxxStandard)
-    {
-    if (std::find_if(cmArrayBegin(CXX_STANDARDS), cmArrayEnd(CXX_STANDARDS),
-                  cmStrCmp(existingCxxStandard)) == cmArrayEnd(CXX_STANDARDS))
-      {
-      cmOStringStream e;
-      e << "The CXX_STANDARD property on target \"" << target->GetName()
-        << "\" contained an invalid value: \"" << existingCxxStandard << "\".";
-      this->IssueMessage(cmake::FATAL_ERROR, e.str());
-      return false;
-      }
-    }
-  const char * const *existingCxxIt = existingCxxStandard
-                                    ? std::find_if(cmArrayBegin(CXX_STANDARDS),
-                                      cmArrayEnd(CXX_STANDARDS),
-                                      cmStrCmp(existingCxxStandard))
-                                    : cmArrayEnd(CXX_STANDARDS);
-
-  bool setCxx11 = needCxx11 && !existingCxxStandard;
-  bool setCxx98 = needCxx98 && !existingCxxStandard;
-
-  if (needCxx11 && existingCxxStandard && existingCxxIt <
-                                    std::find_if(cmArrayBegin(CXX_STANDARDS),
-                                      cmArrayEnd(CXX_STANDARDS),
-                                      cmStrCmp("11")))
-    {
-    setCxx11 = true;
-    }
-  else if(needCxx98 && existingCxxStandard && existingCxxIt <
-                                    std::find_if(cmArrayBegin(CXX_STANDARDS),
-                                      cmArrayEnd(CXX_STANDARDS),
-                                      cmStrCmp("98")))
-    {
-    setCxx98 = true;
-    }
-
-  if (setCxx11)
-    {
-    target->SetProperty("CXX_STANDARD", "11");
-    }
-  else if (setCxx98)
-    {
-    target->SetProperty("CXX_STANDARD", "98");
-    }
-  bool existingCxxExt = target->GetPropertyAsBool("CXX_EXTENSIONS");
-  if (needCxxExt && !existingCxxExt)
-    {
-    target->SetProperty("CXX_EXTENSIONS", "1");
-    }
-  return true;
-}
-
-bool cmMakefile::HaveFeature(cmTarget const* target,
-                             const std::string& feature,
-                             bool &error) const
-{
-  if (cmGeneratorExpression::Find(feature) != std::string::npos)
-    {
-    error = true;
-    return false;
-    }
-  bool isCxxFeature = std::find_if(cmArrayBegin(CXX_FEATURES) + 1,
-              cmArrayEnd(CXX_FEATURES), cmStrCmp(feature))
-              != cmArrayEnd(CXX_FEATURES);
-  if (!isCxxFeature)
-    {
-    error = true;
-    return false;
-    }
-
-  std::vector<std::string> featuresVec;
-  const char *features = 0;
-  const char *stdProp = target->GetProperty("CXX_STANDARD");
-  if(!stdProp)
-    {
-    const char *featureLists =
-                    this->GetDefinition("CMAKE_CXX_DEFAULT_COMPILE_FEATURES");
-    if (!featureLists)
-      {
-      return false;
-      }
-    std::vector<std::string> featuresLists;
-    cmSystemTools::ExpandListArgument(featureLists, featuresLists);
-
-    for(std::vector<std::string>::const_iterator vi = featuresLists.begin();
-        vi != featuresLists.end(); ++vi)
-      {
-      const char* def = this->GetDefinition(*vi);
-      if (!def)
-        {
-        return false;
-        }
-      cmSystemTools::ExpandListArgument(def, featuresVec);
-      }
-    }
-  else if (this->GetDefinition("CMAKE_CXX"
-          + std::string(stdProp) + "_COMPILE_FEATURES"))
-    {
-    const char* const* end = std::find_if(cmArrayBegin(CXX_STANDARDS),
-                                    cmArrayEnd(CXX_STANDARDS),
-                                    cmStrCmp(stdProp));
-    if (end == cmArrayEnd(CXX_STANDARDS))
-      {
-      error = true;
-      return false;
-      }
-    end++;
-    for (const char* const* it = cmArrayBegin(CXX_STANDARDS); it != end; ++it)
-      {
-      features = this->GetDefinition("CMAKE_CXX"
-          + std::string(*it) + "_COMPILE_FEATURES");
-      if (features)
-        {
-        cmSystemTools::ExpandListArgument(features, featuresVec);
-        }
-      if (target->GetPropertyAsBool("CXX_EXTENSIONS"))
-        {
-        features = this->GetDefinition("CMAKE_CXX"
-            + std::string(*it) + "_COMPILE_EXTENSIONS");
-        if (features)
-          {
-          cmSystemTools::ExpandListArgument(features, featuresVec);
-          }
-        }
-      }
-    }
-  else if (this->GetDefinition("CMAKE_CXX_COMPILE_FEATURES"))
-    {
-    features = this->GetDefinition("CMAKE_CXX_COMPILE_FEATURES");
-    cmSystemTools::ExpandListArgument(features, featuresVec);
-    }
-  return std::find(featuresVec.begin(),
-                   featuresVec.end(),
-                   feature) != featuresVec.end();
-}
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index 6e9018d..460a85c 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -880,12 +880,6 @@ public:
   std::set<std::string> const & GetSystemIncludeDirectories() const
     { return this->SystemIncludeDirectories; }
 
-  bool AddRequiredTargetFeature(cmTarget *target,
-                                const std::string& feature) const;
-  bool HaveFeature(cmTarget const* target,
-                   const std::string& feature,
-                   bool &error) const;
-
 protected:
   // add link libraries and directories to the target
   void AddGlobalLinkInformation(const std::string& name, cmTarget& target);
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 51aed5b..17c8a4d 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -149,7 +149,6 @@ public:
   };
   std::vector<TargetPropertyEntry*> IncludeDirectoriesEntries;
   std::vector<TargetPropertyEntry*> CompileOptionsEntries;
-  std::vector<TargetPropertyEntry*> CompileFeaturesEntries;
   std::vector<TargetPropertyEntry*> CompileDefinitionsEntries;
   std::vector<cmValueWithOrigin> LinkImplementationPropertyEntries;
 
@@ -159,13 +158,10 @@ public:
                                 CachedLinkInterfaceCompileOptionsEntries;
   mutable std::map<std::string, std::vector<TargetPropertyEntry*> >
                                 CachedLinkInterfaceCompileDefinitionsEntries;
-  mutable std::map<std::string, std::vector<TargetPropertyEntry*> >
-                                CachedLinkInterfaceCompileFeaturesEntries;
 
   mutable std::map<std::string, bool> CacheLinkInterfaceIncludeDirectoriesDone;
   mutable std::map<std::string, bool> CacheLinkInterfaceCompileDefinitionsDone;
   mutable std::map<std::string, bool> CacheLinkInterfaceCompileOptionsDone;
-  mutable std::map<std::string, bool> CacheLinkInterfaceCompileFeaturesDone;
 };
 
 //----------------------------------------------------------------------------
@@ -200,7 +196,6 @@ cmTargetInternals::~cmTargetInternals()
 {
   deleteAndClear(this->CachedLinkInterfaceIncludeDirectoriesEntries);
   deleteAndClear(this->CachedLinkInterfaceCompileOptionsEntries);
-  deleteAndClear(this->CachedLinkInterfaceCompileFeaturesEntries);
   deleteAndClear(this->CachedLinkInterfaceCompileDefinitionsEntries);
 }
 
@@ -223,7 +218,6 @@ cmTarget::cmTarget()
   this->BuildInterfaceIncludesAppended = false;
   this->DebugIncludesDone = false;
   this->DebugCompileOptionsDone = false;
-  this->DebugCompileFeaturesDone = false;
   this->DebugCompileDefinitionsDone = false;
 }
 
@@ -303,7 +297,6 @@ void cmTarget::SetMakefile(cmMakefile* mf)
     this->SetPropertyDefault("MACOSX_BUNDLE", 0);
     this->SetPropertyDefault("MACOSX_RPATH", 0);
     this->SetPropertyDefault("NO_SYSTEM_FROM_IMPORTED", 0);
-    this->SetPropertyDefault("CXX_STANDARD", 0);
     }
 
   // Collect the set of configuration types.
@@ -793,13 +786,6 @@ void cmTarget::GetDirectLinkLibraries(const std::string& config,
         this->LinkImplicitNullProperties.insert(*it);
         }
       }
-
-    std::set<std::string> seenFeatures = cge->GetSeenCompileNonFeatures();
-    for (std::set<std::string>::const_iterator it = seenFeatures.begin();
-        it != seenFeatures.end(); ++it)
-      {
-      this->LinkImplicitDisabledFeatures.insert(*it);
-      }
     }
 }
 
@@ -1386,17 +1372,6 @@ void cmTarget::SetProperty(const std::string& prop, const char* value)
                           new cmTargetInternals::TargetPropertyEntry(cge));
     return;
     }
-  if(prop == "COMPILE_FEATURES")
-    {
-    cmListFileBacktrace lfbt;
-    this->Makefile->GetBacktrace(lfbt);
-    cmGeneratorExpression ge(lfbt);
-    deleteAndClear(this->Internal->CompileFeaturesEntries);
-    cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(value);
-    this->Internal->CompileFeaturesEntries.push_back(
-                          new cmTargetInternals::TargetPropertyEntry(cge));
-    return;
-    }
   if(prop == "COMPILE_DEFINITIONS")
     {
     cmListFileBacktrace lfbt;
@@ -1467,15 +1442,6 @@ void cmTarget::AppendProperty(const std::string& prop, const char* value,
               new cmTargetInternals::TargetPropertyEntry(ge.Parse(value)));
     return;
     }
-  if(prop == "COMPILE_FEATURES")
-    {
-    cmListFileBacktrace lfbt;
-    this->Makefile->GetBacktrace(lfbt);
-    cmGeneratorExpression ge(lfbt);
-    this->Internal->CompileFeaturesEntries.push_back(
-              new cmTargetInternals::TargetPropertyEntry(ge.Parse(value)));
-    return;
-    }
   if(prop == "COMPILE_DEFINITIONS")
     {
     cmListFileBacktrace lfbt;
@@ -2241,133 +2207,6 @@ void cmTarget::GetCompileDefinitions(std::vector<std::string> &list,
 }
 
 //----------------------------------------------------------------------------
-static void processCompileFeatures(cmTarget const* tgt,
-      const std::vector<cmTargetInternals::TargetPropertyEntry*> &entries,
-      std::vector<std::string> &options,
-      std::set<std::string> &uniqueOptions,
-      cmGeneratorExpressionDAGChecker *dagChecker,
-      const std::string& config, bool debugOptions)
-{
-  processCompileOptionsInternal(tgt, entries, options, uniqueOptions,
-                                dagChecker, config, debugOptions, "features");
-}
-
-//----------------------------------------------------------------------------
-void cmTarget::GetCompileFeatures(std::vector<std::string> &result,
-                                  const std::string& config) const
-{
-  std::set<std::string> uniqueFeatures;
-  cmListFileBacktrace lfbt;
-
-  cmGeneratorExpressionDAGChecker dagChecker(lfbt,
-                                             this->GetName(),
-                                             "COMPILE_FEATURES",
-                                             0, 0);
-
-  std::vector<std::string> debugProperties;
-  const char *debugProp =
-              this->Makefile->GetDefinition("CMAKE_DEBUG_TARGET_PROPERTIES");
-  if (debugProp)
-    {
-    cmSystemTools::ExpandListArgument(debugProp, debugProperties);
-    }
-
-  bool debugFeatures = !this->DebugCompileFeaturesDone
-                    && std::find(debugProperties.begin(),
-                                 debugProperties.end(),
-                                 "COMPILE_FEATURES")
-                        != debugProperties.end();
-
-  if (this->Makefile->IsGeneratingBuildSystem())
-    {
-    this->DebugCompileFeaturesDone = true;
-    }
-
-  processCompileFeatures(this,
-                            this->Internal->CompileFeaturesEntries,
-                            result,
-                            uniqueFeatures,
-                            &dagChecker,
-                            config,
-                            debugFeatures);
-
-  if (!this->Internal->CacheLinkInterfaceCompileFeaturesDone[config])
-    {
-    for (std::vector<cmValueWithOrigin>::const_iterator
-        it = this->Internal->LinkImplementationPropertyEntries.begin(),
-        end = this->Internal->LinkImplementationPropertyEntries.end();
-        it != end; ++it)
-      {
-      if (!cmGeneratorExpression::IsValidTargetName(it->Value)
-          && cmGeneratorExpression::Find(it->Value) == std::string::npos)
-        {
-        continue;
-        }
-      {
-      cmGeneratorExpression ge(lfbt);
-      cmsys::auto_ptr<cmCompiledGeneratorExpression> cge =
-                                                        ge.Parse(it->Value);
-      std::string targetResult = cge->Evaluate(this->Makefile, config,
-                                        false, this, 0, 0);
-      if (!this->Makefile->FindTargetToUse(targetResult))
-        {
-        continue;
-        }
-      }
-      std::string featureGenex = "$<TARGET_PROPERTY:" +
-                              it->Value + ",INTERFACE_COMPILE_FEATURES>";
-      if (cmGeneratorExpression::Find(it->Value) != std::string::npos)
-        {
-        // Because it->Value is a generator expression, ensure that it
-        // evaluates to the non-empty string before being used in the
-        // TARGET_PROPERTY expression.
-        featureGenex = "$<$<BOOL:" + it->Value + ">:" + featureGenex + ">";
-        }
-      cmGeneratorExpression ge(it->Backtrace);
-      cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(
-                                                                featureGenex);
-
-      this->Internal
-        ->CachedLinkInterfaceCompileFeaturesEntries[config].push_back(
-                        new cmTargetInternals::TargetPropertyEntry(cge,
-                                                              it->Value));
-      }
-    }
-
-  processCompileFeatures(this,
-    this->Internal->CachedLinkInterfaceCompileFeaturesEntries[config],
-                            result,
-                            uniqueFeatures,
-                            &dagChecker,
-                            config,
-                            debugFeatures);
-
-  if (!this->Makefile->IsGeneratingBuildSystem())
-    {
-    deleteAndClear(this->Internal->CachedLinkInterfaceCompileFeaturesEntries);
-    }
-  else
-    {
-    this->Internal->CacheLinkInterfaceCompileFeaturesDone[config] = true;
-    for(std::vector<std::string>::const_iterator it = result.begin();
-        it != result.end(); ++it)
-      {
-      if (this->LinkImplicitDisabledFeatures.find(*it)
-          != this->LinkImplicitDisabledFeatures.end())
-        {
-        cmOStringStream e;
-        e << "Target \"" << this->Name << "\" link implementation was "
-          "evaluated with the feature \"" << *it << "\" disabled, but it is "
-          "enabled by the link implementation.  This is not consistent and "
-          "is not allowed.";
-        this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
-        return;
-        }
-      }
-    }
-}
-
-//----------------------------------------------------------------------------
 void cmTarget::MaybeInvalidatePropertyCache(const std::string& prop)
 {
   // Wipe out maps caching information affected by this property.
@@ -2883,24 +2722,6 @@ const char *cmTarget::GetProperty(const std::string& prop,
       }
     return output.c_str();
     }
-  if(prop == "COMPILE_FEATURES")
-    {
-    static std::string output;
-    output = "";
-    std::string sep;
-    typedef cmTargetInternals::TargetPropertyEntry
-                                TargetPropertyEntry;
-    for (std::vector<TargetPropertyEntry*>::const_iterator
-        it = this->Internal->CompileFeaturesEntries.begin(),
-        end = this->Internal->CompileFeaturesEntries.end();
-        it != end; ++it)
-      {
-      output += sep;
-      output += (*it)->ge->GetInput();
-      sep = ";";
-      }
-    return output.c_str();
-    }
   if(prop == "COMPILE_DEFINITIONS")
     {
     static std::string output;
@@ -6573,7 +6394,6 @@ cmTargetInternalPointer::~cmTargetInternalPointer()
 {
   deleteAndClear(this->Pointer->IncludeDirectoriesEntries);
   deleteAndClear(this->Pointer->CompileOptionsEntries);
-  deleteAndClear(this->Pointer->CompileFeaturesEntries);
   deleteAndClear(this->Pointer->CompileDefinitionsEntries);
   delete this->Pointer;
 }
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index b0f968e..3ef853b 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -544,8 +544,6 @@ public:
                          const std::string& config) const;
   void GetAutoUicOptions(std::vector<std::string> &result,
                          const std::string& config) const;
-  void GetCompileFeatures(std::vector<std::string> &result,
-                          const std::string& config) const;
 
   bool IsNullImpliedByLinkLibraries(const std::string &p) const;
   bool IsLinkInterfaceDependentBoolProperty(const std::string &p,
@@ -710,9 +708,7 @@ private:
   mutable std::map<std::string, bool> DebugCompatiblePropertiesDone;
   mutable bool DebugCompileOptionsDone;
   mutable bool DebugCompileDefinitionsDone;
-  mutable bool DebugCompileFeaturesDone;
   mutable std::set<std::string> LinkImplicitNullProperties;
-  mutable std::set<std::string> LinkImplicitDisabledFeatures;
   bool BuildInterfaceIncludesAppended;
 
   // Cache target output paths for each configuration.
diff --git a/Source/cmTargetCompileDefinitionsCommand.cxx b/Source/cmTargetCompileDefinitionsCommand.cxx
index 66d8ad3..b567252 100644
--- a/Source/cmTargetCompileDefinitionsCommand.cxx
+++ b/Source/cmTargetCompileDefinitionsCommand.cxx
@@ -58,10 +58,9 @@ std::string cmTargetCompileDefinitionsCommand
 }
 
 //----------------------------------------------------------------------------
-bool cmTargetCompileDefinitionsCommand
+void cmTargetCompileDefinitionsCommand
 ::HandleDirectContent(cmTarget *tgt, const std::vector<std::string> &content,
                                    bool, bool)
 {
   tgt->AppendProperty("COMPILE_DEFINITIONS", this->Join(content).c_str());
-  return true;
 }
diff --git a/Source/cmTargetCompileDefinitionsCommand.h b/Source/cmTargetCompileDefinitionsCommand.h
index b548c70..5ba9e03 100644
--- a/Source/cmTargetCompileDefinitionsCommand.h
+++ b/Source/cmTargetCompileDefinitionsCommand.h
@@ -44,7 +44,7 @@ private:
   virtual void HandleImportedTarget(const std::string &tgt);
   virtual void HandleMissingTarget(const std::string &name);
 
-  virtual bool HandleDirectContent(cmTarget *tgt,
+  virtual void HandleDirectContent(cmTarget *tgt,
                                    const std::vector<std::string> &content,
                                    bool prepend, bool system);
   virtual std::string Join(const std::vector<std::string> &content);
diff --git a/Source/cmTargetCompileFeaturesCommand.cxx b/Source/cmTargetCompileFeaturesCommand.cxx
deleted file mode 100644
index 2d10e41..0000000
--- a/Source/cmTargetCompileFeaturesCommand.cxx
+++ /dev/null
@@ -1,71 +0,0 @@
-/*============================================================================
-  CMake - Cross Platform Makefile Generator
-  Copyright 2013 Stephen Kelly <steveire at gmail.com>
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
-#include "cmTargetCompileFeaturesCommand.h"
-
-bool cmTargetCompileFeaturesCommand::InitialPass(
-  std::vector<std::string> const& args,
-  cmExecutionStatus &)
-{
-  return this->HandleArguments(args, "COMPILE_FEATURES", NO_FLAGS);
-}
-
-void cmTargetCompileFeaturesCommand
-::HandleImportedTarget(const std::string &tgt)
-{
-  cmOStringStream e;
-  e << "Cannot specify compile features for imported target \""
-    << tgt << "\".";
-  this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
-}
-
-void cmTargetCompileFeaturesCommand
-::HandleMissingTarget(const std::string &name)
-{
-  cmOStringStream e;
-  e << "Cannot specify compile features for target \"" << name << "\" "
-       "which is not built by this project.";
-  this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
-}
-
-//----------------------------------------------------------------------------
-std::string cmTargetCompileFeaturesCommand
-::Join(const std::vector<std::string> &content)
-{
-  std::string defs;
-  std::string sep;
-  for(std::vector<std::string>::const_iterator it = content.begin();
-    it != content.end(); ++it)
-    {
-    defs += sep + *it;
-    sep = ";";
-    }
-  return defs;
-}
-
-//----------------------------------------------------------------------------
-bool cmTargetCompileFeaturesCommand
-::HandleDirectContent(cmTarget *tgt, const std::vector<std::string> &content,
-                                   bool, bool)
-{
-  for(std::vector<std::string>::const_iterator it = content.begin();
-    it != content.end(); ++it)
-    {
-    if(!this->Makefile->AddRequiredTargetFeature(tgt, *it))
-      {
-      cmOStringStream e;
-      e << "specified unknown feature \"" << *it << "\".";
-      this->SetError(e.str());
-      return false;
-      }
-    }
-  return true;
-}
diff --git a/Source/cmTargetCompileFeaturesCommand.h b/Source/cmTargetCompileFeaturesCommand.h
deleted file mode 100644
index fa7ae8d..0000000
--- a/Source/cmTargetCompileFeaturesCommand.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*============================================================================
-  CMake - Cross Platform Makefile Generator
-  Copyright 2013 Stephen Kelly <steveire at gmail.com>
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
-#ifndef cmTargetCompileFeaturesCommand_h
-#define cmTargetCompileFeaturesCommand_h
-
-#include "cmTargetPropCommandBase.h"
-
-class cmTargetCompileFeaturesCommand : public cmTargetPropCommandBase
-{
-  virtual cmCommand* Clone()
-    {
-    return new cmTargetCompileFeaturesCommand;
-    }
-
-  virtual bool InitialPass(std::vector<std::string> const& args,
-                           cmExecutionStatus &status);
-
-  virtual std::string GetName() const { return "target_compile_features";}
-
-  cmTypeMacro(cmTargetCompileFeaturesCommand, cmTargetPropCommandBase);
-
-private:
-  virtual void HandleImportedTarget(const std::string &tgt);
-  virtual void HandleMissingTarget(const std::string &name);
-
-  virtual bool HandleDirectContent(cmTarget *tgt,
-                                   const std::vector<std::string> &content,
-                                   bool prepend, bool system);
-  virtual std::string Join(const std::vector<std::string> &content);
-};
-
-#endif
diff --git a/Source/cmTargetCompileOptionsCommand.cxx b/Source/cmTargetCompileOptionsCommand.cxx
index 18499fd..254acc7 100644
--- a/Source/cmTargetCompileOptionsCommand.cxx
+++ b/Source/cmTargetCompileOptionsCommand.cxx
@@ -51,7 +51,7 @@ std::string cmTargetCompileOptionsCommand
 }
 
 //----------------------------------------------------------------------------
-bool cmTargetCompileOptionsCommand
+void cmTargetCompileOptionsCommand
 ::HandleDirectContent(cmTarget *tgt, const std::vector<std::string> &content,
                                    bool, bool)
 {
@@ -59,5 +59,4 @@ bool cmTargetCompileOptionsCommand
   this->Makefile->GetBacktrace(lfbt);
   cmValueWithOrigin entry(this->Join(content), lfbt);
   tgt->InsertCompileOption(entry);
-  return true;
 }
diff --git a/Source/cmTargetCompileOptionsCommand.h b/Source/cmTargetCompileOptionsCommand.h
index d43534d..d58dc07 100644
--- a/Source/cmTargetCompileOptionsCommand.h
+++ b/Source/cmTargetCompileOptionsCommand.h
@@ -44,7 +44,7 @@ private:
   virtual void HandleImportedTarget(const std::string &tgt);
   virtual void HandleMissingTarget(const std::string &name);
 
-  virtual bool HandleDirectContent(cmTarget *tgt,
+  virtual void HandleDirectContent(cmTarget *tgt,
                                    const std::vector<std::string> &content,
                                    bool prepend, bool system);
   virtual std::string Join(const std::vector<std::string> &content);
diff --git a/Source/cmTargetIncludeDirectoriesCommand.cxx b/Source/cmTargetIncludeDirectoriesCommand.cxx
index caec7eb..f8e1188 100644
--- a/Source/cmTargetIncludeDirectoriesCommand.cxx
+++ b/Source/cmTargetIncludeDirectoriesCommand.cxx
@@ -66,7 +66,7 @@ std::string cmTargetIncludeDirectoriesCommand
 }
 
 //----------------------------------------------------------------------------
-bool cmTargetIncludeDirectoriesCommand
+void cmTargetIncludeDirectoriesCommand
 ::HandleDirectContent(cmTarget *tgt, const std::vector<std::string> &content,
                       bool prepend, bool system)
 {
@@ -78,7 +78,6 @@ bool cmTargetIncludeDirectoriesCommand
     {
     tgt->AddSystemIncludeDirectories(content);
     }
-  return true;
 }
 
 //----------------------------------------------------------------------------
diff --git a/Source/cmTargetIncludeDirectoriesCommand.h b/Source/cmTargetIncludeDirectoriesCommand.h
index 2a7814e..c8b22fb 100644
--- a/Source/cmTargetIncludeDirectoriesCommand.h
+++ b/Source/cmTargetIncludeDirectoriesCommand.h
@@ -45,7 +45,7 @@ private:
   virtual void HandleImportedTarget(const std::string &tgt);
   virtual void HandleMissingTarget(const std::string &name);
 
-  virtual bool HandleDirectContent(cmTarget *tgt,
+  virtual void HandleDirectContent(cmTarget *tgt,
                                    const std::vector<std::string> &content,
                                    bool prepend, bool system);
   virtual void HandleInterfaceContent(cmTarget *tgt,
diff --git a/Source/cmTargetPropCommandBase.cxx b/Source/cmTargetPropCommandBase.cxx
index 4696de4..d356611 100644
--- a/Source/cmTargetPropCommandBase.cxx
+++ b/Source/cmTargetPropCommandBase.cxx
@@ -132,31 +132,29 @@ bool cmTargetPropCommandBase
         || args[i] == "PRIVATE"
         || args[i] == "INTERFACE" )
       {
-      return this->PopulateTargetProperies(scope, content, prepend, system);
+      this->PopulateTargetProperies(scope, content, prepend, system);
+      return true;
       }
     content.push_back(args[i]);
     }
-  return this->PopulateTargetProperies(scope, content, prepend, system);
+  this->PopulateTargetProperies(scope, content, prepend, system);
+  return true;
 }
 
 //----------------------------------------------------------------------------
-bool cmTargetPropCommandBase
+void cmTargetPropCommandBase
 ::PopulateTargetProperies(const std::string &scope,
                           const std::vector<std::string> &content,
                           bool prepend, bool system)
 {
   if (scope == "PRIVATE" || scope == "PUBLIC")
     {
-    if (!this->HandleDirectContent(this->Target, content, prepend, system))
-      {
-      return false;
-      }
+    this->HandleDirectContent(this->Target, content, prepend, system);
     }
   if (scope == "INTERFACE" || scope == "PUBLIC")
     {
     this->HandleInterfaceContent(this->Target, content, prepend, system);
     }
-  return true;
 }
 
 //----------------------------------------------------------------------------
diff --git a/Source/cmTargetPropCommandBase.h b/Source/cmTargetPropCommandBase.h
index d42b588..555a08a 100644
--- a/Source/cmTargetPropCommandBase.h
+++ b/Source/cmTargetPropCommandBase.h
@@ -44,7 +44,7 @@ private:
   virtual void HandleImportedTarget(const std::string &tgt) = 0;
   virtual void HandleMissingTarget(const std::string &name) = 0;
 
-  virtual bool HandleDirectContent(cmTarget *tgt,
+  virtual void HandleDirectContent(cmTarget *tgt,
                                    const std::vector<std::string> &content,
                                    bool prepend, bool system) = 0;
 
@@ -52,7 +52,7 @@ private:
 
   bool ProcessContentArgs(std::vector<std::string> const& args,
                           unsigned int &argIndex, bool prepend, bool system);
-  bool PopulateTargetProperies(const std::string &scope,
+  void PopulateTargetProperies(const std::string &scope,
                                const std::vector<std::string> &content,
                                bool prepend, bool system);
 };
diff --git a/Tests/CMakeCommands/target_compile_features/CMakeLists.txt b/Tests/CMakeCommands/target_compile_features/CMakeLists.txt
deleted file mode 100644
index 35fcd43..0000000
--- a/Tests/CMakeCommands/target_compile_features/CMakeLists.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-cmake_minimum_required(VERSION 2.8.12)
-cmake_policy(SET CMP0025 NEW)
-project(target_compile_features)
-
-set(CMAKE_VERBOSE_MAKEFILE ON)
-
-if (CMAKE_CXX_COMPILER_ID STREQUAL GNU
-    OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
-  add_executable(gnuxx_typeof_test gnuxx_typeof_test.cpp)
-  target_compile_features(gnuxx_typeof_test PRIVATE gnuxx_typeof)
-endif()
-if (CMAKE_CXX_COMPILER_ID MATCHES MSVC)
-  add_executable(msvcxx_sealed_test msvcxx_sealed_test.cpp)
-  target_compile_features(msvcxx_sealed_test PRIVATE msvcxx_sealed)
-endif()
-
-if (NOT ";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";cxx_delegating_constructors;")
-  add_executable(target_compile_features dummy.cpp)
-  return()
-endif()
-
-add_executable(target_compile_features main.cpp)
-target_compile_features(target_compile_features
-  PRIVATE cxx_delegating_constructors
-)
-
-add_library(lib_delegating_constructors lib_delegating_constructors.cpp)
-target_compile_features(lib_delegating_constructors
-  PUBLIC cxx_delegating_constructors
-)
-
-add_executable(lib_user lib_user.cpp)
-target_link_libraries(lib_user lib_delegating_constructors)
-
-if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang")
-  add_executable(binary_literals binary_literals.cpp)
-  target_compile_features(binary_literals
-    PRIVATE cxx_binary_literals
-  )
-endif()
-
-add_subdirectory(feature_conditional_link)
diff --git a/Tests/CMakeCommands/target_compile_features/binary_literals.cpp b/Tests/CMakeCommands/target_compile_features/binary_literals.cpp
deleted file mode 100644
index 3956e73..0000000
--- a/Tests/CMakeCommands/target_compile_features/binary_literals.cpp
+++ /dev/null
@@ -1,6 +0,0 @@
-
-int main(int, char **)
-{
-  int i = 0b0101;
-  return i - 5;
-}
diff --git a/Tests/CMakeCommands/target_compile_features/dummy.cpp b/Tests/CMakeCommands/target_compile_features/dummy.cpp
deleted file mode 100644
index 341aaaf..0000000
--- a/Tests/CMakeCommands/target_compile_features/dummy.cpp
+++ /dev/null
@@ -1,5 +0,0 @@
-
-int main(int, char **)
-{
-  return 0;
-}
diff --git a/Tests/CMakeCommands/target_compile_features/feature_conditional_link/CMakeLists.txt b/Tests/CMakeCommands/target_compile_features/feature_conditional_link/CMakeLists.txt
deleted file mode 100644
index 6dc7608..0000000
--- a/Tests/CMakeCommands/target_compile_features/feature_conditional_link/CMakeLists.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-
-add_library(no_variadics INTERFACE)
-target_include_directories(no_variadics INTERFACE no_variadics)
-add_library(have_variadics INTERFACE)
-target_include_directories(have_variadics INTERFACE have_variadics)
-
-add_library(maybe_variadics INTERFACE)
-target_link_libraries(maybe_variadics INTERFACE
-  $<$<HAVE_COMPILER_FEATURE:cxx_variadic_templates>:have_variadics>
-  $<$<NOT:$<HAVE_COMPILER_FEATURE:cxx_variadic_templates>>:no_variadics>
-)
-
-# Upstream publishes maybe_variadics, we use it below.
-
-add_executable(template_user_with_variadics template_user.cpp)
-target_compile_features(template_user_with_variadics PRIVATE cxx_variadic_templates)
-
-target_link_libraries(template_user_with_variadics
-  maybe_variadics
-)
-
-add_executable(template_user_no_variadics template_user.cpp)
-
-target_link_libraries(template_user_no_variadics
-  maybe_variadics
-)
diff --git a/Tests/CMakeCommands/target_compile_features/feature_conditional_link/have_variadics/interface.h b/Tests/CMakeCommands/target_compile_features/feature_conditional_link/have_variadics/interface.h
deleted file mode 100644
index a4f87c0..0000000
--- a/Tests/CMakeCommands/target_compile_features/feature_conditional_link/have_variadics/interface.h
+++ /dev/null
@@ -1,20 +0,0 @@
-template<int I, int... Is>
-struct Interface;
-
-template<int I>
-struct Interface<I>
-{
-  static int accumulate()
-  {
-    return I;
-  }
-};
-
-template<int I, int... Is>
-struct Interface
-{
-  static int accumulate()
-  {
-    return I + Interface<Is...>::accumulate();
-  }
-};
diff --git a/Tests/CMakeCommands/target_compile_features/feature_conditional_link/no_variadics/interface.h b/Tests/CMakeCommands/target_compile_features/feature_conditional_link/no_variadics/interface.h
deleted file mode 100644
index 5c5263a..0000000
--- a/Tests/CMakeCommands/target_compile_features/feature_conditional_link/no_variadics/interface.h
+++ /dev/null
@@ -1,6 +0,0 @@
-
-template<int I1, int I2 = 0, int I3 = 0, int I4 = 0>
-struct Interface
-{
-  static int accumulate() { return I1 + I2 + I3 + I4; }
-};
diff --git a/Tests/CMakeCommands/target_compile_features/feature_conditional_link/template_user.cpp b/Tests/CMakeCommands/target_compile_features/feature_conditional_link/template_user.cpp
deleted file mode 100644
index f15362c..0000000
--- a/Tests/CMakeCommands/target_compile_features/feature_conditional_link/template_user.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-
-#include <interface.h>
-
-int main(int argc, char **argv)
-{
-  int result = Interface<1, 2, 3, 4>::accumulate();
-  return result == 10 ? 0 : 1;
-}
diff --git a/Tests/CMakeCommands/target_compile_features/gnuxx_typeof_test.cpp b/Tests/CMakeCommands/target_compile_features/gnuxx_typeof_test.cpp
deleted file mode 100644
index 3b8532e..0000000
--- a/Tests/CMakeCommands/target_compile_features/gnuxx_typeof_test.cpp
+++ /dev/null
@@ -1,6 +0,0 @@
-
-int main(int argc, char **argv)
-{
-  typeof(argc) ret = 0;
-  return ret;
-}
diff --git a/Tests/CMakeCommands/target_compile_features/lib_delegating_constructors.cpp b/Tests/CMakeCommands/target_compile_features/lib_delegating_constructors.cpp
deleted file mode 100644
index e597acd..0000000
--- a/Tests/CMakeCommands/target_compile_features/lib_delegating_constructors.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-
-#include "lib_delegating_constructors.h"
-
-Foo::Foo(int i)
-  : m_i(i)
-{
-
-}
diff --git a/Tests/CMakeCommands/target_compile_features/lib_delegating_constructors.h b/Tests/CMakeCommands/target_compile_features/lib_delegating_constructors.h
deleted file mode 100644
index 75be701..0000000
--- a/Tests/CMakeCommands/target_compile_features/lib_delegating_constructors.h
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#include <cstring>
-
-class Foo
-{
-public:
-  Foo(int i);
-
-  Foo(const char *a)
-    : Foo(strlen(a))
-  {
-
-  }
-
-private:
-  int m_i;
-};
diff --git a/Tests/CMakeCommands/target_compile_features/lib_user.cpp b/Tests/CMakeCommands/target_compile_features/lib_user.cpp
deleted file mode 100644
index 83ad51e..0000000
--- a/Tests/CMakeCommands/target_compile_features/lib_user.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-
-#include "lib_delegating_constructors.h"
-
-class Bar
-{
-  Bar(int i)
-    :m_i(i)
-  {
-
-  }
-
-  Bar(const char *a)
-    : Bar(strlen(a))
-  {
-
-  }
-
-private:
-  int m_i;
-};
-
-int main(int argc, char **argv)
-{
-  Foo f("hello");
-  Foo b("world");
-  return 0;
-}
diff --git a/Tests/CMakeCommands/target_compile_features/main.cpp b/Tests/CMakeCommands/target_compile_features/main.cpp
deleted file mode 100644
index 77671b0..0000000
--- a/Tests/CMakeCommands/target_compile_features/main.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#include <cstring>
-
-class Foo
-{
-  Foo(int i)
-    :m_i(i)
-  {
-
-  }
-
-  Foo(const char *a)
-    : Foo(strlen(a))
-  {
-
-  }
-
-private:
-  int m_i;
-};
-
-int main(int, char **)
-{
-  return 0;
-}
diff --git a/Tests/CMakeCommands/target_compile_features/msvcxx_sealed_test.cpp b/Tests/CMakeCommands/target_compile_features/msvcxx_sealed_test.cpp
deleted file mode 100644
index 0127937..0000000
--- a/Tests/CMakeCommands/target_compile_features/msvcxx_sealed_test.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-
-class A sealed {};
-
-int main(int argc, char **argv)
-{
-  A a;
-  return 0;
-}
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 8245f61..726e790 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -278,19 +278,6 @@ if(BUILD_TESTING)
   ADD_TEST_MACRO(AliasTarget AliasTarget)
   ADD_TEST_MACRO(StagingPrefix StagingPrefix)
   ADD_TEST_MACRO(InterfaceLibrary InterfaceLibrary)
-  if(CMAKE_CXX_COMPILER_ID STREQUAL GNU
-      AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6)
-    set(runCxxDialectTest 1)
-  endif()
-  if(CMAKE_CXX_COMPILER_ID STREQUAL Clang
-        AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 2.9)
-    if(NOT APPLE OR POLICY CMP0025)
-      set(runCxxDialectTest 1)
-    endif()
-  endif()
-  if(runCxxDialectTest)
-    ADD_TEST_MACRO(CxxDialect CxxDialect)
-  endif()
   set_tests_properties(EmptyLibrary PROPERTIES
     PASS_REGULAR_EXPRESSION "CMake Error: CMake can not determine linker language for target: test")
   ADD_TEST_MACRO(CrossCompile CrossCompile)
@@ -403,17 +390,6 @@ if(BUILD_TESTING)
   ADD_TEST_MACRO(Module.GenerateExportHeader GenerateExportHeader)
   ADD_TEST_MACRO(Module.FindDependency FindDependency)
 
-  if ((CMAKE_CXX_COMPILER_ID STREQUAL GNU AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.3)
-      OR CMAKE_CXX_COMPILER_ID STREQUAL Clang
-      OR (x${CMAKE_CXX_COMPILER_ID} STREQUAL xMSVC AND NOT MSVC_VERSION VERSION_LESS 1400))
-    if(NOT APPLE OR POLICY CMP0025)
-      set(runCompilerDetectionTest 1)
-    endif()
-  endif()
-
-  if (runCompilerDetectionTest)
-    ADD_TEST_MACRO(Module.WriteCompilerDetectionHeader WriteCompilerDetectionHeader)
-  endif()
   if (APPLE OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
     include(CheckCXXCompilerFlag)
     check_cxx_compiler_flag(-fPIE run_pic_test)
@@ -2233,12 +2209,6 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
   ADD_TEST_MACRO(CMakeCommands.target_compile_definitions target_compile_definitions)
   ADD_TEST_MACRO(CMakeCommands.target_compile_options target_compile_options)
 
-  if ((CMAKE_CXX_COMPILER_ID STREQUAL GNU AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.3)
-      OR CMAKE_CXX_COMPILER_ID STREQUAL Clang
-      OR (x${CMAKE_CXX_COMPILER_ID} STREQUAL xMSVC AND NOT MSVC_VERSION VERSION_LESS 1400))
-    ADD_TEST_MACRO(CMakeCommands.target_compile_features target_compile_features)
-  endif()
-
   configure_file(
     "${CMake_SOURCE_DIR}/Tests/CTestTestCrash/test.cmake.in"
     "${CMake_BINARY_DIR}/Tests/CTestTestCrash/test.cmake"
diff --git a/Tests/CxxDialect/CMakeLists.txt b/Tests/CxxDialect/CMakeLists.txt
deleted file mode 100644
index f0b2d10..0000000
--- a/Tests/CxxDialect/CMakeLists.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-cmake_minimum_required(VERSION 2.8.12)
-cmake_policy(SET CMP0025 NEW)
-project(CxxDialect)
-
-add_executable(use_typeof use_typeof.cxx)
-set_property(TARGET use_typeof PROPERTY CXX_STANDARD 98)
-set_property(TARGET use_typeof PROPERTY CXX_EXTENSIONS TRUE)
-
-add_executable(use_constexpr use_constexpr.cxx)
-set_property(TARGET use_constexpr PROPERTY CXX_STANDARD 11)
-
-add_executable(CxxDialect use_constexpr_and_typeof.cxx)
-set_property(TARGET CxxDialect PROPERTY CXX_STANDARD 11)
-set_property(TARGET CxxDialect PROPERTY CXX_EXTENSIONS TRUE)
diff --git a/Tests/CxxDialect/use_constexpr.cxx b/Tests/CxxDialect/use_constexpr.cxx
deleted file mode 100644
index 30ccc4c..0000000
--- a/Tests/CxxDialect/use_constexpr.cxx
+++ /dev/null
@@ -1,10 +0,0 @@
-
-constexpr int foo()
-{
-  return 0;
-}
-
-int main(int argc, char**)
-{
-  return foo();
-}
diff --git a/Tests/CxxDialect/use_constexpr_and_typeof.cxx b/Tests/CxxDialect/use_constexpr_and_typeof.cxx
deleted file mode 100644
index af217b6..0000000
--- a/Tests/CxxDialect/use_constexpr_and_typeof.cxx
+++ /dev/null
@@ -1,11 +0,0 @@
-
-constexpr int foo()
-{
-  return 0;
-}
-
-int main(int argc, char**)
-{
-  typeof(argc) ret = foo();
-  return ret;
-}
diff --git a/Tests/CxxDialect/use_typeof.cxx b/Tests/CxxDialect/use_typeof.cxx
deleted file mode 100644
index dabb61f..0000000
--- a/Tests/CxxDialect/use_typeof.cxx
+++ /dev/null
@@ -1,6 +0,0 @@
-
-int main(int argc, char**)
-{
-  typeof(argc) ret = 0;
-  return ret;
-}
diff --git a/Tests/ExportImport/Export/Interface/CMakeLists.txt b/Tests/ExportImport/Export/Interface/CMakeLists.txt
index b058a80..9d4793d 100644
--- a/Tests/ExportImport/Export/Interface/CMakeLists.txt
+++ b/Tests/ExportImport/Export/Interface/CMakeLists.txt
@@ -23,10 +23,7 @@ set_property(TARGET sharedlib PROPERTY INTERFACE_COMPILE_DEFINITIONS "SHAREDLIB_
 add_library(sharediface INTERFACE)
 target_link_libraries(sharediface INTERFACE sharedlib)
 
-add_library(use_constexpr INTERFACE)
-target_compile_features(use_constexpr INTERFACE cxx_constexpr)
-
-install(TARGETS headeronly sharediface use_constexpr
+install(TARGETS headeronly sharediface
   EXPORT expInterface
 )
 install(TARGETS sharedlib
diff --git a/Tests/ExportImport/Import/Interface/CMakeLists.txt b/Tests/ExportImport/Import/Interface/CMakeLists.txt
index b5c2215..cf7e2bc 100644
--- a/Tests/ExportImport/Import/Interface/CMakeLists.txt
+++ b/Tests/ExportImport/Import/Interface/CMakeLists.txt
@@ -40,30 +40,6 @@ macro(do_try_compile prefix)
   if(NOT ${prefix}IFACE_TRY_COMPILE)
     message(SEND_ERROR "${prefix} try_compile with IMPORTED INTERFACE target failed!\n\n${OUTPUT}")
   endif()
-
-  set(CMAKE_REQUIRED_LIBRARIES ${prefix}::use_constexpr)
-  check_cxx_source_compiles(
-    "
-  constexpr int getValue()
-  {
-    return 0;
-  };
-  int main(int,char**)
-  {
-    return getValue();
-  }
-  " ${prefix}IMPORTED_IFACE_CONSTEXPR)
-
-  if (";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";cxx_constexpr;")
-    if(NOT ${prefix}IMPORTED_IFACE_CONSTEXPR)
-      message(SEND_ERROR "${prefix} try_compile with IMPORTED INTERFACE target failed!\n\n${OUTPUT}")
-    endif()
-  else()
-    if(${prefix}IMPORTED_IFACE_CONSTEXPR)
-      message(SEND_ERROR "${prefix} try_compile with IMPORTED INTERFACE target succeeded where it should fail!\n\n${OUTPUT}")
-    endif()
-  endif()
-
 endmacro()
 
 do_try_compile(bld)
diff --git a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt
deleted file mode 100644
index c658942..0000000
--- a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt
+++ /dev/null
@@ -1,100 +0,0 @@
-cmake_minimum_required(VERSION 3.0.0)
-project(WriteCompilerDetectionHeader)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-include(WriteCompilerDetectionHeader)
-
-write_compiler_detection_header(
-  FILE "${CMAKE_CURRENT_BINARY_DIR}/test_compiler_detection.h"
-  PREFIX TEST
-  COMPILERS GNU Clang MSVC
-  FEATURES
-    ${CMAKE_CXX_KNOWN_FEATURES}
-)
-
-macro(set_defines target true_defs false_defs)
-  set(defines)
-  foreach(def ${true_defs})
-    list(APPEND defines ${def}=1)
-  endforeach()
-  foreach(def ${false_defs})
-    list(APPEND defines ${def}=0)
-  endforeach()
-  target_compile_definitions(${target}
-    PRIVATE
-      ${defines}
-  )
-endmacro()
-
-if (CMAKE_CXX_COMPILER_ID STREQUAL GNU
-    OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
-  list(APPEND true_defs EXPECTED_COMPILER_CXX_BINARY_LITERALS)
-  list(APPEND false_defs EXPECTED_COMPILER_MSVCXX_SEALED)
-elseif(x${CMAKE_CXX_COMPILER_ID} STREQUAL xMSVC)
-  list(APPEND false_defs EXPECTED_COMPILER_CXX_BINARY_LITERALS)
-  list(APPEND true_defs EXPECTED_COMPILER_MSVCXX_SEALED)
-else()
-  list(APPEND false_defs EXPECTED_COMPILER_CXX_BINARY_LITERALS)
-  list(APPEND false_defs EXPECTED_COMPILER_MSVCXX_SEALED)
-endif()
-
-list(APPEND false_defs EXPECTED_COMPILER_GNUXX_TYPEOF)
-list(APPEND false_defs EXPECTED_COMPILER_CXX_DELEGATING_CONSTRUCTORS)
-list(APPEND false_defs EXPECTED_COMPILER_CXX_VARIADIC_TEMPLATES)
-
-add_executable(WriteCompilerDetectionHeader main.cpp)
-set_property(TARGET WriteCompilerDetectionHeader PROPERTY CXX_STANDARD 98)
-set_defines(WriteCompilerDetectionHeader "${true_defs}" "${false_defs}")
-
-if(MSVC)
-  return() # MSVC has only one mode.
-endif()
-
-if (CMAKE_CXX_COMPILER_ID STREQUAL GNU
-    OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
-  list(APPEND true_defs EXPECTED_COMPILER_GNUXX_TYPEOF)
-  list(REMOVE_ITEM false_defs EXPECTED_COMPILER_GNUXX_TYPEOF)
-endif()
-
-add_executable(WriteCompilerDetectionHeader_98ext main.cpp)
-set_property(TARGET WriteCompilerDetectionHeader_98ext PROPERTY CXX_STANDARD 98)
-set_property(TARGET WriteCompilerDetectionHeader_98ext PROPERTY CXX_EXTENSIONS 1)
-set_defines(WriteCompilerDetectionHeader_98ext "${true_defs}" "${false_defs}")
-
-if (CMAKE_CXX_COMPILER_ID STREQUAL GNU
-    OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
-  list(APPEND false_defs  EXPECTED_COMPILER_GNUXX_TYPEOF)
-  list(REMOVE_ITEM true_defs EXPECTED_COMPILER_GNUXX_TYPEOF)
-endif()
-
-if ((CMAKE_CXX_COMPILER_ID STREQUAL GNU
-      AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7.0)
-    OR (CMAKE_CXX_COMPILER_ID STREQUAL Clang
-      AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.0.0))
-  list(APPEND true_defs EXPECTED_COMPILER_CXX_DELEGATING_CONSTRUCTORS)
-  list(REMOVE_ITEM false_defs EXPECTED_COMPILER_CXX_DELEGATING_CONSTRUCTORS)
-endif()
-
-if ((CMAKE_CXX_COMPILER_ID STREQUAL GNU
-      AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.4.0)
-    OR (CMAKE_CXX_COMPILER_ID STREQUAL Clang
-      AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.0.0))
-  list(APPEND true_defs EXPECTED_COMPILER_CXX_VARIADIC_TEMPLATES)
-  list(REMOVE_ITEM false_defs EXPECTED_COMPILER_CXX_VARIADIC_TEMPLATES)
-endif()
-
-add_executable(WriteCompilerDetectionHeader_11 main.cpp)
-set_property(TARGET WriteCompilerDetectionHeader_11 PROPERTY CXX_STANDARD 11)
-set_defines(WriteCompilerDetectionHeader_11 "${true_defs}" "${false_defs}")
-
-if (CMAKE_CXX_COMPILER_ID STREQUAL GNU
-    OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
-  list(APPEND true_defs EXPECTED_COMPILER_GNUXX_TYPEOF)
-  list(REMOVE_ITEM false_defs EXPECTED_COMPILER_GNUXX_TYPEOF)
-endif()
-
-add_executable(WriteCompilerDetectionHeader_11ext main.cpp)
-set_property(TARGET WriteCompilerDetectionHeader_11ext PROPERTY CXX_STANDARD 11)
-set_property(TARGET WriteCompilerDetectionHeader_11ext PROPERTY CXX_EXTENSIONS 1)
-set_defines(WriteCompilerDetectionHeader_11ext "${true_defs}" "${false_defs}")
diff --git a/Tests/Module/WriteCompilerDetectionHeader/main.cpp b/Tests/Module/WriteCompilerDetectionHeader/main.cpp
deleted file mode 100644
index cccd19d..0000000
--- a/Tests/Module/WriteCompilerDetectionHeader/main.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-
-#include "test_compiler_detection.h"
-
-#define JOIN_IMPL(A, B) A ## B
-#define JOIN(A, B) JOIN_IMPL(A, B)
-#define CHECK(FEATURE) (JOIN(TEST_COMPILER_, FEATURE) == JOIN(EXPECTED_COMPILER_, FEATURE))
-
-#if !CHECK(CXX_BINARY_LITERALS)
-#error cxx_binary_literals expected availability did not match.
-#endif
-
-#if !CHECK(CXX_DELEGATING_CONSTRUCTORS)
-#error cxx_delegating_constructors expected availability did not match.
-#endif
-
-#if !CHECK(CXX_VARIADIC_TEMPLATES)
-#error cxx_variadic_templates expected availability did not match.
-#endif
-
-#if !CHECK(GNUXX_TYPEOF)
-#error gnuxx_typeof expected availability did not match.
-#endif
-
-#if !CHECK(MSVCXX_SEALED)
-#error msvcxx_sealed expected availability did not match.
-#endif
-
-int main(int argc, char **argv)
-{
-  return 0;
-}
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 37d09ba..f9d590a 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -50,9 +50,6 @@ add_RunCMake_test(TargetPropertyGeneratorExpressions)
 add_RunCMake_test(Languages)
 add_RunCMake_test(ObjectLibrary)
 add_RunCMake_test(find_dependency)
-if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
-  add_RunCMake_test(have_feature)
-endif()
 if(NOT WIN32)
   add_RunCMake_test(PositionIndependentCode)
   set(SKIP_VISIBILITY 0)
@@ -123,13 +120,6 @@ endif()
 add_RunCMake_test(File_Generate)
 add_RunCMake_test(ExportWithoutLanguage)
 add_RunCMake_test(target_link_libraries)
-
-if (CMAKE_CXX_COMPILER_ID MATCHES "Borland"
-    OR CMAKE_GENERATOR MATCHES Xcode
-    OR CMAKE_GENERATOR MATCHES "Visual Studio")
-  set(target_compile_features_ARGS -DNO_UNKNOWN_COMPILER_TEST=1)
-endif()
-add_RunCMake_test(target_compile_features)
 add_RunCMake_test(CheckModules)
 add_RunCMake_test(CommandLine)
 
diff --git a/Tests/RunCMake/have_feature/CMakeLists.txt b/Tests/RunCMake/have_feature/CMakeLists.txt
deleted file mode 100644
index be9d403..0000000
--- a/Tests/RunCMake/have_feature/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-cmake_minimum_required(VERSION 2.8.4)
-project(${RunCMake_TEST})
-include(${RunCMake_TEST}.cmake)
diff --git a/Tests/RunCMake/have_feature/RunCMakeTest.cmake b/Tests/RunCMake/have_feature/RunCMakeTest.cmake
deleted file mode 100644
index ec844f4..0000000
--- a/Tests/RunCMake/have_feature/RunCMakeTest.cmake
+++ /dev/null
@@ -1,3 +0,0 @@
-include(RunCMake)
-
-run_cmake(inconsistent)
diff --git a/Tests/RunCMake/have_feature/empty.cpp b/Tests/RunCMake/have_feature/empty.cpp
deleted file mode 100644
index bfbbdde..0000000
--- a/Tests/RunCMake/have_feature/empty.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-int empty()
-{
-  return 0;
-}
diff --git a/Tests/RunCMake/have_feature/inconsistent-result.txt b/Tests/RunCMake/have_feature/inconsistent-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/have_feature/inconsistent-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/have_feature/inconsistent-stderr.txt b/Tests/RunCMake/have_feature/inconsistent-stderr.txt
deleted file mode 100644
index 45ecd5d..0000000
--- a/Tests/RunCMake/have_feature/inconsistent-stderr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-CMake Error in CMakeLists.txt:
-  Target "my_exe" link implementation was evaluated with the feature
-  "msvcxx_sealed" disabled, but it is enabled by the link implementation.
-  This is not consistent and is not allowed.
diff --git a/Tests/RunCMake/have_feature/inconsistent.cmake b/Tests/RunCMake/have_feature/inconsistent.cmake
deleted file mode 100644
index f24531f..0000000
--- a/Tests/RunCMake/have_feature/inconsistent.cmake
+++ /dev/null
@@ -1,8 +0,0 @@
-
-add_library(iface INTERFACE)
-
-add_library(iface2 INTERFACE)
-target_compile_features(iface2 INTERFACE msvcxx_sealed)
-
-add_executable(my_exe empty.cpp)
-target_link_libraries(my_exe $<$<HAVE_COMPILER_FEATURE:msvcxx_sealed>:iface> iface2)
diff --git a/Tests/RunCMake/target_compile_features/CMakeLists.txt b/Tests/RunCMake/target_compile_features/CMakeLists.txt
deleted file mode 100644
index aa7278d..0000000
--- a/Tests/RunCMake/target_compile_features/CMakeLists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-cmake_minimum_required(VERSION 2.8.12)
-cmake_policy(SET CMP0025 NEW)
-project(${RunCMake_TEST} CXX)
-include(${RunCMake_TEST}.cmake)
diff --git a/Tests/RunCMake/target_compile_features/RunCMakeTest.cmake b/Tests/RunCMake/target_compile_features/RunCMakeTest.cmake
deleted file mode 100644
index 740a973..0000000
--- a/Tests/RunCMake/target_compile_features/RunCMakeTest.cmake
+++ /dev/null
@@ -1,15 +0,0 @@
-include(RunCMake)
-
-run_cmake(not_enough_args)
-run_cmake(alias_target)
-run_cmake(utility_target)
-run_cmake(invalid_args)
-run_cmake(invalid_args_on_interface)
-run_cmake(imported_target)
-run_cmake(no_target)
-run_cmake(not_a_cxx_feature)
-run_cmake(no_matching_cxx_feature)
-if (NOT NO_UNKNOWN_COMPILER_TEST)
-  set(RunCMake_TEST_OPTIONS "-DCMAKE_CXX_COMPILER_ID=UnknownCompiler")
-  run_cmake(unknown_compiler)
-endif()
diff --git a/Tests/RunCMake/target_compile_features/alias_target-result.txt b/Tests/RunCMake/target_compile_features/alias_target-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/target_compile_features/alias_target-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/target_compile_features/alias_target-stderr.txt b/Tests/RunCMake/target_compile_features/alias_target-stderr.txt
deleted file mode 100644
index 3321e3f..0000000
--- a/Tests/RunCMake/target_compile_features/alias_target-stderr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-CMake Error at alias_target.cmake:4 \(target_compile_features\):
-  target_compile_features can not be used on an ALIAS target.
-Call Stack \(most recent call first\):
-  CMakeLists.txt:4 \(include\)
diff --git a/Tests/RunCMake/target_compile_features/alias_target.cmake b/Tests/RunCMake/target_compile_features/alias_target.cmake
deleted file mode 100644
index d35ddba..0000000
--- a/Tests/RunCMake/target_compile_features/alias_target.cmake
+++ /dev/null
@@ -1,4 +0,0 @@
-
-add_executable(main empty.cpp)
-add_executable(Alias::Main ALIAS main)
-target_compile_features(Alias::Main PRIVATE cxx_delegating_constructors)
diff --git a/Tests/RunCMake/target_compile_features/empty.cpp b/Tests/RunCMake/target_compile_features/empty.cpp
deleted file mode 100644
index bfbbdde..0000000
--- a/Tests/RunCMake/target_compile_features/empty.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-int empty()
-{
-  return 0;
-}
diff --git a/Tests/RunCMake/target_compile_features/imported_target-result.txt b/Tests/RunCMake/target_compile_features/imported_target-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/target_compile_features/imported_target-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/target_compile_features/imported_target-stderr.txt b/Tests/RunCMake/target_compile_features/imported_target-stderr.txt
deleted file mode 100644
index 95431b4..0000000
--- a/Tests/RunCMake/target_compile_features/imported_target-stderr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-CMake Error at imported_target.cmake:3 \(target_compile_features\):
-  Cannot specify compile features for imported target "main".
-Call Stack \(most recent call first\):
-  CMakeLists.txt:4 \(include\)
diff --git a/Tests/RunCMake/target_compile_features/imported_target.cmake b/Tests/RunCMake/target_compile_features/imported_target.cmake
deleted file mode 100644
index e248c2f..0000000
--- a/Tests/RunCMake/target_compile_features/imported_target.cmake
+++ /dev/null
@@ -1,3 +0,0 @@
-
-add_library(main INTERFACE IMPORTED)
-target_compile_features(main INTERFACE cxx_delegating_constructors)
diff --git a/Tests/RunCMake/target_compile_features/invalid_args-result.txt b/Tests/RunCMake/target_compile_features/invalid_args-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/target_compile_features/invalid_args-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/target_compile_features/invalid_args-stderr.txt b/Tests/RunCMake/target_compile_features/invalid_args-stderr.txt
deleted file mode 100644
index 1242730..0000000
--- a/Tests/RunCMake/target_compile_features/invalid_args-stderr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-CMake Error at invalid_args.cmake:3 \(target_compile_features\):
-  target_compile_features called with invalid arguments
-Call Stack \(most recent call first\):
-  CMakeLists.txt:4 \(include\)
diff --git a/Tests/RunCMake/target_compile_features/invalid_args.cmake b/Tests/RunCMake/target_compile_features/invalid_args.cmake
deleted file mode 100644
index 1a7fb37..0000000
--- a/Tests/RunCMake/target_compile_features/invalid_args.cmake
+++ /dev/null
@@ -1,3 +0,0 @@
-
-add_executable(main empty.cpp)
-target_compile_features(main INVALID cxx_delegating_constructors)
diff --git a/Tests/RunCMake/target_compile_features/invalid_args_on_interface-result.txt b/Tests/RunCMake/target_compile_features/invalid_args_on_interface-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/target_compile_features/invalid_args_on_interface-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/target_compile_features/invalid_args_on_interface-stderr.txt b/Tests/RunCMake/target_compile_features/invalid_args_on_interface-stderr.txt
deleted file mode 100644
index d7f48b1..0000000
--- a/Tests/RunCMake/target_compile_features/invalid_args_on_interface-stderr.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-CMake Error at invalid_args_on_interface.cmake:3 \(target_compile_features\):
-  target_compile_features may only be set INTERFACE properties on INTERFACE
-  targets
-Call Stack \(most recent call first\):
-  CMakeLists.txt:4 \(include\)
diff --git a/Tests/RunCMake/target_compile_features/invalid_args_on_interface.cmake b/Tests/RunCMake/target_compile_features/invalid_args_on_interface.cmake
deleted file mode 100644
index 324d0f3..0000000
--- a/Tests/RunCMake/target_compile_features/invalid_args_on_interface.cmake
+++ /dev/null
@@ -1,3 +0,0 @@
-
-add_library(main INTERFACE)
-target_compile_features(main PRIVATE cxx_delegating_constructors)
diff --git a/Tests/RunCMake/target_compile_features/no_matching_cxx_feature-result.txt b/Tests/RunCMake/target_compile_features/no_matching_cxx_feature-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/target_compile_features/no_matching_cxx_feature-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/target_compile_features/no_matching_cxx_feature-stderr.txt b/Tests/RunCMake/target_compile_features/no_matching_cxx_feature-stderr.txt
deleted file mode 100644
index a8f60c7..0000000
--- a/Tests/RunCMake/target_compile_features/no_matching_cxx_feature-stderr.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-CMake Error at no_matching_cxx_feature.cmake:[0-9][0-9]? \((target_compile_features|message)\):
-  The compiler feature "[^"]+" is not known to compiler
-
-  "[^"]*"
-
-  version *[.0-9]+\.
-Call Stack \(most recent call first\):
-  CMakeLists.txt:4 \(include\)
diff --git a/Tests/RunCMake/target_compile_features/no_matching_cxx_feature.cmake b/Tests/RunCMake/target_compile_features/no_matching_cxx_feature.cmake
deleted file mode 100644
index 99d04b6..0000000
--- a/Tests/RunCMake/target_compile_features/no_matching_cxx_feature.cmake
+++ /dev/null
@@ -1,26 +0,0 @@
-
-if (NOT ";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";gnuxx_typeof;"
-    AND NOT ";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";msvcxx_sealed;" )
-  # Simulate passing the test.
-  message(SEND_ERROR
-    "The compiler feature \"gnuxx_dummy\" is not known to compiler\n\"GNU\"\nversion 4.8.1."
-  )
-  return()
-endif()
-
-if (";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";gnuxx_typeof;")
-  set(feature msvcxx_sealed)
-  if (";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";msvcxx_sealed;")
-    # If a compiler supports both extensions, remove one of them.
-    list(REMOVE_ITEM CMAKE_CXX_COMPILE_FEATURES msvcxx_sealed)
-  endif()
-else()
-  set(feature gnuxx_typeof)
-endif()
-
-add_executable(main empty.cpp)
-
-target_compile_features(main
-  PRIVATE
-    ${feature}
-)
diff --git a/Tests/RunCMake/target_compile_features/no_target-result.txt b/Tests/RunCMake/target_compile_features/no_target-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/target_compile_features/no_target-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/target_compile_features/no_target-stderr.txt b/Tests/RunCMake/target_compile_features/no_target-stderr.txt
deleted file mode 100644
index 9cd5e6b..0000000
--- a/Tests/RunCMake/target_compile_features/no_target-stderr.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-CMake Error at no_target.cmake:2 \(target_compile_features\):
-  Cannot specify compile features for target "main" which is not built by
-  this project.
-Call Stack \(most recent call first\):
-  CMakeLists.txt:4 \(include\)
diff --git a/Tests/RunCMake/target_compile_features/no_target.cmake b/Tests/RunCMake/target_compile_features/no_target.cmake
deleted file mode 100644
index 3f0afe2..0000000
--- a/Tests/RunCMake/target_compile_features/no_target.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-
-target_compile_features(main INTERFACE cxx_delegating_constructors)
diff --git a/Tests/RunCMake/target_compile_features/not_a_cxx_feature-result.txt b/Tests/RunCMake/target_compile_features/not_a_cxx_feature-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/target_compile_features/not_a_cxx_feature-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/target_compile_features/not_a_cxx_feature-stderr.txt b/Tests/RunCMake/target_compile_features/not_a_cxx_feature-stderr.txt
deleted file mode 100644
index 1b82258..0000000
--- a/Tests/RunCMake/target_compile_features/not_a_cxx_feature-stderr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-CMake Error at not_a_cxx_feature.cmake:3 \(target_compile_features\):
-  target_compile_features specified unknown feature "cxx_not_a_feature".
-Call Stack \(most recent call first\):
-  CMakeLists.txt:4 \(include\)
diff --git a/Tests/RunCMake/target_compile_features/not_a_cxx_feature.cmake b/Tests/RunCMake/target_compile_features/not_a_cxx_feature.cmake
deleted file mode 100644
index 0207b72..0000000
--- a/Tests/RunCMake/target_compile_features/not_a_cxx_feature.cmake
+++ /dev/null
@@ -1,6 +0,0 @@
-
-add_executable(main empty.cpp)
-target_compile_features(main
-  PRIVATE
-    cxx_not_a_feature
-)
diff --git a/Tests/RunCMake/target_compile_features/not_enough_args-result.txt b/Tests/RunCMake/target_compile_features/not_enough_args-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/target_compile_features/not_enough_args-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/target_compile_features/not_enough_args-stderr.txt b/Tests/RunCMake/target_compile_features/not_enough_args-stderr.txt
deleted file mode 100644
index 0f27a9c..0000000
--- a/Tests/RunCMake/target_compile_features/not_enough_args-stderr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-CMake Error at not_enough_args.cmake:3 \(target_compile_features\):
-  target_compile_features called with incorrect number of arguments
-Call Stack \(most recent call first\):
-  CMakeLists.txt:4 \(include\)
diff --git a/Tests/RunCMake/target_compile_features/not_enough_args.cmake b/Tests/RunCMake/target_compile_features/not_enough_args.cmake
deleted file mode 100644
index 9561230..0000000
--- a/Tests/RunCMake/target_compile_features/not_enough_args.cmake
+++ /dev/null
@@ -1,3 +0,0 @@
-
-add_executable(main empty.cpp)
-target_compile_features(main)
diff --git a/Tests/RunCMake/target_compile_features/unknown_compiler-result.txt b/Tests/RunCMake/target_compile_features/unknown_compiler-result.txt
deleted file mode 100644
index 573541a..0000000
--- a/Tests/RunCMake/target_compile_features/unknown_compiler-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/Tests/RunCMake/target_compile_features/unknown_compiler-stderr.txt b/Tests/RunCMake/target_compile_features/unknown_compiler-stderr.txt
deleted file mode 100644
index 10f3293..0000000
--- a/Tests/RunCMake/target_compile_features/unknown_compiler-stderr.txt
+++ /dev/null
@@ -1 +0,0 @@
-^$
diff --git a/Tests/RunCMake/target_compile_features/unknown_compiler.cmake b/Tests/RunCMake/target_compile_features/unknown_compiler.cmake
deleted file mode 100644
index e34d894..0000000
--- a/Tests/RunCMake/target_compile_features/unknown_compiler.cmake
+++ /dev/null
@@ -1,4 +0,0 @@
-
-add_library(mylib empty.cpp)
-# The unknown compiler doesn't fail on valid features.
-target_compile_features(mylib PRIVATE cxx_delegating_constructors)
diff --git a/Tests/RunCMake/target_compile_features/utility_target-result.txt b/Tests/RunCMake/target_compile_features/utility_target-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/target_compile_features/utility_target-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/target_compile_features/utility_target-stderr.txt b/Tests/RunCMake/target_compile_features/utility_target-stderr.txt
deleted file mode 100644
index 96b0bd7..0000000
--- a/Tests/RunCMake/target_compile_features/utility_target-stderr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-CMake Error at utility_target.cmake:4 \(target_compile_features\):
-  target_compile_features called with non-compilable target type
-Call Stack \(most recent call first\):
-  CMakeLists.txt:4 \(include\)
diff --git a/Tests/RunCMake/target_compile_features/utility_target.cmake b/Tests/RunCMake/target_compile_features/utility_target.cmake
deleted file mode 100644
index 8919056..0000000
--- a/Tests/RunCMake/target_compile_features/utility_target.cmake
+++ /dev/null
@@ -1,4 +0,0 @@
-
-add_custom_target(utility)
-
-target_compile_features(utility PRIVATE cxx_delegating_constructors)
diff --git a/Tests/SystemInformation/CMakeLists.txt b/Tests/SystemInformation/CMakeLists.txt
index db54612..c33380f 100644
--- a/Tests/SystemInformation/CMakeLists.txt
+++ b/Tests/SystemInformation/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 3.0)
+cmake_minimum_required (VERSION 2.6)
 project(SystemInformation)
 
 include_directories("This does not exists")
diff --git a/Tests/SystemInformation/SystemInformation.in b/Tests/SystemInformation/SystemInformation.in
index 669a6f9..df3bf49 100644
--- a/Tests/SystemInformation/SystemInformation.in
+++ b/Tests/SystemInformation/SystemInformation.in
@@ -21,15 +21,6 @@ CMAKE_C_COMPILER_ID == "${CMAKE_C_COMPILER_ID}"
 CMAKE_C_COMPILER_VERSION == "${CMAKE_C_COMPILER_VERSION}"
 CMAKE_CXX_COMPILER_ID == "${CMAKE_CXX_COMPILER_ID}"
 CMAKE_CXX_COMPILER_VERSION == "${CMAKE_CXX_COMPILER_VERSION}"
-CMAKE_CXX98_STANDARD_COMPILE_OPTION == "${CMAKE_CXX98_STANDARD_COMPILE_OPTION}"
-CMAKE_CXX11_STANDARD_COMPILE_OPTION == "${CMAKE_CXX11_STANDARD_COMPILE_OPTION}"
-CMAKE_CXX98_EXTENSION_COMPILE_OPTION == "${CMAKE_CXX98_EXTENSION_COMPILE_OPTION}"
-CMAKE_CXX11_EXTENSION_COMPILE_OPTION == "${CMAKE_CXX11_EXTENSION_COMPILE_OPTION}"
-CMAKE_CXX_COMPILE_FEATURES == "${CMAKE_CXX_COMPILE_FEATURES}"
-CMAKE_CXX98_COMPILE_FEATURES == "${CMAKE_CXX98_COMPILE_FEATURES}"
-CMAKE_CXX98_COMPILE_EXTENSIONS == "${CMAKE_CXX98_COMPILE_EXTENSIONS}"
-CMAKE_CXX11_COMPILE_FEATURES == "${CMAKE_CXX11_COMPILE_FEATURES}"
-CMAKE_CXX11_COMPILE_EXTENSIONS == "${CMAKE_CXX11_COMPILE_EXTENSIONS}"
 
 // C shared library flag
 CMAKE_SHARED_LIBRARY_C_FLAGS == "${CMAKE_SHARED_LIBRARY_C_FLAGS}"

-----------------------------------------------------------------------

Summary of changes:
 Help/command/target_compile_features.rst           |   31 --
 Help/index.rst                                     |    1 -
 Help/manual/cmake-commands.7.rst                   |    1 -
 Help/manual/cmake-compile-features.7.rst           |  344 --------------------
 Help/manual/cmake-developer.7.rst                  |   27 --
 Help/manual/cmake-generator-expressions.7.rst      |    3 -
 Help/manual/cmake-modules.7.rst                    |    1 -
 Help/manual/cmake-properties.7.rst                 |    4 -
 Help/manual/cmake-variables.7.rst                  |    3 -
 Help/module/WriteCompilerDetectionHeader.rst       |    1 -
 Help/prop_tgt/COMPILE_FEATURES.rst                 |   11 -
 Help/prop_tgt/CXX_EXTENSIONS.rst                   |   11 -
 Help/prop_tgt/CXX_STANDARD.rst                     |   17 -
 Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst       |   16 -
 Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst       |   14 -
 Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst         |   54 ---
 Help/variable/CMAKE_CXX_STANDARD.rst               |   11 -
 Help/variable/CMAKE_DEBUG_TARGET_PROPERTIES.rst    |    3 +-
 Modules/CMakeCXXCompiler.cmake.in                  |    7 -
 Modules/CMakeDetermineCompileFeatures.cmake        |   60 ----
 Modules/CMakeTestCXXCompiler.cmake                 |    3 -
 Modules/Compiler/AppleClang-CXX.cmake              |    7 +-
 Modules/Compiler/Clang-CXX-FeatureTests.cmake      |   19 --
 Modules/Compiler/Clang-CXX.cmake                   |   42 ---
 Modules/Compiler/GNU-CXX-FeatureTests.cmake        |   20 --
 Modules/Compiler/GNU-CXX.cmake                     |   37 ---
 Modules/Compiler/MSVC-CXX-FeatureTests.cmake       |   15 -
 Modules/Compiler/QCC-CXX-FeatureTests.cmake        |    4 -
 Modules/Internal/FeatureTesting.cmake              |   57 ----
 Modules/Platform/Windows-MSVC-CXX.cmake            |    8 -
 Modules/WriteCompilerDetectionHeader.cmake         |  270 ---------------
 Source/CMakeLists.txt                              |    1 -
 Source/cmExportBuildFileGenerator.cxx              |    3 -
 Source/cmExportInstallFileGenerator.cxx            |    4 -
 Source/cmGeneratorExpression.cxx                   |    6 -
 Source/cmGeneratorExpression.h                     |    4 -
 Source/cmGeneratorExpressionDAGChecker.h           |    3 +-
 Source/cmGeneratorExpressionEvaluator.cxx          |   40 ---
 Source/cmGeneratorExpressionEvaluator.h            |    1 -
 Source/cmLocalGenerator.cxx                        |   36 --
 Source/cmLocalGenerator.h                          |    2 -
 Source/cmMakefile.cxx                              |  274 ----------------
 Source/cmMakefile.h                                |    6 -
 Source/cmTarget.cxx                                |  180 ----------
 Source/cmTarget.h                                  |    4 -
 Source/cmTargetCompileDefinitionsCommand.cxx       |    3 +-
 Source/cmTargetCompileDefinitionsCommand.h         |    2 +-
 Source/cmTargetCompileFeaturesCommand.cxx          |   71 ----
 Source/cmTargetCompileFeaturesCommand.h            |   41 ---
 Source/cmTargetCompileOptionsCommand.cxx           |    3 +-
 Source/cmTargetCompileOptionsCommand.h             |    2 +-
 Source/cmTargetIncludeDirectoriesCommand.cxx       |    3 +-
 Source/cmTargetIncludeDirectoriesCommand.h         |    2 +-
 Source/cmTargetPropCommandBase.cxx                 |   14 +-
 Source/cmTargetPropCommandBase.h                   |    4 +-
 .../target_compile_features/CMakeLists.txt         |   42 ---
 .../target_compile_features/binary_literals.cpp    |    6 -
 .../target_compile_features/dummy.cpp              |    5 -
 .../feature_conditional_link/CMakeLists.txt        |   26 --
 .../have_variadics/interface.h                     |   20 --
 .../no_variadics/interface.h                       |    6 -
 .../feature_conditional_link/template_user.cpp     |    8 -
 .../target_compile_features/gnuxx_typeof_test.cpp  |    6 -
 .../lib_delegating_constructors.cpp                |    8 -
 .../lib_delegating_constructors.h                  |   17 -
 .../target_compile_features/lib_user.cpp           |   27 --
 .../CMakeCommands/target_compile_features/main.cpp |   25 --
 .../target_compile_features/msvcxx_sealed_test.cpp |    8 -
 Tests/CMakeLists.txt                               |   30 --
 Tests/CxxDialect/CMakeLists.txt                    |   14 -
 Tests/CxxDialect/use_constexpr.cxx                 |   10 -
 Tests/CxxDialect/use_constexpr_and_typeof.cxx      |   11 -
 Tests/CxxDialect/use_typeof.cxx                    |    6 -
 Tests/ExportImport/Export/Interface/CMakeLists.txt |    5 +-
 Tests/ExportImport/Import/Interface/CMakeLists.txt |   24 --
 .../WriteCompilerDetectionHeader/CMakeLists.txt    |  100 ------
 Tests/Module/WriteCompilerDetectionHeader/main.cpp |   31 --
 Tests/RunCMake/CMakeLists.txt                      |   10 -
 Tests/RunCMake/have_feature/CMakeLists.txt         |    3 -
 Tests/RunCMake/have_feature/RunCMakeTest.cmake     |    3 -
 Tests/RunCMake/have_feature/empty.cpp              |    7 -
 .../RunCMake/have_feature/inconsistent-result.txt  |    1 -
 .../RunCMake/have_feature/inconsistent-stderr.txt  |    4 -
 Tests/RunCMake/have_feature/inconsistent.cmake     |    8 -
 .../target_compile_features/CMakeLists.txt         |    4 -
 .../target_compile_features/RunCMakeTest.cmake     |   15 -
 .../alias_target-result.txt                        |    1 -
 .../alias_target-stderr.txt                        |    4 -
 .../target_compile_features/alias_target.cmake     |    4 -
 Tests/RunCMake/target_compile_features/empty.cpp   |    7 -
 .../imported_target-result.txt                     |    1 -
 .../imported_target-stderr.txt                     |    4 -
 .../target_compile_features/imported_target.cmake  |    3 -
 .../invalid_args-result.txt                        |    1 -
 .../invalid_args-stderr.txt                        |    4 -
 .../target_compile_features/invalid_args.cmake     |    3 -
 .../invalid_args_on_interface-result.txt           |    1 -
 .../invalid_args_on_interface-stderr.txt           |    5 -
 .../invalid_args_on_interface.cmake                |    3 -
 .../no_matching_cxx_feature-result.txt             |    1 -
 .../no_matching_cxx_feature-stderr.txt             |    8 -
 .../no_matching_cxx_feature.cmake                  |   26 --
 .../target_compile_features/no_target-result.txt   |    1 -
 .../target_compile_features/no_target-stderr.txt   |    5 -
 .../target_compile_features/no_target.cmake        |    2 -
 .../not_a_cxx_feature-result.txt                   |    1 -
 .../not_a_cxx_feature-stderr.txt                   |    4 -
 .../not_a_cxx_feature.cmake                        |    6 -
 .../not_enough_args-result.txt                     |    1 -
 .../not_enough_args-stderr.txt                     |    4 -
 .../target_compile_features/not_enough_args.cmake  |    3 -
 .../unknown_compiler-result.txt                    |    1 -
 .../unknown_compiler-stderr.txt                    |    1 -
 .../target_compile_features/unknown_compiler.cmake |    4 -
 .../utility_target-result.txt                      |    1 -
 .../utility_target-stderr.txt                      |    4 -
 .../target_compile_features/utility_target.cmake   |    4 -
 Tests/SystemInformation/CMakeLists.txt             |    2 +-
 Tests/SystemInformation/SystemInformation.in       |    9 -
 119 files changed, 19 insertions(+), 2411 deletions(-)
 delete mode 100644 Help/command/target_compile_features.rst
 delete mode 100644 Help/manual/cmake-compile-features.7.rst
 delete mode 100644 Help/module/WriteCompilerDetectionHeader.rst
 delete mode 100644 Help/prop_tgt/COMPILE_FEATURES.rst
 delete mode 100644 Help/prop_tgt/CXX_EXTENSIONS.rst
 delete mode 100644 Help/prop_tgt/CXX_STANDARD.rst
 delete mode 100644 Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst
 delete mode 100644 Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst
 delete mode 100644 Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
 delete mode 100644 Help/variable/CMAKE_CXX_STANDARD.rst
 delete mode 100644 Modules/CMakeDetermineCompileFeatures.cmake
 delete mode 100644 Modules/Compiler/Clang-CXX-FeatureTests.cmake
 delete mode 100644 Modules/Compiler/GNU-CXX-FeatureTests.cmake
 delete mode 100644 Modules/Compiler/MSVC-CXX-FeatureTests.cmake
 delete mode 100644 Modules/Compiler/QCC-CXX-FeatureTests.cmake
 delete mode 100644 Modules/Internal/FeatureTesting.cmake
 delete mode 100644 Modules/WriteCompilerDetectionHeader.cmake
 delete mode 100644 Source/cmTargetCompileFeaturesCommand.cxx
 delete mode 100644 Source/cmTargetCompileFeaturesCommand.h
 delete mode 100644 Tests/CMakeCommands/target_compile_features/CMakeLists.txt
 delete mode 100644 Tests/CMakeCommands/target_compile_features/binary_literals.cpp
 delete mode 100644 Tests/CMakeCommands/target_compile_features/dummy.cpp
 delete mode 100644 Tests/CMakeCommands/target_compile_features/feature_conditional_link/CMakeLists.txt
 delete mode 100644 Tests/CMakeCommands/target_compile_features/feature_conditional_link/have_variadics/interface.h
 delete mode 100644 Tests/CMakeCommands/target_compile_features/feature_conditional_link/no_variadics/interface.h
 delete mode 100644 Tests/CMakeCommands/target_compile_features/feature_conditional_link/template_user.cpp
 delete mode 100644 Tests/CMakeCommands/target_compile_features/gnuxx_typeof_test.cpp
 delete mode 100644 Tests/CMakeCommands/target_compile_features/lib_delegating_constructors.cpp
 delete mode 100644 Tests/CMakeCommands/target_compile_features/lib_delegating_constructors.h
 delete mode 100644 Tests/CMakeCommands/target_compile_features/lib_user.cpp
 delete mode 100644 Tests/CMakeCommands/target_compile_features/main.cpp
 delete mode 100644 Tests/CMakeCommands/target_compile_features/msvcxx_sealed_test.cpp
 delete mode 100644 Tests/CxxDialect/CMakeLists.txt
 delete mode 100644 Tests/CxxDialect/use_constexpr.cxx
 delete mode 100644 Tests/CxxDialect/use_constexpr_and_typeof.cxx
 delete mode 100644 Tests/CxxDialect/use_typeof.cxx
 delete mode 100644 Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt
 delete mode 100644 Tests/Module/WriteCompilerDetectionHeader/main.cpp
 delete mode 100644 Tests/RunCMake/have_feature/CMakeLists.txt
 delete mode 100644 Tests/RunCMake/have_feature/RunCMakeTest.cmake
 delete mode 100644 Tests/RunCMake/have_feature/empty.cpp
 delete mode 100644 Tests/RunCMake/have_feature/inconsistent-result.txt
 delete mode 100644 Tests/RunCMake/have_feature/inconsistent-stderr.txt
 delete mode 100644 Tests/RunCMake/have_feature/inconsistent.cmake
 delete mode 100644 Tests/RunCMake/target_compile_features/CMakeLists.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/RunCMakeTest.cmake
 delete mode 100644 Tests/RunCMake/target_compile_features/alias_target-result.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/alias_target-stderr.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/alias_target.cmake
 delete mode 100644 Tests/RunCMake/target_compile_features/empty.cpp
 delete mode 100644 Tests/RunCMake/target_compile_features/imported_target-result.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/imported_target-stderr.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/imported_target.cmake
 delete mode 100644 Tests/RunCMake/target_compile_features/invalid_args-result.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/invalid_args-stderr.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/invalid_args.cmake
 delete mode 100644 Tests/RunCMake/target_compile_features/invalid_args_on_interface-result.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/invalid_args_on_interface-stderr.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/invalid_args_on_interface.cmake
 delete mode 100644 Tests/RunCMake/target_compile_features/no_matching_cxx_feature-result.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/no_matching_cxx_feature-stderr.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/no_matching_cxx_feature.cmake
 delete mode 100644 Tests/RunCMake/target_compile_features/no_target-result.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/no_target-stderr.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/no_target.cmake
 delete mode 100644 Tests/RunCMake/target_compile_features/not_a_cxx_feature-result.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/not_a_cxx_feature-stderr.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/not_a_cxx_feature.cmake
 delete mode 100644 Tests/RunCMake/target_compile_features/not_enough_args-result.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/not_enough_args-stderr.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/not_enough_args.cmake
 delete mode 100644 Tests/RunCMake/target_compile_features/unknown_compiler-result.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/unknown_compiler-stderr.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/unknown_compiler.cmake
 delete mode 100644 Tests/RunCMake/target_compile_features/utility_target-result.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/utility_target-stderr.txt
 delete mode 100644 Tests/RunCMake/target_compile_features/utility_target.cmake


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list