Home | History | Annotate | Download | only in lib
      1 ##
      2 # Environment dependent variables
      3 ##
      4 
      5 AAPT := aapt2
      6 ZIPALIGN := zipalign -f 4
      7 FRAMEWORK := ../../../../../../out/target/common/obj/APPS/framework-res_intermediates/package-export.apk
      8 
      9 ##
     10 # Project depenedent variables
     11 ##
     12 
     13 LOCAL_PACKAGE := android.appcompat
     14 LOCAL_RESOURCE_DIR := res
     15 LOCAL_OUT := out
     16 LOCAL_GEN := out/gen
     17 
     18 ##
     19 # AAPT2 custom rules.
     20 ##
     21 
     22 PRIVATE_APK_UNALIGNED := $(LOCAL_OUT)/package-unaligned.apk
     23 PRIVATE_APK_ALIGNED := $(LOCAL_OUT)/package.apk
     24 
     25 # Eg: framework.apk, etc.
     26 PRIVATE_LIBS := $(FRAMEWORK)
     27 $(info PRIVATE_LIBS = $(PRIVATE_LIBS))
     28 
     29 # Eg: gen/com/android/app/R.java
     30 PRIVATE_R_JAVA := $(LOCAL_GEN)/$(subst .,/,$(LOCAL_PACKAGE))/R.java
     31 $(info PRIVATE_R_JAVA = $(PRIVATE_R_JAVA))
     32 
     33 # Eg: res/drawable/icon.png, res/values/styles.xml
     34 PRIVATE_RESOURCES := $(shell find $(LOCAL_RESOURCE_DIR) -mindepth 1 -maxdepth 2 -type f)
     35 $(info PRIVATE_RESOURCES = $(PRIVATE_RESOURCES))
     36 
     37 # Eg: drawable, values, layouts
     38 PRIVATE_RESOURCE_TYPES := \
     39 	$(patsubst $(LOCAL_RESOURCE_DIR)/%/,%,$(sort $(dir $(PRIVATE_RESOURCES))))
     40 $(info PRIVATE_RESOURCE_TYPES = $(PRIVATE_RESOURCE_TYPES))
     41 
     42 # Eg: out/values-v4.apk, out/drawable-xhdpi.apk
     43 PRIVATE_INTERMEDIATE_TABLES := $(patsubst %,$(LOCAL_OUT)/%.apk,$(PRIVATE_RESOURCE_TYPES))
     44 $(info PRIVATE_INTERMEDIATE_TABLES = $(PRIVATE_INTERMEDIATE_TABLES))
     45 
     46 # Generates rules for collect phase.
     47 # $1: Resource type (values-v4)
     48 # returns: out/values-v4.apk: res/values-v4/styles.xml res/values-v4/colors.xml
     49 define make-collect-rule
     50 $(LOCAL_OUT)/$1.apk: $(filter $(LOCAL_RESOURCE_DIR)/$1/%,$(PRIVATE_RESOURCES))
     51 	$(AAPT) compile -o $$@ $$^
     52 endef
     53 
     54 # Collect: out/values-v4.apk <- res/values-v4/styles.xml res/values-v4/colors.xml
     55 $(foreach d,$(PRIVATE_RESOURCE_TYPES),$(eval $(call make-collect-rule,$d)))
     56 
     57 # Link: out/package-unaligned.apk <- out/values-v4.apk out/drawable-v4.apk
     58 $(PRIVATE_APK_UNALIGNED): $(PRIVATE_INTERMEDIATE_TABLES) $(PRIVATE_LIBS) AndroidManifest.xml
     59 	$(AAPT) link --manifest AndroidManifest.xml $(addprefix -I ,$(PRIVATE_LIBS)) --java $(LOCAL_GEN) -o $@ $(PRIVATE_INTERMEDIATE_TABLES) --static-lib
     60 
     61 # R.java: gen/com/android/app/R.java <- out/resources.arsc
     62 # No action since R.java is generated when out/resources.arsc is.
     63 $(PRIVATE_R_JAVA): $(PRIVATE_APK_UNALIGNED)
     64 
     65 # Assemble: zip out/resources.arsc AndroidManifest.xml and res/**/*
     66 $(PRIVATE_APK_ALIGNED): $(PRIVATE_APK_UNALIGNED)
     67 	$(ZIPALIGN) $< $@
     68 
     69 # Create the out directory if needed.
     70 dummy := $(shell test -d $(LOCAL_OUT) || mkdir -p $(LOCAL_OUT))
     71 
     72 .PHONY: java
     73 java: $(PRIVATE_R_JAVA)
     74 
     75 .PHONY: assemble
     76 assemble: $(PRIVATE_APK_ALIGNED)
     77 
     78 .PHONY: all
     79 all: assemble java
     80 
     81 .DEFAULT_GOAL := all
     82