mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-25726 get rid of cmake comment hack in sql_yacc.yy
and replace it with equally unsightly %ifdef/%endif hack also, support %else, it's nice
This commit is contained in:
39
sql/gen_yy_files.cmake
Normal file
39
sql/gen_yy_files.cmake
Normal file
@@ -0,0 +1,39 @@
|
||||
if(POLICY CMP0054)
|
||||
cmake_policy(SET CMP0054 NEW)
|
||||
endif()
|
||||
file(READ "${IN}" data)
|
||||
file(WRITE "${OUT1}" "")
|
||||
file(WRITE "${OUT2}" "")
|
||||
set(where 0)
|
||||
string(REGEX REPLACE "/\\* sql_yacc\\.yy \\*/" "/* DON'T EDIT THIS FILE. IT'S GENERATED. EDIT sql_yacc.yy INSTEAD */" data "${data}")
|
||||
while(NOT data STREQUAL "")
|
||||
string(REGEX MATCH "^(%[ie][^\n]*\n)|((%[^ie\n]|[^%\n])[^\n]*\n)+|\n+" line "${data}")
|
||||
string(LENGTH "${line}" ll)
|
||||
string(SUBSTRING "${data}" ${ll} -1 data)
|
||||
|
||||
if (line MATCHES "^%ifdef +${VAL1} *\n")
|
||||
set(where 1)
|
||||
set(line "\n")
|
||||
elseif(line MATCHES "^%ifdef +${VAL2} *\n")
|
||||
set(where 2)
|
||||
set(line "\n")
|
||||
elseif(line MATCHES "^%else( *| +.*)\n" AND where GREATER 0)
|
||||
math(EXPR where "3-${where}")
|
||||
set(line "\n")
|
||||
elseif(line MATCHES "^%endif( *| +.*)\n")
|
||||
set(where 0)
|
||||
set(line "\n")
|
||||
endif()
|
||||
if(where STREQUAL 1)
|
||||
file(APPEND "${OUT1}" "${line}")
|
||||
string(REGEX REPLACE "[^\n]+" "" line "${line}")
|
||||
file(APPEND "${OUT2}" "${line}")
|
||||
elseif(where STREQUAL 2)
|
||||
file(APPEND "${OUT2}" "${line}")
|
||||
string(REGEX REPLACE "[^\n]+" "" line "${line}")
|
||||
file(APPEND "${OUT1}" "${line}")
|
||||
else()
|
||||
file(APPEND "${OUT1}" "${line}")
|
||||
file(APPEND "${OUT2}" "${line}")
|
||||
endif()
|
||||
endwhile()
|
Reference in New Issue
Block a user