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 $(call record-module-type,HOST_JAVA_LIBRARY)
     18 
     19 #
     20 # Standard rules for building a host java library.
     21 #
     22 
     23 #######################################
     24 include $(BUILD_SYSTEM)/host_java_library_common.mk
     25 #######################################
     26 
     27 # Enable emma instrumentation only if the module asks so.
     28 ifeq (true,$(LOCAL_EMMA_INSTRUMENT))
     29 ifneq (true,$(EMMA_INSTRUMENT))
     30 LOCAL_EMMA_INSTRUMENT :=
     31 endif
     32 endif
     33 
     34 full_classes_compiled_jar := $(intermediates.COMMON)/classes-full-debug.jar
     35 full_classes_jarjar_jar := $(intermediates.COMMON)/classes-jarjar.jar
     36 full_classes_jar := $(intermediates.COMMON)/classes.jar
     37 java_source_list_file := $(intermediates.COMMON)/java-source-list
     38 full_classes_header_jar := $(intermediates.COMMON)/classes-header.jar
     39 full_classes_combined_jar := $(intermediates.COMMON)/classes-combined.jar
     40 
     41 LOCAL_INTERMEDIATE_TARGETS += \
     42     $(full_classes_compiled_jar) \
     43     $(full_classes_jarjar_jar) \
     44     $(java_source_list_file) \
     45     $(full_classes_combined_jar)
     46 
     47 #######################################
     48 include $(BUILD_SYSTEM)/base_rules.mk
     49 #######################################
     50 
     51 java_sources := $(addprefix $(LOCAL_PATH)/, $(filter %.java,$(LOCAL_SRC_FILES))) \
     52                 $(filter %.java,$(LOCAL_GENERATED_SOURCES))
     53 all_java_sources := $(java_sources)
     54 
     55 include $(BUILD_SYSTEM)/java_common.mk
     56 
     57 # The layers file allows you to enforce a layering between java packages.
     58 # Run build/make/tools/java-layers.py for more details.
     59 layers_file := $(addprefix $(LOCAL_PATH)/, $(LOCAL_JAVA_LAYERS_FILE))
     60 
     61 # List of dependencies for anything that needs all java sources in place
     62 java_sources_deps := \
     63     $(java_sources) \
     64     $(java_resource_sources) \
     65     $(proto_java_sources_file_stamp) \
     66     $(LOCAL_SRCJARS) \
     67     $(LOCAL_ADDITIONAL_DEPENDENCIES)
     68 
     69 $(java_source_list_file): $(java_sources_deps)
     70 	$(write-java-source-list)
     71 
     72 $(full_classes_compiled_jar): PRIVATE_JAVA_LAYERS_FILE := $(layers_file)
     73 $(full_classes_compiled_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) $(annotation_processor_flags)
     74 $(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_FILES :=
     75 $(full_classes_compiled_jar): PRIVATE_JAR_PACKAGES :=
     76 $(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_PACKAGES :=
     77 $(full_classes_compiled_jar): PRIVATE_SRCJARS := $(LOCAL_SRCJARS)
     78 $(full_classes_compiled_jar): PRIVATE_SRCJAR_LIST_FILE := $(intermediates.COMMON)/srcjar-list
     79 $(full_classes_compiled_jar): PRIVATE_SRCJAR_INTERMEDIATES_DIR := $(intermediates.COMMON)/srcjars
     80 $(full_classes_compiled_jar): \
     81     $(java_source_list_file) \
     82     $(java_sources_deps) \
     83     $(full_java_libs) \
     84     $(full_java_bootclasspath_libs) \
     85     $(annotation_processor_deps) \
     86     $(NORMALIZE_PATH) \
     87     $(ZIPTIME) \
     88     $(JAR_ARGS) \
     89     $(ZIPSYNC) \
     90     | $(SOONG_JAVAC_WRAPPER)
     91 	$(transform-host-java-to-package)
     92 	$(remove-timestamps-from-package)
     93 
     94 javac-check : $(full_classes_compiled_jar)
     95 javac-check-$(LOCAL_MODULE) : $(full_classes_compiled_jar)
     96 
     97 $(full_classes_combined_jar): $(full_classes_compiled_jar) \
     98                               $(jar_manifest_file) \
     99                               $(full_static_java_libs) | $(MERGE_ZIPS)
    100 	$(if $(PRIVATE_JAR_MANIFEST), $(hide) sed -e "s/%BUILD_NUMBER%/$(BUILD_NUMBER_FROM_FILE)/" \
    101             $(PRIVATE_JAR_MANIFEST) > $(dir $@)/manifest.mf)
    102 	$(MERGE_ZIPS) -j --ignore-duplicates $(if $(PRIVATE_JAR_MANIFEST),-m $(dir $@)/manifest.mf) \
    103             -stripDir META-INF -zipToNotStrip $< $@ $< $(call reverse-list,$(PRIVATE_STATIC_JAVA_LIBRARIES))
    104 
    105 # Run jarjar if necessary, otherwise just copy the file.
    106 ifneq ($(strip $(LOCAL_JARJAR_RULES)),)
    107 $(full_classes_jarjar_jar): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES)
    108 $(full_classes_jarjar_jar): $(full_classes_combined_jar) $(LOCAL_JARJAR_RULES) | $(JARJAR)
    109 	@echo JarJar: $@
    110 	$(hide) $(JAVA) -jar $(JARJAR) process $(PRIVATE_JARJAR_RULES) $< $@
    111 else
    112 full_classes_jarjar_jar := $(full_classes_combined_jar)
    113 endif
    114 
    115 
    116 #######################################
    117 LOCAL_FULL_CLASSES_PRE_JACOCO_JAR := $(full_classes_jarjar_jar)
    118 
    119 include $(BUILD_SYSTEM)/jacoco.mk
    120 #######################################
    121 
    122 $(eval $(call copy-one-file,$(LOCAL_FULL_CLASSES_JACOCO_JAR),$(LOCAL_BUILT_MODULE)))
    123 $(eval $(call copy-one-file,$(LOCAL_FULL_CLASSES_JACOCO_JAR),$(full_classes_jar)))
    124 
    125 ifeq ($(TURBINE_ENABLED),false)
    126 $(eval $(call copy-one-file,$(LOCAL_FULL_CLASSES_JACOCO_JAR),$(full_classes_header_jar)))
    127 endif
    128