Home | History | Annotate | Download | only in smali
      1 # Copyright (C) 2010 The Android Open Source Project
      2 #
      3 # Licensed under the Apache License, Version 2.0 (the "License");
      4 # you may not use this file except in compliance with the License.
      5 # You may obtain a copy of the License at
      6 #
      7 #      http://www.apache.org/licenses/LICENSE-2.0
      8 #
      9 # Unless required by applicable law or agreed to in writing, software
     10 # distributed under the License is distributed on an "AS IS" BASIS,
     11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 # See the License for the specific language governing permissions and
     13 # limitations under the License.
     14 
     15 LOCAL_PATH := $(call my-dir)
     16 
     17 # build smali jar
     18 # ============================================================
     19 
     20 include $(CLEAR_VARS)
     21 
     22 LOCAL_MODULE := smalilib
     23 
     24 LOCAL_MODULE_TAGS := optional
     25 
     26 #LOCAL_MODULE_CLASS and LOCAL_IS_HOST_MODULE must be defined before calling $(local-intermediates-dir)
     27 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
     28 LOCAL_IS_HOST_MODULE := true
     29 
     30 intermediates := $(call local-intermediates-dir,COMMON)
     31 
     32 GEN := $(addprefix $(intermediates)/, \
     33 			smaliParser.java \
     34 			smaliTreeWalker.java \
     35         )
     36 
     37 ANTLR_JAR = $(call java-lib-deps,antlr,true)
     38 
     39 $(intermediates)/smaliTreeWalker.java: $(intermediates)/smaliParser.java
     40 
     41 $(GEN): $(ANTLR_JAR)
     42 $(GEN): PRIVATE_PATH := $(LOCAL_PATH)
     43 $(GEN): PRIVATE_CUSTOM_TOOL = java -jar $(ANTLR_JAR) -fo $(dir $@) $<
     44 $(GEN): $(intermediates)/%.java :  $(LOCAL_PATH)/src/main/antlr3/%.g
     45 	$(transform-generated-source)
     46 
     47 LOCAL_GENERATED_SOURCES += $(GEN)
     48 
     49 LOCAL_SRC_FILES := \
     50 	$(call all-java-files-under, src/main/java) \
     51 	$(call all-java-files-under, ../dexlib/src/main/java) \
     52 	$(call all-java-files-under, ../util/src/main/java)
     53 
     54 LOCAL_JAR_MANIFEST := manifest.txt
     55 
     56 LOCAL_STATIC_JAVA_LIBRARIES := \
     57 	antlr-runtime \
     58 	commons-cli-1.2 \
     59 	guavalib \
     60 	jsr305lib
     61 
     62 #read in the version number
     63 SMALI_VERSION := $(shell cat $(LOCAL_PATH)/../version)
     64 
     65 #create a new smali.properties file using the correct version
     66 $(intermediates)/resources/smali.properties:
     67 	$(hide) mkdir -p $(dir $@)
     68 	$(hide) echo "application.version=$(SMALI_VERSION)" > $@
     69 
     70 LOCAL_JAVA_RESOURCE_FILES := $(intermediates)/resources/smali.properties
     71 
     72 include $(BUILD_HOST_JAVA_LIBRARY)
     73 
     74 
     75 
     76 # copy smali script
     77 # ============================================================
     78 
     79 include $(CLEAR_VARS)
     80 LOCAL_IS_HOST_MODULE := true
     81 LOCAL_MODULE_CLASS := EXECUTABLES
     82 LOCAL_MODULE_TAGS := optional
     83 LOCAL_MODULE := smali
     84 
     85 include $(BUILD_SYSTEM)/base_rules.mk
     86 
     87 $(LOCAL_BUILT_MODULE): $(HOST_OUT_JAVA_LIBRARIES)/smalilib.jar
     88 $(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/../scripts/smali | $(ACP)
     89 	@echo "Copy: $(PRIVATE_MODULE) ($@)"
     90 	$(copy-file-to-new-target)
     91 	$(hide) chmod 755 $@