Fix parsing of builtin macros so Eclipse handles them properly (#10868)
Alex
This commit is contained in:
parent
cac6edcad9
commit
9fd4e1814b
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue