diff options
Diffstat (limited to 'modules/misc.cmake')
-rw-r--r-- | modules/misc.cmake | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/modules/misc.cmake b/modules/misc.cmake new file mode 100644 index 0000000..56c9d7c --- /dev/null +++ b/modules/misc.cmake @@ -0,0 +1,112 @@ +# Copyright (c) 2019 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +############################################################################## +# Highlight WARNING and ERROR messages +############################################################################## +function(message) + list(GET ARGV 0 type) + if("$ENV{TERM}" STREQUAL "xterm-256color" OR "$ENV{TERM}" STREQUAL "xterm-color" OR "$ENV{TERM}" STREQUAL "xterm") + string(ASCII 27 esc) + set(red "${esc}[1;31m") + set(yellow "${esc}[1;33m") + set(cyan "${esc}[36m") + set(white "${esc}[37;1m") + set(reset "${esc}[m") + endif() + if(type STREQUAL FATAL_ERROR OR type STREQUAL SEND_ERROR) + list(REMOVE_AT ARGV 0) + _message(${type} "${red}${ARGV}${reset}") + elseif(type STREQUAL WARNING) + list(REMOVE_AT ARGV 0) + _message(STATUS "${yellow}${ARGV}${reset}") + elseif(type STREQUAL STATUS) + list(REMOVE_AT ARGV 0) + _message(STATUS "${cyan}${ARGV}${reset}") + elseif(type STREQUAL INFO) + list(REMOVE_AT ARGV 0) + _message("${white}${ARGV}${reset}") + elseif(type STREQUAL INFO1) + list(REMOVE_AT ARGV 0) + _message(" ${white}${ARGV}${reset}") + else() + _message(${ARGV}) + endif() +endfunction() + +############################################################################## +# aligned config output +############################################################################## +function(info desc val) + if("$ENV{TERM}" STREQUAL "xterm-256color" OR "$ENV{TERM}" STREQUAL "xterm-color" OR "$ENV{TERM}" STREQUAL "xterm") + string(ASCII 27 esc) + set(reset "${esc}[m") + set(white "${esc}[37;1m") + endif() + string(LENGTH ${desc} len) + while (len LESS 20) + set (desc "${desc} ") + string(LENGTH ${desc} len) + endwhile() + if("${val}" MATCHES ";") + string(REPLACE ";" "\n " val "${val}") + endif() + _message(" ${white}${desc}${reset}: ${val}") +endfunction() + +############################################################################## +# Convert to camel case string from lower case underscored string. +# +# :param input: the input lowercase underscored string +# :type input: string +# :param output: the output camelcase string +# :type output: string +############################################################################## +function(camel_case_string input output) + string(REPLACE "_" ";" list ${input}) + foreach(SUBSTR ${list}) + string(SUBSTRING ${SUBSTR} 0 1 FIRST_LETTER) + string(TOUPPER ${FIRST_LETTER} FIRST_LETTER) + string(REGEX REPLACE "^.(.*)" "${FIRST_LETTER}\\1" SUBSTR "${SUBSTR}") + string(APPEND result ${SUBSTR}) + endforeach(SUBSTR) + set(${output} "${result}" PARENT_SCOPE) +endfunction() + +############################################################################## +# string append +############################################################################## + +macro(string_append var str) + if (NOT ${var}) + set(${var} "${str}") + else() + set(${var} "${${var}} ${str}") + endif() +endmacro() + +# OS RELATED VARIABLES +list(APPEND DebianBasedOS "Ubuntu" "LinuxMint") +list(APPEND RHBasedOS "CentOS") +unset(RELEASE_ID) +unset(RELEASE_CODENAME) +find_program(LSB_RELEASE_EXEC lsb_release) +execute_process(COMMAND ${LSB_RELEASE_EXEC} -is + OUTPUT_VARIABLE RELEASE_ID + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + +execute_process(COMMAND ${LSB_RELEASE_EXEC} -cs + OUTPUT_VARIABLE RELEASE_CODENAME + OUTPUT_STRIP_TRAILING_WHITESPACE + ) |