merge back cmake modifs from branch 0.3
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6882 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# Analogue for standard CMake module with same name, appeared in CMake 2.8.3.
|
||||
#
|
||||
# Used for compatibility with older versions of cmake.
|
||||
|
||||
function(cmake_parse_arguments prefix options one_value_keywords multi_value_keywords)
|
||||
set(all_keywords ${options} ${one_value_keywords} ${multi_value_keywords})
|
||||
# Clear variables before parsing.
|
||||
foreach(arg ${one_value_keywords} ${multie_value_keywords})
|
||||
set(cpa_${arg})
|
||||
endforeach()
|
||||
|
||||
foreach(arg ${options})
|
||||
set(cpa_${arg} FALSE)
|
||||
endforeach()
|
||||
|
||||
set(cpa_UNPARSED_ARGUMENTS)
|
||||
|
||||
set(current_keyword)
|
||||
# Classification for current_keyword:
|
||||
# 'ONE' or 'MULTY'.
|
||||
set(current_keyword_type)
|
||||
|
||||
# now iterate over all arguments and fill the result variables
|
||||
foreach(arg ${ARGN})
|
||||
list(FIND all_keywords ${arg} keyword_index)
|
||||
|
||||
if(keyword_index EQUAL -1)
|
||||
if(current_keyword)
|
||||
if(current_keyword_type STREQUAL "ONE")
|
||||
set(cpa_${current_keyword} ${arg})
|
||||
set(current_keyword)
|
||||
else(current_keyword_type STREQUAL "ONE")
|
||||
list(APPEND cpa_${current_keyword} ${arg})
|
||||
endif(current_keyword_type STREQUAL "ONE")
|
||||
else(current_keyword)
|
||||
list(APPEND cpa_UNPARSED_ARGUMENTS ${arg})
|
||||
endif(current_keyword)
|
||||
else(keyword_index EQUAL -1)
|
||||
if(current_keyword AND current_keyword_type STREQUAL "ONE")
|
||||
message(SEND_ERROR "Value is expected for one-value-keyword ${current_keyword}")
|
||||
endif(current_keyword AND current_keyword_type STREQUAL "ONE")
|
||||
list(FIND options ${arg} option_index)
|
||||
if(option_index EQUAL -1)
|
||||
set(current_keyword ${arg})
|
||||
list(FIND one_value_keywords ${arg} one_value_index)
|
||||
if(one_value_index EQUAL -1)
|
||||
set(current_keyword_type "MULTI")
|
||||
else(one_value_index EQUAL -1)
|
||||
set(current_keyword_type "ONE")
|
||||
endif(one_value_index EQUAL -1)
|
||||
else(option_index EQUAL -1)
|
||||
set(current_keyword)
|
||||
set(cpa_${arg} TRUE)
|
||||
endif(option_index EQUAL -1)
|
||||
endif(keyword_index EQUAL -1)
|
||||
endforeach(arg ${ARGN})
|
||||
|
||||
if(current_keyword AND current_keyword_type STREQUAL "ONE")
|
||||
message(SEND_ERROR "Value is expected for one-value-keyword ${current_keyword}")
|
||||
endif(current_keyword AND current_keyword_type STREQUAL "ONE")
|
||||
|
||||
# propagate the result variables to the caller:
|
||||
foreach(keyword ${all_keywords} UNPARSED_ARGUMENTS)
|
||||
set(${prefix}_${keyword} ${cpa_${keyword}} PARENT_SCOPE)
|
||||
endforeach(keyword ${all_keywords})
|
||||
endfunction(cmake_parse_arguments prefix options one_value_keywords multi_value_keywords)
|
||||
Reference in New Issue
Block a user