From a15cf65c44d5c224169c32ef5495b68c758134b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sun, 18 May 2014 16:08:14 +0200 Subject: Imported Upstream version 3.3.0.2 --- build-0.3/frame.make | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 build-0.3/frame.make (limited to 'build-0.3/frame.make') diff --git a/build-0.3/frame.make b/build-0.3/frame.make new file mode 100644 index 0000000..bb1526c --- /dev/null +++ b/build-0.3/frame.make @@ -0,0 +1,104 @@ +# file : build/frame.make +# author : Boris Kolpackov +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +%frame_exclude% += CURDIR SHELL MAKEFILE_LIST MAKEFLAGS +%frame_include% := #.DEFAULT_GOAL - for some reason it is already in the list + + +# return only vars with 'file' origin +# +%frame_exclude% += frame-vars-stage +define frame-vars-stage +$(foreach v,$1,$(if $(findstring file,$(origin $v)),$v)) +endef + + +# $1 holds exclusion list +# +%frame_exclude% += frame-vars +define frame-vars +$(call frame-vars-stage,$(filter-out \%% $(%frame_exclude%) $1,$(.VARIABLES))) \ +$(filter-out $1,$(%frame_include%)) +endef + + +%frame% := frame% + + +%frame_exclude% += frame-set-recursive +define frame-set-recursive +define $1 +$2 +endef +endef + +%frame_exclude% += frame-undefine +ifneq ($(filter undefine,$(.FEATURES)),) +define frame-undefine +$(eval undefine $$1) +endef +define frame-undefine-imm +$(eval undefine $1) +endef +else +define frame-undefine +$(eval $$1 :=) +endef +define frame-undefine-imm +$(eval $1 :=) +endef +endif + +%frame_exclude% += frame-save +define frame-save +$(eval $(if $(filter simple,$(flavor $1)),\ +%$1/$(%frame%) := $(value $1),\ +$(call frame-set-recursive,%$1/$(%frame%),$(value $1)))) +endef + +%frame_exclude% += frame-restore +define frame-restore +$(eval $(if $(filter simple,$(flavor %$1/$(%frame%))),\ +$1 := $(value %$1/$(%frame%)),\ +$(call frame-set-recursive,$1,$(value %$1/$(%frame%)))))\ +$(call frame-undefine-imm,%$1/$(%frame%)) +endef + +# Use debug messages to check for garbage being framed. +# + +#$$(warning framing $$(value %vars_$(%frame%))) + +%frame_exclude% += frame-enter-body +define frame-enter-body +%vars_$(%frame%) := $(call frame-vars,$1) +%excl_$(%frame%) := $1 +$$(foreach v,$$(value %vars_$(%frame%)),$$(call frame-save,$$v)) +%frame% := frame/$(%frame%) +endef + +%frame_exclude% += frame-enter +define frame-enter +$(eval $(call frame-enter-body,$1)) +endef + + +#$$(warning restoring $$(value %vars_$$(%frame%))) + +%frame_exclude% += frame-leave-body +define frame-leave-body +%frame% := $(patsubst frame/%,%,$(%frame%)) +$$(foreach v,$$(value %vars_$$(%frame%)),$$(call frame-restore,$$v)) +$$(foreach v,\ +$$(filter-out $$(value %vars_$$(%frame%)),$$(call frame-vars,$$(value %excl_$$(%frame%)))),\ +$$(call frame-undefine,$$v)) +$$(call frame-undefine,%vars_$$(%frame%)) +$$(call frame-undefine,%excl_$$(%frame%)) +endef + +%frame_exclude% += frame-leave +define frame-leave +$(eval $(call frame-leave-body)) +endef -- cgit v1.2.3