diff options
| author | Michael Bestas <mikeioannina@cyanogenmod.org> | 2016-06-30 00:28:29 +0300 |
|---|---|---|
| committer | Michael Bestas <mikeioannina@cyanogenmod.org> | 2016-06-30 00:28:29 +0300 |
| commit | 43d2a9a903ca94b79a1919c6c5491810dca71e07 (patch) | |
| tree | 1776a3177906752fa38742eb5615d910e3f24955 | |
| parent | 35f6e78b4a7b9058844b5937fd9e23eb7461c9e1 (diff) | |
| download | android_hardware_lineage_lineagehw-43d2a9a903ca94b79a1919c6c5491810dca71e07.tar.gz android_hardware_lineage_lineagehw-43d2a9a903ca94b79a1919c6c5491810dca71e07.tar.bz2 android_hardware_lineage_lineagehw-43d2a9a903ca94b79a1919c6c5491810dca71e07.zip | |
cmhw: Allow overrides of device-specific cmhw implementations
* There are some cases where devices want to override common cmhw
implementations, for example devices which inherit hardware/cyanogen
but have different vibrator hardware
* Allow override of classes instead of breaking the build by including
duplicate implementations and always pick the last class in
BOARD_HARDWARE_CLASS
Change-Id: I8587076b87cee0dfc41746b5bc3f974274f71c21
| -rw-r--r-- | Android.mk | 27 |
1 files changed, 17 insertions, 10 deletions
@@ -17,22 +17,29 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) ifneq ($(BOARD_HARDWARE_CLASS),) - $(foreach bcp,$(BOARD_HARDWARE_CLASS), \ - $(eval LOCAL_SRC_FILES += $(call all-java-files-under, ../../../$(bcp)))) + $(foreach bcp, $(BOARD_HARDWARE_CLASS), \ + $(eval BOARD_SRC_FILES += $(call all-java-files-under, ../../../$(bcp)))) endif BASE_SRC_FILES += $(call all-java-files-under, src/) -unique_specific_classes := - $(foreach cf,$(LOCAL_SRC_FILES), \ - $(eval unique_specific_classes += $(notdir $(cf)))) - +reverse = $(if $(wordlist 2,2,$(1)),$(call reverse,$(wordlist 2,$(words $(1)),$(1))) $(firstword $(1)),$(1)) + +overriden_classes := + $(foreach cf, $(call reverse, $(BOARD_SRC_FILES)), \ + $(eval overriden_classes += $(cf))) + +unique_specific_classes := + $(foreach cf, $(overriden_classes), \ + $(if $(filter $(notdir $(unique_specific_classes)), $(notdir $(cf))),, \ + $(eval unique_specific_classes += $(cf)))) + default_classes := -$(foreach cf,$(BASE_SRC_FILES), \ - $(if $(filter $(unique_specific_classes),$(notdir $(cf))),,\ - $(eval default_classes += $(cf)))) + $(foreach cf, $(BASE_SRC_FILES), \ + $(if $(filter $(notdir $(unique_specific_classes)), $(notdir $(cf))),, \ + $(eval default_classes += $(cf)))) -LOCAL_SRC_FILES += $(default_classes) +LOCAL_SRC_FILES += $(default_classes) $(unique_specific_classes) LOCAL_MODULE_TAGS := optional LOCAL_MODULE := org.cyanogenmod.hardware |
