speed-dreams-code/cmake/splitargn.cmake
xavi92 6d7ca06e02 String trailing whitespaces
The following shell script was used:

while read f
do
        sed -Ei 's/[[:space:]]+$//g' "$f"
done <<EOF
$(svn ls -R | grep \
        -e '.\cpp$' \
        -e '\.cmake$' \
        -e '\.txt$' \
        -e '\.cppcheck$' \
        -e '\.frag$' \
        -e '\.h$' \
        -e '\.hpp$' \
        -e '\.vert$' \
        -e '\.xml$' \
        -e '\.java$' \
        -e '\.c$')
EOF

As a side effect, this has also converted some files from CRLF line
endings to LF.

File extensions such as .ac or .osg were intentionally left out because
those usually are very large files generated by tools.



git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@9507 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: 6c1e5ab34415982ec77fc92a77e1b1c149518eca
Former-commit-id: c6cf9480ae7c1d2f9a999eb6c6b976eef8bae3ba
2024-07-30 21:45:07 +00:00

186 lines
6.1 KiB
CMake

############################################################################
#
# file : split_argn.cmake
# copyright : (C) 2008 by Mart Kelder
# web : www.speed-dreams.org
# version : $Id$
#
############################################################################
############################################################################
# #
# This program is free software; you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation; either version 2 of the License, or #
# (at your option) any later version. #
# #
############################################################################
# @file Generic macro argument parser
# @author Mart Kelder
# @version $Id$
# Internal use only : Get the list of specified keywords
MACRO(SPLIT_ARGN_KEYWORDS SAK_RESULT)
SET(SAK_FIRST TRUE)
SET(SAK_FINISHED FALSE)
FOREACH(SAK_ITEM ${ARGN})
IF(NOT SAK_FINISHED)
IF(${SAK_ITEM} STREQUAL ARGUMENTS)
SET(SAK_FINISHED TRUE)
ELSE(${SAK_ITEM} STREQUAL ARGUMENTS)
STRING(REPLACE "," ";" SAK_ITEMLIST ${SAK_ITEM})
LIST(GET SAK_ITEMLIST 0 SAK_KEYWORD)
IF(SAK_FIRST)
SET(${SAK_RESULT} ${SAK_KEYWORD})
SET(SAK_FIRST FALSE)
ELSE(SAK_FIRST)
SET(${SAK_RESULT} ${${SAK_RESULT}} ${SAK_KEYWORD})
ENDIF(SAK_FIRST)
ENDIF(${SAK_ITEM} STREQUAL ARGUMENTS)
ENDIF(NOT SAK_FINISHED)
ENDFOREACH(SAK_ITEM ${ARGN})
ENDMACRO(SPLIT_ARGN_KEYWORDS SAK_RESULT)
# Internal use only : Initialize output vars for each keyword
MACRO(SPLIT_ARGN_CLEAN_VARS)
SET(SACI_FINISHED FALSE)
FOREACH(SACI_ITEM ${ARGN})
IF(NOT SACI_FINISHED)
IF(${SACI_ITEM} STREQUAL ARGUMENTS)
SET(SACI_FINISHED TRUE)
ELSE(${SACI_ITEM} STREQUAL ARGUMENTS)
STRING(REPLACE "," ";" SACI_ITEMLIST ${SACI_ITEM})
LIST(GET SACI_ITEMLIST 3 SACI_ISVARNAME)
SET(${SACI_ISVARNAME} FALSE)
LIST(GET SACI_ITEMLIST 4 SACI_VARNAME)
SET(${SACI_VARNAME})
ENDIF(${SACI_ITEM} STREQUAL ARGUMENTS)
ENDIF(NOT SACI_FINISHED)
ENDFOREACH(SACI_ITEM ${ARGN})
ENDMACRO(SPLIT_ARGN_CLEAN_VARS)
# Internal use only : Parse args for a given keyword
MACRO(SPLIT_ARGN_GET_KEYWORD SAG_KEYWORD SAG_FOUND SAG_KEYWORDNAME SAG_MINCOUNT SAG_MAXCOUNT SAG_ISVARNAME SAG_VARNAME)
SET(${SAG_FOUND} FALSE)
SET(SAG_FINISHED FALSE)
FOREACH(SAG_ITEM ${ARGN})
IF(NOT SAG_FINISHED)
IF(${SAG_ITEM} STREQUAL ARGUMENTS)
SET(SAG_FINISHED TRUE)
ELSE(${SAG_ITEM} STREQUAL ARGUMENTS)
STRING(REPLACE "," ";" SAG_ITEMLIST ${SAG_ITEM})
LIST(GET SAG_ITEMLIST 0 SAG_ITEMKEYWORD)
IF(${SAG_KEYWORD} STREQUAL ${SAG_ITEMKEYWORD})
SET(${SAG_FOUND} TRUE)
LIST(GET SAG_ITEMLIST 0 ${SAG_KEYWORDNAME})
LIST(GET SAG_ITEMLIST 1 ${SAG_MINCOUNT})
LIST(GET SAG_ITEMLIST 2 ${SAG_MAXCOUNT})
LIST(GET SAG_ITEMLIST 3 ${SAG_ISVARNAME})
LIST(GET SAG_ITEMLIST 4 ${SAG_VARNAME})
ENDIF(${SAG_KEYWORD} STREQUAL ${SAG_ITEMKEYWORD})
ENDIF(${SAG_ITEM} STREQUAL ARGUMENTS)
ENDIF(NOT SAG_FINISHED)
ENDFOREACH(SAG_ITEM ${ARGN})
ENDMACRO(SPLIT_ARGN_GET_KEYWORD SAG_KEYWORD SAG_FOUND SAG_KEYWORDNAME SAG_MINCOUNT SAG_MAXCOUNT SAG_ISVARNAME SAG_VARNAME)
# Internal use only : Test if a string is a keyword
MACRO(SPLIT_ARGN_IS_KEYWORD SAG_KEYWORDS SAG_ITEM SAG_RESULT)
LIST(FIND ${SAG_KEYWORDS} ${SAG_ITEM} SAG_FIND)
IF(${SAG_FIND} LESS 0)
SET(${SAG_RESULT} FALSE)
ELSE(${SAG_FIND} LESS 0)
SET(${SAG_RESULT} TRUE)
ENDIF(${SAG_FIND} LESS 0)
ENDMACRO(SPLIT_ARGN_IS_KEYWORD SAG_KEYWORDS SAG_ITEM)
# The argument parser
MACRO(SPLIT_ARGN)
SPLIT_ARGN_KEYWORDS(SA_KEYWORDS ${ARGN})
SPLIT_ARGN_CLEAN_VARS(${ARGN})
SET(SA_EXPECT_KEYWORD TRUE)
SET(SA_EXPECT_VALUE FALSE)
SET(SA_START FALSE)
#Loop through list
FOREACH(SA_ITEM ${ARGN})
IF(NOT SA_START)
IF(${SA_ITEM} STREQUAL ARGUMENTS)
SET(SA_START TRUE)
ENDIF(${SA_ITEM} STREQUAL ARGUMENTS)
ELSE(NOT SA_START)
#Check if the current item is a keyword
SPLIT_ARGN_IS_KEYWORD(SA_KEYWORDS ${SA_ITEM} SA_ISKEYWORD)
IF(SA_ISKEYWORD)
#Check if it is what we expect
IF(NOT SA_EXPECT_KEYWORD)
MESSAGE(ERROR ": Unexpected keyword in SPLIT_ARGN, got \"${SA_ITEM}\".")
ELSE(NOT SA_EXPECT_KEYWORD)
#Save information about the keyword
SPLIT_ARGN_GET_KEYWORD(${SA_ITEM} SA_KEYWORD_FOUND SA_CUR_KEYWORD SA_CUR_MINCOUNT SA_CUR_MAXCOUNT SA_CUR_ISVARNAME SA_CUR_VARNAME ${ARGN})
IF(SA_KEYWORD_FOUND)
SET(SA_CUR_INDEX 0)
SET(${SA_CUR_VARNAME})
SET(${SA_CUR_ISVARNAME} FALSE)
ELSE(SA_KEYWORD_FOUND)
MESSAGE(ERROR ": Got keyword, but didn't found information about \"${SA_ITEM}\"")
ENDIF(SA_KEYWORD_FOUND)
ENDIF(NOT SA_EXPECT_KEYWORD)
ELSE(SA_ISKEYWORD)
#Check if it is what we expect
IF(NOT SA_EXPECT_VALUE)
MESSAGE(ERROR ": Unexpected value in SPLIT_ARGN, got \"${SA_ITEM}\".")
ELSE(NOT SA_EXPECT_VALUE)
#Save this item to the list
SET(${SA_CUR_VARNAME} ${${SA_CUR_VARNAME}} ${SA_ITEM})
#Increase index
MATH(EXPR SA_CUR_INDEX_TMP "${SA_CUR_INDEX}+1")
SET(SA_CUR_INDEX ${SA_CUR_INDEX_TMP})
ENDIF(NOT SA_EXPECT_VALUE)
ENDIF(SA_ISKEYWORD)
#Check what to expect from the next element
IF(${SA_CUR_INDEX} LESS ${SA_CUR_MINCOUNT})
SET(SA_EXPECT_KEYWORD FALSE)
SET(SA_EXPECT_VALUE TRUE)
ELSE(${SA_CUR_INDEX} LESS ${SA_CUR_MINCOUNT})
SET(${SA_CUR_ISVARNAME} TRUE)
SET(SA_EXPECT_KEYWORD TRUE)
IF(${SA_CUR_INDEX} LESS ${SA_CUR_MAXCOUNT} OR ${SA_CUR_MAXCOUNT} LESS 0)
SET(SA_EXPECT_VALUE TRUE)
ELSE(${SA_CUR_INDEX} LESS ${SA_CUR_MAXCOUNT} OR ${SA_CUR_MAXCOUNT} LESS 0)
SET(SA_EXPECT_VALUE FALSE)
ENDIF(${SA_CUR_INDEX} LESS ${SA_CUR_MAXCOUNT} OR ${SA_CUR_MAXCOUNT} LESS 0)
ENDIF(${SA_CUR_INDEX} LESS ${SA_CUR_MINCOUNT})
ENDIF(NOT SA_START)
ENDFOREACH(SA_ITEM ${ARGN})
IF(SA_START AND NOT SA_EXPECT_KEYWORD)
#Didn't get all the expected values of the last keyword
MESSAGE(ERROR ": Missing values at the end in SPLIT_ARGN.")
ENDIF(SA_START AND NOT SA_EXPECT_KEYWORD)
ENDMACRO(SPLIT_ARGN)