Skip to content

Commit

Permalink
Merge changes from topic 'build_improvements' into n7.1
Browse files Browse the repository at this point in the history
* changes:
  Remove bootclasspath handling for Jack
  Remove static libraries from Jack classpath
  Use ASAN prebuilts if SANITIZE_HOST includes address
  Use more prebuilt build-tools
  Update prebuilt build tools path
  • Loading branch information
eyosen authored and Gerrit Code Review committed Mar 15, 2017
2 parents 8a29e1d + 7b9f597 commit dcb9a7a
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 74 deletions.
25 changes: 13 additions & 12 deletions core/config.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down
14 changes: 3 additions & 11 deletions core/definitions.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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) \
Expand Down Expand Up @@ -2184,7 +2178,7 @@ $(hide) if [ -s [email protected] ] ; 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 \
Expand Down Expand Up @@ -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 \
Expand Down Expand Up @@ -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.
#
Expand Down
2 changes: 1 addition & 1 deletion core/host_dalvik_java_library.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 0 additions & 1 deletion core/host_dalvik_static_java_library.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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
53 changes: 7 additions & 46 deletions core/java_common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand All @@ -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
7 changes: 4 additions & 3 deletions core/ninja.mk
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
18 changes: 18 additions & 0 deletions tools/ijar/Android.bp
Original file line number Diff line number Diff line change
@@ -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",
}

0 comments on commit dcb9a7a

Please sign in to comment.