blob: f422895ecbd23fe3e99cca91a501155514fcf013 [file] [log] [blame]
#-------------------------------------------------------------------------------
# Copyright (c) 2017-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------
#Print a message and exit with failure
#
#Examples:
# failure("Something is wrong!")
function(failure)
message(FATAL_ERROR "${ARGN}")
endfunction()
#Convert \ directory separators to / on windows systems
#
#Convert the directory separators to forward slash on windows. Avoid
#conversion if path contains any forward slashes to avoid mixing up cygwin or
#mingw paths where an extra caharacter is escaped (i.e. "/c/Program\ Files/")
#
#Examples:
# set(MY_PATH "C:\foo\bar")
# win_fix_dir_sep(PATH MY_PATH)
#
#INPUTS:
# PATH - (mandatory) - name of the string variable to operate on
#
#OUTPUTS
# PATH is modified as needed.
#
function(win_fix_dir_sep)
#Parse our arguments
set( _OPTIONS_ARGS ) #No option (on/off) arguments (e.g. IGNORE_CASE)
set( _ONE_VALUE_ARGS PATH ) #Single option arguments (e.g. PATH "./foo/bar")
set( _MULTI_VALUE_ARGS ) #List arguments (e.g. LANGUAGES C ASM CXX)
cmake_parse_arguments(_MY_PARAMS "${_OPTIONS_ARGS}" "${_ONE_VALUE_ARGS}" "${_MULTI_VALUE_ARGS}" ${ARGN} )
#Check mandatory parameters
if(NOT _MY_PARAMS_PATH)
failure("win_fix_dir_sep(): Missing mandatory parameter PATH!")
endif()
set(_PATH ${_MY_PARAMS_PATH})
#To avoid trouble on windows change directory separator.
if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
#Do not convert directory separator if there are forward slashes
#present. This is to avoid mixing up escaped characters in cygwin
#or mingw paths (i.e. c:/Program\ Files/something)
string(FIND "${${_PATH}}" "/" _is_found)
if (_is_found LESS 0)
string(REPLACE "\\" "/" ${_PATH} "${${_PATH}}")
set(${_PATH} "${${_PATH}}" PARENT_SCOPE)
endif()
endif()
endfunction()