mirror of
https://github.com/rizinorg/cutter.git
synced 2024-12-18 19:06:10 +00:00
49 lines
1.3 KiB
CMake
49 lines
1.3 KiB
CMake
# -------------------
|
|
# QMakeProParse.cmake
|
|
# -------------------
|
|
#
|
|
# qmake project parsing utilities
|
|
#
|
|
|
|
# parse_qmake_pro(<PRO_FILE> <PREFIX>)
|
|
#
|
|
# parse qmake .pro file PRO_FILE and set cmake variables <PREFIX>_<VAR_NAME>
|
|
# to content of variable VAR_NAME in the .pro file.
|
|
#
|
|
# supported qmake syntax:
|
|
# - VARIABLE = values
|
|
# - VARIABLE += values
|
|
#
|
|
# not (yet) supported:
|
|
# - VARIABLE -= values
|
|
# - scopes
|
|
#
|
|
function(parse_qmake_pro PRO_FILE PREFIX)
|
|
file(READ ${PRO_FILE} PRO_CONTENT)
|
|
|
|
# concatenate lines with backslashes
|
|
string(REGEX REPLACE "\\\\\ *\n" "" PRO_CONTENT "${PRO_CONTENT}")
|
|
|
|
# separate lines
|
|
string(REGEX MATCHALL "[^\n]+(\n|$)" PRO_LINES "${PRO_CONTENT}")
|
|
|
|
foreach(LINE IN LISTS PRO_LINES)
|
|
string(STRIP "${LINE}" LINE)
|
|
|
|
# VARIABLE = some values ...
|
|
string(REGEX MATCH "^([a-zA-Z_]+)\ *=(.*)" VAR_SET "${LINE}")
|
|
if(CMAKE_MATCH_1)
|
|
separate_arguments(VALUES UNIX_COMMAND ${CMAKE_MATCH_2})
|
|
set(${PREFIX}_${CMAKE_MATCH_1} "${VALUES}" PARENT_SCOPE)
|
|
endif()
|
|
|
|
# VARIABLE += some values ...
|
|
string(REGEX MATCH "^([a-zA-Z_]+)\ *\\+=(.*)" VAR_SET "${LINE}")
|
|
if(CMAKE_MATCH_1)
|
|
separate_arguments(VALUES UNIX_COMMAND ${CMAKE_MATCH_2})
|
|
set(VAR_NAME ${PREFIX}_${CMAKE_MATCH_1})
|
|
set(${VAR_NAME} "${${VAR_NAME}}" "${VALUES}" PARENT_SCOPE)
|
|
endif()
|
|
|
|
endforeach()
|
|
endfunction() |