# Top-level Makefile rule for automake
#
# Variable conventions:
#
# _h_api            = API headers that will be installed and included in the distribution
# _cppflags         = flags that will be passed to the C/CXX Preprocessor
# _sources          = sources that will be compiled and included in the distribution
# _headers          = header files that will be part of the distribution
# _built_sources    = files that will be autogenerated by the build system and
#                     will be part of the _SOURCES primary
# _built_nosources  = files that are autogenerated but are not part of the
#                     _SOURCES primary
# _cleanfiles       = files that will be removed by the clean target
#
# Sources, headers, flags, etc... should be added to the respective variables
# with the above suffix, e.g, webcore-specific sources should go to
# webcore_sources, gtk port API and WebCoreSupport parts to webkitgtk_sources,
# etc... The only exceptions are the global variables. See Global Variables
# below.
#
# Global Variables
#
# global_cppflags   = CPPFLAGS that apply to JSC, WebCore, and to any
#                     specific port
# global_cflags     = CFLAGS that apply to JSC, WebCore, and to
#                     any specific port
# global_cxxflags   = CXXFLAGS that apply to JSC, WebCore, and to any
#                     specific port

srcdir = @srcdir@
VPATH = @srcdir@

# Directory for autogenerated sources
GENSOURCES := $(top_builddir)/DerivedSources
GENPROGRAMS := $(top_builddir)/Programs

# Script for creating hash tables
CREATE_HASH_TABLE = $(srcdir)/JavaScriptCore/kjs/create_hash_table

# Libraries and support components
noinst_PROGRAMS :=

lib_LIBRARIES :=

IDL_BINDINGS :=

# Files that will be distributed
EXTRA_DIST :=

# Global flags to CPP
global_cppflags :=

global_cppflags += \
	-DWTF_USE_ICU_UNICODE=1

# Default compiler flags
global_cflags := \
	-Wall -W -Wcast-align -Wchar-subscripts -Wreturn-type \
	-Wformat -Wformat-security -Wno-format-y2k -Wundef \
	-Wmissing-format-attribute -Wpointer-arith -Wwrite-strings \
	-Wno-unused-parameter -Wno-parentheses

global_cxxflags := \
	$(SYMBOL_VISIBILITY_INLINES)

if !ENABLE_DEBUG
global_cflags += \
	-fno-exceptions \
	$(SYMBOL_VISIBILITY)

global_cxxflags += \
	-fno-rtti
endif

# -no-undefined required for building DLLs on Windows
# It breaks the build on other platforms, so we use it conditionally
if OS_WIN32
no_undefined = -no-undefined
endif

# Shared libraries
lib_LTLIBRARIES = \
	libwebkit-1.0.la

# Convenience libraries
noinst_LTLIBRARIES = \
	libJavaScriptCore.la \
	libWebCore.la

#
# JavaScriptCore
javascriptcore_h_api :=
javascriptcore_cppflags:=
javascriptcore_sources :=
javascriptcore_built_sources :=
javascriptcore_built_nosources :=

javascriptcore_cppflags += \
	-I$(srcdir)/JavaScriptCore \
	-I$(srcdir)/JavaScriptCore/ForwardingHeaders \
	-I$(srcdir)/JavaScriptCore/wtf \
	-I$(srcdir)/JavaScriptCore/kjs \
	-I$(top_builddir)/DerivedSources

# The variables above are already included below so no need to touch
# these variables unless you really have to
nodist_EXTRA_libJavaScriptCore_la_SOURCES = \
	$(javascriptcore_built_nosources)

nodist_libJavaScriptCore_la_SOURCES = \
	$(javascriptcore_built_sources)

libJavaScriptCore_ladir = $(prefix)/include/webkit-1.0/JavaScriptCore
libJavaScriptCore_la_HEADERS = $(javascriptcore_h_api)

libJavaScriptCore_la_SOURCES = \
	$(javascriptcore_sources)

libJavaScriptCore_la_LIBADD = \
	$(UNICODE_LIBS) \
	$(GLOBALDEPS_LIBS) \
	-lpthread

libJavaScriptCore_la_CXXFLAGS = \
	-fstrict-aliasing \
	-O3 \
	$(global_cxxflags) \
	$(global_cflags) \
	$(GLOBALDEPS_CFLAGS) \
	$(UNICODE_CFLAGS)

libJavaScriptCore_la_CFLAGS = \
	-fstrict-aliasing \
	-O3 \
	$(global_cflags) \
	$(GLOBALDEPS_CFLAGS) \
	$(UNICODE_CFLAGS)

libJavaScriptCore_la_CPPFLAGS = \
	$(global_cppflags) \
	$(javascriptcore_cppflags)

#
# WebCore
webcore_cppflags :=
webcore_sources :=
webcore_headers :=
webcore_libadd :=
webcore_built_sources :=
webcore_built_nosources :=
webcoregtk_cppflags :=
webcoregtk_sources :=
webcoregtk_headers :=

nodist_libWebCore_la_SOURCES = \
	$(webcore_built_sources)

