Просмотр исходного кода

Merge topic 'iwyu-preparation'

1c2c6297 cmTargetLinkLibraryType: Extract from cmStandardIncludes.h
ffdc0a8e cmTypeMacro: Extract from cmStandardIncludes.h
e4eb88e2 cmCustomCommandLines: Extract from cmStandardIncludes.h
535ec2bf cmDocumentationEntry: Extract from cmStandardIncludes
c3819aca cmConfigure.h: Establish as 'include first' file
Brad King 9 лет назад
Родитель
Сommit
290913fab8

+ 17 - 0
Source/cmConfigure.cmake.h.in

@@ -9,6 +9,21 @@
   implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   See the License for more information.
 ============================================================================*/
+#ifndef cmConfigure_h
+#define cmConfigure_h
+
+#include <cmsys/Configure.hxx>
+
+#ifdef _MSC_VER
+#pragma warning(disable : 4786)
+#pragma warning(disable : 4503)
+#endif
+
+#ifdef __ICL
+#pragma warning(disable : 985)
+#pragma warning(disable : 1572) /* floating-point equality test */
+#endif
+
 #cmakedefine HAVE_ENVIRON_NOT_REQUIRE_PROTOTYPE
 #cmakedefine HAVE_UNSETENV
 #cmakedefine CMAKE_USE_ELF_PARSER
@@ -17,3 +32,5 @@
 #cmakedefine CMake_HAVE_CXX11_UNORDERED_MAP
 #define CMAKE_BIN_DIR "/@CMAKE_BIN_DIR@"
 #define CMAKE_DATA_DIR "/@CMAKE_DATA_DIR@"
+
+#endif

+ 38 - 0
Source/cmCustomCommandLines.h

@@ -0,0 +1,38 @@
+/*============================================================================
+  CMake - Cross Platform Makefile Generator
+  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+
+  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 cmCustomCommandLines_h
+#define cmCustomCommandLines_h
+
+#include <cmConfigure.h> // IWYU pragma: keep
+
+#include <string>
+#include <vector>
+
+/** Data structure to represent a single command line.  */
+class cmCustomCommandLine : public std::vector<std::string>
+{
+public:
+  typedef std::vector<std::string> Superclass;
+  typedef Superclass::iterator iterator;
+  typedef Superclass::const_iterator const_iterator;
+};
+
+/** Data structure to represent a list of command lines.  */
+class cmCustomCommandLines : public std::vector<cmCustomCommandLine>
+{
+public:
+  typedef std::vector<cmCustomCommandLine> Superclass;
+  typedef Superclass::iterator iterator;
+  typedef Superclass::const_iterator const_iterator;
+};
+
+#endif

+ 45 - 0
Source/cmDocumentationEntry.h

@@ -0,0 +1,45 @@
+/*============================================================================
+  CMake - Cross Platform Makefile Generator
+  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+
+  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 cmDocumentationEntry_h
+#define cmDocumentationEntry_h
+
+#include <cmConfigure.h> // IWYU pragma: keep
+
+#include <string>
+
+/** Standard documentation entry for cmDocumentation's formatting.  */
+struct cmDocumentationEntry
+{
+  std::string Name;
+  std::string Brief;
+  cmDocumentationEntry() {}
+  cmDocumentationEntry(const char* doc[2])
+  {
+    if (doc[0]) {
+      this->Name = doc[0];
+    }
+    if (doc[1]) {
+      this->Brief = doc[1];
+    }
+  }
+  cmDocumentationEntry(const char* n, const char* b)
+  {
+    if (n) {
+      this->Name = n;
+    }
+    if (b) {
+      this->Brief = b;
+    }
+  }
+};
+
+#endif

+ 4 - 84
Source/cmStandardIncludes.h

@@ -18,18 +18,6 @@
 
 #include <cmConfigure.h>
 
-#include <cmsys/Configure.hxx>
-
-#ifdef _MSC_VER
-#pragma warning(disable : 4786)
-#pragma warning(disable : 4503)
-#endif
-
-#ifdef __ICL
-#pragma warning(disable : 985)
-#pragma warning(disable : 1572) /* floating-point equality test */
-#endif
-
 // Provide fixed-size integer types.
 #include <cm_kwiml.h>
 
@@ -67,77 +55,9 @@ typedef unsigned short mode_t;
 /* Poison this operator to avoid common mistakes.  */
 extern void operator<<(std::ostream&, const std::ostringstream&);
 
