Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

453 lines (401 sloc) 14.928 kb
##
## Copyright 2009, The Android Open Source Project
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions
## are met:
## * Redistributions of source code must retain the above copyright
## notice, this list of conditions and the following disclaimer.
## * Redistributions in binary form must reproduce the above copyright
## notice, this list of conditions and the following disclaimer in the
## documentation and/or other materials provided with the distribution.
##
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
## EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
## PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
## EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
## PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
## PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
## OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
##
# Control WebGL compiling in webkit.
ifneq ($(ENABLE_WEBGL),true)
ENABLE_WEBGL = false
endif
# Control SVG compiling in webkit.
# Default is true unless explictly disabled.
ifneq ($(ENABLE_SVG),false)
ENABLE_SVG = true
endif
# Control complex scripts support compiling in webkit.
# Default is true unless explictly disabled.
ifneq ($(SUPPORT_COMPLEX_SCRIPTS),false)
SUPPORT_COMPLEX_SCRIPTS = true
endif
# Read the environment variable to determine if Autofill is compiled.
# The default is on.
# is turned on.
ifneq ($(ENABLE_AUTOFILL),false)
ENABLE_AUTOFILL = true
endif
BASE_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Define our module and find the intermediates directory
LOCAL_MODULE := libwebcore
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
base_intermediates := $(call local-intermediates-dir)
# Using := here prevents recursive expansion
WEBKIT_SRC_FILES :=
# We have to use bison 2.3
include $(BASE_PATH)/bison_check.mk
SOURCE_PATH := $(BASE_PATH)/Source
WEBCORE_PATH := $(SOURCE_PATH)/WebCore
JAVASCRIPTCORE_PATH := $(SOURCE_PATH)/JavaScriptCore
WEBKIT_PATH := $(SOURCE_PATH)/WebKit
WEBCORE_INTERMEDIATES_PATH := $(base_intermediates)/Source/WebCore
# Build our list of include paths. We include Source/WebKit/android/icu first so that
# any files that include <unicode/ucnv.h> will include our ucnv.h first. We
# also add external/ as an include directory so that we can specify the real
# icu header directory as a more exact reference to avoid including our ucnv.h.
#
# Note that JavasCriptCore/ must be included after WebCore/, so that we pick up
# the right config.h.
LOCAL_C_INCLUDES := \
$(JNI_H_INCLUDE) \
$(WEBKIT_PATH)/android/icu \
external/ \
external/icu4c/common \
external/icu4c/i18n \
external/jpeg \
external/libxml2/include \
external/libxslt \
external/hyphenation \
external/skia/emoji \
external/skia/include/core \
external/skia/include/effects \
external/skia/include/gpu \
external/skia/include/images \
external/skia/include/ports \
external/skia/include/utils \
external/skia/src/gpu \
external/skia/src/ports \
external/sqlite/dist \
frameworks/base/core/jni/android/graphics \
frameworks/base/include
LOCAL_C_INCLUDES += external/libpng \
external/zlib
ifeq ($(ENABLE_WEBGL),true)
LOCAL_C_INCLUDES += frameworks/native/include/gui \
frameworks/native/include/private/gui
endif
# Add Source/ for the include of <JavaScriptCore/config.h> from WebCore/config.h
LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES) \
$(SOURCE_PATH)
LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES) \
$(WEBCORE_PATH) \
$(WEBCORE_PATH)/accessibility \
$(WEBCORE_PATH)/bindings/ \
$(WEBCORE_PATH)/bindings/generic \
$(WEBCORE_PATH)/css \
$(WEBCORE_PATH)/dom \
$(WEBCORE_PATH)/editing \
$(WEBCORE_PATH)/fileapi \
$(WEBCORE_PATH)/history \
$(WEBCORE_PATH)/history/android \
$(WEBCORE_PATH)/html \
$(WEBCORE_PATH)/html/canvas \
$(WEBCORE_PATH)/html/parser \
$(WEBCORE_PATH)/html/shadow \
$(WEBCORE_PATH)/inspector \
$(WEBCORE_PATH)/loader \
$(WEBCORE_PATH)/loader/appcache \
$(WEBCORE_PATH)/loader/archive \
$(WEBCORE_PATH)/loader/archive/android \
$(WEBCORE_PATH)/loader/cache \
$(WEBCORE_PATH)/loader/icon \
$(WEBCORE_PATH)/notifications \
$(WEBCORE_PATH)/page \
$(WEBCORE_PATH)/page/android \
$(WEBCORE_PATH)/page/animation \
$(WEBCORE_PATH)/platform \
$(WEBCORE_PATH)/platform/android \
$(WEBCORE_PATH)/platform/animation \
$(WEBCORE_PATH)/platform/graphics \
$(WEBCORE_PATH)/platform/graphics/android \
$(WEBCORE_PATH)/platform/graphics/android/context \
$(WEBCORE_PATH)/platform/graphics/android/fonts \
$(WEBCORE_PATH)/platform/graphics/android/layers \
$(WEBCORE_PATH)/platform/graphics/android/rendering \
$(WEBCORE_PATH)/platform/graphics/android/utils \
$(WEBCORE_PATH)/platform/graphics/filters \
$(WEBCORE_PATH)/platform/graphics/gpu \
$(WEBCORE_PATH)/platform/graphics/network \
$(WEBCORE_PATH)/platform/graphics/skia \
$(WEBCORE_PATH)/platform/graphics/transforms \
$(WEBCORE_PATH)/platform/image-decoders \
$(WEBCORE_PATH)/platform/image-decoders/bmp \
$(WEBCORE_PATH)/platform/image-decoders/gif \
$(WEBCORE_PATH)/platform/image-decoders/ico \
$(WEBCORE_PATH)/platform/image-decoders/jpeg \
$(WEBCORE_PATH)/platform/image-decoders/png \
$(WEBCORE_PATH)/platform/image-decoders/webp \
$(WEBCORE_PATH)/platform/image-encoders/skia \
$(WEBCORE_PATH)/platform/mock \
$(WEBCORE_PATH)/platform/network \
$(WEBCORE_PATH)/platform/network/android \
$(WEBCORE_PATH)/platform/sql \
$(WEBCORE_PATH)/platform/text \
$(WEBCORE_PATH)/platform/text/transcoder \
$(WEBCORE_PATH)/plugins \
$(WEBCORE_PATH)/plugins/android \
$(WEBCORE_PATH)/rendering \
$(WEBCORE_PATH)/rendering/style \
$(WEBCORE_PATH)/rendering/svg \
$(WEBCORE_PATH)/storage \
$(WEBCORE_PATH)/svg \
$(WEBCORE_PATH)/svg/animation \
$(WEBCORE_PATH)/svg/graphics \
$(WEBCORE_PATH)/svg/graphics/filters \
$(WEBCORE_PATH)/svg/properties \
$(WEBCORE_PATH)/websockets \
$(WEBCORE_PATH)/workers \
$(WEBCORE_PATH)/xml
LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES) \
$(WEBKIT_PATH)/android \
$(WEBKIT_PATH)/android/WebCoreSupport \
$(WEBKIT_PATH)/android/jni \
$(WEBKIT_PATH)/android/nav \
$(WEBKIT_PATH)/android/plugins
LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES) \
$(JAVASCRIPTCORE_PATH) \
$(JAVASCRIPTCORE_PATH)/collector/handles \
$(JAVASCRIPTCORE_PATH)/heap \
$(JAVASCRIPTCORE_PATH)/wtf \
$(JAVASCRIPTCORE_PATH)/wtf/unicode \
$(JAVASCRIPTCORE_PATH)/wtf/unicode/icu
LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES) \
$(WEBCORE_INTERMEDIATES_PATH) \
$(WEBCORE_INTERMEDIATES_PATH)/css \
$(WEBCORE_INTERMEDIATES_PATH)/html \
$(WEBCORE_INTERMEDIATES_PATH)/platform \
$(WEBCORE_INTERMEDIATES_PATH)/xml
# The following includes are needed by the AutoFill feature, or the chrome http
# stack
LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES) \
$(WEBKIT_PATH)/chromium \
$(WEBKIT_PATH)/chromium/public \
external/chromium/chrome/browser \
external/chromium/chrome/renderer \
external/chromium \
external/chromium/chrome \
external/skia
LOCAL_CFLAGS += -DWEBKIT_IMPLEMENTATION=1
# Needed for ANGLE
LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES) \
$(SOURCE_PATH)/ThirdParty/ANGLE/include/GLSLANG
# Include WTF source file.
d := Source/JavaScriptCore
LOCAL_PATH := $(BASE_PATH)/$d
intermediates := $(base_intermediates)/$d
include $(LOCAL_PATH)/Android.v8.wtf.mk
WEBKIT_SRC_FILES += $(addprefix $d/,$(LOCAL_SRC_FILES))
# Include source files for WebCore
d := Source/WebCore
LOCAL_PATH := $(BASE_PATH)/$d
intermediates := $(base_intermediates)/$d
include $(LOCAL_PATH)/Android.mk
include $(LOCAL_PATH)/Android.v8bindings.mk
WEBKIT_SRC_FILES += $(addprefix $d/,$(LOCAL_SRC_FILES))
LOCAL_C_INCLUDES += $(BINDING_C_INCLUDES)
# Include the derived source files for WebCore. Uses the same path as
# WebCore
include $(LOCAL_PATH)/Android.derived.mk
include $(LOCAL_PATH)/Android.derived.v8bindings.mk
# Include source files for android WebKit port
d := Source/WebKit
LOCAL_PATH := $(BASE_PATH)/$d
intermediates := $(base_intermediates)/$d
include $(LOCAL_PATH)/Android.mk
WEBKIT_SRC_FILES += $(addprefix $d/,$(LOCAL_SRC_FILES))
# Redefine LOCAL_PATH here so the build system is not confused
LOCAL_PATH := $(BASE_PATH)
# Define our compiler flags
LOCAL_CFLAGS += -Wno-endif-labels -Wno-import -Wno-format
LOCAL_CFLAGS += -fno-strict-aliasing
LOCAL_CFLAGS += -include "WebCorePrefix.h"
LOCAL_CFLAGS += -fvisibility=hidden
LOCAL_CFLAGS += -DALWAYS_INLINE=inline
# Make sure assert.h is included before assert is defined
LOCAL_CFLAGS += -include "assert.h"
LOCAL_CFLAGS += -DGOOGLEURL
LOCAL_CPPFLAGS := -Wno-sign-promo
LOCAL_CPPFLAGS := -Wno-c++0x-compat
# Adds GL and EGL extensions for the GL backend
LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES
ifeq ($(TARGET_ARCH),arm)
LOCAL_CFLAGS += -Darm
# remove this warning: "note: the mangling of 'va_list' has changed in GCC 4.4"
LOCAL_CFLAGS += -Wno-psabi
endif
# need a flag to tell the C side when we're on devices with large memory
# budgets (i.e. larger than the low-end devices that initially shipped)
ifeq ($(ARCH_ARM_HAVE_VFP),true)
LOCAL_CFLAGS += -DANDROID_LARGE_MEMORY_DEVICE
endif
ifeq ($(ENABLE_SVG),true)
LOCAL_CFLAGS += -DENABLE_SVG=1 -DENABLE_SVG_ANIMATION=1
endif
ifeq ($(ENABLE_WTF_USE_ACCELERATED_COMPOSITING),false)
LOCAL_CFLAGS += -DWTF_USE_ACCELERATED_COMPOSITING=0
endif
ifeq ($(ENABLE_WTF_USE_ACCELERATED_COMPOSITING),true)
LOCAL_CFLAGS += -DWTF_USE_ACCELERATED_COMPOSITING=1
endif
ifeq ($(call is-chipset-prefix-in-board-platform,msm7627),true)
LOCAL_CFLAGS += -DVIDEO_PLATFORM_ID=2
else
ifeq ($(call is-chipset-in-board-platform,msm7630),true)
LOCAL_CFLAGS += -DVIDEO_PLATFORM_ID=3
else
ifeq ($(call is-board-platform,msm8660),true)
LOCAL_CFLAGS += -DVIDEO_PLATFORM_ID=4
else
ifeq ($(call is-board-platform,msm8960),true)
LOCAL_CFLAGS += -DVIDEO_PLATFORM_ID=5
else
ifeq ($(call is-board-platform,copper),true)
LOCAL_CFLAGS += -DVIDEO_PLATFORM_ID=6
else
LOCAL_CFLAGS += -DVIDEO_PLATFORM_ID=1
endif
endif
endif
endif
endif
LOCAL_CFLAGS += -DENABLE_REQUEST_ANIMATION_FRAME=1
ifeq ($(ENABLE_WEBGL),true)
LOCAL_CFLAGS += -DENABLE_WEBGL
endif
# LOCAL_LDLIBS is used in simulator builds only and simulator builds are only
# valid on Linux
LOCAL_LDLIBS += -lpthread -ldl
# Build the list of shared libraries
# We have to use the android version of libdl
LOCAL_SHARED_LIBRARIES := \
libEGL \
libGLESv2 \
libandroid \
libandroidfw \
libandroid_runtime \
libchromium_net \
libcrypto \
libcutils \
libdl \
libgui \
libicuuc \
libicui18n \
libmedia \
libmedia_native \
libnativehelper \
libskia \
libsqlite \
libssl \
libstlport \
libutils \
libui \
libz
# We have to fake out some headers when using stlport.
LOCAL_C_INCLUDES += \
external/chromium/android
include external/stlport/libstlport.mk
# We need Harfbuzz library to support complex scripts(Arabic, Thai, Hindi...).
ifeq ($(SUPPORT_COMPLEX_SCRIPTS),true)
LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES) \
external/harfbuzz/src \
external/harfbuzz/contrib
LOCAL_SHARED_LIBRARIES += libharfbuzz libjpeg
LOCAL_CFLAGS += -DSUPPORT_COMPLEX_SCRIPTS=1
endif
# Build the list of static libraries
LOCAL_STATIC_LIBRARIES := libxml2 libxslt libhyphenation libskiagpu libv8
ifeq ($(ENABLE_WEBGL),true)
LOCAL_STATIC_LIBRARIES += libpng
endif
ifeq ($(ENABLE_AUTOFILL),true)
LOCAL_SHARED_LIBRARIES += libexpat
endif
# Redefine LOCAL_SRC_FILES to be all the WebKit source files
LOCAL_SRC_FILES := $(WEBKIT_SRC_FILES)
# Define this for use in other makefiles.
WEBKIT_C_INCLUDES := $(LOCAL_C_INCLUDES)
WEBKIT_CFLAGS := $(LOCAL_CFLAGS)
WEBKIT_CPPFLAGS := $(LOCAL_CPPFLAGS)
WEBKIT_GENERATED_SOURCES := $(LOCAL_GENERATED_SOURCES)
WEBKIT_LDLIBS := $(LOCAL_LDLIBS)
WEBKIT_SHARED_LIBRARIES := $(LOCAL_SHARED_LIBRARIES)
WEBKIT_STATIC_LIBRARIES := $(LOCAL_STATIC_LIBRARIES)
# Build the library all at once
include $(BUILD_STATIC_LIBRARY)
# Build ANGLE as a static library.
include $(CLEAR_VARS)
LOCAL_MODULE := libangle
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
LOCAL_MODULE_TAGS := optional
ANGLE_PATH := $(SOURCE_PATH)/ThirdParty/ANGLE
LOCAL_SHARED_LIBRARIES := $(WEBKIT_SHARED_LIBRARIES)
include $(ANGLE_PATH)/Android.mk
# Redefine LOCAL_SRC_FILES with the correct prefix
LOCAL_SRC_FILES := $(addprefix Source/ThirdParty/ANGLE/src/compiler/,$(LOCAL_SRC_FILES))
# Append angle intermediate include paths to the WebKit include list.
LOCAL_C_INCLUDES := $(WEBKIT_C_INCLUDES) \
$(ANGLE_PATH)/include \
$(ANGLE_PATH)/src
LOCAL_CFLAGS += -Wno-error=non-virtual-dtor
# Build libangle
include $(BUILD_STATIC_LIBRARY)
# Now build the shared library using only the exported jni entry point. This
# will strip out any unused code from the entry point.
include $(CLEAR_VARS)
# Do not attempt prelink this library. Needed to keep master-gpl happy, no
# effect in master.
# TODO: remove this when master-gpl is updated.
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE := libwebcore
LOCAL_LDLIBS := $(WEBKIT_LDLIBS)
LOCAL_SHARED_LIBRARIES := $(WEBKIT_SHARED_LIBRARIES)
LOCAL_STATIC_LIBRARIES := libwebcore $(WEBKIT_STATIC_LIBRARIES)
LOCAL_STATIC_LIBRARIES += libangle
LOCAL_LDFLAGS := -fvisibility=hidden
LOCAL_CFLAGS := $(WEBKIT_CFLAGS)
LOCAL_CPPFLAGS := $(WEBKIT_CPPFLAGS)
LOCAL_C_INCLUDES := $(WEBKIT_C_INCLUDES)
LOCAL_PATH := $(BASE_PATH)
LOCAL_SRC_FILES := \
Source/WebKit/android/jni/WebCoreJniOnLoad.cpp \
Source/WebKit/chromium/src/android/WebDOMTextContentWalker.cpp \
Source/WebKit/chromium/src/android/WebHitTestInfo.cpp \
Source/WebKit/chromium/src/WebRange.cpp \
Source/WebKit/chromium/src/WebString.cpp
ifeq ($(ENABLE_AUTOFILL),true)
# AutoFill requires some cpp files from Chromium to link with
# libchromium_net. We cannot compile them into libchromium_net
# because they have cpp file extensions, not .cc.
LOCAL_SRC_FILES += \
Source/WebKit/android/WebCoreSupport/autofill/MainThreadProxy.cpp \
Source/WebKit/chromium/src/WebCString.cpp \
Source/WebKit/chromium/src/WebRegularExpression.cpp
endif
# Do this dependency by hand. The reason we have to do this is because the
# headers that this file pulls in are generated during the build of webcore.
# We make all of our object files depend on those files so that they are built
# before we try to compile the file.
LOCAL_ADDITIONAL_DEPENDENCIES := $(filter %.h, $(WEBKIT_GENERATED_SOURCES))
include $(BUILD_SHARED_LIBRARY)
# Build the wds client
include $(WEBKIT_PATH)/android/wds/client/Android.mk
# Build the webkit merge tool.
include $(BASE_PATH)/Tools/android/webkitmerge/Android.mk
Jump to Line
Something went wrong with that request. Please try again.