diff options
author | Ying Wang <wangying@google.com> | 2015-05-20 01:15:47 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-05-20 01:15:47 +0000 |
commit | 69425c1dcb6a286f75a82ede7028a0d6089adc95 (patch) | |
tree | bc5efb1ea6044ef52677eb24a5a6320de7fe60ab /core/tasks | |
parent | 589e8c52fb5eeb4027721bac52851ad977f53bbb (diff) | |
parent | 44acba6d37b1d13ef3a3ec6d89e5121f691089d9 (diff) | |
download | build-69425c1dcb6a286f75a82ede7028a0d6089adc95.zip build-69425c1dcb6a286f75a82ede7028a0d6089adc95.tar.gz build-69425c1dcb6a286f75a82ede7028a0d6089adc95.tar.bz2 |
am 44acba6d: am 02026edf: am bf6b82fb: am 247f5c4f: am 1bd15569: am e528e44d: Merge "Add task to print transitive dependencies and their license files." into lmp-dev
* commit '44acba6d37b1d13ef3a3ec6d89e5121f691089d9':
Add task to print transitive dependencies and their license files.
Diffstat (limited to 'core/tasks')
-rw-r--r-- | core/tasks/deps_licenses.mk | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/core/tasks/deps_licenses.mk b/core/tasks/deps_licenses.mk new file mode 100644 index 0000000..bb20fa0 --- /dev/null +++ b/core/tasks/deps_licenses.mk @@ -0,0 +1,59 @@ +# +# Copyright (C) 2015 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. +# + +# Print modules and their transitive dependencies with license files. +# To invoke, run "make deps-license PROJ_PATH=<proj-path-patterns> DEP_PATH=<dep-path-patterns>". +# PROJ_PATH restricts the paths of the source modules; DEP_PATH restricts the paths of the dependency modules. +# Both can be makefile patterns supported by makefile function $(filter). +# Example: "make deps-license packages/app/% external/%" prints all modules in packages/app/ with their dpendencies in external/. +# The printout lines look like "<module_name> :: <module_paths> :: <license_files>". + +ifneq (,$(filter deps-license,$(MAKECMDGOALS))) +ifndef PROJ_PATH +$(error To "make deps-license" you must specify PROJ_PATH and DEP_PATH.) +endif +ifndef DEP_PATH +$(error To "make deps-license" you must specify PROJ_PATH and DEP_PATH.) +endif + +# Expand a module's dependencies transitively. +# $(1): the variable name to hold the result. +# $(2): the initial module name. +define get-module-all-dependencies +$(eval _gmad_new := $(sort $(filter-out $($(1)),\ + $(foreach m,$(2),$(ALL_DEPS.$(m).ALL_DEPS)))))\ +$(if $(_gmad_new),$(eval $(1) += $(_gmad_new))\ + $(call get-module-all-dependencies,$(1),$(_gmad_new))) +endef + +define print-deps-license +$(foreach m, $(ALL_DEPS.MODULES),\ + $(eval m_p := $(sort $(ALL_MODULES.$(m).PATH) $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).PATH)))\ + $(if $(filter $(PROJ_PATH),$(m_p)),\ + $(eval deps :=)\ + $(eval $(call get-module-all-dependencies,deps,$(m)))\ + $(info $(m) :: $(m_p) :: $(ALL_DEPS.$(m).LICENSE))\ + $(foreach d,$(deps),\ + $(eval d_p := $(sort $(ALL_MODULES.$(d).PATH) $(ALL_MODULES.$(d)$(TARGET_2ND_ARCH_MODULE_SUFFIX).PATH)))\ + $(if $(filter $(DEP_PATH),$(d_p)),\ + $(info $(space)$(space)$(space)$(space)$(d) :: $(d_p) :: $(ALL_DEPS.$(d).LICENSE)))))) +endef + +.PHONY: deps-license +deps-license: + @$(call print-deps-license) + +endif |