-/** Standard documentation entry for cmDocumentation's formatting.  */
-struct cmDocumentationEntry
-{
-  std::string Name;
-  std::string Brief;
-  cmDocumentationEntry() {}
-  cmDocumentationEntry(const char* doc[2])
-  {
-    if (doc[0]) {
-      this->Name = doc[0];
-    }
-    if (doc[1]) {
-      this->Brief = doc[1];
-    }
-  }
-  cmDocumentationEntry(const char* n, const char* b)
-  {
-    if (n) {
-      this->Name = n;
-    }
-    if (b) {
-      this->Brief = b;
-    }
-  }
-};
-
-/** Data structure to represent a single command line.  */
-class cmCustomCommandLine : public std::vector<std::string>
-{
-public:
-  typedef std::vector<std::string> Superclass;
-  typedef Superclass::iterator iterator;
-  typedef Superclass::const_iterator const_iterator;
-};
-
-/** Data structure to represent a list of command lines.  */
-class cmCustomCommandLines : public std::vector<cmCustomCommandLine>
-{
-public:
-  typedef std::vector<cmCustomCommandLine> Superclass;
-  typedef Superclass::iterator iterator;
-  typedef Superclass::const_iterator const_iterator;
-};
-
-// All subclasses of cmCommand or cmCTestGenericHandler should
-// invoke this macro.
-#define cmTypeMacro(thisClass, superclass)                                    \
-  virtual const char* GetNameOfClass() { return #thisClass; }                 \
-  typedef superclass Superclass;                                              \
-  static bool IsTypeOf(const char* type)                                      \
-  {                                                                           \
-    if (!strcmp(#thisClass, type)) {                                          \
-      return true;                                                            \
-    }                                                                         \
-    return Superclass::IsTypeOf(type);                                        \
-  }                                                                           \
-  virtual bool IsA(const char* type) { return thisClass::IsTypeOf(type); }    \
-  static thisClass* SafeDownCast(cmObject* c)                                 \
-  {                                                                           \
-    if (c && c->IsA(#thisClass)) {                                            \
-      return static_cast<thisClass*>(c);                                      \
-    }                                                                         \
-    return 0;                                                                 \
-  }                                                                           \
-  class cmTypeMacro_UseTrailingSemicolon
-
-enum cmTargetLinkLibraryType
-{
-  GENERAL_LibraryType,
-  DEBUG_LibraryType,
-  OPTIMIZED_LibraryType
-};
+#include "cmCustomCommandLines.h"
+#include "cmDocumentationEntry.h"
+#include "cmTargetLinkLibraryType.h"
+#include "cmTypeMacro.h"
 
 #endif

+ 22 - 0
Source/cmTargetLinkLibraryType.h

@@ -0,0 +1,22 @@
+/*============================================================================
+  CMake - Cross Platform Makefile Generator
+  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+
+  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 cmTargetLinkLibraryType_h
+#define cmTargetLinkLibraryType_h
+
+enum cmTargetLinkLibraryType
+{
+  GENERAL_LibraryType,
+  DEBUG_LibraryType,
+  OPTIMIZED_LibraryType
+};
+
+#endif

+ 37 - 0
Source/cmTypeMacro.h

@@ -0,0 +1,37 @@
+/*============================================================================
+  CMake - Cross Platform Makefile Generator
+  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+
+  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 cmTypeMacro_h
+#define cmTypeMacro_h
+
+// All subclasses of cmCommand or cmCTestGenericHandler should
+// invoke this macro.
+#define cmTypeMacro(thisClass, superclass)                                    \
+  virtual const char* GetNameOfClass() { return #thisClass; }                 \
+  typedef superclass Superclass;                                              \
+  static bool IsTypeOf(const char* type)                                      \
+  {                                                                           \
+    if (!strcmp(#thisClass, type)) {                                          \
+      return true;                                                            \
+    }                                                                         \
+    return Superclass::IsTypeOf(type);                                        \
+  }                                                                           \
+  virtual bool IsA(const char* type) { return thisClass::IsTypeOf(type); }    \
+  static thisClass* SafeDownCast(cmObject* c)                                 \
+  {                                                                           \
+    if (c && c->IsA(#thisClass)) {                                            \
+      return static_cast<thisClass*>(c);                                      \
+    }                                                                         \
+    return 0;                                                                 \
+  }                                                                           \
+  class cmTypeMacro_UseTrailingSemicolon
+
+#endif