# 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-specific flags should go to webkitgtk_cppflags,
# 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

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

# Libraries and support components
noinst_HEADERS :=

noinst_PROGRAMS :=

lib_LIBRARIES :=

IDL_BINDINGS :=

# Files that will be distributed
EXTRA_DIST :=

#
# Global flags to CPP
global_cppflags :=

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

# 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

global_cxxflags := \
	$(SYMBOL_VISIBILITY_INLINES)

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

global_cxxflags += \
	-fno-rtti
endif

# Shared libraries
lib_LTLIBRARIES = \
	libWebKitGtk.la

# Convenience libraries
noinst_LTLIBRARIES = \
	libJavaScriptCore.la

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

# The variables above are already included below so no need to touch
# these variables unless you really have to
libJavaScriptCore_ladir = $(prefix)/include/WebKit/JavaScriptCore
libJavaScriptCore_la_HEADERS = $(javascriptcore_h_api)

libJavaScriptCore_la_SOURCES = \
	$(javascriptcore_built_sources) \
	$(javascriptcore_sources)

libJavaScriptCore_la_LDFLAGS = $(ICU_LIBS) -lpthread

libJavaScriptCore_la_CXXFLAGS = $(global_cxxflags) $(global_cflags) -fstrict-aliasing

libJavaScriptCore_la_CFLAGS = $(global_cflags) -fstrict-aliasing

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

#
# WebCore
webcore_cppflags :=
webcore_sources :=
webcore_headers :=
webcore_built_sources :=
webcore_built_nosources :=

# WebKitGtk
webkitgtk_h_api :=
webkitgtk_headers :=
webkitgtk_sources :=
webkitgtk_cppflags :=
webkitgtk_ldflags :=
webkitgtk_built_sources :=
webkitgtk_built_nosources :=
webkitgtk_cleanfiles :=

# No need to touch the following variables unless you have to. If you need to change the values
# for the following variables, use the "webkitgtk_" variables above
libWebKitGtk_ladir := $(prefix)/include/WebKit/webkit

libWebKitGtk_la_HEADERS = $(webkitgtk_h_api)

libWebKitGtk_la_SOURCES = \
	$(webcore_built_sources) \
	$(webcore_headers) \
	$(webcore_sources) \
	$(webkitgtk_built_sources) \
	$(webkitgtk_headers) \
	$(webkitgtk_sources)

libWebKitGtk_la_CXXFLAGS = \
	-fno-strict-aliasing \
	$(global_cxxflags) \
	$(global_cflags) \
	$(DEPENDENCIES_CFLAGS) \
	$(LIBCURL_CFLAGS) \
	$(SQLITE3_CFLAGS) \
	$(GSTREAMER_CFLAGS) \
	$(LIBXSLT_CFLAGS) \
	$(COVERAGE_CFLAGS)

libWebKitGtk_la_CFLAGS = \
	-fno-strict-aliasing \
	$(global_cflags) \
	$(DEPENDENCIES_CFLAGS) \
	$(LIBCURL_CFLAGS) \
	$(SQLITE3_CFLAGS) \
	$(GSTREAMER_CFLAGS) \
	$(LIBXSLT_CFLAGS) \
	$(COVERAGE_CFLAGS)

libWebKitGtk_la_CPPFLAGS = \
	$(global_cppflags) \
	$(webcore_cppflags) \
	$(webkitgtk_cppflags) \
	$(ICU_CPPFLAGS)

libWebKitGtk_la_LIBADD = libJavaScriptCore.la

libWebKitGtk_la_LDFLAGS = \
	$(webkitgtk_ldflags) \
	$(DEPENDENCIES_LIBS) \
	$(LIBCURL_LIBS) \
	$(ICU_LIBS) \
	$(SQLITE3_LIBS) \
	$(GSTREAMER_LIBS) \
	$(LIBXSLT_LIBS) \
	$(COVERAGE_LDFLAGS) \
	-lpthread \
	-ljpeg \
	-version-info @LIBWEBKITGTK_VERSION@

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

if !ENABLE_FAST_MALLOC
global_cppflags += \
	-DUSE_SYSTEM_MALLOC
endif

if TARGET_X11
global_cppflags += -DXP_UNIX
endif

if !ENABLE_DEBUG
global_cppflags += -DNDEBUG
else
webkitgtk_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
webkitgtk_ldflags += -lgstinterfaces-0.10 -lgstvideo-0.10
endif

#
# WEBKIT GTK+
webkitgtk_cppflags += \
-I$(top_builddir)/WebKit/gtk/webkit \
-DBUILDING_CAIRO__=1 \
-DBUILD_WEBKIT

webkitgtk_h_api += \
	WebKit/gtk/webkit/webkit.h \
	WebKit/gtk/webkit/webkitdefines.h \
	WebKit/gtk/webkit/webkitnetworkrequest.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 += \
	WebKit/gtk/webkit/webkit-marshal.h \
	WebKit/gtk/webkit/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/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_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 = $(CURDIR)/WebKit/gtk/webkit/webkit-marshal
WEBKIT_MARSHAL_LIST = $(srcdir)/WebKit/gtk/webkit/webkit-marshal.list

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

WebKit/gtk/webkit/webkit-marshal.cpp: stamp-webkit-marshal.cpp
	@true

WebKit/gtk/webkit/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) \
	$(top_builddir)/Programs/DumpRenderTree \
	$(top_builddir)/Programs/testkjs \
	$(GENSOURCES)

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