From 15f5672a5d5b8c5dfb4dd6c0a42291397eadb38a Mon Sep 17 00:00:00 2001 From: Steven Moreland Date: Wed, 31 May 2017 12:48:55 -0700 Subject: [PATCH] Move math function definitions. Created math.mk and moved all math function definitions there. Then, included this file in config.mk. This allows the functions to be used by whatever includes config.mk (envsetup and build). Test: manually setting combinations of PRODUCT_SHIPPING_API_LEVEL and PRODUCT_FULL_TREBLE_OVERRIDE and looking at values of PRODUCT_FULL_TREBLE. Bug: 62229856 Merged-In: Icdab4214a1e65ae202411613dbcb9c9ea5f43b09 Change-Id: Icdab4214a1e65ae202411613dbcb9c9ea5f43b09 --- core/config.mk | 4 +++ core/definitions.mk | 64 +------------------------------------ core/math.mk | 77 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 63 deletions(-) create mode 100644 core/math.mk diff --git a/core/config.mk b/core/config.mk index f692653c7..59c2a3442 100644 --- a/core/config.mk +++ b/core/config.mk @@ -79,6 +79,10 @@ SRC_TEST_API_DIR := $(TOPDIR)prebuilts/sdk/test-api # Some specific paths to tools SRC_DROIDDOC_DIR := $(TOPDIR)build/tools/droiddoc +# Set up efficient math functions which are used in make. +# Here since this file is included by envsetup as well as during build. +include $(BUILD_SYSTEM)/math.mk + # Various mappings to avoid hard-coding paths all over the place include $(BUILD_SYSTEM)/pathmap.mk diff --git a/core/definitions.mk b/core/definitions.mk index 4bc1a08de..cf877f559 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -3187,68 +3187,6 @@ endif endif endef -########################################################### -# Basic math functions for positive integers <= 100 -# -# (SDK versions for example) -########################################################### -__MATH_NUMBERS := 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \ - 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \ - 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 \ - 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 \ - 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 - -# Returns true if $(1) is a positive integer <= 100, otherwise returns nothing. -define math_is_number -$(strip \ - $(if $(1),,$(error Argument missing)) \ - $(if $(word 2,$(1)),$(error Multiple words in a single argument: $(1))) \ - $(if $(filter $(1),$(__MATH_NUMBERS)),true)) -endef - -#$(warning true == $(call math_is_number,2)) -#$(warning == $(call math_is_number,foo)) -#$(call math_is_number,1 2) -#$(call math_is_number,no 2) - -define _math_check_valid -$(if $(call math_is_number,$(1)),,$(error Only positive integers <= 100 are supported (not $(1)))) -endef - -#$(call _math_check_valid,0) -#$(call _math_check_valid,1) -#$(call _math_check_valid,100) -#$(call _math_check_valid,101) -#$(call _math_check_valid,) -#$(call _math_check_valid,1 2) - -# Returns the greater of $1 or $2. -# If $1 or $2 is not a positive integer <= 100, then an error is generated. -define math_max -$(strip $(call _math_check_valid,$(1)) $(call _math_check_valid,$(2)) \ - $(lastword $(filter $(1) $(2),$(__MATH_NUMBERS)))) -endef - -#$(call math_max) -#$(call math_max,1) -#$(call math_max,1 2,3) -#$(warning 1 == $(call math_max,1,1)) -#$(warning 42 == $(call math_max,5,42)) -#$(warning 42 == $(call math_max,42,5)) - -define math_gt_or_eq -$(if $(filter $(1),$(call math_max,$(1),$(2))),true) -endef - -#$(warning $(call math_gt_or_eq, 2, 1)) -#$(warning $(call math_gt_or_eq, 1, 1)) -#$(warning $(if $(call math_gt_or_eq, 1, 2),false,true)) - -# $1 is the variable name to increment -define inc_and_print -$(strip $(eval $(1) := $($(1)) .)$(words $($(1)))) -endef - ########################################################### ## Compatibility suite tools ########################################################### @@ -3352,4 +3290,4 @@ $(foreach source,$(ENFORCE_RRO_SOURCES), \ $(eval include $(BUILD_SYSTEM)/generate_enforce_rro.mk) \ $(eval ALL_MODULES.$(enforce_rro_source_module).REQUIRED += $(enforce_rro_module)) \ ) -endef \ No newline at end of file +endef diff --git a/core/math.mk b/core/math.mk new file mode 100644 index 000000000..047d046b4 --- /dev/null +++ b/core/math.mk @@ -0,0 +1,77 @@ +# +# Copyright (C) 2017 The Android Open Source Project +# +# 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. +# + +########################################################### +# Basic math functions for positive integers <= 100 +# +# (SDK versions for example) +########################################################### +__MATH_NUMBERS := 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \ + 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \ + 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 \ + 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 \ + 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 + +# Returns true if $(1) is a positive integer <= 100, otherwise returns nothing. +define math_is_number +$(strip \ + $(if $(1),,$(error Argument missing)) \ + $(if $(word 2,$(1)),$(error Multiple words in a single argument: $(1))) \ + $(if $(filter $(1),$(__MATH_NUMBERS)),true)) +endef + +#$(warning true == $(call math_is_number,2)) +#$(warning == $(call math_is_number,foo)) +#$(call math_is_number,1 2) +#$(call math_is_number,no 2) + +define _math_check_valid +$(if $(call math_is_number,$(1)),,$(error Only positive integers <= 100 are supported (not $(1)))) +endef + +#$(call _math_check_valid,0) +#$(call _math_check_valid,1) +#$(call _math_check_valid,100) +#$(call _math_check_valid,101) +#$(call _math_check_valid,) +#$(call _math_check_valid,1 2) + +# Returns the greater of $1 or $2. +# If $1 or $2 is not a positive integer <= 100, then an error is generated. +define math_max +$(strip $(call _math_check_valid,$(1)) $(call _math_check_valid,$(2)) \ + $(lastword $(filter $(1) $(2),$(__MATH_NUMBERS)))) +endef + +#$(call math_max) +#$(call math_max,1) +#$(call math_max,1 2,3) +#$(warning 1 == $(call math_max,1,1)) +#$(warning 42 == $(call math_max,5,42)) +#$(warning 42 == $(call math_max,42,5)) + +define math_gt_or_eq +$(if $(filter $(1),$(call math_max,$(1),$(2))),true) +endef + +#$(warning $(call math_gt_or_eq, 2, 1)) +#$(warning $(call math_gt_or_eq, 1, 1)) +#$(warning $(if $(call math_gt_or_eq, 1, 2),false,true)) + +# $1 is the variable name to increment +define inc_and_print +$(strip $(eval $(1) := $($(1)) .)$(words $($(1)))) +endef