From fd82a49e04adb5513977acd0f616ddac421c715b Mon Sep 17 00:00:00 2001 From: Pavel Chupin Date: Mon, 26 Nov 2012 09:50:07 +0400 Subject: [PATCH] x86_64: Adding new target Add x86_64 Android builds. Compiler is expected to be able to understand -m64 code generation option. Change-Id: I99e7337c5a5766afc5e528a481bd21631ff44dd5 Signed-off-by: Pavel Chupin --- core/combo/TARGET_linux-x86.mk | 4 - core/combo/TARGET_linux-x86_64.mk | 282 +++++++++++++++++++++ core/combo/arch/x86_64/haswell.mk | 13 + core/combo/arch/x86_64/ivybridge.mk | 13 + core/combo/arch/x86_64/sandybridge.mk | 11 + core/combo/arch/x86_64/x86_64-atom.mk | 13 + core/combo/arch/x86_64/x86_64.mk | 22 ++ envsetup.sh | 3 + target/board/generic_x86_64/BoardConfig.mk | 43 ++++ target/board/generic_x86_64/README.txt | 8 + target/board/generic_x86_64/device.mk | 31 +++ target/board/generic_x86_64/system.prop | 6 + target/product/AndroidProducts.mk | 2 + target/product/aosp_x86_64.mk | 18 ++ target/product/full_x86_64.mk | 44 ++++ 15 files changed, 509 insertions(+), 4 deletions(-) mode change 100644 => 100755 core/combo/TARGET_linux-x86.mk create mode 100755 core/combo/TARGET_linux-x86_64.mk create mode 100644 core/combo/arch/x86_64/haswell.mk create mode 100644 core/combo/arch/x86_64/ivybridge.mk create mode 100644 core/combo/arch/x86_64/sandybridge.mk create mode 100755 core/combo/arch/x86_64/x86_64-atom.mk create mode 100755 core/combo/arch/x86_64/x86_64.mk create mode 100755 target/board/generic_x86_64/BoardConfig.mk create mode 100644 target/board/generic_x86_64/README.txt create mode 100755 target/board/generic_x86_64/device.mk create mode 100644 target/board/generic_x86_64/system.prop create mode 100644 target/product/aosp_x86_64.mk create mode 100755 target/product/full_x86_64.mk diff --git a/core/combo/TARGET_linux-x86.mk b/core/combo/TARGET_linux-x86.mk old mode 100644 new mode 100755 index a8a2b4552..c7cbcab7b --- a/core/combo/TARGET_linux-x86.mk +++ b/core/combo/TARGET_linux-x86.mk @@ -188,10 +188,6 @@ TARGET_GLOBAL_CFLAGS += -mbionic # TARGET_GLOBAL_CFLAGS += -D__ANDROID__ -# XXX: This flag is probably redundant since our toolchain binaries already -# generate 32-bit machine code. It probably dates back to the old days -# where we were using the host toolchain on Linux to build the platform -# images. Consider it for removal. TARGET_GLOBAL_LDFLAGS += -m32 TARGET_GLOBAL_LDFLAGS += -Wl,-z,noexecstack diff --git a/core/combo/TARGET_linux-x86_64.mk b/core/combo/TARGET_linux-x86_64.mk new file mode 100755 index 000000000..5f6c2afd6 --- /dev/null +++ b/core/combo/TARGET_linux-x86_64.mk @@ -0,0 +1,282 @@ +# +# 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. +# + +# Configuration for Linux on x86_64 as a target. +# Included by combo/select.mk + +# Provide a default variant. +ifeq ($(strip $(TARGET_ARCH_VARIANT)),) +TARGET_ARCH_VARIANT := x86_64 +endif + +ifeq ($(strip $(TARGET_GCC_VERSION_EXP)),) +TARGET_GCC_VERSION := 4.7 +else +TARGET_GCC_VERSION := $(TARGET_GCC_VERSION_EXP) +endif + +# Include the arch-variant-specific configuration file. +# Its role is to define various ARCH_X86_HAVE_XXX feature macros, +# plus initial values for TARGET_GLOBAL_CFLAGS +# +TARGET_ARCH_SPECIFIC_MAKEFILE := $(BUILD_COMBOS)/arch/$(TARGET_ARCH)/$(TARGET_ARCH_VARIANT).mk +ifeq ($(strip $(wildcard $(TARGET_ARCH_SPECIFIC_MAKEFILE))),) +$(error Unknown $(TARGET_ARCH) architecture version: $(TARGET_ARCH_VARIANT)) +endif + +include $(TARGET_ARCH_SPECIFIC_MAKEFILE) + + +# You can set TARGET_TOOLS_PREFIX to get gcc from somewhere else +ifeq ($(strip $(TARGET_TOOLS_PREFIX)),) +TARGET_TOOLCHAIN_ROOT := prebuilts/gcc/$(HOST_PREBUILT_TAG)/x86/x86_64-linux-android-$(TARGET_GCC_VERSION) +TARGET_TOOLS_PREFIX := $(TARGET_TOOLCHAIN_ROOT)/bin/x86_64-linux-android- +endif + +TARGET_CC := $(TARGET_TOOLS_PREFIX)gcc$(HOST_EXECUTABLE_SUFFIX) +TARGET_CXX := $(TARGET_TOOLS_PREFIX)g++$(HOST_EXECUTABLE_SUFFIX) +TARGET_AR := $(TARGET_TOOLS_PREFIX)ar$(HOST_EXECUTABLE_SUFFIX) +TARGET_OBJCOPY := $(TARGET_TOOLS_PREFIX)objcopy$(HOST_EXECUTABLE_SUFFIX) +TARGET_LD := $(TARGET_TOOLS_PREFIX)ld$(HOST_EXECUTABLE_SUFFIX) +TARGET_STRIP := $(TARGET_TOOLS_PREFIX)strip$(HOST_EXECUTABLE_SUFFIX) + +ifeq ($(TARGET_BUILD_VARIANT),user) +TARGET_STRIP_COMMAND = $(TARGET_STRIP) --strip-debug $< -o $@ +else +TARGET_STRIP_COMMAND = $(TARGET_STRIP) --strip-debug $< -o $@ && \ + $(TARGET_OBJCOPY) --add-gnu-debuglink=$< $@ +endif + +ifneq ($(wildcard $(TARGET_CC)),) +TARGET_LIBGCC := \ + $(shell $(TARGET_CC) -m64 -print-file-name=libgcc.a) +target_libgcov := $(shell $(TARGET_CC) $(TARGET_GLOBAL_CFLAGS) \ + -print-file-name=libgcov.a) +endif + +TARGET_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined + +libc_root := bionic/libc +libm_root := bionic/libm +libstdc++_root := bionic/libstdc++ +libthread_db_root := bionic/libthread_db + +# 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 + +# unless CUSTOM_KERNEL_HEADERS is defined, we're going to use +# symlinks located in out/ to point to the appropriate kernel +# headers. see 'config/kernel_headers.make' for more details +# +ifneq ($(CUSTOM_KERNEL_HEADERS),) + KERNEL_HEADERS_COMMON := $(CUSTOM_KERNEL_HEADERS) + KERNEL_HEADERS_ARCH := $(CUSTOM_KERNEL_HEADERS) +else + KERNEL_HEADERS_COMMON := $(libc_root)/kernel/common + KERNEL_HEADERS_ARCH := $(libc_root)/kernel/arch-$(TARGET_ARCH) +endif +KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH) + +TARGET_GLOBAL_CFLAGS += \ + -O2 \ + -Ulinux \ + -Wa,--noexecstack \ + -Werror=format-security \ + -D_FORTIFY_SOURCE=2 \ + -Wstrict-aliasing=2 \ + -fPIC -fPIE \ + -ffunction-sections \ + -finline-functions \ + -finline-limit=300 \ + -fno-inline-functions-called-once \ + -fno-short-enums \ + -fstrict-aliasing \ + -funswitch-loops \ + -funwind-tables \ + -fstack-protector \ + -m64 + +android_config_h := $(call select-android-config-h,target_linux-x86) +TARGET_ANDROID_CONFIG_CFLAGS := -include $(android_config_h) -I $(dir $(android_config_h)) +TARGET_GLOBAL_CFLAGS += $(TARGET_ANDROID_CONFIG_CFLAGS) + +# XXX: Not sure this is still needed. Must check with our toolchains. +TARGET_GLOBAL_CPPFLAGS += \ + -fno-use-cxa-atexit + +TARGET_GLOBAL_CFLAGS += $(arch_variant_cflags) \ + -mstackrealign \ + -mfpmath=sse + +ARCH_X86_HAVE_MMX := true +ARCH_X86_HAVE_SSE := true +ARCH_X86_HAVE_SSE2 := true +ARCH_X86_HAVE_SSE3 := true + +ifeq ($(ARCH_X86_HAVE_SSSE3),true) # yes, really SSSE3, not SSE3! + TARGET_GLOBAL_CFLAGS += -DUSE_SSSE3 -mssse3 +endif +ifeq ($(ARCH_X86_HAVE_SSE4),true) + TARGET_GLOBAL_CFLAGS += -msse4 +endif +ifeq ($(ARCH_X86_HAVE_SSE4_1),true) + TARGET_GLOBAL_CFLAGS += -msse4.1 +endif +ifeq ($(ARCH_X86_HAVE_SSE4_2),true) + TARGET_GLOBAL_CFLAGS += -msse4.2 +endif +ifeq ($(ARCH_X86_HAVE_AVX),true) + TARGET_GLOBAL_CFLAGS += -mavx +endif +ifeq ($(ARCH_X86_HAVE_AES_NI),true) + TARGET_GLOBAL_CFLAGS += -maes +endif + +# XXX: This flag is probably redundant. I believe our toolchain always sets +# it by default. Consider for removal. +# +TARGET_GLOBAL_CFLAGS += -mbionic + +# XXX: This flag is probably redundant. The macro should be defined by our +# toolchain binaries automatically (as a compiler built-in). +# Check with: $BINPREFIX-gcc -dM -E < /dev/null +# +# Consider for removal. +# +TARGET_GLOBAL_CFLAGS += -D__ANDROID__ + +TARGET_GLOBAL_LDFLAGS += -m64 + +TARGET_GLOBAL_LDFLAGS += -Wl,-z,noexecstack +TARGET_GLOBAL_LDFLAGS += -Wl,-z,relro -Wl,-z,now +TARGET_GLOBAL_LDFLAGS += -Wl,--warn-shared-textrel +TARGET_GLOBAL_LDFLAGS += -Wl,--gc-sections + +TARGET_C_INCLUDES := \ + $(libc_root)/arch-x86_64/include \ + $(libc_root)/include \ + $(libstdc++_root)/include \ + $(KERNEL_HEADERS) \ + $(libm_root)/include \ + $(libm_root)/include/amd64 \ + $(libthread_db_root)/include + +TARGET_CRTBEGIN_STATIC_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_static.o +TARGET_CRTBEGIN_DYNAMIC_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic.o +TARGET_CRTEND_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_android.o + +TARGET_CRTBEGIN_SO_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so.o +TARGET_CRTEND_SO_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_so.o + +TARGET_STRIP_MODULE:=true + +TARGET_DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libstdc++ libm + +TARGET_CUSTOM_LD_COMMAND := true +define transform-o-to-shared-lib-inner +$(hide) $(PRIVATE_CXX) \ + $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ + -nostdlib -Wl,-soname,$(notdir $@) \ + -shared -Bsymbolic \ + $(TARGET_GLOBAL_CFLAGS) \ + $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ + $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_SO_O)) \ + $(PRIVATE_ALL_OBJECTS) \ + -Wl,--whole-archive \ + $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ + -Wl,--no-whole-archive \ + $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ + $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ + $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ + $(PRIVATE_TARGET_LIBGCC) \ + $(PRIVATE_TARGET_FDO_LIB) \ + $(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ + -o $@ \ + $(PRIVATE_LDFLAGS) \ + $(PRIVATE_TARGET_LIBGCC) \ + $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_SO_O)) +endef + +define transform-o-to-executable-inner +$(hide) $(PRIVATE_CXX) \ + $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ + -nostdlib -Bdynamic \ + -Wl,-dynamic-linker,/system/bin/linker \ + -Wl,-z,nocopyreloc \ + -fPIE -pie \ + $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ + -Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \ + $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O)) \ + $(PRIVATE_ALL_OBJECTS) \ + -Wl,--whole-archive \ + $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ + -Wl,--no-whole-archive \ + $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ + $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ + $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ + $(PRIVATE_TARGET_LIBGCC) \ + $(PRIVATE_TARGET_FDO_LIB) \ + $(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ + -o $@ \ + $(PRIVATE_LDFLAGS) \ + $(PRIVATE_TARGET_LIBGCC) \ + $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O)) +endef + +define transform-o-to-static-executable-inner +$(hide) $(PRIVATE_CXX) \ + $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ + -nostdlib -Bstatic \ + -o $@ \ + $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ + $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_STATIC_O)) \ + $(PRIVATE_LDFLAGS) \ + $(PRIVATE_ALL_OBJECTS) \ + -Wl,--whole-archive \ + $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ + -Wl,--no-whole-archive \ + -Wl,--start-group \ + $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ + $(PRIVATE_TARGET_FDO_LIB) \ + $(PRIVATE_TARGET_LIBGCC) \ + -Wl,--end-group \ + $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O)) +endef diff --git a/core/combo/arch/x86_64/haswell.mk b/core/combo/arch/x86_64/haswell.mk new file mode 100644 index 000000000..9cf95b322 --- /dev/null +++ b/core/combo/arch/x86_64/haswell.mk @@ -0,0 +1,13 @@ +# Configuration for Linux on x86_64. +# Generating binaries for Haswell processors. +# +ARCH_X86_HAVE_SSSE3 := true +ARCH_X86_HAVE_SSE4 := true +ARCH_X86_HAVE_SSE4_1 := true +ARCH_X86_HAVE_SSE4_2 := true +ARCH_X86_HAVE_AES_NI := true +ARCH_X86_HAVE_AVX := true + +# CFLAGS for this arch +arch_variant_cflags := \ + -march=core-avx2 diff --git a/core/combo/arch/x86_64/ivybridge.mk b/core/combo/arch/x86_64/ivybridge.mk new file mode 100644 index 000000000..7b9519029 --- /dev/null +++ b/core/combo/arch/x86_64/ivybridge.mk @@ -0,0 +1,13 @@ +# Configuration for Linux on x86_64. +# Generating binaries for Ivy Bridge processors. +# +ARCH_X86_HAVE_SSSE3 := true +ARCH_X86_HAVE_SSE4 := true +ARCH_X86_HAVE_SSE4_1 := true +ARCH_X86_HAVE_SSE4_2 := true +ARCH_X86_HAVE_AES_NI := true +ARCH_X86_HAVE_AVX := true + +# CFLAGS for this arch +arch_variant_cflags := \ + -march=core-avx-i diff --git a/core/combo/arch/x86_64/sandybridge.mk b/core/combo/arch/x86_64/sandybridge.mk new file mode 100644 index 000000000..a443b6bd9 --- /dev/null +++ b/core/combo/arch/x86_64/sandybridge.mk @@ -0,0 +1,11 @@ +# Configuration for Linux on x86_64. +# Generating binaries for SandyBridge processors. +# +ARCH_X86_HAVE_SSSE3 := true +ARCH_X86_HAVE_SSE4_1 := true +ARCH_X86_HAVE_SSE4_2 := true +ARCH_X86_HAVE_AVX := true + +# CFLAGS for this arch +arch_variant_cflags := \ + -march=corei7-avx diff --git a/core/combo/arch/x86_64/x86_64-atom.mk b/core/combo/arch/x86_64/x86_64-atom.mk new file mode 100755 index 000000000..64b07a085 --- /dev/null +++ b/core/combo/arch/x86_64/x86_64-atom.mk @@ -0,0 +1,13 @@ +# This file contains feature macro definitions specific to the +# 'x86_64-atom' arch variant. This is an extension of the 'x86_64' base variant +# that adds Atom-specific features. +# +# See build/core/combo/arch/x86_64/x86_64.mk for differences. +# +ARCH_X86_HAVE_SSSE3 := true +ARCH_X86_HAVE_MOVBE := true +ARCH_X86_HAVE_POPCNT := false # popcnt is not supported by current Atom CPUs + +# CFLAGS for this arch +arch_variant_cflags := \ + -march=atom diff --git a/core/combo/arch/x86_64/x86_64.mk b/core/combo/arch/x86_64/x86_64.mk new file mode 100755 index 000000000..8f855ccf1 --- /dev/null +++ b/core/combo/arch/x86_64/x86_64.mk @@ -0,0 +1,22 @@ +# This file contains feature macro definitions specific to the +# base 'x86_64' platform ABI. This one must *strictly* match the NDK x86_64 ABI +# which mandates specific CPU extensions to be available. +# +# It is also used to build full_x86_64-eng / sdk_x86_64-eng platform images +# that are run in the emulator under KVM emulation (i.e. running directly on +# the host development machine's CPU). +# + +# These features are optional and shall not be included in the base platform +# Otherwise, they sdk_x86_64-eng system images might fail to run on some +# developer machines. +# + +ARCH_X86_HAVE_SSSE3 := true +ARCH_X86_HAVE_MOVBE := false +ARCH_X86_HAVE_POPCNT := true + +# CFLAGS for this arch +arch_variant_cflags := \ + -march=x86-64 + diff --git a/envsetup.sh b/envsetup.sh index da2899651..71b0ba783 100644 --- a/envsetup.sh +++ b/envsetup.sh @@ -128,6 +128,8 @@ function setpaths() case $ARCH in x86) toolchaindir=x86/x86_64-linux-android-$targetgccversion/bin ;; + x86_64) toolchaindir=x86/x86_64-linux-android-$targetgccversion/bin + ;; arm) toolchaindir=arm/arm-linux-androideabi-$targetgccversion/bin ;; mips) toolchaindir=mips/mipsel-linux-android-$targetgccversion/bin @@ -431,6 +433,7 @@ function add_lunch_combo() add_lunch_combo aosp_arm-eng add_lunch_combo aosp_x86-eng add_lunch_combo aosp_mips-eng +add_lunch_combo aosp_x86_64-eng add_lunch_combo vbox_x86-eng function print_lunch_menu() diff --git a/target/board/generic_x86_64/BoardConfig.mk b/target/board/generic_x86_64/BoardConfig.mk new file mode 100755 index 000000000..8a2fd134c --- /dev/null +++ b/target/board/generic_x86_64/BoardConfig.mk @@ -0,0 +1,43 @@ +# config.mk +# +# Product-specific compile-time definitions. +# + +# The generic product target doesn't have any hardware-specific pieces. +TARGET_NO_BOOTLOADER := true +TARGET_NO_KERNEL := true +TARGET_CPU_ABI := x86_64 +TARGET_ARCH := x86_64 +TARGET_ARCH_VARIANT := x86_64 +TARGET_PRELINK_MODULE := false + +# The IA emulator (qemu) uses the Goldfish devices +HAVE_HTC_AUDIO_DRIVER := true +BOARD_USES_GENERIC_AUDIO := true + +# no hardware camera +USE_CAMERA_STUB := true + +# customize the malloced address to be 16-byte aligned +BOARD_MALLOC_ALIGNMENT := 16 + +# Enable dex-preoptimization to speed up the first boot sequence +# of an SDK AVD. Note that this operation only works on Linux for now +ifeq ($(HOST_OS),linux) +WITH_DEXPREOPT := true +endif + +# Build OpenGLES emulation host and guest libraries +BUILD_EMULATOR_OPENGL := true + +# Build and enable the OpenGL ES View renderer. When running on the emulator, +# the GLES renderer disables itself if host GL acceleration isn't available. +USE_OPENGL_RENDERER := true + +TARGET_USERIMAGES_USE_EXT4 := true +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 576716800 +BOARD_USERDATAIMAGE_PARTITION_SIZE := 209715200 +BOARD_CACHEIMAGE_PARTITION_SIZE := 69206016 +BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := ext4 +BOARD_FLASH_BLOCK_SIZE := 512 +TARGET_USERIMAGES_SPARSE_EXT_DISABLED := true diff --git a/target/board/generic_x86_64/README.txt b/target/board/generic_x86_64/README.txt new file mode 100644 index 000000000..46b015bc3 --- /dev/null +++ b/target/board/generic_x86_64/README.txt @@ -0,0 +1,8 @@ +The "generic_x86_64" product defines a non-hardware-specific IA target +without a kernel or bootloader. + +It can be used to build the entire user-level system, and +will work with the IA version of the emulator, + +It is not a product "base class"; no other products inherit +from it or use it in any way. diff --git a/target/board/generic_x86_64/device.mk b/target/board/generic_x86_64/device.mk new file mode 100755 index 000000000..574ce4f9e --- /dev/null +++ b/target/board/generic_x86_64/device.mk @@ -0,0 +1,31 @@ +# +# Copyright (C) 2009 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. +# + +# This is a build configuration for the product aspects that +# are specific to the emulator. + +PRODUCT_PROPERTY_OVERRIDES := \ + ro.ril.hsxpa=1 \ + ro.ril.gprsclass=10 \ + ro.adb.qemud=1 + +PRODUCT_COPY_FILES := \ + device/generic/goldfish/data/etc/apns-conf.xml:system/etc/apns-conf.xml \ + device/generic/goldfish/camera/media_profiles.xml:system/etc/media_profiles.xml \ + device/generic/goldfish/camera/media_codecs.xml:system/etc/media_codecs.xml + +PRODUCT_PACKAGES := \ + audio.primary.goldfish diff --git a/target/board/generic_x86_64/system.prop b/target/board/generic_x86_64/system.prop new file mode 100644 index 000000000..137a0f9b1 --- /dev/null +++ b/target/board/generic_x86_64/system.prop @@ -0,0 +1,6 @@ +# +# system.prop for generic sdk +# + +rild.libpath=/system/lib/libreference-ril.so +rild.libargs=-d /dev/ttyS0 diff --git a/target/product/AndroidProducts.mk b/target/product/AndroidProducts.mk index a72d2f36d..1a559be16 100644 --- a/target/product/AndroidProducts.mk +++ b/target/product/AndroidProducts.mk @@ -53,6 +53,8 @@ PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/full_x86.mk \ $(LOCAL_DIR)/aosp_mips.mk \ $(LOCAL_DIR)/full_mips.mk \ + $(LOCAL_DIR)/aosp_x86_64.mk \ + $(LOCAL_DIR)/full_x86_64.mk \ $(LOCAL_DIR)/vbox_x86.mk \ $(LOCAL_DIR)/sdk.mk \ $(LOCAL_DIR)/sdk_x86.mk \ diff --git a/target/product/aosp_x86_64.mk b/target/product/aosp_x86_64.mk new file mode 100644 index 000000000..5a12c08d0 --- /dev/null +++ b/target/product/aosp_x86_64.mk @@ -0,0 +1,18 @@ +# +# Copyright 2013 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. +# +$(call inherit-product, $(SRC_TARGET_DIR)/product/full_x86_64.mk) + +PRODUCT_NAME := aosp_x86_64 diff --git a/target/product/full_x86_64.mk b/target/product/full_x86_64.mk new file mode 100755 index 000000000..644f2a228 --- /dev/null +++ b/target/product/full_x86_64.mk @@ -0,0 +1,44 @@ +# +# Copyright (C) 2009 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. +# + +# This is a build configuration for a full-featured build of the +# Open-Source part of the tree. It's geared toward a US-centric +# build quite specifically for the emulator, and might not be +# entirely appropriate to inherit from for on-device configurations. + +# If running on an emulator or some other device that has a LAN connection +# that isn't a wifi connection. This will instruct init.rc to enable the +# network connection so that you can use it with ADB + +$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/board/generic_x86_64/device.mk) + +include $(SRC_TARGET_DIR)/product/emulator.mk + +ifdef NET_ETH0_STARTONBOOT + PRODUCT_PROPERTY_OVERRIDES += net.eth0.startonboot=1 +endif + +# Ensure we package the BIOS files too. +PRODUCT_PACKAGES += \ + bios.bin \ + vgabios-cirrus.bin \ + +# Overrides +PRODUCT_NAME := full_x86_64 +PRODUCT_DEVICE := generic_x86_64 +PRODUCT_BRAND := Android +PRODUCT_MODEL := AOSP on IA x86_64 Emulator