86 lines
3 KiB
Text
86 lines
3 KiB
Text
|
# ----------------------------------------------------------------------------
|
||
|
#
|
||
|
# GNU Make Standard Library (GMSL)
|
||
|
#
|
||
|
# A library of functions to be used with GNU Make's $(call) that
|
||
|
# provides functionality not available in standard GNU Make.
|
||
|
#
|
||
|
# Copyright (c) 2005-2022 John Graham-Cumming
|
||
|
#
|
||
|
# This file is part of GMSL
|
||
|
#
|
||
|
# Redistribution and use in source and binary forms, with or without
|
||
|
# modification, are permitted provided that the following conditions
|
||
|
# are met:
|
||
|
#
|
||
|
# Redistributions of source code must retain the above copyright
|
||
|
# notice, this list of conditions and the following disclaimer.
|
||
|
#
|
||
|
# Redistributions in binary form must reproduce the above copyright
|
||
|
# notice, this list of conditions and the following disclaimer in the
|
||
|
# documentation and/or other materials provided with the distribution.
|
||
|
#
|
||
|
# Neither the name of the John Graham-Cumming nor the names of its
|
||
|
# contributors may be used to endorse or promote products derived from
|
||
|
# this software without specific prior written permission.
|
||
|
#
|
||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||
|
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||
|
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||
|
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||
|
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||
|
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||
|
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||
|
#
|
||
|
# ----------------------------------------------------------------------------
|
||
|
|
||
|
# Determine if the library has already been included and if so don't
|
||
|
# bother including it again
|
||
|
|
||
|
ifndef __gmsl_included
|
||
|
|
||
|
# Standard definitions for true and false. true is any non-empty
|
||
|
# string, false is an empty string. These are intended for use with
|
||
|
# $(if).
|
||
|
|
||
|
true := T
|
||
|
false :=
|
||
|
|
||
|
# ----------------------------------------------------------------------------
|
||
|
# Function: not
|
||
|
# Arguments: 1: A boolean value
|
||
|
# Returns: Returns the opposite of the arg. (true -> false, false -> true)
|
||
|
# ----------------------------------------------------------------------------
|
||
|
not = $(if $1,$(false),$(true))
|
||
|
|
||
|
# Prevent reinclusion of the library
|
||
|
|
||
|
__gmsl_included := $(true)
|
||
|
|
||
|
# Try to determine where this file is located. If the caller did
|
||
|
# include /foo/gmsl then extract the /foo/ so that __gmsl gets
|
||
|
# included transparently
|
||
|
|
||
|
__gmsl_root :=
|
||
|
|
||
|
ifneq ($(MAKEFILE_LIST),)
|
||
|
__gmsl_root := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
|
||
|
|
||
|
# If there are any spaces in the path in __gmsl_root then give up
|
||
|
|
||
|
ifeq (1,$(words $(__gmsl_root)))
|
||
|
__gmsl_root := $(patsubst %gmsl,%,$(__gmsl_root))
|
||
|
endif
|
||
|
|
||
|
endif
|
||
|
|
||
|
include $(__gmsl_root)__gmsl
|
||
|
|
||
|
endif # __gmsl_included
|
||
|
|