# ---------------------------------------------------------------------------- # # 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-2007 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 := $(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)) else __gmsl_root := endif include $(__gmsl_root)__gmsl endif # __gmsl_included