libWebCore_la_SOURCES = \
	$(webcore_headers) \
	$(webcore_sources) \
	$(webcoregtk_headers) \
	$(webcoregtk_sources)

libWebCore_la_CXXFLAGS = \
	-fno-strict-aliasing \
	-O2 \
	$(global_cxxflags) \
	$(global_cflags) \
	$(GLOBALDEPS_CFLAGS) \
	$(UNICODE_CFLAGS) \
	$(WEBKITDEPS_CFLAGS) \
	$(LIBCURL_CFLAGS) \
	$(LIBSOUP_CFLAGS) \
	$(FREETYPE_CFLAGS) \
	$(SQLITE3_CFLAGS) \
	$(GSTREAMER_CFLAGS) \
	$(LIBXSLT_CFLAGS) \
	$(COVERAGE_CFLAGS) \
	$(HILDON_CFLAGS)

libWebCore_la_CFLAGS = \
	-fno-strict-aliasing \
	-O2 \
	$(global_cflags) \
	$(GLOBALDEPS_CFLAGS) \
	$(UNICODE_CFLAGS) \
	$(WEBKITDEPS_CFLAGS) \
	$(LIBCURL_CFLAGS) \
	$(LIBSOUP_CFLAGS) \
	$(FREETYPE_CFLAGS) \
	$(SQLITE3_CFLAGS) \
	$(GSTREAMER_CFLAGS) \
	$(LIBXSLT_CFLAGS) \
	$(COVERAGE_CFLAGS) \
	$(HILDON_CFLAGS)

libWebCore_la_CPPFLAGS = \
	$(global_cppflags) \
	$(webcore_cppflags) \
	$(javascriptcore_cppflags) \
	$(webcoregtk_cppflags) \
	$(HILDON_CPPFLAGS)

libWebCore_la_LIBADD = \
	libJavaScriptCore.la \
	$(webcore_libadd) \
	$(GLOBALDEPS_LIBS) \
	$(WEBKITDEPS_LIBS) \
	$(LIBCURL_LIBS) \
	$(LIBSOUP_LIBS) \
	$(FREETYPE_LIBS) \
	$(UNICODE_LIBS) \
	$(SQLITE3_LIBS) \
	$(GSTREAMER_LIBS) \
	$(LIBXSLT_LIBS) \
	$(HILDON_LIBS) \
	-lpthread \
	-ljpeg

# WebKit
webkitgtk_h_api :=
webkitgtk_headers :=
webkitgtk_sources :=
webkitgtk_cppflags :=
webkitgtk_built_sources :=
webkitgtk_built_nosources :=
webkitgtk_cleanfiles :=

nodist_libwebkit_1_0_la_SOURCES = \
	$(webkitgtk_built_sources)

libwebkit_1_0_ladir = $(prefix)/include/webkit-1.0/webkit
libwebkit_1_0_la_HEADERS = $(webkitgtk_h_api)

libwebkit_1_0_la_SOURCES = \
	$(webkitgtk_headers) \
	$(webkitgtk_sources)

libwebkit_1_0_la_CXXFLAGS = \
	$(libWebCore_la_CXXFLAGS)

libwebkit_1_0_la_CFLAGS = \
	$(libWebCore_la_CFLAGS)

libwebkit_1_0_la_CPPFLAGS = \
	$(libWebCore_la_CPPFLAGS) \
	$(webkitgtk_cppflags)

libwebkit_1_0_la_LDFLAGS = \
	$(COVERAGE_LDFLAGS) \
	-version-info @LIBWEBKITGTK_VERSION@ \
	$(no_undefined)

libwebkit_1_0_la_LIBADD = \
	libWebCore.la

#
# Extra checks and flags
global_cppflags += \
	-DBUILDING_CAIRO__=1 \
	-DBUILDING_GTK__=1 \
	-DWTF_CHANGES

if !ENABLE_FAST_MALLOC
global_cppflags += \
	-DUSE_SYSTEM_MALLOC
endif

if TARGET_X11
global_cppflags += -DXP_UNIX
webcore_libadd += -lXt
endif

if !ENABLE_DEBUG
global_cppflags += -DNDEBUG
else
webcoregtk_cppflags += \
	-DG_DISABLE_DEPRECATED \
	-DGDK_PIXBUF_DISABLE_DEPRECATED \
	-DGDK_DISABLE_DEPRECATED \
	-DGTK_DISABLE_DEPRECATED \
	-DPANGO_DISABLE_DEPRECATED

# Might be useful in the future
#	-DGDK_MULTIHEAD_SAFE \
#	-DGTK_MULTIHEAD_SAFE
endif

if !ENABLE_DATABASE
global_cppflags += -DENABLE_DATABASE=0
endif

if !ENABLE_ICONDATABASE
global_cppflags += -DENABLE_ICONDATABASE=0
endif

if ENABLE_COVERAGE
global_cppflags += \
	-DGCC_GENERATE_TEST_COVERAGE_FILES \
	-DGCC_INSTRUMENT_PROGRAM_FLOW_ARCS
endif

