[android] Completly move path logic to gyp config.
BUG=chromium:502176 LOG=n Review URL: https://codereview.chromium.org/1203653002 Cr-Commit-Position: refs/heads/master@{#29245}
This commit is contained in:
parent
10b6af71b8
commit
d70419e474
13
Makefile
13
Makefile
@ -31,9 +31,7 @@ OUTDIR ?= out
|
||||
TESTJOBS ?=
|
||||
GYPFLAGS ?=
|
||||
TESTFLAGS ?=
|
||||
ANDROID_NDK_ROOT ?=
|
||||
ANDROID_NDK_HOST_ARCH ?=
|
||||
ANDROID_TOOLCHAIN ?=
|
||||
ANDROID_V8 ?= /data/local/tmp/v8
|
||||
NACL_SDK_ROOT ?=
|
||||
|
||||
@ -281,7 +279,6 @@ ENVFILE = $(OUTDIR)/environment
|
||||
$(ARCHES) $(MODES) $(BUILDS) $(CHECKS) $(addsuffix .clean,$(ARCHES)) \
|
||||
$(addsuffix .check,$(MODES)) $(addsuffix .check,$(ARCHES)) \
|
||||
$(ANDROID_ARCHES) $(ANDROID_BUILDS) $(ANDROID_CHECKS) \
|
||||
must-set-ANDROID_NDK_ROOT_OR_TOOLCHAIN \
|
||||
$(NACL_ARCHES) $(NACL_BUILDS) $(NACL_CHECKS) \
|
||||
must-set-NACL_SDK_ROOT
|
||||
|
||||
@ -315,8 +312,7 @@ native: $(OUTDIR)/Makefile.native
|
||||
|
||||
$(ANDROID_ARCHES): $(addprefix $$@.,$(MODES))
|
||||
|
||||
$(ANDROID_BUILDS): $(GYPFILES) $(ENVFILE) \
|
||||
must-set-ANDROID_NDK_ROOT_OR_TOOLCHAIN Makefile.android
|
||||
$(ANDROID_BUILDS): $(GYPFILES) $(ENVFILE) Makefile.android
|
||||
@$(MAKE) -f Makefile.android $@ \
|
||||
ARCH="$(basename $@)" \
|
||||
MODE="$(subst .,,$(suffix $@))" \
|
||||
@ -452,13 +448,6 @@ $(OUTDIR)/Makefile.native: $(GYPFILES) $(ENVFILE)
|
||||
build/gyp/gyp --generator-output="$(OUTDIR)" build/all.gyp \
|
||||
-Ibuild/standalone.gypi --depth=. -S.native $(GYPFLAGS)
|
||||
|
||||
must-set-ANDROID_NDK_ROOT_OR_TOOLCHAIN:
|
||||
ifndef ANDROID_NDK_ROOT
|
||||
ifndef ANDROID_TOOLCHAIN
|
||||
$(error ANDROID_NDK_ROOT or ANDROID_TOOLCHAIN must be set))
|
||||
endif
|
||||
endif
|
||||
|
||||
# Note that NACL_SDK_ROOT must be set to point to an appropriate
|
||||
# Native Client SDK before using this makefile. You can download
|
||||
# an SDK here:
|
||||
|
@ -36,68 +36,31 @@ ANDROID_BUILDS = $(foreach mode,$(MODES), \
|
||||
$(addsuffix .$(mode),$(ANDROID_ARCHES)))
|
||||
|
||||
HOST_OS = $(shell uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')
|
||||
ANDROID_NDK_HOST_ARCH ?= $(shell uname -m | sed -e 's/i[3456]86/x86/')
|
||||
ifeq ($(HOST_OS), linux)
|
||||
TOOLCHAIN_DIR = linux-$(ANDROID_NDK_HOST_ARCH)
|
||||
else ifeq ($(HOST_OS), mac)
|
||||
TOOLCHAIN_DIR = darwin-$(ANDROID_NDK_HOST_ARCH)
|
||||
else
|
||||
$(error Host platform "${HOST_OS}" is not supported)
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH), android_arm)
|
||||
DEFINES = OS=android target_arch=arm v8_target_arch=arm android_target_arch=arm android_target_platform=21
|
||||
DEFINES = target_arch=arm v8_target_arch=arm android_target_arch=arm
|
||||
DEFINES += arm_neon=0 arm_version=7
|
||||
TOOLCHAIN_ARCH = arm-linux-androideabi
|
||||
TOOLCHAIN_PREFIX = $(TOOLCHAIN_ARCH)
|
||||
else ifeq ($(ARCH), android_arm64)
|
||||
DEFINES = OS=android target_arch=arm64 v8_target_arch=arm64 android_target_arch=arm64 android_target_platform=21
|
||||
TOOLCHAIN_ARCH = aarch64-linux-android
|
||||
TOOLCHAIN_PREFIX = $(TOOLCHAIN_ARCH)
|
||||
DEFINES = target_arch=arm64 v8_target_arch=arm64 android_target_arch=arm64
|
||||
else ifeq ($(ARCH), android_mipsel)
|
||||
DEFINES = OS=android target_arch=mipsel v8_target_arch=mipsel android_target_platform=21
|
||||
DEFINES = target_arch=mipsel v8_target_arch=mipsel
|
||||
DEFINES += android_target_arch=mips mips_arch_variant=mips32r2
|
||||
TOOLCHAIN_ARCH = mipsel-linux-android
|
||||
TOOLCHAIN_PREFIX = $(TOOLCHAIN_ARCH)
|
||||
else ifeq ($(ARCH), android_ia32)
|
||||
DEFINES = OS=android target_arch=ia32 v8_target_arch=ia32 android_target_arch=x86 android_target_platform=21
|
||||
TOOLCHAIN_ARCH = x86
|
||||
TOOLCHAIN_PREFIX = i686-linux-android
|
||||
DEFINES = target_arch=ia32 v8_target_arch=ia32 android_target_arch=x86
|
||||
else ifeq ($(ARCH), android_x64)
|
||||
DEFINES = OS=android target_arch=x64 v8_target_arch=x64 android_target_arch=x86_64 android_target_platform=21
|
||||
TOOLCHAIN_ARCH = x86_64
|
||||
TOOLCHAIN_PREFIX = x86_64-linux-android
|
||||
DEFINES = target_arch=x64 v8_target_arch=x64 android_target_arch=x86_64
|
||||
else ifeq ($(ARCH), android_x87)
|
||||
DEFINES = OS=android target_arch=x87 v8_target_arch=x87 android_target_arch=x86 android_target_platform=21
|
||||
TOOLCHAIN_ARCH = x86
|
||||
TOOLCHAIN_PREFIX = i686-linux-android
|
||||
DEFINES = target_arch=x87 v8_target_arch=x87 android_target_arch=x86
|
||||
else
|
||||
$(error Target architecture "${ARCH}" is not supported)
|
||||
endif
|
||||
|
||||
TOOLCHAIN_PATH = \
|
||||
${ANDROID_NDK_ROOT}/toolchains/${TOOLCHAIN_ARCH}-4.9/prebuilt
|
||||
ANDROID_TOOLCHAIN ?= ${TOOLCHAIN_PATH}/${TOOLCHAIN_DIR}
|
||||
|
||||
ifeq ($(wildcard $(ANDROID_TOOLCHAIN)),)
|
||||
$(error Cannot find Android toolchain in "${ANDROID_TOOLCHAIN}". Please \
|
||||
check that ANDROID_NDK_ROOT and ANDROID_NDK_HOST_ARCH are set \
|
||||
correctly)
|
||||
endif
|
||||
|
||||
# For mksnapshot host generation.
|
||||
DEFINES += host_os=${HOST_OS}
|
||||
DEFINES += OS=android
|
||||
# Common flags.
|
||||
DEFINES += host_os=${HOST_OS} OS=android android_target_platform=21
|
||||
|
||||
.SECONDEXPANSION:
|
||||
$(ANDROID_BUILDS): $(OUTDIR)/Makefile.$$@
|
||||
@$(MAKE) -C "$(OUTDIR)" -f Makefile.$@ \
|
||||
CXX="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-g++" \
|
||||
AR="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-ar" \
|
||||
RANLIB="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-ranlib" \
|
||||
CC="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-gcc" \
|
||||
LD="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-ld" \
|
||||
LINK="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-g++" \
|
||||
BUILDTYPE=$(shell echo $(subst .,,$(suffix $@)) | \
|
||||
python -c "print raw_input().capitalize()") \
|
||||
builddir="$(shell pwd)/$(OUTDIR)/$@"
|
||||
@ -107,8 +70,6 @@ ANDROID_MAKEFILES = $(addprefix $(OUTDIR)/Makefile.,$(ANDROID_BUILDS))
|
||||
$(ANDROID_MAKEFILES):
|
||||
GYP_GENERATORS=make-android \
|
||||
GYP_DEFINES="${DEFINES}" \
|
||||
CC="${ANDROID_TOOLCHAIN}/bin/${TOOLCHAIN_PREFIX}-gcc" \
|
||||
CXX="${ANDROID_TOOLCHAIN}/bin/${TOOLCHAIN_PREFIX}-g++" \
|
||||
PYTHONPATH="$(shell pwd)/tools/generate_shim_headers:$(shell pwd)/build:$(PYTHONPATH)" \
|
||||
build/gyp/gyp --generator-output="${OUTDIR}" build/all.gyp \
|
||||
-Ibuild/standalone.gypi --depth=. \
|
||||
|
@ -33,7 +33,6 @@
|
||||
'includes': ['toolchain.gypi'],
|
||||
'variables': {
|
||||
'component%': 'static_library',
|
||||
'clang_dir%': 'third_party/llvm-build/Release+Asserts',
|
||||
'clang_xcode%': 0,
|
||||
# Track where uninitialized memory originates from. From fastest to
|
||||
# slowest: 0 - no tracking, 1 - track only the initial allocation site, 2
|
||||
@ -85,6 +84,8 @@
|
||||
# library. This is intended to be used for instrumented builds.
|
||||
'use_custom_libcxx%': 0,
|
||||
|
||||
'clang_dir%': 'third_party/llvm-build/Release+Asserts',
|
||||
|
||||
# goma settings.
|
||||
# 1 to use goma.
|
||||
# If no gomadir is set, it uses the default gomadir.
|
||||
@ -97,9 +98,16 @@
|
||||
}, {
|
||||
'gomadir': '<!(/bin/echo -n ${HOME}/goma)',
|
||||
}],
|
||||
['host_arch!="ppc" and host_arch!="ppc64" and host_arch!="ppc64le"', {
|
||||
'host_clang%': '1',
|
||||
}, {
|
||||
'host_clang%': '0',
|
||||
}],
|
||||
],
|
||||
},
|
||||
'clang_dir%': '<(clang_dir)',
|
||||
'host_arch%': '<(host_arch)',
|
||||
'host_clang%': '<(host_clang)',
|
||||
'target_arch%': '<(target_arch)',
|
||||
'v8_target_arch%': '<(v8_target_arch)',
|
||||
'werror%': '-Werror',
|
||||
@ -180,11 +188,6 @@
|
||||
}, {
|
||||
'clang%': 0,
|
||||
}],
|
||||
['host_arch!="ppc" and host_arch!="ppc64" and host_arch!="ppc64le"', {
|
||||
'host_clang%': '1',
|
||||
}, {
|
||||
'host_clang%': '0',
|
||||
}],
|
||||
['asan==1 or lsan==1 or msan==1 or tsan==1', {
|
||||
'clang%': 1,
|
||||
'use_allocator%': 'none',
|
||||
@ -242,6 +245,9 @@
|
||||
],
|
||||
},
|
||||
|
||||
# Copy conditionally-set variables out one scope.
|
||||
'android_toolchain%': '<(android_toolchain)',
|
||||
|
||||
'conditions': [
|
||||
['android_ndk_root==""', {
|
||||
'variables': {
|
||||
@ -277,6 +283,13 @@
|
||||
],
|
||||
'android_stlport_library': 'stlport_static',
|
||||
}], # OS=="android"
|
||||
['host_clang==1', {
|
||||
'host_cc': '../<(clang_dir)/bin/clang',
|
||||
'host_cxx': '../<(clang_dir)/bin/clang++',
|
||||
}, {
|
||||
'host_cc': '<!(which gcc)',
|
||||
'host_cxx': '<!(which g++)',
|
||||
}],
|
||||
],
|
||||
# Default ARM variable settings.
|
||||
'arm_version%': 'default',
|
||||
@ -812,7 +825,7 @@
|
||||
'libraries': [
|
||||
'-l<(android_stlport_library)',
|
||||
# Manually link the libgcc.a that the cross compiler uses.
|
||||
'<!($CC -print-libgcc-file-name)',
|
||||
'<!(<(android_toolchain)/*-gcc -print-libgcc-file-name)',
|
||||
'-lc',
|
||||
'-ldl',
|
||||
'-lstdc++',
|
||||
@ -937,6 +950,16 @@
|
||||
], # target_conditions
|
||||
}, # target_defaults
|
||||
}], # OS=="android"
|
||||
['OS=="android" and clang==0', {
|
||||
# Hardcode the compiler names in the Makefile so that
|
||||
# it won't depend on the environment at make time.
|
||||
'make_global_settings': [
|
||||
['CC', '<!(/bin/echo -n <(android_toolchain)/*-gcc)'],
|
||||
['CXX', '<!(/bin/echo -n <(android_toolchain)/*-g++)'],
|
||||
['CC.host', '<(host_cc)'],
|
||||
['CXX.host', '<(host_cxx)'],
|
||||
],
|
||||
}],
|
||||
['clang!=1 and host_clang==1 and target_arch!="ia32" and target_arch!="x64"', {
|
||||
'make_global_settings': [
|
||||
['CC.host', '../<(clang_dir)/bin/clang'],
|
||||
|
Loading…
Reference in New Issue
Block a user