Conditions
MacOS 10.6 (named "Snow Leopard")
Intel/x86 machine
Create new case-sensitive disk image
how to: http://sites.google.com/a/android.com/opensource/download
Install the XCode version 2.4 or later
how to: http://developer.apple.com
Install MacPorts and modify your .bash_profile file.
how to: http://sites.google.com/a/android.com/opensource/download
Note: Please, check the version of gmake
If the version of installed gmake is 3.82, you should downgrade to 3.81
how to:
>sudo port installed gmake
>sudo port install subversion
>svn co -r 71288 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake
>cd gmake
>sudo port install +gmake
The following ports are currently installed:
gmake @3.81_0 (active)
gmake @3.82_0
Install Java-1.5.0 for Leopard
how-to:
>curl -o java.1.5.0-leopard.tar.gz http://www.cs.washington.edu/homes/isdal/snow_leopard_workaround/java.1.5.0-leopard.tar.gz
>tar -xvzf java.1.5.0-leopard.tar.gz
>sudo mv 1.5.0 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0-leopard
>cd /System/Library/Frameworks/JavaVM.framework/Versions/
>sudo rm 1.5.0
>sudo ln -s 1.5.0-leopard 1.5.0
>open /Applications/Utilities/Java\ Preferences.app
Change the preference to as shown in the image below.
You would have to drag and drop different Java version to change the preference.
Install Repo and get Android source files
how to: http://sites.google.com/a/android.com/opensource/download
Build
how to: http://sites.google.com/a/android.com/opensource/download
Solving errors:
case 1:
/Developer/SDKs/MacOSX10.4u.sdk/usr/include/stdarg.h:4:25: error: stdarg.h: No such file or directory
In file included from external/qemu/elff/dwarf_die.h:21,
from external/qemu/elff/elf_file.h:20,
from external/qemu/elff/dwarf_cu.cc:20:
external/qemu/elff/elf_alloc.h: In static member function ‘static void* DwarfAllocBase::operator new(size_t)’:
external/qemu/elff/elf_alloc.h:156: warning: ‘operator new’ must not return NULL unless it is declared ‘throw()’ (or -fcheck-new is in effect)
make: *** [out/host/darwin-x86/obj/STATIC_LIBRARIES/emulator-elff_intermediates/elff/dwarf_cu.o] Error 1
solution
>vi external/qemu/Makefile.android
find
MY_CFLAGS += -mdynamic-no-pic
replace
MY_CFLAGS += -mdynamic-no-pic -I /Developer/usr/lib/gcc/i686-apple-darwin10/4.0.1/include/
case 2:
external/v8/src/arm/assembler-arm-inl.h: In constructor
‘v8::internal::Operand::Operand(const v8::internal::ExternalReference&)’:
external/v8/src/arm/assembler-arm-inl.h:172: error: cast from ‘v8::internal::byte*’ to ‘int32_t’ loses precision
In file included from external/v8/src/macro-assembler.h:87,
from external/v8/src/ic-inl.h:33,
from external/v8/src/assembler.cc:39:
external/v8/src/arm/assembler-arm-inl.h: In constructor
‘v8::internal::Operand::Operand(const char*)’:
external/v8/src/arm/assembler-arm-inl.h:165: error: cast from ‘const char*’ to ‘int32_t’ loses precision
external/v8/src/arm/assembler-arm-inl.h: In constructor
‘v8::internal::Operand::Operand(const v8::internal::ExternalReference&)’:
external/v8/src/arm/assembler-arm-inl.h:172: error: cast from ‘v8::internal::byte*’ to ‘int32_t’ loses precision
Solution
>vi build/core/config.mk
find
PREBUILT_IS_PRESENT := $(if $(wildcard prebuilt/Android.mk),true)
replace
PREBUILT_IS_PRESENT := $(if $(wildcard prebuilt/Android.mk),true)
ifeq ($(HOST_OS),darwin)
HOST_GLOBAL_CFLAGS += -arch i386
HOST_GLOBAL_CPPFLAGS += -arch i386
HOST_GLOBAL_LDFLAGS += -arch i386
endif
case 3:
ld: warning: in out/host/darwin-x86/obj/STATIC_LIBRARIES/libhost_intermediates/libhost.a, file is not of required architecture
Undefined symbols:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [out/host/darwin-x86/obj/EXECUTABLES/acp_intermediates/acp] Error 1
Solution
>vi build/core/combo/darwin-x86.mk
or
>vi build/core/combo/HOST_darwin-x86.mk
find
$(HOST_CXX) \
-dynamiclib -single_module -read_only_relocs suppress \
$(HOST_GLOBAL_LD_DIRS) \
replace
$(HOST_CXX) \
-dynamiclib -single_module -read_only_relocs suppress \
$(HOST_GLOBAL_LD_DIRS) \
$(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \
$(HOST_GLOBAL_LDFLAGS) \
) \
find
$(HOST_CXX) \
-Wl,-dynamic -headerpad_max_install_names \
$(HOST_GLOBAL_LD_DIRS) \
$(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
replace
$(HOST_CXX) \
-Wl,-dynamic -headerpad_max_install_names \
$(HOST_GLOBAL_LD_DIRS) \
$(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
$(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \
$(HOST_GLOBAL_LDFLAGS) \
) \