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