Merge "Refactor FDO support code to ensure arm64 can also be built with FDO." into lmp-dev
This commit is contained in:
commit
1cd4638594
8 changed files with 47 additions and 146 deletions
|
@ -179,7 +179,6 @@ my_compiler_dependencies :=
|
|||
ifneq ($(strip $(LOCAL_FDO_SUPPORT)),)
|
||||
ifeq ($(strip $(LOCAL_IS_HOST_MODULE)),)
|
||||
my_cflags += $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_FDO_CFLAGS)
|
||||
my_cppflags += $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_FDO_CFLAGS)
|
||||
my_ldflags += $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_FDO_CFLAGS)
|
||||
endif
|
||||
endif
|
||||
|
|
|
@ -49,6 +49,7 @@ $(error Unknown ARM architecture version: $(TARGET_$(combo_2nd_arch_prefix)ARCH_
|
|||
endif
|
||||
|
||||
include $(TARGET_ARCH_SPECIFIC_MAKEFILE)
|
||||
include $(BUILD_SYSTEM)/combo/fdo.mk
|
||||
|
||||
# You can set TARGET_TOOLS_PREFIX to get gcc from somewhere else
|
||||
ifeq ($(strip $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)),)
|
||||
|
@ -168,35 +169,6 @@ target_libgcov := $(shell $($(combo_2nd_arch_prefix)TARGET_CC) $($(combo_2nd_arc
|
|||
-print-file-name=libgcov.a)
|
||||
endif
|
||||
|
||||
# Define FDO (Feedback Directed Optimization) options.
|
||||
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_CFLAGS:=
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_LIB:=
|
||||
|
||||
ifneq ($(strip $(BUILD_FDO_INSTRUMENT)),)
|
||||
# Set BUILD_FDO_INSTRUMENT=true to turn on FDO instrumentation.
|
||||
# The profile will be generated on /data/local/tmp/profile on the device.
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_CFLAGS := -fprofile-generate=/data/local/tmp/profile -DANDROID_FDO
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_LIB := $(target_libgcov)
|
||||
else
|
||||
# If BUILD_FDO_INSTRUMENT is turned off, then consider doing the FDO optimizations.
|
||||
# Set TARGET_FDO_PROFILE_PATH to set a custom profile directory for your build.
|
||||
ifeq ($(strip $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH)),)
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH := fdo/profiles/$(TARGET_$(combo_2nd_arch_prefix)ARCH)/$(TARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT)
|
||||
else
|
||||
ifeq ($(strip $(wildcard $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH))),)
|
||||
$(warning Custom $(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH supplied, but directory does not exist. Turn off FDO.)
|
||||
endif
|
||||
endif
|
||||
|
||||
# If the FDO profile directory can't be found, then FDO is off.
|
||||
ifneq ($(strip $(wildcard $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH))),)
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_CFLAGS := -fprofile-use=$($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH) -DANDROID_FDO
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_LIB := $(target_libgcov)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
KERNEL_HEADERS_COMMON := $(libc_root)/kernel/uapi
|
||||
KERNEL_HEADERS_ARCH := $(libc_root)/kernel/uapi/asm-$(TARGET_$(combo_2nd_arch_prefix)ARCH)
|
||||
KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH)
|
||||
|
|
|
@ -49,6 +49,7 @@ $(error Unknown ARM architecture version: $(TARGET_ARCH_VARIANT))
|
|||
endif
|
||||
|
||||
include $(TARGET_ARCH_SPECIFIC_MAKEFILE)
|
||||
include $(BUILD_SYSTEM)/combo/fdo.mk
|
||||
|
||||
# You can set TARGET_TOOLS_PREFIX to get gcc from somewhere else
|
||||
ifeq ($(strip $(TARGET_TOOLS_PREFIX)),)
|
||||
|
|
|
@ -49,6 +49,7 @@ $(error Unknown MIPS architecture variant: $(TARGET_$(combo_2nd_arch_prefix)ARCH
|
|||
endif
|
||||
|
||||
include $(TARGET_ARCH_SPECIFIC_MAKEFILE)
|
||||
include $(BUILD_SYSTEM)/combo/fdo.mk
|
||||
|
||||
# You can set TARGET_TOOLS_PREFIX to get gcc from somewhere else
|
||||
ifeq ($(strip $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)),)
|
||||
|
@ -159,35 +160,6 @@ target_libgcov := $(shell $($(combo_2nd_arch_prefix)TARGET_CC) $($(combo_2nd_arc
|
|||
--print-file-name=libgcov.a)
|
||||
endif
|
||||
|
||||
# Define FDO (Feedback Directed Optimization) options.
|
||||
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_CFLAGS:=
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_LIB:=
|
||||
|
||||
ifneq ($(strip $(BUILD_FDO_INSTRUMENT)),)
|
||||
# Set BUILD_FDO_INSTRUMENT=true to turn on FDO instrumentation.
|
||||
# The profile will be generated on /data/local/tmp/profile on the device.
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_CFLAGS := -fprofile-generate=/data/local/tmp/profile -DANDROID_FDO
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_LIB := $(target_libgcov)
|
||||
else
|
||||
# If BUILD_FDO_INSTRUMENT is turned off, then consider doing the FDO optimizations.
|
||||
# Set TARGET_FDO_PROFILE_PATH to set a custom profile directory for your build.
|
||||
ifeq ($(strip $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH)),)
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH := fdo/profiles/$(TARGET_$(combo_2nd_arch_prefix)ARCH)/$(TARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT)
|
||||
else
|
||||
ifeq ($(strip $(wildcard $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH))),)
|
||||
$(warning Custom $(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH supplied, but directory does not exist. Turn off FDO.)
|
||||
endif
|
||||
endif
|
||||
|
||||
# If the FDO profile directory can't be found, then FDO is off.
|
||||
ifneq ($(strip $(wildcard $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH))),)
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_CFLAGS := -fprofile-use=$($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH) -DANDROID_FDO
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_LIB := $(target_libgcov)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
KERNEL_HEADERS_COMMON := $(libc_root)/kernel/uapi
|
||||
KERNEL_HEADERS_ARCH := $(libc_root)/kernel/uapi/asm-mips # mips covers both mips and mips64.
|
||||
KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH)
|
||||
|
|
|
@ -52,6 +52,7 @@ endif
|
|||
WITHOUT_TARGET_CLANG := true
|
||||
|
||||
include $(TARGET_ARCH_SPECIFIC_MAKEFILE)
|
||||
include $(BUILD_SYSTEM)/combo/fdo.mk
|
||||
|
||||
# You can set TARGET_TOOLS_PREFIX to get gcc from somewhere else
|
||||
ifeq ($(strip $(TARGET_TOOLS_PREFIX)),)
|
||||
|
@ -163,35 +164,6 @@ target_libgcov := $(shell $(TARGET_CC) $(TARGET_GLOBAL_CFLAGS) \
|
|||
--print-file-name=libgcov.a)
|
||||
endif
|
||||
|
||||
# Define FDO (Feedback Directed Optimization) options.
|
||||
|
||||
TARGET_FDO_CFLAGS:=
|
||||
TARGET_FDO_LIB:=
|
||||
|
||||
ifneq ($(strip $(BUILD_FDO_INSTRUMENT)),)
|
||||
# Set BUILD_FDO_INSTRUMENT=true to turn on FDO instrumentation.
|
||||
# The profile will be generated on /data/local/tmp/profile on the device.
|
||||
TARGET_FDO_CFLAGS := -fprofile-generate=/data/local/tmp/profile -DANDROID_FDO
|
||||
TARGET_FDO_LIB := $(target_libgcov)
|
||||
else
|
||||
# If BUILD_FDO_INSTRUMENT is turned off, then consider doing the FDO optimizations.
|
||||
# Set TARGET_FDO_PROFILE_PATH to set a custom profile directory for your build.
|
||||
ifeq ($(strip $(TARGET_FDO_PROFILE_PATH)),)
|
||||
TARGET_FDO_PROFILE_PATH := fdo/profiles/$(TARGET_ARCH)/$(TARGET_ARCH_VARIANT)
|
||||
else
|
||||
ifeq ($(strip $(wildcard $(TARGET_FDO_PROFILE_PATH))),)
|
||||
$(warning Custom TARGET_FDO_PROFILE_PATH supplied, but directory does not exist. Turn off FDO.)
|
||||
endif
|
||||
endif
|
||||
|
||||
# If the FDO profile directory can't be found, then FDO is off.
|
||||
ifneq ($(strip $(wildcard $(TARGET_FDO_PROFILE_PATH))),)
|
||||
TARGET_FDO_CFLAGS := -fprofile-use=$(TARGET_FDO_PROFILE_PATH) -DANDROID_FDO
|
||||
TARGET_FDO_LIB := $(target_libgcov)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
KERNEL_HEADERS_COMMON := $(libc_root)/kernel/uapi
|
||||
KERNEL_HEADERS_ARCH := $(libc_root)/kernel/uapi/asm-mips
|
||||
# TODO: perhaps use $(libc_root)/kernel/uapi/asm-$(TARGET_ARCH) instead of asm-mips ?
|
||||
|
|
|
@ -41,7 +41,7 @@ $(error Unknown $(TARGET_$(combo_2nd_arch_prefix)ARCH) architecture version: $(T
|
|||
endif
|
||||
|
||||
include $(TARGET_ARCH_SPECIFIC_MAKEFILE)
|
||||
|
||||
include $(BUILD_SYSTEM)/combo/fdo.mk
|
||||
|
||||
# You can set TARGET_TOOLS_PREFIX to get gcc from somewhere else
|
||||
ifeq ($(strip $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)),)
|
||||
|
@ -72,34 +72,6 @@ libc_root := bionic/libc
|
|||
libm_root := bionic/libm
|
||||
libstdc++_root := bionic/libstdc++
|
||||
|
||||
# Define FDO (Feedback Directed Optimization) options.
|
||||
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_CFLAGS:=
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_LIB:=
|
||||
|
||||
ifneq ($(strip $(BUILD_FDO_INSTRUMENT)),)
|
||||
# Set BUILD_FDO_INSTRUMENT=true to turn on FDO instrumentation.
|
||||
# The profile will be generated on /data/local/tmp/profile on the device.
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_CFLAGS := -fprofile-generate=/data/local/tmp/profile -DANDROID_FDO
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_LIB := $(target_libgcov)
|
||||
else
|
||||
# If BUILD_FDO_INSTRUMENT is turned off, then consider doing the FDO optimizations.
|
||||
# Set TARGET_FDO_PROFILE_PATH to set a custom profile directory for your build.
|
||||
ifeq ($(strip $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH)),)
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH := fdo/profiles/$(TARGET_$(combo_2nd_arch_prefix)ARCH)/$(TARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT)
|
||||
else
|
||||
ifeq ($(strip $(wildcard $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH))),)
|
||||
$(warning Custom $(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH supplied, but directory does not exist. Turn off FDO.)
|
||||
endif
|
||||
endif
|
||||
|
||||
# If the FDO profile directory can't be found, then FDO is off.
|
||||
ifneq ($(strip $(wildcard $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH))),)
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_CFLAGS := -fprofile-use=$($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH) -DANDROID_FDO
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_LIB := $(target_libgcov)
|
||||
endif
|
||||
endif
|
||||
|
||||
KERNEL_HEADERS_COMMON := $(libc_root)/kernel/uapi
|
||||
KERNEL_HEADERS_ARCH := $(libc_root)/kernel/uapi/asm-x86 # x86 covers both x86 and x86_64.
|
||||
KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH)
|
||||
|
|
|
@ -41,7 +41,7 @@ $(error Unknown $(TARGET_ARCH) architecture version: $(TARGET_ARCH_VARIANT))
|
|||
endif
|
||||
|
||||
include $(TARGET_ARCH_SPECIFIC_MAKEFILE)
|
||||
|
||||
include $(BUILD_SYSTEM)/combo/fdo.mk
|
||||
|
||||
# You can set TARGET_TOOLS_PREFIX to get gcc from somewhere else
|
||||
ifeq ($(strip $(TARGET_TOOLS_PREFIX)),)
|
||||
|
@ -72,34 +72,6 @@ libc_root := bionic/libc
|
|||
libm_root := bionic/libm
|
||||
libstdc++_root := bionic/libstdc++
|
||||
|
||||
# Define FDO (Feedback Directed Optimization) options.
|
||||
|
||||
TARGET_FDO_CFLAGS:=
|
||||
TARGET_FDO_LIB:=
|
||||
|
||||
ifneq ($(strip $(BUILD_FDO_INSTRUMENT)),)
|
||||
# Set BUILD_FDO_INSTRUMENT=true to turn on FDO instrumentation.
|
||||
# The profile will be generated on /data/local/tmp/profile on the device.
|
||||
TARGET_FDO_CFLAGS := -fprofile-generate=/data/local/tmp/profile -DANDROID_FDO
|
||||
TARGET_FDO_LIB := $(target_libgcov)
|
||||
else
|
||||
# If BUILD_FDO_INSTRUMENT is turned off, then consider doing the FDO optimizations.
|
||||
# Set TARGET_FDO_PROFILE_PATH to set a custom profile directory for your build.
|
||||
ifeq ($(strip $(TARGET_FDO_PROFILE_PATH)),)
|
||||
TARGET_FDO_PROFILE_PATH := fdo/profiles/$(TARGET_ARCH)/$(TARGET_ARCH_VARIANT)
|
||||
else
|
||||
ifeq ($(strip $(wildcard $(TARGET_FDO_PROFILE_PATH))),)
|
||||
$(warning Custom TARGET_FDO_PROFILE_PATH supplied, but directory does not exist. Turn off FDO.)
|
||||
endif
|
||||
endif
|
||||
|
||||
# If the FDO profile directory can't be found, then FDO is off.
|
||||
ifneq ($(strip $(wildcard $(TARGET_FDO_PROFILE_PATH))),)
|
||||
TARGET_FDO_CFLAGS := -fprofile-use=$(TARGET_FDO_PROFILE_PATH) -DANDROID_FDO
|
||||
TARGET_FDO_LIB := $(target_libgcov)
|
||||
endif
|
||||
endif
|
||||
|
||||
KERNEL_HEADERS_COMMON := $(libc_root)/kernel/uapi
|
||||
KERNEL_HEADERS_ARCH := $(libc_root)/kernel/uapi/asm-x86 # x86 covers both x86 and x86_64.
|
||||
KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH)
|
||||
|
|
41
core/combo/fdo.mk
Normal file
41
core/combo/fdo.mk
Normal file
|
@ -0,0 +1,41 @@
|
|||
#
|
||||
# Copyright (C) 2006 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# Setup FDO related flags.
|
||||
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_CFLAGS:=
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_LIB:=
|
||||
|
||||
ifneq ($(strip $(BUILD_FDO_INSTRUMENT)),)
|
||||
# Set BUILD_FDO_INSTRUMENT=true to turn on FDO instrumentation.
|
||||
# The profile will be generated on /data/local/tmp/profile on the device.
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_CFLAGS := -fprofile-generate=/data/local/tmp/fdo_profile -DANDROID_FDO
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_LIB := $(target_libgcov)
|
||||
else
|
||||
ifneq ($(strip $(BUILD_FDO_OPTIMIZE)),)
|
||||
# Set TARGET_FDO_PROFILE_PATH to set a custom profile directory for your build.
|
||||
ifeq ($(strip $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH)),)
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH := fdo_profiles
|
||||
endif
|
||||
|
||||
ifneq ($(strip $(wildcard $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH))),)
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_CFLAGS := -fprofile-use=$($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH) -DANDROID_FDO -fprofile-correction -Wcoverage-mismatch -Wno-error
|
||||
$(combo_2nd_arch_prefix)TARGET_FDO_LIB := $(target_libgcov)
|
||||
else
|
||||
$(warning Profile directory $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH) does not exist. Turn off FDO.)
|
||||
endif
|
||||
endif
|
||||
endif
|
Loading…
Reference in a new issue