#
#    Copyright 2014-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 common to all other automake
#      headers and files.
#

include $(abs_top_nlbuild_autotools_dir)/automake/pre/macros/constants.am
include $(abs_top_nlbuild_autotools_dir)/automake/pre/macros/paths.am
include $(abs_top_nlbuild_autotools_dir)/automake/pre/macros/pretty.am
include $(abs_top_nlbuild_autotools_dir)/automake/pre/macros/verbosity.am
include $(abs_top_nlbuild_autotools_dir)/automake/pre/macros/coverage.am
include $(abs_top_nlbuild_autotools_dir)/automake/pre/macros/subdirs.am

#
# create-directory
#
# Create the directory with the name of the $(@) variable.
#
define create-directory
$(AM_V_MKDIR_P)$(MKDIR_P) $(@)
endef # create-directory

#
# create-link
#
# Create the symbolic link with the source of the $(<) variable and
# the destination of the $(@) variable.
#
define create-link
$(AM_V_LN_S)$(LN_S) $(<) $(@)
endef # create-link

#
# check-file <macro suffix>
#
# Check whether a file, referenced by the $(@) variable, should be
# updated / regenerated based on its dependencies, referenced by the
# $(<) variable by running the make macro check-file-<macro suffix>.
#
# The $(<) is passed as the first argument if the macro wants to process
# it and the prospective new output file, which the macro MUST
# generate, as the second.
#
# This macro will ensure that any required parent directories are created
# prior to invoking check-file-<macro suffix>.
#
# This macro is similar to and inspired by that from Linux Kbuild and
# elsewhere.
#
#   <macro suffix> - The name, suffixed to "check-file-", which indicates
#                    the make macro to invoke.
#
#
define check-file
$(AM_V_at)set -e;                                   \
echo '  CHECK    $(@)';                             \
$(MKDIR_P) $(dir $(@));                             \
$(call check-file-$(1),$(<),$(@).N);                \
if [ -r "$(@)" ] && $(CMP) -s "$(@)" "$(@).N"; then \
    rm -f "$(@).N";                                 \
else                                                \
    echo '  GEN      $(@)';                         \
    mv -f "$(@).N" "$(@)";                          \
fi
endef # check-file




