Browse Source

Merge topic 'FixEclipseIncludePathParsingWithSpaces'

9fd4e18 Fix parsing of builtin macros so Eclipse handles them properly (#10868)
Brad King 15 years ago
parent
commit
612c0b68a0
1 changed files with 12 additions and 7 deletions
  1. 12 7
      Modules/CMakeFindEclipseCDT4.cmake

+ 12 - 7
Modules/CMakeFindEclipseCDT4.cmake

@@ -47,16 +47,21 @@ MACRO(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang _resultIncludeDirs _resultDefines
 
   # now find the builtin macros:
   STRING(REGEX MATCHALL "#define[^\n]+\n" _defineLines "${_gccStdout}")
+# A few example lines which the regexp below has to match properly:
+#  #define   MAX(a,b) ((a) > (b) ? (a) : (b))
+#  #define __fastcall __attribute__((__fastcall__))
+#  #define   FOO (23)
+#  #define __UINTMAX_TYPE__ long long unsigned int
+#  #define __UINTMAX_TYPE__ long long unsigned int
+#  #define __i386__  1
 
   FOREACH(nextLine ${_defineLines})
-    STRING(REGEX REPLACE "#define " "" _defineRemoved "${nextLine}")
-# not sure why this longer regexp was in the patch, the shorter one in the line below seems to work just fine:
-#   STRING(REGEX MATCH "[A-Za-z_][A-Za-z0-9_]*|[A-Za-z_][A-Za-z0-9_]*\\([A-Za-z0-9_, ]*\\)" _name "${_defineRemoved}")
-    STRING(REGEX MATCH "[A-Za-z_][A-Za-z0-9_]*" _name "${_defineRemoved}")
-    LIST(APPEND ${_resultDefines} "${_name}")
+    STRING(REGEX MATCH "^#define +([A-Za-z_][A-Za-z0-9_]*)(\\([^\\)]+\\))? +(.+) *$" _dummy "${nextLine}")
+    SET(_name "${CMAKE_MATCH_1}${CMAKE_MATCH_2}")
+    STRING(STRIP "${CMAKE_MATCH_3}" _value)
+    #MESSAGE(STATUS "m1: -${CMAKE_MATCH_1}- m2: -${CMAKE_MATCH_2}- m3: -${CMAKE_MATCH_3}-")
 
-    STRING(REPLACE ${_name} "" _nameRemoved "${_defineRemoved}")
-    STRING(STRIP "${_nameRemoved}" _value)
+    LIST(APPEND ${_resultDefines} "${_name}")
     IF(_value)
       LIST(APPEND ${_resultDefines} "${_value}")
     ELSE()