if ENABLE_VIDEO
webcore_libadd += -lgstinterfaces-0.10 -lgstvideo-0.10
endif

webkitgtk_h_api += \
	WebKit/gtk/webkit/webkit.h \
	WebKit/gtk/webkit/webkitdefines.h \
	WebKit/gtk/webkit/webkitnetworkrequest.h \
	WebKit/gtk/webkit/webkitversion.h \
	WebKit/gtk/webkit/webkitwebbackforwardlist.h \
	WebKit/gtk/webkit/webkitwebframe.h \
	WebKit/gtk/webkit/webkitwebhistoryitem.h \
	WebKit/gtk/webkit/webkitwebsettings.h \
	WebKit/gtk/webkit/webkitwebview.h

webkitgtk_built_sources += \
	DerivedSources/webkit-marshal.h \
	DerivedSources/webkit-marshal.cpp

webkitgtk_headers += \
	WebKit/gtk/webkit/webkitprivate.h \
	WebKit/gtk/WebCoreSupport/ChromeClientGtk.h \
	WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h \
	WebKit/gtk/WebCoreSupport/DragClientGtk.h \
	WebKit/gtk/WebCoreSupport/EditorClientGtk.h \
	WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h \
	WebKit/gtk/WebCoreSupport/InspectorClientGtk.h \
	WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h

webkitgtk_sources += \
	WebKit/gtk/webkit/webkitnetworkrequest.cpp \
	WebKit/gtk/webkit/webkitprivate.cpp \
	WebKit/gtk/webkit/webkitversion.cpp \
	WebKit/gtk/webkit/webkitwebbackforwardlist.cpp \
	WebKit/gtk/webkit/webkitwebframe.cpp \
	WebKit/gtk/webkit/webkitwebhistoryitem.cpp \
	WebKit/gtk/webkit/webkitwebsettings.cpp \
	WebKit/gtk/webkit/webkitwebview.cpp \
	WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp \
	WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp \
	WebKit/gtk/WebCoreSupport/DragClientGtk.cpp \
	WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp \
	WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp \
	WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp \
	WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp

webkitgtk_cppflags += \
	-DBUILDING_WEBKIT \
	-I$(srcdir)/WebKit/gtk \
	-I$(srcdir)/WebKit/gtk/WebCoreSupport \
	-I$(srcdir)/WebKit/gtk/webkit \
	-I$(top_builddir)/WebKit/gtk/webkit

webkitgtk_cleanfiles += \
	$(top_builddir)/Programs/GtkLauncher \
	$(top_builddir)/WebKit/gtk/webkit-1.0.pc

pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = WebKit/gtk/webkit-1.0.pc

WEBKIT_MARSHAL = $(GENSOURCES)/webkit-marshal
WEBKIT_MARSHAL_LIST = $(srcdir)/WebKit/gtk/webkit/webkit-marshal.list

stamp_files := \
	stamp-webkit-marshal.cpp \
	stamp-webkit-marshal.h

DerivedSources/webkit-marshal.cpp: stamp-webkit-marshal.cpp
	@true

DerivedSources/webkit-marshal.h: stamp-webkit-marshal.h
	@true

stamp-webkit-marshal.cpp: $(WEBKIT_MARSHAL_LIST)
	echo "extern \"C\" {" > $(WEBKIT_MARSHAL).cpp && \
	$(GLIB_GENMARSHAL) --prefix=webkit_marshal $(WEBKIT_MARSHAL_LIST) --body >> $(WEBKIT_MARSHAL).cpp && echo '}' >> $(WEBKIT_MARSHAL).cpp && \
	echo timestamp > $(@F)

stamp-webkit-marshal.h: $(WEBKIT_MARSHAL_LIST)
	$(GLIB_GENMARSHAL) --prefix=webkit_marshal $(WEBKIT_MARSHAL_LIST) --header > $(WEBKIT_MARSHAL).h && \
	echo timestamp > $(@F)

# END WEBKIT GTK+

# Files that will be cleaned
MAINTAINERCLEANFILES := $(stamp_files) $(BUILT_SOURCES)
DISTCLEANFILES := $(stamp_files) $(BUILT_SOURCES)
CLEANFILES := $(stamp_files) $(BUILT_SOURCES)

# Include module makefiles
include JavaScriptCore/GNUmakefile.am
include WebCore/GNUmakefile.am
include WebKitTools/GNUmakefile.am

# Autogenerated sources
BUILT_SOURCES = \
	$(javascriptcore_built_sources) \
	$(javascriptcore_built_nosources) \
	$(webcore_built_sources) \
	$(webcore_built_nosources) \
	$(webkitgtk_built_sources) \
	$(webkitgtk_built_nosources)

# Project-wide clean rules
CLEANFILES += \
	$(webkitgtk_cleanfiles)

MAINTAINERCLEANFILES += \
	$(srcdir)/aconfig.h.in \
	configure \
	config.* \
	GNUmakefile.in \
	INSTALL \
	README

# remove built sources and program directories
clean-local:
	-rm -rf $(GENSOURCES) $(GENPROGRAMS)
