#
#    Copyright 2010-2016 Nest Labs Inc. All Rights Reserved.
#
#    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.
#

#
#    Description:
#      This file defines automake macros for manipulating and querying
#      paths.
#

# Deslashify <path> ...
#
# Ensure that there is NO trailing directory delimiter at the end of
# the specified path.

Deslashify          = $(patsubst %$(Slash),%,$(1))

# Slashify <path> ...
#
# Ensure that there is a single trailing directory delimiter at the
# end of the specified path.

Slashify            = $(addsuffix $(Slash),$(call Deslashify,$(1)))

#
# IsRealPath <path>
#
# If the path is a real rather than symbolic link path, the path is returned. 

IsRealPath          = $(if $(patsubst $(realpath $(1)),,$(abspath $(1))),,$(1))
