diff --git a/core/config.mk b/core/config.mk index a5bd99e2886..a0c8b5f9cee 100644 --- a/core/config.mk +++ b/core/config.mk @@ -482,7 +482,6 @@ BUILD_PLATFORM_ZIP := $(filter platform platform-java,$(MAKECMDGOALS)) # Tools that are prebuilts for TARGET_BUILD_APPS # -ACP := $(HOST_OUT_EXECUTABLES)/acp AIDL := $(HOST_OUT_EXECUTABLES)/aidl AAPT := $(HOST_OUT_EXECUTABLES)/aapt AAPT2 := $(HOST_OUT_EXECUTABLES)/aapt2 @@ -495,14 +494,23 @@ BCC_COMPAT := $(HOST_OUT_EXECUTABLES)/bcc_compat DX := $(HOST_OUT_EXECUTABLES)/dx MAINDEXCLASSES := $(HOST_OUT_EXECUTABLES)/mainDexClasses +# Always use prebuilts for ckati and makeparallel +prebuilt_build_tools := prebuilts/build-tools +ifeq ($(filter address,$(SANITIZE_HOST)),) +prebuilt_build_tools_bin := $(prebuilt_build_tools)/$(HOST_PREBUILT_TAG)/bin +else +prebuilt_build_tools_bin := $(prebuilt_build_tools)/$(HOST_PREBUILT_TAG)/asan/bin +endif +ACP := $(prebuilt_build_tools_bin)/acp +CKATI := $(prebuilt_build_tools_bin)/ckati +IJAR := $(prebuilt_build_tools_bin)/ijar +MAKEPARALLEL := $(prebuilt_build_tools_bin)/makeparallel +ZIPTIME := $(prebuilt_build_tools_bin)/ziptime + USE_PREBUILT_SDK_TOOLS_IN_PLACE := true # Override the definitions above for unbundled and PDK builds ifneq (,$(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK))) -prebuilt_sdk_tools := prebuilts/sdk/tools -prebuilt_sdk_tools_bin := $(prebuilt_sdk_tools)/$(HOST_OS)/bin - -ACP := $(prebuilt_sdk_tools_bin)/acp AIDL := $(prebuilt_sdk_tools_bin)/aidl AAPT := $(prebuilt_sdk_tools_bin)/aapt AAPT2 := $(prebuilt_sdk_tools_bin)/aapt2 @@ -603,13 +611,6 @@ FUTILITY := prebuilts/misc/$(BUILD_OS)-$(HOST_PREBUILT_ARCH)/futility/futility VBOOT_SIGNER := prebuilts/misc/scripts/vboot_signer/vboot_signer.sh FEC := $(HOST_OUT_EXECUTABLES)/fec -ifndef TARGET_BUILD_APPS -ZIPTIME := $(HOST_OUT_EXECUTABLES)/ziptime$(HOST_EXECUTABLE_SUFFIX) -endif - -# ijar converts a .jar file to a smaller .jar file which only has its -# interfaces. -IJAR := $(HOST_OUT_EXECUTABLES)/ijar$(BUILD_EXECUTABLE_SUFFIX) DEXDUMP := $(HOST_OUT_EXECUTABLES)/dexdump2$(BUILD_EXECUTABLE_SUFFIX) # relocation packer diff --git a/core/definitions.mk b/core/definitions.mk index 62cfe93a34b..313a9b227bd 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -727,12 +727,6 @@ define jack-lib-files $(foreach lib,$(1),$(call _jack-lib-full-classes,$(lib),$(2))) endef -# $(1): library name list -# $(2): Non-empty if IS_HOST_MODULE -define jack-lib-deps -$(call jack-lib-files,$(1),$(2)) -endef - ########################################################### ## Run rot13 on a string ## $(1): the string. Must be one line. @@ -2139,7 +2133,7 @@ $(call call-jack) \ $(if $(PRIVATE_RMTYPEDEFS), \ -D jack.android.remove-typedef="true") \ $(addprefix --classpath ,$(strip \ - $(call normalize-path-list,$(PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES) $(PRIVATE_ALL_JACK_LIBRARIES)))) \ + $(call normalize-path-list,$(PRIVATE_JACK_SHARED_LIBRARIES)))) \ $(addprefix --import ,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES))) \ $(if $(PRIVATE_EXTRA_JAR_ARGS),--import-resource $@.res.tmp) \ -D jack.android.min-api-level=$(PRIVATE_JACK_MIN_SDK_VERSION) \ @@ -2184,7 +2178,7 @@ $(hide) if [ -s $@.java-source-list-uniq ] ; then \ $(strip $(PRIVATE_JACK_FLAGS)) \ $(strip $(PRIVATE_JACK_DEBUG_FLAGS)) \ $(addprefix --classpath ,$(strip \ - $(call normalize-path-list,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES)) $(PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES) $(PRIVATE_ALL_JACK_LIBRARIES)))) \ + $(call normalize-path-list,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES)) $(PRIVATE_JACK_SHARED_LIBRARIES)))) \ -D jack.import.resource.policy=keep-first \ -D jack.android.min-api-level=$(PRIVATE_JACK_MIN_SDK_VERSION) \ -D jack.import.type.policy=keep-first \ @@ -2314,7 +2308,7 @@ $(call call-jack) \ $(if $(NO_OPTIMIZE_DX), \ -D jack.dex.optimize="false") \ $(addprefix --classpath ,$(strip \ - $(call normalize-path-list,$(PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES) $(PRIVATE_ALL_JACK_LIBRARIES)))) \ + $(call normalize-path-list,$(PRIVATE_JACK_SHARED_LIBRARIES)))) \ $(addprefix --import ,$(call reverse-list,$(PRIVATE_STATIC_JACK_LIBRARIES))) \ $(if $(PRIVATE_EXTRA_JAR_ARGS),--import-resource $@.res.tmp) \ -D jack.import.resource.policy=keep-first \ @@ -2505,11 +2499,9 @@ endef # Remove dynamic timestamps from packages # -ifndef TARGET_BUILD_APPS define remove-timestamps-from-package $(hide) $(ZIPTIME) $@ endef -endif # Uncompress shared libraries embedded in an apk. # diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk index 83047d4c3f2..2a55c056c47 100644 --- a/core/host_dalvik_java_library.mk +++ b/core/host_dalvik_java_library.mk @@ -28,7 +28,7 @@ include $(BUILD_SYSTEM)/host_java_library_common.mk ####################################### ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true) - LOCAL_JAVA_LIBRARIES += core-oj-hostdex core-libart-hostdex + LOCAL_JAVA_LIBRARIES := core-oj-hostdex core-libart-hostdex $(LOCAL_JAVA_LIBRARIES) endif full_classes_compiled_jar := $(intermediates.COMMON)/classes-full-debug.jar diff --git a/core/host_dalvik_static_java_library.mk b/core/host_dalvik_static_java_library.mk index c296be359e6..1783d6fc267 100644 --- a/core/host_dalvik_static_java_library.mk +++ b/core/host_dalvik_static_java_library.mk @@ -55,6 +55,5 @@ $(full_classes_jack): $(java_sources) $(java_resource_sources) $(full_jack_deps) @echo Building with Jack: $@ $(java-to-jack) -USE_CORE_LIB_BOOTCLASSPATH := LOCAL_IS_STATIC_JAVA_LIBRARY := endif diff --git a/core/java_common.mk b/core/java_common.mk index 9b7d10fba2c..efa7038c6f1 100644 --- a/core/java_common.mk +++ b/core/java_common.mk @@ -317,54 +317,16 @@ full_static_jack_libs := \ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_STATIC_JACK_LIBRARIES := $(full_static_jack_libs) -ifndef LOCAL_IS_HOST_MODULE -ifeq ($(LOCAL_SDK_VERSION),) -ifeq ($(LOCAL_NO_STANDARD_LIBRARIES),true) -my_bootclasspath := -else -my_bootclasspath := $(call jack-lib-files,core-oj core-libart) -endif -else # LOCAL_SDK_VERSION -ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),current) -# LOCAL_SDK_VERSION is current and no TARGET_BUILD_APPS. -my_bootclasspath := $(call jack-lib-files,android_stubs_current) -else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),system_current) -my_bootclasspath := $(call jack-lib-files,android_system_stubs_current) -else ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),test_current) -my_bootclasspath := $(call jack-lib-files,android_test_stubs_current) -else -my_bootclasspath :=$(call jack-lib-files,sdk_v$(LOCAL_SDK_VERSION)) -endif # current, system_current, or test_current -endif # LOCAL_SDK_VERSION -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES := $(my_bootclasspath) - full_shared_jack_libs := $(call jack-lib-files,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) -full_jack_deps := $(call jack-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) +full_jack_deps := $(full_shared_jack_libs) + +ifndef LOCAL_IS_HOST_MODULE # Turn off .toc optimization for apps build as we cannot build dexdump. ifeq (,$(TARGET_BUILD_APPS)) full_jack_deps := $(patsubst %.jack, %.dex.toc, $(full_jack_deps)) endif - -else # LOCAL_IS_HOST_MODULE - -ifeq ($(USE_CORE_LIB_BOOTCLASSPATH),true) -ifeq ($(LOCAL_NO_STANDARD_LIBRARIES),true) -my_bootclasspath := -else -my_bootclasspath := $(call jack-lib-files,core-oj-hostdex core-libart-hostdex,$(LOCAL_IS_HOST_MODULE)) -endif -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES := $(my_bootclasspath) -# Compiling against the final jack library. If we want to add support for obfuscated library -# we'll need to change that to compile against the not obfuscated jack library. -full_shared_jack_libs := $(call jack-lib-files,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) -full_jack_deps := $(call jack-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) -else -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES := -full_shared_jack_libs := $(call jack-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) -full_jack_deps := $(full_shared_jack_libs) -endif # USE_CORE_LIB_BOOTCLASSPATH endif # !LOCAL_IS_HOST_MODULE -full_jack_libs := $(full_shared_jack_libs) $(full_static_jack_libs) $(LOCAL_JACK_CLASSPATH) +full_shared_jack_libs += $(LOCAL_JACK_CLASSPATH) full_jack_deps += $(full_static_jack_libs) $(LOCAL_JACK_CLASSPATH) ifndef LOCAL_IS_HOST_MODULE @@ -378,7 +340,6 @@ ifneq ($(apk_libraries),) # link against the jar with full original names (before proguard processing). full_shared_jack_libs += $(link_apk_jack_libraries) - full_jack_libs += $(link_apk_jack_libraries) full_jack_deps += $(link_apk_jack_libraries) endif @@ -388,14 +349,14 @@ endif ifdef LOCAL_INSTRUMENTATION_FOR # link against the jar with full original names (before proguard processing). link_instr_classes_jack := $(link_instr_intermediates_dir.COMMON)/classes.noshrob.jack - full_jack_libs += $(link_instr_classes_jack) + full_shared_jack_libs += $(link_instr_classes_jack) full_jack_deps += $(link_instr_classes_jack) endif # LOCAL_INSTRUMENTATION_FOR endif # !LOCAL_IS_HOST_MODULE # Propagate local configuration options to this target. -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ALL_JACK_LIBRARIES:= $(full_jack_libs) -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES) +$(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_JACK_SHARED_LIBRARIES:= $(full_shared_jack_libs) +$(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES) endif # need_compile_java endif # LOCAL_JACK_ENABLED diff --git a/core/ninja.mk b/core/ninja.mk index 289282ac7f7..49c709eebd6 100644 --- a/core/ninja.mk +++ b/core/ninja.mk @@ -1,6 +1,7 @@ -NINJA ?= $(shell which ninja) -ifeq ($(NINJA),) - NINJA := prebuilts/ninja/$(HOST_PREBUILT_TAG)/ninja +ifeq ($(filter address,$(SANITIZE_HOST)),) +NINJA ?= prebuilts/build-tools/$(HOST_PREBUILT_TAG)/bin/ninja +else +NINJA ?= prebuilts/build-tools/$(HOST_PREBUILT_TAG)/asan/bin/ninja endif ifeq ($(USE_SOONG),true) diff --git a/tools/ijar/Android.bp b/tools/ijar/Android.bp new file mode 100644 index 00000000000..a244a2ddbbf --- /dev/null +++ b/tools/ijar/Android.bp @@ -0,0 +1,18 @@ +// Copyright 2015 The Android Open Source Project +// +// The rest of files in this directory comes from +// https://github.com/bazelbuild/bazel/tree/master/third_party/ijar + +cc_binary_host { + srcs: [ + "classfile.cc", + "ijar.cc", + "zip.cc", + ], + cflags: [ + "-Wall", + "-Werror", + ], + host_ldlibs: ["-lz"], + name: "ijar", +}