Home | History | Annotate | Download | only in core
      1 #
      2 # Copyright (C) 2008 The Android Open Source Project
      3 #
      4 # Licensed under the Apache License, Version 2.0 (the "License");
      5 # you may not use this file except in compliance with the License.
      6 # You may obtain a copy of the License at
      7 #
      8 #      http://www.apache.org/licenses/LICENSE-2.0
      9 #
     10 # Unless required by applicable law or agreed to in writing, software
     11 # distributed under the License is distributed on an "AS IS" BASIS,
     12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 # See the License for the specific language governing permissions and
     14 # limitations under the License.
     15 #
     16 
     17 #
     18 # Standard rules for building a host java library.
     19 #
     20 
     21 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
     22 LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
     23 LOCAL_IS_HOST_MODULE := true
     24 LOCAL_BUILT_MODULE_STEM := javalib.jar
     25 
     26 # base_rules.mk looks at this
     27 all_res_assets :=
     28 
     29 proto_sources := $(filter %.proto,$(LOCAL_SRC_FILES))
     30 ifneq ($(proto_sources),)
     31 ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),micro)
     32     LOCAL_JAVA_LIBRARIES += host-libprotobuf-java-2.3.0-micro
     33 else
     34   ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),nano)
     35     LOCAL_JAVA_LIBRARIES += host-libprotobuf-java-2.3.0-nano
     36   else
     37     LOCAL_JAVA_LIBRARIES += host-libprotobuf-java-2.3.0-lite
     38   endif
     39 endif
     40 endif
     41 
     42 intermediates := $(call local-intermediates-dir)
     43 intermediates.COMMON := $(call local-intermediates-dir,COMMON)
     44 
     45 LOCAL_INTERMEDIATE_SOURCE_DIR := $(intermediates.COMMON)/src
     46 
     47 ifeq ($(LOCAL_BUILD_HOST_DEX),true)
     48 ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true)
     49   LOCAL_JAVA_LIBRARIES +=  core-hostdex
     50 endif
     51 
     52 full_classes_compiled_jar := $(intermediates.COMMON)/classes-full-debug.jar
     53 full_classes_jarjar_jar := $(intermediates.COMMON)/classes-jarjar.jar
     54 full_classes_jar := $(intermediates.COMMON)/classes.jar
     55 built_dex := $(intermediates.COMMON)/classes.dex
     56 
     57 LOCAL_INTERMEDIATE_TARGETS += \
     58     $(full_classes_compiled_jar) \
     59     $(full_classes_jarjar_jar) \
     60     $(full_classes_jar) \
     61     $(built_dex)
     62 
     63 # See comment in java.mk
     64 java_alternative_checked_module := $(full_classes_compiled_jar)
     65 endif # LOCAL_BUILD_HOST_DEX
     66 
     67 LOCAL_JAVA_LIBRARIES := $(sort $(LOCAL_JAVA_LIBRARIES))
     68 
     69 #######################################
     70 include $(BUILD_SYSTEM)/base_rules.mk
     71 #######################################
     72 
     73 $(full_classes_compiled_jar): PRIVATE_JAVAC_DEBUG_FLAGS := -g
     74 
     75 java_alternative_checked_module :=
     76 
     77 # The layers file allows you to enforce a layering between java packages.
     78 # Run build/tools/java-layers.py for more details.
     79 layers_file := $(addprefix $(LOCAL_PATH)/, $(LOCAL_JAVA_LAYERS_FILE))
     80 
     81 ifeq ($(LOCAL_BUILD_HOST_DEX),true)
     82 $(LOCAL_INTERMEDIATE_TARGETS): \
     83 	PRIVATE_CLASS_INTERMEDIATES_DIR := $(intermediates.COMMON)/classes
     84 $(LOCAL_INTERMEDIATE_TARGETS): \
     85 	PRIVATE_SOURCE_INTERMEDIATES_DIR := $(LOCAL_INTERMEDIATE_SOURCE_DIR)
     86 
     87 $(cleantarget): PRIVATE_CLEAN_FILES += $(intermediates.COMMON)
     88 
     89 $(full_classes_compiled_jar): PRIVATE_JAVA_LAYERS_FILE := $(layers_file)
     90 $(full_classes_compiled_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS)
     91 $(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_FILES :=
     92 $(full_classes_compiled_jar): $(java_sources) $(java_resource_sources) $(full_java_lib_deps) \
     93         $(jar_manifest_file) $(proto_java_sources_file_stamp) $(LOCAL_ADDITIONAL_DEPENDENCIES)
     94 	$(transform-host-java-to-package)
     95 
     96 # Run jarjar if necessary, otherwise just copy the file.
     97 ifneq ($(strip $(LOCAL_JARJAR_RULES)),)
     98 $(full_classes_jarjar_jar): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES)
     99 $(full_classes_jarjar_jar): $(full_classes_compiled_jar) $(LOCAL_JARJAR_RULES) | $(JARJAR)
    100 	@echo JarJar: $@
    101 	$(hide) java -jar $(JARJAR) process $(PRIVATE_JARJAR_RULES) $< $@
    102 else
    103 $(full_classes_jarjar_jar): $(full_classes_compiled_jar) | $(ACP)
    104 	@echo Copying: $@
    105 	$(hide) $(ACP) -fp $< $@
    106 endif
    107 
    108 $(full_classes_jar): $(full_classes_jarjar_jar) | $(ACP)
    109 	@echo Copying: $@
    110 	$(hide) $(ACP) -fp $< $@
    111 
    112 $(built_dex): PRIVATE_INTERMEDIATES_DIR := $(intermediates.COMMON)
    113 $(built_dex): PRIVATE_DX_FLAGS := $(LOCAL_DX_FLAGS)
    114 $(built_dex): $(full_classes_jar) $(DX)
    115 	$(transform-classes.jar-to-dex)
    116 
    117 $(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := $(built_dex)
    118 $(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources)
    119 	@echo "Host Jar: $(PRIVATE_MODULE) ($@)"
    120 	$(create-empty-package)
    121 	$(add-dex-to-package)
    122 	$(add-carried-java-resources)
    123 ifneq ($(extra_jar_args),)
    124 	$(add-java-resources-to-package)
    125 endif
    126 
    127 else
    128 $(LOCAL_BUILT_MODULE): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS)
    129 $(LOCAL_BUILT_MODULE): PRIVATE_JAR_EXCLUDE_FILES :=
    130 $(LOCAL_BUILT_MODULE): PRIVATE_JAVA_LAYERS_FILE := $(layers_file)
    131 $(LOCAL_BUILT_MODULE): $(java_sources) $(java_resource_sources) $(full_java_lib_deps) \
    132 		$(jar_manifest_file) $(proto_java_sources_file_stamp) $(LOCAL_ADDITIONAL_DEPENDENCIES)
    133 	$(transform-host-java-to-package)
    134 endif  # LOCAL_BUILD_HOST_DEX
    135