diff --git a/.gitignore b/.gitignore index dc0d280d16..5bf870d301 100644 --- a/.gitignore +++ b/.gitignore @@ -128,8 +128,18 @@ /libports/src/lib/ncurses/make_keys /libports/src/lib/ncurses/names.c /libports/src/lib/ncurses/unctrl.c +/libports/src/lib/qt5/qtwebkit/Source/JavaScriptCore +/libports/src/lib/qt5/qtwebkit/Source/WebCore/generated /libports/tool/mesa/glsl /libports/tool/mupdf +/libports/tool/qt5/bootstrap +/libports/tool/qt5/misc/var +/libports/tool/qt5/moc +/libports/tool/qt5/qmake/*.d +/libports/tool/qt5/qmake/*.o +/libports/tool/qt5/qmake/qmake +/libports/tool/qt5/rcc +/libports/tool/qt5/uic /ports-foc/contrib /ports-okl4/contrib /ports-okl4/download diff --git a/libports/include/qt5/genode/thread_qt.h b/libports/include/qt5/genode/thread_qt.h new file mode 100644 index 0000000000..e4dd56ad1f --- /dev/null +++ b/libports/include/qt5/genode/thread_qt.h @@ -0,0 +1,116 @@ +/* + * \brief Thread with configurable stack size + * \author Christian Prochaska + * \date 2008-06-11 + */ + +/* + * Copyright (C) 2008-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef _INCLUDE__BASE__THREAD_QT_H_ +#define _INCLUDE__BASE__THREAD_QT_H_ + +#include +#include +#include + +enum { DEFAULT_STACK_SIZE = 4096*100 }; + +namespace Genode { + + struct Thread_entry + { + virtual void entry() = 0; + }; + + + class Thread_qt : public Thread_entry + { + private: + + class Genode_thread : Thread_base + { + private: + + Thread_entry *_thread_entry; + + /** + * Thread_base interface + */ + void entry() { _thread_entry->entry(); } + + public: + + Genode_thread(const char *name, + size_t stack_size, + Thread_entry *thread_entry) + : + Thread_base(name, stack_size), + _thread_entry(thread_entry) + { + /* start Genode thread */ + start(); + } + }; + + protected: + + const char *_name; + unsigned int _stack_size; + Genode_thread *_thread; + + public: + + /** + * Constructor + * + * \param name Thread name (for debugging) + */ + explicit Thread_qt(const char *name = "Qt ") + : + _name(name), + _stack_size(DEFAULT_STACK_SIZE), + _thread(0) { } + + ~Thread_qt() + { + if (_thread) + destroy(env()->heap(), _thread); + } + + /** + * Set the thread's stack size - don't call when the thread is running! + */ + bool set_stack_size(unsigned int stack_size) + { + /* error, if thread is already running */ + if (_thread) + return false; + + _stack_size = stack_size; + return true; + } + + /** + * Start execution of the thread + */ + void start() + { + /* prevent double calls of 'start' */ + if (_thread) return; + + _thread = new (env()->heap()) Genode_thread(_name, _stack_size, this); + } + + static Thread_base *myself() + { + return Thread_base::myself(); + } + }; +} + +#endif /* _INCLUDE__BASE__THREAD_QT_H_ */ diff --git a/libports/include/qt5/qnitpickerviewwidget/qnitpickerviewwidget.h b/libports/include/qt5/qnitpickerviewwidget/qnitpickerviewwidget.h new file mode 100644 index 0000000000..7d504db359 --- /dev/null +++ b/libports/include/qt5/qnitpickerviewwidget/qnitpickerviewwidget.h @@ -0,0 +1,57 @@ +/* + * \brief A Qt Widget that shows a nitpicker view + * \author Christian Prochaska + * \date 2010-08-26 + */ + +/* + * Copyright (C) 2010-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef QNITPICKERVIEWWIDGET_H +#define QNITPICKERVIEWWIDGET_H + +#include +#if 0 +#include +#endif + +#include +#include + +class QNitpickerViewWidget : public QWidget +{ + Q_OBJECT + +private: + QHash _scrollbars; + +private slots: +#if 0 + void windowEvent(QWSWindow *window, + QWSServer::WindowEvent eventType); +#endif + void valueChanged(); + void destroyed(QObject *obj = 0); + +protected: + Nitpicker::View_client *vc; + int orig_w; + int orig_h; + int orig_buf_x; + int orig_buf_y; + + virtual void showEvent(QShowEvent *event); + virtual void hideEvent(QHideEvent *event); + virtual void paintEvent(QPaintEvent *event); + +public: + QNitpickerViewWidget(QWidget *parent =0); + ~QNitpickerViewWidget(); + void setNitpickerView(Nitpicker::View_capability view, int buf_x, int buf_y, int w, int h); +}; + +#endif // QNITPICKERVIEWWIDGET_H diff --git a/libports/include/qt5/qpluginwidget/qpluginwidget.h b/libports/include/qt5/qpluginwidget/qpluginwidget.h new file mode 100644 index 0000000000..54ea29addc --- /dev/null +++ b/libports/include/qt5/qpluginwidget/qpluginwidget.h @@ -0,0 +1,107 @@ +/* + * \brief A Qt Widget that can load a plugin application and show its Nitpicker view + * \author Christian Prochaska + * \date 2010-08-26 + */ + +/* + * Copyright (C) 2010-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef QPLUGINWIDGET_H +#define QPLUGINWIDGET_H + +#include +#include + +#include + +#include + + +enum Plugin_loading_state +{ + LOADING, + LOADED, + NETWORK_ERROR, + INFLATE_ERROR, + QUOTA_EXCEEDED_ERROR, + ROM_CONNECTION_FAILED_EXCEPTION, + TIMEOUT_EXCEPTION +}; + +class QPluginWidget; + +/* separate class, because meta object features are not supported in nested classes */ +class PluginStarter : public QThread +{ + Q_OBJECT + + private: + QUrl _plugin_url; + QByteArray _args; + int _max_width; + int _max_height; + + Loader::Connection *_pc; + enum Plugin_loading_state _plugin_loading_state; + QString _plugin_loading_error_string; + + QNetworkAccessManager *_qnam; + QNetworkReply *_reply; + + void _start_plugin(QString &file_name, QByteArray const &file_buf); + + protected slots: + void networkReplyFinished(); + + public: + PluginStarter(QUrl plugin_url, QString &args, + int max_width, int max_height); + + void run(); + enum Plugin_loading_state plugin_loading_state() { return _plugin_loading_state; } + QString &plugin_loading_error_string() { return _plugin_loading_error_string; } + Nitpicker::View_capability plugin_view(int *w, int *h, int *buf_x, int *buf_y); + + signals: + void finished(); +}; + + +class QPluginWidget : public QNitpickerViewWidget +{ + Q_OBJECT + + private: + + enum Plugin_loading_state _plugin_loading_state; + QString _plugin_loading_error_string; + + PluginStarter *_plugin_starter; + + int _max_width; + int _max_height; + + static QPluginWidget *_last; + + public: + enum { RAM_QUOTA = 5*1024*1024 }; + + void cleanup(); + + protected: + virtual void paintEvent(QPaintEvent *event); + + protected slots: + void pluginStartFinished(); + + public: + QPluginWidget(QWidget *parent, QUrl plugin_url, QString &args, int max_width = -1, int max_height = -1); + ~QPluginWidget(); +}; + +#endif // QPLUGINWIDGET_H diff --git a/libports/include/qt5/qtbase/QtCore b/libports/include/qt5/qtbase/QtCore new file mode 120000 index 0000000000..3902627241 --- /dev/null +++ b/libports/include/qt5/qtbase/QtCore @@ -0,0 +1 @@ +../../../src/lib/qt5/qtbase/src/corelib/global \ No newline at end of file diff --git a/libports/lib/import/import-qt5.inc b/libports/lib/import/import-qt5.inc new file mode 100644 index 0000000000..532bddcf65 --- /dev/null +++ b/libports/lib/import/import-qt5.inc @@ -0,0 +1,129 @@ +# prevent import file to be included twice, for example via import-qt5_gui.mk +# and import-qt5_core.mk + +ifeq ($(QT5_IMPORTED),) +QT5_IMPORTED = true + +# identify the qt5 repository by searching for a file that is unique for qt5 +QT5_REP_DIR := $(call select_from_repositories,lib/import/import-qt5.inc) +QT5_REP_DIR := $(realpath $(dir $(QT5_REP_DIR))../..) + +include $(QT5_REP_DIR)/lib/mk/qt5_version.inc + +QT5_INC_DIR := $(QT5_REP_DIR)/src/lib/qt5/qtbase/mkspecs/genode-g++ \ + $(QT5_REP_DIR)/src/lib/qt5/qtbase/src/corelib/global \ + $(QT5_REP_DIR)/include/qt5 \ + $(QT5_REP_DIR)/contrib/$(QT5)/qtbase/include \ + +INC_DIR += $(QT5_INC_DIR) + +# extracted from qt.prf +QT_DEFINES += -DQT_STATICPLUGIN + +QT_DEFINES += -D__GENODE__ + +# +# Prevent inclusion of non-existent 'features.h' from 'bits/os_defines.h' +# header that comes with the Codesourcery ARM tool chain. +# +QT_DEFINES += -D_GLIBCXX_OS_DEFINES + +# +# When using the Codesourcery tool chain for ARM, the compiler provides a +# built-in definition for '__linux__', which is obviously wrong when using the +# compiler for Genode. Unfortunately, Webkit tests for this definition in +# 'JavaScriptCore/wtf/Platform.h'. To prevent webkit from drawing wrong +# conclusions, we explicitly undefine '__linux__'. +# +QT_DEFINES += -U__linux__ + +CC_OPT += $(QT_DEFINES) + +SOURCES_FILTERED = $(filter-out $(SOURCES_FILTER_OUT), $(SOURCES)) +HEADERS_FILTERED = $(filter-out $(HEADERS_FILTER_OUT), $(HEADERS)) + +# add sources defined in qmake project files +SRC_CC += $(SOURCES_FILTERED) + +# handle moc-headers, resources and ui descriptions +$(SRC_CC:.cpp=.o): $(addprefix ui_,$(FORMS:.ui=.h)) + +SRC_CC_QT_GENERATED = $(addprefix moc_,$(HEADERS_FILTERED:.h=.cpp)) \ + $(addprefix qrc_,$(RESOURCES:.qrc=.cpp)) + +.SECONDARY: $(SRC_CC_QT_GENERATED) +SRC_CC += $(SRC_CC_QT_GENERATED) + +# +# Locations of moc, rcc, and uic binaries +# +# These binaries are created by calling 'make' in the 'tool' directory, which +# should have happened before starting to build QT5 applications. +# +MOC = $(QT5_REP_DIR)/tool/qt5/moc/moc +RCC = $(QT5_REP_DIR)/tool/qt5/rcc/rcc +UIC = $(QT5_REP_DIR)/tool/qt5/uic/uic + +$(MOC) $(RCC) $(UIC): + @echo + @echo "Attempting to build QT5 application without having built the QT5 tools." + @echo "Please execute 'make prepare PKG=qt5' in the root of the 'libports' repository." + @echo + @false + +# moc rules +moc_%.cpp: %.h $(MOC) + $(MSG_CONVERT)$@ + $(VERBOSE) $(MOC) $(QT_DEFINES) $(addprefix -I,$(QT5_INC_DIR)) $< -o $@ + +%.moc: %.cpp $(MOC) + $(MSG_CONVERT)$@ + $(VERBOSE) $(MOC) $(QT_DEFINES) $(addprefix -I,$(QT5_INC_DIR)) $< -o $@ + +# rcc rule +qrc_%.cpp: %.qrc $(RCC) + $(MSG_CONVERT)$@ + $(VERBOSE) $(RCC) -name $(basename $(notdir $<)) $< -o $@ + +# uic rule +ui_%.h: %.ui $(UIC) + $(MSG_CONVERT)$@ + $(VERBOSE) $(UIC) $< -o $@ + +# add include dirs for QT5-specific genode addons +INC_DIR += $(QT5_REP_DIR)/include/qt5/genode + +# add C++ include dirs and libs +# +# We cannot just extend the 'LIBS' variable here because 'import-*.mk' are +# included (in 'base/mk/lib.mk') by iterating through the elements of the +# 'LIBS' variable. Hence, we also need to manually import the stdlib snippet. +# +LIBS += stdcxx +include $(call select_from_repositories,lib/import/import-stdcxx.mk) + +# custom main() thread stack size support via main() wrapper +ifeq ($(findstring -DQT_MAIN_STACK_SIZE, $(CC_CXX_OPT)), -DQT_MAIN_STACK_SIZE) +CC_CXX_OPT += -Dmain=qt_main +SRC_CC += qt_main.cc +vpath qt_main.cc $(QT5_REP_DIR)/src/lib/qt5 +endif + +# set QT_ARCH definition according to the SPECS variable +ifneq ($(filter x86_32,$(SPECS)),) + QT_DEFINES += -DQT_ARCH_I386 +endif +ifneq ($(filter x86_64,$(SPECS)),) + QT_DEFINES += -DQT_ARCH_X86_64 +endif +ifneq ($(filter arm,$(SPECS)),) + QT_DEFINES += -DQT_ARCH_ARMV6 +endif + +# remove generated files in clean rules +clean cleanall: clean_rule +clean_rule: + $(VERBOSE)$(RM) -f $(SRC_CC_QT_GENERATED) + $(VERBOSE)$(RM) -f $(SOURCES_FILTERED:.cpp=.moc) + $(VERBOSE)$(RM) -f $(addprefix ui_,$(FORMS:.ui=.h)) +endif diff --git a/libports/lib/import/import-qt5_core.mk b/libports/lib/import/import-qt5_core.mk new file mode 100644 index 0000000000..0a70bb229c --- /dev/null +++ b/libports/lib/import/import-qt5_core.mk @@ -0,0 +1,6 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) + +QT5_INC_DIR += $(QT5_REP_DIR)/include/qt5/qtbase \ + $(QT5_REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore \ diff --git a/libports/lib/import/import-qt5_gui.mk b/libports/lib/import/import-qt5_gui.mk new file mode 100644 index 0000000000..59fe1f6cad --- /dev/null +++ b/libports/lib/import/import-qt5_gui.mk @@ -0,0 +1,5 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) + +QT5_INC_DIR += $(QT5_REP_DIR)/contrib/$(QT5)/qtbase/include/QtGui \ diff --git a/libports/lib/import/import-qt5_jscore.mk b/libports/lib/import/import-qt5_jscore.mk new file mode 100644 index 0000000000..5602c0bec7 --- /dev/null +++ b/libports/lib/import/import-qt5_jscore.mk @@ -0,0 +1,3 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) diff --git a/libports/lib/import/import-qt5_network.mk b/libports/lib/import/import-qt5_network.mk new file mode 100644 index 0000000000..14cd94b164 --- /dev/null +++ b/libports/lib/import/import-qt5_network.mk @@ -0,0 +1,5 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) + +QT5_INC_DIR += $(QT5_REP_DIR)/contrib/$(QT5)/qtbase/include/QtNetwork \ diff --git a/libports/lib/import/import-qt5_printsupport.mk b/libports/lib/import/import-qt5_printsupport.mk new file mode 100644 index 0000000000..c66a62fdb0 --- /dev/null +++ b/libports/lib/import/import-qt5_printsupport.mk @@ -0,0 +1,5 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) + +QT5_INC_DIR += $(QT5_REP_DIR)/contrib/$(QT5)/qtbase/include/QtPrintSupport \ diff --git a/libports/lib/import/import-qt5_qpa_nitpicker.mk b/libports/lib/import/import-qt5_qpa_nitpicker.mk new file mode 100644 index 0000000000..5602c0bec7 --- /dev/null +++ b/libports/lib/import/import-qt5_qpa_nitpicker.mk @@ -0,0 +1,3 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) diff --git a/libports/lib/import/import-qt5_script.mk b/libports/lib/import/import-qt5_script.mk new file mode 100644 index 0000000000..451d7f5e18 --- /dev/null +++ b/libports/lib/import/import-qt5_script.mk @@ -0,0 +1,6 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) + +QT5_INC_DIR += $(QT5_REP_DIR)/contrib/$(QT5)/qtscript/include \ + $(QT5_REP_DIR)/contrib/$(QT5)/qtscript/include/QtScript \ diff --git a/libports/lib/import/import-qt5_scriptclassic.mk b/libports/lib/import/import-qt5_scriptclassic.mk new file mode 100644 index 0000000000..c168d6ebc9 --- /dev/null +++ b/libports/lib/import/import-qt5_scriptclassic.mk @@ -0,0 +1,7 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) + +QT5_INC_DIR += $(QT5_REP_DIR)/contrib/qtscriptclassic-1.0_1-opensource/include \ + $(QT5_REP_DIR)/contrib/qtscriptclassic-1.0_1-opensource/include/QtScript \ + $(QT5_REP_DIR)/contrib/qtscriptclassic-1.0_1-opensource/src \ diff --git a/libports/lib/import/import-qt5_sql.mk b/libports/lib/import/import-qt5_sql.mk new file mode 100644 index 0000000000..c583f0034f --- /dev/null +++ b/libports/lib/import/import-qt5_sql.mk @@ -0,0 +1,5 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) + +QT5_INC_DIR += $(QT5_REP_DIR)/contrib/$(QT5)/qtbase/include/QtSql \ diff --git a/libports/lib/import/import-qt5_ui_tools.mk b/libports/lib/import/import-qt5_ui_tools.mk new file mode 100644 index 0000000000..2ea5c55a70 --- /dev/null +++ b/libports/lib/import/import-qt5_ui_tools.mk @@ -0,0 +1,5 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) + +QT5_INC_DIR += $(QT5_REP_DIR)/contrib/$(QT5)/qttools/include/QtUiTools \ diff --git a/libports/lib/import/import-qt5_webcore.mk b/libports/lib/import/import-qt5_webcore.mk new file mode 100644 index 0000000000..5602c0bec7 --- /dev/null +++ b/libports/lib/import/import-qt5_webcore.mk @@ -0,0 +1,3 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) diff --git a/libports/lib/import/import-qt5_webkit.mk b/libports/lib/import/import-qt5_webkit.mk new file mode 100644 index 0000000000..11b03f7aca --- /dev/null +++ b/libports/lib/import/import-qt5_webkit.mk @@ -0,0 +1,8 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) + +QT5_INC_DIR += $(QT5_REP_DIR)/include/qt5/qtwebkit \ + $(QT5_REP_DIR)/contrib/$(QT5)/qtwebkit/include \ + $(QT5_REP_DIR)/include/qt5/qtwebkit/QtWebKit \ + $(QT5_REP_DIR)/contrib/$(QT5)/qtwebkit/include/QtWebKit \ diff --git a/libports/lib/import/import-qt5_webkitwidgets.mk b/libports/lib/import/import-qt5_webkitwidgets.mk new file mode 100644 index 0000000000..4af40f1560 --- /dev/null +++ b/libports/lib/import/import-qt5_webkitwidgets.mk @@ -0,0 +1,5 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) + +QT5_INC_DIR += $(QT5_REP_DIR)/contrib/$(QT5)/qtwebkit/include/QtWebKitWidgets \ diff --git a/libports/lib/import/import-qt5_widgets.mk b/libports/lib/import/import-qt5_widgets.mk new file mode 100644 index 0000000000..883b4d8f27 --- /dev/null +++ b/libports/lib/import/import-qt5_widgets.mk @@ -0,0 +1,5 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) + +QT5_INC_DIR += $(QT5_REP_DIR)/contrib/$(QT5)/qtbase/include/QtWidgets \ diff --git a/libports/lib/import/import-qt5_wtf.mk b/libports/lib/import/import-qt5_wtf.mk new file mode 100644 index 0000000000..5602c0bec7 --- /dev/null +++ b/libports/lib/import/import-qt5_wtf.mk @@ -0,0 +1,3 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) diff --git a/libports/lib/import/import-qt5_xml.mk b/libports/lib/import/import-qt5_xml.mk new file mode 100644 index 0000000000..06895beab2 --- /dev/null +++ b/libports/lib/import/import-qt5_xml.mk @@ -0,0 +1,5 @@ +IMPORT_QT5_INC=$(call select_from_repositories,lib/import/import-qt5.inc) + +include $(IMPORT_QT5_INC) + +QT5_INC_DIR += $(QT5_REP_DIR)/contrib/$(QT5)/qtbase/include/QtXml diff --git a/libports/lib/mk/qt5.inc b/libports/lib/mk/qt5.inc new file mode 100644 index 0000000000..a0cc2fd78e --- /dev/null +++ b/libports/lib/mk/qt5.inc @@ -0,0 +1,21 @@ +QT_SOURCES_FILTER_OUT += $(COMPILER_MOC_HEADER_MAKE_ALL_FILES_FILTER_OUT) +QT_SOURCES_FILTERED = $(filter-out $(QT_SOURCES_FILTER_OUT), $(QT_SOURCES)) + +SRC_CC += $(filter %.cpp, $(QT_SOURCES_FILTERED)) +SRC_CC += $(filter %.cc, $(QT_SOURCES_FILTERED)) +SRC_C += $(filter %.c, $(QT_SOURCES_FILTERED)) + +COMPILER_MOC_HEADER_MAKE_ALL_FILES_FILTERED = $(filter-out $(COMPILER_MOC_HEADER_MAKE_ALL_FILES_FILTER_OUT), $(COMPILER_MOC_HEADER_MAKE_ALL_FILES)) +$(SRC_CC:.cpp=.o): $(COMPILER_MOC_HEADER_MAKE_ALL_FILES_FILTERED) + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES_FILTERED = $(filter-out $(COMPILER_MOC_SOURCE_MAKE_ALL_FILES_FILTER_OUT), $(COMPILER_MOC_SOURCE_MAKE_ALL_FILES)) +$(SRC_CC:.cpp=.o): $(COMPILER_MOC_SOURCE_MAKE_ALL_FILES_FILTERED) + +INC_DIR += $(REP_DIR)/src/lib/qt5/qtbase/mkspecs/qws/genode-generic-g++ \ + $(REP_DIR)/src/lib/qt5/qtbase/src/corelib/global + +INC_DIR += $(addprefix $(REP_DIR)/src/lib/qt5/, $(QT_INCPATH)) +INC_DIR += $(addprefix $(REP_DIR)/contrib/$(QT5)/, $(QT_INCPATH)) + +vpath % $(addprefix $(REP_DIR)/src/lib/qt5/, $(QT_VPATH)) +vpath % $(addprefix $(REP_DIR)/contrib/$(QT5)/, $(QT_VPATH)) diff --git a/libports/lib/mk/qt5_core.mk b/libports/lib/mk/qt5_core.mk new file mode 100644 index 0000000000..6c530d3888 --- /dev/null +++ b/libports/lib/mk/qt5_core.mk @@ -0,0 +1,37 @@ +include $(REP_DIR)/lib/import/import-qt5_core.mk + +SHARED_LIB = yes + +# use default warning level to avoid noise when compiling contrib code +CC_WARN = -Wno-unused-but-set-variable -Wno-deprecated-declarations + +include $(REP_DIR)/lib/mk/qt5_core_generated.inc + +# add Genode-specific sources +QT_SOURCES += qprocess_genode.cpp \ + qthread_genode.cpp \ + qwaitcondition_genode.cpp + +# remove unsupported UNIX-specific files +QT_SOURCES_FILTER_OUT = \ + qmutex_unix.cpp \ + qprocess_unix.cpp \ + qthread_unix.cpp \ + qwaitcondition_unix.cpp \ + qfilesystemwatcher_inotify.cpp \ + moc_qfilesystemwatcher_inotify_p.cpp \ + +# remove unneeded files to prevent moc warnings +COMPILER_MOC_HEADER_MAKE_ALL_FILES_FILTER_OUT = \ + moc_qsharedmemory.cpp \ + moc_qfilesystemwatcher_inotify_p.cpp \ + +include $(REP_DIR)/lib/mk/qt5.inc + +INC_DIR += $(REP_DIR)/include/qt5/qtbase/QtCore/private \ + $(REP_DIR)/src/lib/qt5/qtbase/src/corelib/thread \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION) \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION)/QtCore \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION)/QtCore/private + +LIBS += launchpad zlib icu libc libm alarm libc_lock_pipe diff --git a/libports/lib/mk/qt5_core_generated.inc b/libports/lib/mk/qt5_core_generated.inc new file mode 100644 index 0000000000..5422bcb0ab --- /dev/null +++ b/libports/lib/mk/qt5_core_generated.inc @@ -0,0 +1,365 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_NO_USING_NAMESPACE -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_USE_ICU -DPCRE_HAVE_CONFIG_H -DQT_CORE_LIB -DQT_NO_DEBUG + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/include/QtCore/5.1.0 \ + qtbase/include/QtCore/5.1.0/QtCore \ + qtbase/mkspecs/genode-g++ \ + qtbase/src/3rdparty/harfbuzz/src \ + qtbase/src/3rdparty/md4 \ + qtbase/src/3rdparty/md5 \ + qtbase/src/3rdparty/pcre \ + qtbase/src/3rdparty/sha3 \ + qtbase/src/corelib \ + +QT_SOURCES += \ + qabstractanimation.cpp \ + qvariantanimation.cpp \ + qpropertyanimation.cpp \ + qanimationgroup.cpp \ + qsequentialanimationgroup.cpp \ + qparallelanimationgroup.cpp \ + qpauseanimation.cpp \ + qatomic_unix.cpp \ + qglobal.cpp \ + qglobalstatic.cpp \ + qlibraryinfo.cpp \ + qmalloc.cpp \ + qnumeric.cpp \ + qlogging.cpp \ + qatomic.cpp \ + qexception.cpp \ + qresultstore.cpp \ + qfutureinterface.cpp \ + qfuturewatcher.cpp \ + qmutex.cpp \ + qreadwritelock.cpp \ + qrunnable.cpp \ + qmutexpool.cpp \ + qsemaphore.cpp \ + qthread.cpp \ + qthreadpool.cpp \ + qthreadstorage.cpp \ + qthread_unix.cpp \ + qwaitcondition_unix.cpp \ + qarraydata.cpp \ + qbitarray.cpp \ + qbytearray.cpp \ + qbytearraymatcher.cpp \ + qcollator.cpp \ + qcryptographichash.cpp \ + qdatetime.cpp \ + qeasingcurve.cpp \ + qelapsedtimer.cpp \ + qfreelist.cpp \ + qhash.cpp \ + qline.cpp \ + qlinkedlist.cpp \ + qlist.cpp \ + qlocale.cpp \ + qlocale_tools.cpp \ + qpoint.cpp \ + qmap.cpp \ + qmargins.cpp \ + qmessageauthenticationcode.cpp \ + qcontiguouscache.cpp \ + qrect.cpp \ + qregexp.cpp \ + qregularexpression.cpp \ + qrefcount.cpp \ + qshareddata.cpp \ + qsharedpointer.cpp \ + qsimd.cpp \ + qsize.cpp \ + qstring.cpp \ + qstringbuilder.cpp \ + qstringlist.cpp \ + qtextboundaryfinder.cpp \ + qtimeline.cpp \ + qunicodetools.cpp \ + qvector.cpp \ + qvsnprintf.cpp \ + qelapsedtimer_unix.cpp \ + qlocale_unix.cpp \ + qlocale_icu.cpp \ + pcre16_byte_order.c \ + pcre16_chartables.c \ + pcre16_compile.c \ + pcre16_config.c \ + pcre16_dfa_exec.c \ + pcre16_exec.c \ + pcre16_fullinfo.c \ + pcre16_get.c \ + pcre16_globals.c \ + pcre16_jit_compile.c \ + pcre16_maketables.c \ + pcre16_newline.c \ + pcre16_ord2utf16.c \ + pcre16_refcount.c \ + pcre16_string_utils.c \ + pcre16_study.c \ + pcre16_tables.c \ + pcre16_ucd.c \ + pcre16_utf16_utils.c \ + pcre16_valid_utf16.c \ + pcre16_version.c \ + pcre16_xclass.c \ + harfbuzz-buffer.c \ + harfbuzz-gdef.c \ + harfbuzz-gsub.c \ + harfbuzz-gpos.c \ + harfbuzz-impl.c \ + harfbuzz-open.c \ + harfbuzz-stream.c \ + harfbuzz-shaper-all.cpp \ + qharfbuzz.cpp \ + qabstractfileengine.cpp \ + qbuffer.cpp \ + qdatastream.cpp \ + qdataurl.cpp \ + qtldurl.cpp \ + qdebug.cpp \ + qdir.cpp \ + qdiriterator.cpp \ + qfile.cpp \ + qfiledevice.cpp \ + qfileinfo.cpp \ + qipaddress.cpp \ + qiodevice.cpp \ + qlockfile.cpp \ + qnoncontiguousbytedevice.cpp \ + qprocess.cpp \ + qtextstream.cpp \ + qtemporarydir.cpp \ + qtemporaryfile.cpp \ + qresource.cpp \ + qresource_iterator.cpp \ + qsavefile.cpp \ + qstandardpaths.cpp \ + qurl.cpp \ + qurlidna.cpp \ + qurlquery.cpp \ + qurlrecode.cpp \ + qsettings.cpp \ + qfsfileengine.cpp \ + qfsfileengine_iterator.cpp \ + qfilesystemwatcher.cpp \ + qfilesystemwatcher_polling.cpp \ + qfilesystementry.cpp \ + qfilesystemengine.cpp \ + qfsfileengine_unix.cpp \ + qfilesystemengine_unix.cpp \ + qlockfile_unix.cpp \ + qprocess_unix.cpp \ + qfilesystemiterator_unix.cpp \ + qstandardpaths_unix.cpp \ + qfilesystemwatcher_inotify.cpp \ + qabstractitemmodel.cpp \ + qabstractproxymodel.cpp \ + qitemselectionmodel.cpp \ + qidentityproxymodel.cpp \ + qsortfilterproxymodel.cpp \ + qstringlistmodel.cpp \ + qjson.cpp \ + qjsondocument.cpp \ + qjsonobject.cpp \ + qjsonarray.cpp \ + qjsonvalue.cpp \ + qjsonwriter.cpp \ + qjsonparser.cpp \ + qpluginloader.cpp \ + qfactoryloader.cpp \ + quuid.cpp \ + qlibrary.cpp \ + qelfparser_p.cpp \ + qlibrary_unix.cpp \ + qabstracteventdispatcher.cpp \ + qabstractnativeeventfilter.cpp \ + qbasictimer.cpp \ + qeventloop.cpp \ + qcoreapplication.cpp \ + qcoreevent.cpp \ + qmetaobject.cpp \ + qmetatype.cpp \ + qmetaobjectbuilder.cpp \ + qmimedata.cpp \ + qobject.cpp \ + qobjectcleanuphandler.cpp \ + qsignalmapper.cpp \ + qsocketnotifier.cpp \ + qtimer.cpp \ + qtranslator.cpp \ + qvariant.cpp \ + qcoreglobaldata.cpp \ + qsharedmemory.cpp \ + qsystemsemaphore.cpp \ + qpointer.cpp \ + qmath.cpp \ + qsystemerror.cpp \ + qcore_unix.cpp \ + qcrashhandler.cpp \ + qeventdispatcher_unix.cpp \ + qtimerinfo_unix.cpp \ + qsharedmemory_unix.cpp \ + qsystemsemaphore_unix.cpp \ + qisciicodec.cpp \ + qlatincodec.cpp \ + qtextcodec.cpp \ + qtsciicodec.cpp \ + qutfcodec.cpp \ + qicucodec.cpp \ + qstatemachine.cpp \ + qabstractstate.cpp \ + qstate.cpp \ + qfinalstate.cpp \ + qhistorystate.cpp \ + qabstracttransition.cpp \ + qsignaltransition.cpp \ + qeventtransition.cpp \ + qmimedatabase.cpp \ + qmimetype.cpp \ + qmimemagicrulematcher.cpp \ + qmimetypeparser.cpp \ + qmimemagicrule.cpp \ + qmimeglobpattern.cpp \ + qmimeprovider.cpp \ + qxmlstream.cpp \ + qxmlutils.cpp \ + qrc_mimetypes.cpp \ + moc_qabstractanimation_p.cpp \ + moc_qnamespace.cpp \ + moc_qthread.cpp \ + moc_qthreadpool.cpp \ + moc_qfuturewatcher.cpp \ + moc_qeasingcurve.cpp \ + moc_qlocale.cpp \ + moc_qtimeline.cpp \ + moc_qfile.cpp \ + moc_qfiledevice.cpp \ + moc_qiodevice.cpp \ + moc_qnoncontiguousbytedevice_p.cpp \ + moc_qtextstream_p.cpp \ + moc_qtemporaryfile.cpp \ + moc_qsavefile.cpp \ + moc_qsettings.cpp \ + moc_qfilesystemwatcher_p.cpp \ + moc_qfilesystemwatcher_polling_p.cpp \ + moc_qfilesystemwatcher_inotify_p.cpp \ + moc_qabstractitemmodel.cpp \ + moc_qstringlistmodel.cpp \ + moc_qpluginloader.cpp \ + moc_qlibrary.cpp \ + moc_qfactoryloader_p.cpp \ + moc_qabstracteventdispatcher.cpp \ + moc_qeventloop.cpp \ + moc_qcoreapplication.cpp \ + moc_qcoreevent.cpp \ + moc_qmimedata.cpp \ + moc_qsocketnotifier.cpp \ + moc_qtimer.cpp \ + moc_qtranslator.cpp \ + moc_qobjectcleanuphandler.cpp \ + moc_qsharedmemory.cpp \ + moc_qeventdispatcher_unix_p.cpp \ + moc_qabstractstate.cpp \ + moc_qstate.cpp \ + moc_qfinalstate.cpp \ + moc_qhistorystate.cpp \ + moc_qabstracttransition.cpp \ + moc_qsignaltransition.cpp \ + moc_qeventtransition.cpp + +QT_VPATH += \ + qtbase/src/3rdparty/harfbuzz/src \ + qtbase/src/3rdparty/pcre \ + qtbase/src/corelib/animation \ + qtbase/src/corelib/arch \ + qtbase/src/corelib/codecs \ + qtbase/src/corelib/global \ + qtbase/src/corelib/io \ + qtbase/src/corelib/itemmodels \ + qtbase/src/corelib/json \ + qtbase/src/corelib/kernel \ + qtbase/src/corelib/mimetypes \ + qtbase/src/corelib/plugin \ + qtbase/src/corelib/statemachine \ + qtbase/src/corelib/thread \ + qtbase/src/corelib/tools \ + qtbase/src/corelib/xml \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + moc_qabstractanimation.cpp \ + moc_qabstractanimation_p.cpp \ + moc_qvariantanimation.cpp \ + moc_qpropertyanimation.cpp \ + moc_qanimationgroup.cpp \ + moc_qsequentialanimationgroup.cpp \ + moc_qparallelanimationgroup.cpp \ + moc_qpauseanimation.cpp \ + moc_qnamespace.cpp \ + moc_qthread.cpp \ + moc_qthreadpool.cpp \ + moc_qfuturewatcher.cpp \ + moc_qeasingcurve.cpp \ + moc_qlocale.cpp \ + moc_qtimeline.cpp \ + moc_qbuffer.cpp \ + moc_qfile.cpp \ + moc_qfiledevice.cpp \ + moc_qiodevice.cpp \ + moc_qnoncontiguousbytedevice_p.cpp \ + moc_qprocess.cpp \ + moc_qtextstream_p.cpp \ + moc_qtemporaryfile.cpp \ + moc_qsavefile.cpp \ + moc_qsettings.cpp \ + moc_qfilesystemwatcher.cpp \ + moc_qfilesystemwatcher_p.cpp \ + moc_qfilesystemwatcher_polling_p.cpp \ + moc_qfilesystemwatcher_inotify_p.cpp \ + moc_qabstractitemmodel.cpp \ + moc_qabstractproxymodel.cpp \ + moc_qitemselectionmodel.cpp \ + moc_qidentityproxymodel.cpp \ + moc_qsortfilterproxymodel.cpp \ + moc_qstringlistmodel.cpp \ + moc_qpluginloader.cpp \ + moc_qlibrary.cpp \ + moc_qfactoryloader_p.cpp \ + moc_qabstracteventdispatcher.cpp \ + moc_qeventloop.cpp \ + moc_qcoreapplication.cpp \ + moc_qcoreevent.cpp \ + moc_qmimedata.cpp \ + moc_qobject.cpp \ + moc_qsignalmapper.cpp \ + moc_qsocketnotifier.cpp \ + moc_qtimer.cpp \ + moc_qtranslator.cpp \ + moc_qobjectcleanuphandler.cpp \ + moc_qsharedmemory.cpp \ + moc_qeventdispatcher_unix_p.cpp \ + moc_qstatemachine.cpp \ + moc_qabstractstate.cpp \ + moc_qstate.cpp \ + moc_qfinalstate.cpp \ + moc_qhistorystate.cpp \ + moc_qabstracttransition.cpp \ + moc_qsignaltransition.cpp \ + moc_qeventtransition.cpp + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + qprocess_unix.moc \ + qtimer.moc \ + qstatemachine.moc + diff --git a/libports/lib/mk/qt5_dejavusans.mk b/libports/lib/mk/qt5_dejavusans.mk new file mode 100644 index 0000000000..867eb93008 --- /dev/null +++ b/libports/lib/mk/qt5_dejavusans.mk @@ -0,0 +1,7 @@ +SHARED_LIB = yes + +SRC_CC = qrc_dejavusans.cpp + +LIBS = qt5_core + +vpath % $(REP_DIR)/src/lib/qt5/dejavusans diff --git a/libports/lib/mk/qt5_gui.mk b/libports/lib/mk/qt5_gui.mk new file mode 100644 index 0000000000..50ab38c392 --- /dev/null +++ b/libports/lib/mk/qt5_gui.mk @@ -0,0 +1,41 @@ +include $(REP_DIR)/lib/import/import-qt5_gui.mk + +SHARED_LIB = yes + +# use default warning level to avoid noise when compiling contrib code +CC_WARN = -Wno-unused-but-set-variable -Wno-deprecated-declarations + +include $(REP_DIR)/lib/mk/qt5_gui_generated.inc + +# remove unneeded files to prevent moc warnings +COMPILER_MOC_HEADER_MAKE_ALL_FILES_FILTER_OUT = \ + moc_qsessionmanager.cpp \ + moc_qsound.cpp \ + moc_qsound_p.cpp \ + moc_qmenudata.cpp \ + moc_qprintpreviewwidget.cpp \ + moc_qabstractprintdialog.cpp \ + moc_qabstractpagesetupdialog.cpp \ + moc_qpagesetupdialog.cpp \ + moc_qprintdialog.cpp \ + moc_qprintpreviewdialog.cpp \ + moc_qpagesetupdialog_unix_p.cpp + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES_FILTER_OUT = \ + qprintpreviewwidget.moc \ + qprintdialog_unix.moc \ + qprintpreviewdialog.moc + +# UI headers +qfiledialog.o: ui_qfiledialog.h + +include $(REP_DIR)/lib/mk/qt5.inc + +INC_DIR += $(REP_DIR)/include/qt5/qtbase/QtGui/private \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtGui/$(QT_VERSION) \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtGui/$(QT_VERSION)/QtGui \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtGui/$(QT_VERSION)/QtGui/private \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION) \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION)/QtCore + +LIBS += qt5_core jpeg zlib libpng diff --git a/libports/lib/mk/qt5_gui_generated.inc b/libports/lib/mk/qt5_gui_generated.inc new file mode 100644 index 0000000000..e195052592 --- /dev/null +++ b/libports/lib/mk/qt5_gui_generated.inc @@ -0,0 +1,281 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_NO_USING_NAMESPACE -DQT_BUILD_GUI_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_CORE_LIB + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/include/QtCore/5.1.0 \ + qtbase/include/QtCore/5.1.0/QtCore \ + qtbase/include/QtGui \ + qtbase/include/QtGui/5.1.0 \ + qtbase/include/QtGui/5.1.0/QtGui \ + qtbase/mkspecs/genode-g++ \ + qtbase/src/gui \ + qtbase/src/gui/image \ + +QT_SOURCES += \ + qclipboard_qpa.cpp \ + qcursor_qpa.cpp \ + qgenericpluginfactory.cpp \ + qgenericplugin.cpp \ + qwindowsysteminterface.cpp \ + qplatforminputcontextfactory.cpp \ + qplatforminputcontextplugin.cpp \ + qplatforminputcontext.cpp \ + qplatformintegration.cpp \ + qplatformdrag.cpp \ + qplatformscreen.cpp \ + qplatformintegrationfactory.cpp \ + qplatformintegrationplugin.cpp \ + qplatformtheme.cpp \ + qplatformthemefactory.cpp \ + qplatformthemeplugin.cpp \ + qplatformwindow.cpp \ + qplatformoffscreensurface.cpp \ + qplatformcursor.cpp \ + qplatformclipboard.cpp \ + qplatformnativeinterface.cpp \ + qsessionmanager.cpp \ + qshapedpixmapdndwindow.cpp \ + qsimpledrag.cpp \ + qsurfaceformat.cpp \ + qguiapplication.cpp \ + qwindow.cpp \ + qoffscreensurface.cpp \ + qplatformsurface.cpp \ + qsurface.cpp \ + qclipboard.cpp \ + qcursor.cpp \ + qdrag.cpp \ + qdnd.cpp \ + qevent.cpp \ + qinputmethod.cpp \ + qkeysequence.cpp \ + qkeymapper.cpp \ + qkeymapper_qpa.cpp \ + qpalette.cpp \ + qguivariant.cpp \ + qscreen.cpp \ + qshortcutmap.cpp \ + qstylehints.cpp \ + qtouchdevice.cpp \ + qplatformsharedgraphicscache.cpp \ + qplatformdialoghelper.cpp \ + qplatformservices.cpp \ + qplatformscreenpageflipper.cpp \ + qplatformsystemtrayicon_qpa.cpp \ + qbitmap.cpp \ + qimage.cpp \ + qimageiohandler.cpp \ + qimagereader.cpp \ + qimagewriter.cpp \ + qpaintengine_pic.cpp \ + qpicture.cpp \ + qpictureformatplugin.cpp \ + qpixmap.cpp \ + qpixmapcache.cpp \ + qplatformpixmap.cpp \ + qmovie.cpp \ + qpixmap_raster.cpp \ + qpixmap_blitter.cpp \ + qnativeimage.cpp \ + qimagepixmapcleanuphooks.cpp \ + qicon.cpp \ + qiconloader.cpp \ + qiconengine.cpp \ + qiconengineplugin.cpp \ + qbmphandler.cpp \ + qppmhandler.cpp \ + qxbmhandler.cpp \ + qxpmhandler.cpp \ + qpnghandler.cpp \ + qjpeghandler.cpp \ + qgifhandler.cpp \ + qfont.cpp \ + qfontengine.cpp \ + qfontsubset.cpp \ + qfontmetrics.cpp \ + qfontdatabase.cpp \ + qtextengine.cpp \ + qtextlayout.cpp \ + qtextformat.cpp \ + qtextobject.cpp \ + qtextoption.cpp \ + qfragmentmap.cpp \ + qtextdocument.cpp \ + qtextdocument_p.cpp \ + qtexthtmlparser.cpp \ + qabstracttextdocumentlayout.cpp \ + qtextdocumentlayout.cpp \ + qtextcursor.cpp \ + qtextdocumentfragment.cpp \ + qtextimagehandler.cpp \ + qtexttable.cpp \ + qtextlist.cpp \ + qtextdocumentwriter.cpp \ + qsyntaxhighlighter.cpp \ + qcssparser.cpp \ + qzip.cpp \ + qtextodfwriter.cpp \ + qstatictext.cpp \ + qrawfont.cpp \ + qglyphrun.cpp \ + qdistancefield.cpp \ + qfont_qpa.cpp \ + qfontengine_qpa.cpp \ + qplatformfontdatabase.cpp \ + qrawfont_qpa.cpp \ + qbackingstore.cpp \ + qbezier.cpp \ + qblendfunctions.cpp \ + qblittable.cpp \ + qbrush.cpp \ + qcolor.cpp \ + qcolor_p.cpp \ + qcosmeticstroker.cpp \ + qcssutil.cpp \ + qdrawhelper.cpp \ + qemulationpaintengine.cpp \ + qgammatables.cpp \ + qgrayraster.c \ + qimagescale.cpp \ + qmatrix.cpp \ + qmemrotate.cpp \ + qoutlinemapper.cpp \ + qpagedpaintdevice.cpp \ + qpaintdevice.cpp \ + qpaintengine.cpp \ + qpaintengineex.cpp \ + qpaintengine_blitter.cpp \ + qpaintengine_raster.cpp \ + qpainter.cpp \ + qpainterpath.cpp \ + qpathclipper.cpp \ + qpdf.cpp \ + qpdfwriter.cpp \ + qpen.cpp \ + qpolygon.cpp \ + qrasterizer.cpp \ + qregion.cpp \ + qstroker.cpp \ + qtextureglyphcache.cpp \ + qtransform.cpp \ + qplatformbackingstore.cpp \ + qpaintbuffer.cpp \ + qpathsimplifier.cpp \ + qdesktopservices.cpp \ + qvalidator.cpp \ + qgenericmatrix.cpp \ + qmatrix4x4.cpp \ + qquaternion.cpp \ + qvector2d.cpp \ + qvector3d.cpp \ + qvector4d.cpp \ + qguivariantanimation.cpp \ + qstandarditemmodel.cpp \ + moc_qgenericplugin.cpp \ + moc_qplatforminputcontext.cpp \ + moc_qplatforminputcontextplugin_p.cpp \ + moc_qplatformintegrationplugin.cpp \ + moc_qplatformthemeplugin.cpp \ + moc_qplatformnativeinterface.cpp \ + moc_qplatformmenu.cpp \ + moc_qshapedpixmapdndwindow_p.cpp \ + moc_qoffscreensurface.cpp \ + moc_qclipboard.cpp \ + moc_qdrag.cpp \ + moc_qdnd_p.cpp \ + moc_qkeymapper_p.cpp \ + moc_qpalette.cpp \ + moc_qsessionmanager.cpp \ + moc_qscreen.cpp \ + moc_qstylehints.cpp \ + moc_qplatformsharedgraphicscache.cpp \ + moc_qplatformdialoghelper.cpp \ + moc_qplatformscreenpageflipper.cpp \ + moc_qimageiohandler.cpp \ + moc_qpictureformatplugin.cpp \ + moc_qiconengineplugin.cpp \ + moc_qfont.cpp \ + moc_qfontdatabase.cpp \ + moc_qfontengine_p.cpp \ + moc_qtextformat.cpp \ + moc_qtextobject.cpp \ + moc_qtextdocument.cpp \ + moc_qtextimagehandler_p.cpp \ + moc_qtexttable.cpp \ + moc_qtextlist.cpp \ + moc_qbrush.cpp \ + moc_qpainter.cpp \ + moc_qpdfwriter.cpp \ + moc_qvalidator.cpp + +QT_VPATH += \ + qtbase/src/gui/animation \ + qtbase/src/gui/image \ + qtbase/src/gui/itemmodels \ + qtbase/src/gui/kernel \ + qtbase/src/gui/math3d \ + qtbase/src/gui/painting \ + qtbase/src/gui/text \ + qtbase/src/gui/util \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + moc_qgenericplugin.cpp \ + moc_qplatforminputcontext.cpp \ + moc_qplatforminputcontextplugin_p.cpp \ + moc_qplatformintegrationplugin.cpp \ + moc_qplatformthemeplugin.cpp \ + moc_qplatformnativeinterface.cpp \ + moc_qplatformmenu.cpp \ + moc_qshapedpixmapdndwindow_p.cpp \ + moc_qguiapplication.cpp \ + moc_qwindow.cpp \ + moc_qoffscreensurface.cpp \ + moc_qclipboard.cpp \ + moc_qdrag.cpp \ + moc_qdnd_p.cpp \ + moc_qinputmethod.cpp \ + moc_qkeymapper_p.cpp \ + moc_qpalette.cpp \ + moc_qsessionmanager.cpp \ + moc_qscreen.cpp \ + moc_qstylehints.cpp \ + moc_qplatformsharedgraphicscache.cpp \ + moc_qplatformdialoghelper.cpp \ + moc_qplatformscreenpageflipper.cpp \ + moc_qplatformsystemtrayicon.cpp \ + moc_qimageiohandler.cpp \ + moc_qmovie.cpp \ + moc_qpictureformatplugin.cpp \ + moc_qiconengineplugin.cpp \ + moc_qfont.cpp \ + moc_qfontdatabase.cpp \ + moc_qfontengine_p.cpp \ + moc_qtextformat.cpp \ + moc_qtextobject.cpp \ + moc_qtextdocument.cpp \ + moc_qabstracttextdocumentlayout.cpp \ + moc_qtextdocumentlayout_p.cpp \ + moc_qtextimagehandler_p.cpp \ + moc_qtexttable.cpp \ + moc_qtextlist.cpp \ + moc_qsyntaxhighlighter.cpp \ + moc_qbrush.cpp \ + moc_qpainter.cpp \ + moc_qpdfwriter.cpp \ + moc_qvalidator.cpp \ + moc_qstandarditemmodel.cpp + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + qpixmapcache.moc \ + qdesktopservices.moc + diff --git a/libports/lib/mk/qt5_jscore.mk b/libports/lib/mk/qt5_jscore.mk new file mode 100644 index 0000000000..e978b7cc62 --- /dev/null +++ b/libports/lib/mk/qt5_jscore.mk @@ -0,0 +1,21 @@ +include $(REP_DIR)/lib/import/import-qt5_jscore.mk + +SHARED_LIB = yes + +# additional defines for the Genode version +CC_OPT += -DSQLITE_NO_SYNC=1 -DSQLITE_THREADSAFE=0 + +# enable C++ functions that use C99 math functions (disabled by default in the Genode tool chain) +CC_CXX_OPT += -D_GLIBCXX_USE_C99_MATH + +# use default warning level to avoid noise when compiling contrib code +CC_WARN = + +include $(REP_DIR)/lib/mk/qt5_jscore_generated.inc + +QT_INCPATH += qtwebkit/Source/JavaScriptCore/generated + + +include $(REP_DIR)/lib/mk/qt5.inc + +LIBS += qt5_network qt5_core icu pthread libc libm diff --git a/libports/lib/mk/qt5_jscore_generated.inc b/libports/lib/mk/qt5_jscore_generated.inc new file mode 100644 index 0000000000..103930c042 --- /dev/null +++ b/libports/lib/mk/qt5_jscore_generated.inc @@ -0,0 +1,319 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DBUILDING_QT__=1 -DNDEBUG -DENABLE_3D_RENDERING=1 -DENABLE_BLOB=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_CSS_BOX_DECORATION_BREAK=1 -DENABLE_CSS_COMPOSITING=1 -DENABLE_CSS_EXCLUSIONS=1 -DENABLE_CSS_FILTERS=1 -DENABLE_CSS_IMAGE_SET=1 -DENABLE_CSS_REGIONS=1 -DENABLE_CSS_STICKY_POSITION=1 -DENABLE_DATALIST_ELEMENT=1 -DENABLE_DETAILS_ELEMENT=1 -DENABLE_FAST_MOBILE_SCROLLING=1 -DENABLE_FILTERS=1 -DENABLE_FTPDIR=1 -DENABLE_GESTURE_EVENTS=1 -DENABLE_ICONDATABASE=1 -DENABLE_IFRAME_SEAMLESS=1 -DENABLE_INPUT_TYPE_COLOR=1 -DENABLE_INSPECTOR=1 -DENABLE_INSPECTOR_SERVER=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_LEGACY_NOTIFICATIONS=1 -DENABLE_LEGACY_VIEWPORT_ADAPTION=1 -DENABLE_LEGACY_VENDOR_PREFIXES=1 -DENABLE_LINK_PREFETCH=1 -DENABLE_METER_ELEMENT=1 -DENABLE_MHTML=1 -DENABLE_MUTATION_OBSERVERS=1 -DENABLE_NOTIFICATIONS=1 -DENABLE_PAGE_VISIBILITY_API=1 -DENABLE_PROGRESS_ELEMENT=1 -DENABLE_RESOLUTION_MEDIA_QUERY=1 -DENABLE_REQUEST_ANIMATION_FRAME=1 -DENABLE_SHARED_WORKERS=1 -DENABLE_SMOOTH_SCROLLING=1 -DENABLE_SQL_DATABASE=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_TOUCH_ADJUSTMENT=1 -DENABLE_TOUCH_EVENTS=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_WEB_TIMING=1 -DENABLE_WORKERS=1 -DENABLE_XHR_TIMEOUT=1 -DWTF_USE_TILED_BACKING_STORE=1 -DHAVE_QTPRINTSUPPORT=1 -DHAVE_QSTYLE=1 -DHAVE_QTTESTLIB=1 -DWTF_USE_LIBJPEG=1 -DWTF_USE_LIBPNG=1 -DPLUGIN_ARCHITECTURE_UNSUPPORTED=1 -DENABLE_TOUCH_SLIDER=1 -DENABLE_ACCELERATED_2D_CANVAS=0 -DENABLE_ANIMATION_API=0 -DENABLE_BATTERY_STATUS=0 -DENABLE_CSP_NEXT=0 -DENABLE_CSS_GRID_LAYOUT=0 -DENABLE_CSS_HIERARCHIES=0 -DENABLE_CSS_IMAGE_ORIENTATION=0 -DENABLE_CSS_IMAGE_RESOLUTION=0 -DENABLE_CSS_SHADERS=0 -DENABLE_CSS_VARIABLES=0 -DENABLE_CSS3_BACKGROUND=0 -DENABLE_CSS3_CONDITIONAL_RULES=0 -DENABLE_CSS3_TEXT=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_DATAGRID=0 -DENABLE_DATA_TRANSFER_ITEMS=0 -DENABLE_DEVICE_ORIENTATION=0 -DENABLE_DIRECTORY_UPLOAD=0 -DENABLE_DOWNLOAD_ATTRIBUTE=0 -DENABLE_FILE_SYSTEM=0 -DENABLE_FULLSCREEN_API=0 -DENABLE_GAMEPAD=0 -DENABLE_GEOLOCATION=0 -DENABLE_HIGH_DPI_CANVAS=0 -DENABLE_INDEXED_DATABASE=0 -DENABLE_INPUT_SPEECH=0 -DENABLE_INPUT_TYPE_DATE=0 -DENABLE_INPUT_TYPE_DATETIME=0 -DENABLE_INPUT_TYPE_DATETIMELOCAL=0 -DENABLE_INPUT_TYPE_MONTH=0 -DENABLE_INPUT_TYPE_TIME=0 -DENABLE_INPUT_TYPE_WEEK=0 -DENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 -DENABLE_LINK_PRERENDER=0 -DENABLE_MATHML=0 -DENABLE_MEDIA_SOURCE=0 -DENABLE_MEDIA_STATISTICS=0 -DENABLE_MEDIA_STREAM=0 -DENABLE_MICRODATA=0 -DENABLE_NAVIGATOR_CONTENT_UTILS=0 -DENABLE_NETSCAPE_PLUGIN_API=0 -DENABLE_NETWORK_INFO=0 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_PROXIMITY_EVENTS=0 -DENABLE_QUOTA=0 -DENABLE_SCRIPTED_SPEECH=0 -DENABLE_SHADOW_DOM=0 -DENABLE_STYLE_SCOPED=0 -DENABLE_SVG_DOM_OBJC_BINDINGS=0 -DENABLE_TEXT_AUTOSIZING=0 -DENABLE_TEXT_NOTIFICATIONS_ONLY=0 -DENABLE_TOUCH_ICON_LOADING=0 -DENABLE_VIBRATION=0 -DENABLE_VIDEO=0 -DENABLE_VIDEO_TRACK=0 -DENABLE_WEBGL=0 -DENABLE_WEB_AUDIO=0 -DENABLE_XSLT=0 -DBUILDING_JavaScriptCore -DBUILDING_WEBKIT -DQT_ASCII_CAST_WARNINGS -DSTATICALLY_LINKED_WITH_WTF -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_CORE_LIB + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/mkspecs/genode-g++ \ + qtscript/include \ + qtscript/include/QtScript \ + qtwebkit/Source \ + qtwebkit/Source/JavaScriptCore \ + qtwebkit/Source/JavaScriptCore/API \ + qtwebkit/Source/JavaScriptCore/assembler \ + qtwebkit/Source/JavaScriptCore/bytecode \ + qtwebkit/Source/JavaScriptCore/bytecompiler \ + qtwebkit/Source/JavaScriptCore/debugger \ + qtwebkit/Source/JavaScriptCore/dfg \ + qtwebkit/Source/JavaScriptCore/disassembler \ + qtwebkit/Source/JavaScriptCore/ForwardingHeaders \ + qtwebkit/Source/JavaScriptCore/heap \ + qtwebkit/Source/JavaScriptCore/interpreter \ + qtwebkit/Source/JavaScriptCore/jit \ + qtwebkit/Source/JavaScriptCore/llint \ + qtwebkit/Source/JavaScriptCore/parser \ + qtwebkit/Source/JavaScriptCore/profiler \ + qtwebkit/Source/JavaScriptCore/runtime \ + qtwebkit/Source/JavaScriptCore/tools \ + qtwebkit/Source/JavaScriptCore/yarr \ + qtwebkit/Source/WTF \ + +QT_SOURCES += \ + YarrInterpreter.cpp \ + YarrPattern.cpp \ + YarrSyntaxChecker.cpp \ + YarrCanonicalizeUCS2.cpp \ + JSBase.cpp \ + JSCallbackConstructor.cpp \ + JSCallbackFunction.cpp \ + JSCallbackObject.cpp \ + JSClassRef.cpp \ + JSContextRef.cpp \ + JSObjectRef.cpp \ + JSStringRef.cpp \ + JSValueRef.cpp \ + JSWeakObjectMapRefPrivate.cpp \ + OpaqueJSString.cpp \ + ARMAssembler.cpp \ + ARMv7Assembler.cpp \ + LinkBuffer.cpp \ + MacroAssembler.cpp \ + MacroAssemblerARM.cpp \ + MacroAssemblerSH4.cpp \ + ArrayAllocationProfile.cpp \ + ArrayProfile.cpp \ + CallLinkInfo.cpp \ + CallLinkStatus.cpp \ + CodeBlock.cpp \ + CodeBlockHash.cpp \ + CodeOrigin.cpp \ + CodeType.cpp \ + DFGExitProfile.cpp \ + ExecutionCounter.cpp \ + GetByIdStatus.cpp \ + JumpTable.cpp \ + LazyOperandValueProfile.cpp \ + MethodOfGettingAValueProfile.cpp \ + Opcode.cpp \ + PolymorphicPutByIdList.cpp \ + PutByIdStatus.cpp \ + ResolveGlobalStatus.cpp \ + SamplingTool.cpp \ + SpecialPointer.cpp \ + SpeculatedType.cpp \ + StructureStubClearingWatchpoint.cpp \ + StructureStubInfo.cpp \ + UnlinkedCodeBlock.cpp \ + Watchpoint.cpp \ + BytecodeGenerator.cpp \ + NodesCodegen.cpp \ + CopiedSpace.cpp \ + CopyVisitor.cpp \ + ConservativeRoots.cpp \ + DFGCodeBlocks.cpp \ + WeakSet.cpp \ + WeakHandleOwner.cpp \ + WeakBlock.cpp \ + HandleSet.cpp \ + HandleStack.cpp \ + BlockAllocator.cpp \ + GCThreadSharedData.cpp \ + GCThread.cpp \ + Heap.cpp \ + HeapStatistics.cpp \ + HeapTimer.cpp \ + IncrementalSweeper.cpp \ + JITStubRoutineSet.cpp \ + MachineStackMarker.cpp \ + MarkStack.cpp \ + MarkedAllocator.cpp \ + MarkedBlock.cpp \ + MarkedSpace.cpp \ + SlotVisitor.cpp \ + VTableSpectrum.cpp \ + WriteBarrierSupport.cpp \ + DebuggerActivation.cpp \ + DebuggerCallFrame.cpp \ + Debugger.cpp \ + DFGAbstractState.cpp \ + DFGArgumentsSimplificationPhase.cpp \ + DFGArrayMode.cpp \ + DFGAssemblyHelpers.cpp \ + DFGByteCodeParser.cpp \ + DFGCapabilities.cpp \ + DFGCFAPhase.cpp \ + DFGCFGSimplificationPhase.cpp \ + DFGConstantFoldingPhase.cpp \ + DFGCorrectableJumpPoint.cpp \ + DFGCSEPhase.cpp \ + DFGDisassembler.cpp \ + DFGDominators.cpp \ + DFGDriver.cpp \ + DFGFixupPhase.cpp \ + DFGGraph.cpp \ + DFGJITCompiler.cpp \ + DFGMinifiedNode.cpp \ + DFGNodeFlags.cpp \ + DFGOperations.cpp \ + DFGOSREntry.cpp \ + DFGOSRExit.cpp \ + DFGOSRExitCompiler.cpp \ + DFGOSRExitCompiler64.cpp \ + DFGOSRExitCompiler32_64.cpp \ + DFGPhase.cpp \ + DFGPredictionPropagationPhase.cpp \ + DFGRepatch.cpp \ + DFGSpeculativeJIT.cpp \ + DFGSpeculativeJIT32_64.cpp \ + DFGSpeculativeJIT64.cpp \ + DFGStructureCheckHoistingPhase.cpp \ + DFGThunks.cpp \ + DFGValueSource.cpp \ + DFGVariableAccessDataDump.cpp \ + DFGVariableEvent.cpp \ + DFGVariableEventStream.cpp \ + DFGValidate.cpp \ + DFGVirtualRegisterAllocationPhase.cpp \ + Disassembler.cpp \ + AbstractPC.cpp \ + CallFrame.cpp \ + Interpreter.cpp \ + JSStack.cpp \ + ClosureCallStubRoutine.cpp \ + ExecutableAllocatorFixedVMPool.cpp \ + ExecutableAllocator.cpp \ + HostCallReturnValue.cpp \ + GCAwareJITStubRoutine.cpp \ + JITArithmetic.cpp \ + JITArithmetic32_64.cpp \ + JITCall.cpp \ + JITCall32_64.cpp \ + JITCode.cpp \ + JIT.cpp \ + JITDisassembler.cpp \ + JITExceptions.cpp \ + JITOpcodes.cpp \ + JITOpcodes32_64.cpp \ + JITPropertyAccess.cpp \ + JITPropertyAccess32_64.cpp \ + JITStubRoutine.cpp \ + JITStubs.cpp \ + JumpReplacementWatchpoint.cpp \ + ThunkGenerators.cpp \ + LLIntCLoop.cpp \ + LLIntData.cpp \ + LLIntEntrypoints.cpp \ + LLIntExceptions.cpp \ + LLIntSlowPaths.cpp \ + LLIntThunks.cpp \ + LowLevelInterpreter.cpp \ + Lexer.cpp \ + Nodes.cpp \ + ParserArena.cpp \ + Parser.cpp \ + SourceProviderCache.cpp \ + Profile.cpp \ + ProfileGenerator.cpp \ + ProfileNode.cpp \ + Profiler.cpp \ + ArgList.cpp \ + Arguments.cpp \ + ArrayConstructor.cpp \ + ArrayPrototype.cpp \ + BooleanConstructor.cpp \ + BooleanObject.cpp \ + BooleanPrototype.cpp \ + CallData.cpp \ + CodeCache.cpp \ + CodeSpecializationKind.cpp \ + CommonIdentifiers.cpp \ + Completion.cpp \ + ConstructData.cpp \ + DateConstructor.cpp \ + DateConversion.cpp \ + DateInstance.cpp \ + DatePrototype.cpp \ + ErrorConstructor.cpp \ + Error.cpp \ + ErrorInstance.cpp \ + ErrorPrototype.cpp \ + ExceptionHelpers.cpp \ + Executable.cpp \ + FunctionConstructor.cpp \ + FunctionPrototype.cpp \ + GCActivityCallback.cpp \ + GetterSetter.cpp \ + Options.cpp \ + Identifier.cpp \ + IndexingType.cpp \ + InitializeThreading.cpp \ + InternalFunction.cpp \ + JSActivation.cpp \ + JSAPIValueWrapper.cpp \ + JSArray.cpp \ + JSCell.cpp \ + JSDateMath.cpp \ + JSFunction.cpp \ + JSBoundFunction.cpp \ + JSGlobalData.cpp \ + JSGlobalObject.cpp \ + JSGlobalObjectFunctions.cpp \ + JSProxy.cpp \ + JSLock.cpp \ + JSNotAnObject.cpp \ + JSObject.cpp \ + JSONObject.cpp \ + JSPropertyNameIterator.cpp \ + JSSegmentedVariableObject.cpp \ + JSWithScope.cpp \ + JSNameScope.cpp \ + JSScope.cpp \ + JSString.cpp \ + JSStringJoiner.cpp \ + JSSymbolTableObject.cpp \ + JSValue.cpp \ + JSVariableObject.cpp \ + JSWrapperObject.cpp \ + LiteralParser.cpp \ + Lookup.cpp \ + MathObject.cpp \ + MemoryStatistics.cpp \ + NameConstructor.cpp \ + NameInstance.cpp \ + NamePrototype.cpp \ + NativeErrorConstructor.cpp \ + NativeErrorPrototype.cpp \ + NumberConstructor.cpp \ + NumberObject.cpp \ + NumberPrototype.cpp \ + ObjectConstructor.cpp \ + ObjectPrototype.cpp \ + Operations.cpp \ + PropertyDescriptor.cpp \ + PropertyNameArray.cpp \ + PropertySlot.cpp \ + RegExpConstructor.cpp \ + RegExpCachedResult.cpp \ + RegExpMatchesArray.cpp \ + RegExp.cpp \ + RegExpObject.cpp \ + RegExpPrototype.cpp \ + RegExpCache.cpp \ + SamplingCounter.cpp \ + SmallStrings.cpp \ + SparseArrayValueMap.cpp \ + StrictEvalActivation.cpp \ + StringConstructor.cpp \ + StringObject.cpp \ + StringPrototype.cpp \ + StringRecursionChecker.cpp \ + StructureChain.cpp \ + Structure.cpp \ + SymbolTable.cpp \ + TimeoutChecker.cpp \ + CodeProfile.cpp \ + CodeProfiling.cpp \ + YarrJIT.cpp + +QT_VPATH += \ + qtwebkit/Source/JavaScriptCore/API \ + qtwebkit/Source/JavaScriptCore/assembler \ + qtwebkit/Source/JavaScriptCore/bytecode \ + qtwebkit/Source/JavaScriptCore/bytecompiler \ + qtwebkit/Source/JavaScriptCore/debugger \ + qtwebkit/Source/JavaScriptCore/dfg \ + qtwebkit/Source/JavaScriptCore/disassembler \ + qtwebkit/Source/JavaScriptCore/heap \ + qtwebkit/Source/JavaScriptCore/interpreter \ + qtwebkit/Source/JavaScriptCore/jit \ + qtwebkit/Source/JavaScriptCore/llint \ + qtwebkit/Source/JavaScriptCore/parser \ + qtwebkit/Source/JavaScriptCore/profiler \ + qtwebkit/Source/JavaScriptCore/runtime \ + qtwebkit/Source/JavaScriptCore/tools \ + qtwebkit/Source/JavaScriptCore/yarr \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + + diff --git a/libports/lib/mk/qt5_network.mk b/libports/lib/mk/qt5_network.mk new file mode 100644 index 0000000000..cde736dbbb --- /dev/null +++ b/libports/lib/mk/qt5_network.mk @@ -0,0 +1,35 @@ +include $(REP_DIR)/lib/import/import-qt5_network.mk + +SHARED_LIB = yes + +# use default warning level to avoid noise when compiling contrib code +CC_WARN = + +include $(REP_DIR)/lib/mk/qt5_network_generated.inc + +# remove unneeded files to prevent moc warnings +COMPILER_MOC_HEADER_MAKE_ALL_FILES_FILTER_OUT = \ + moc_qftp_p.cpp \ + moc_qnetworkaccessdebugpipebackend_p.cpp \ + moc_qnetworkaccessftpbackend_p.cpp \ + moc_qnetworksession.cpp \ + moc_qnetworkconfigmanager.cpp \ + moc_qnetworkconfigmanager_p.cpp \ + moc_qnetworksession_p.cpp \ + moc_qbearerengine_p.cpp \ + moc_qbearerplugin_p.cpp \ + moc_qudpsocket.cpp \ + moc_qsslsocket_openssl_p.cpp \ + + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES_FILTER_OUT = \ + qftp.moc + +include $(REP_DIR)/lib/mk/qt5.inc + +INC_DIR += $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtNetwork/$(QT_VERSION) \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtNetwork/$(QT_VERSION)/QtNetwork \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION) \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION)/QtCore + +LIBS += qt5_core zlib libc libssl diff --git a/libports/lib/mk/qt5_network_generated.inc b/libports/lib/mk/qt5_network_generated.inc new file mode 100644 index 0000000000..29b018c828 --- /dev/null +++ b/libports/lib/mk/qt5_network_generated.inc @@ -0,0 +1,171 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_NO_USING_NAMESPACE -DQT_BUILD_NETWORK_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_CORE_LIB + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/include/QtCore/5.1.0 \ + qtbase/include/QtCore/5.1.0/QtCore \ + qtbase/include/QtNetwork \ + qtbase/include/QtNetwork/5.1.0 \ + qtbase/include/QtNetwork/5.1.0/QtNetwork \ + qtbase/mkspecs/genode-g++ \ + qtbase/src/network \ + qtbase/src/network/kernel \ + +QT_SOURCES += \ + qftp.cpp \ + qhttpnetworkheader.cpp \ + qhttpnetworkrequest.cpp \ + qhttpnetworkreply.cpp \ + qhttpnetworkconnection.cpp \ + qhttpnetworkconnectionchannel.cpp \ + qnetworkaccessauthenticationmanager.cpp \ + qnetworkaccessmanager.cpp \ + qnetworkaccesscache.cpp \ + qnetworkaccessbackend.cpp \ + qnetworkaccessdebugpipebackend.cpp \ + qnetworkaccessfilebackend.cpp \ + qnetworkaccesscachebackend.cpp \ + qnetworkaccessftpbackend.cpp \ + qnetworkcookie.cpp \ + qnetworkcookiejar.cpp \ + qnetworkrequest.cpp \ + qnetworkreply.cpp \ + qnetworkreplyimpl.cpp \ + qnetworkreplydataimpl.cpp \ + qnetworkreplyhttpimpl.cpp \ + qnetworkreplyfileimpl.cpp \ + qabstractnetworkcache.cpp \ + qnetworkdiskcache.cpp \ + qhttpthreaddelegate.cpp \ + qhttpmultipart.cpp \ + qnetworksession.cpp \ + qnetworkconfigmanager.cpp \ + qnetworkconfiguration.cpp \ + qnetworkconfigmanager_p.cpp \ + qbearerengine.cpp \ + qbearerplugin.cpp \ + qsharednetworksession.cpp \ + qauthenticator.cpp \ + qdnslookup.cpp \ + qhostaddress.cpp \ + qhostinfo.cpp \ + qurlinfo.cpp \ + qnetworkproxy.cpp \ + qnetworkinterface.cpp \ + qdnslookup_unix.cpp \ + qhostinfo_unix.cpp \ + qnetworkinterface_unix.cpp \ + qnetworkproxy_generic.cpp \ + qabstractsocketengine.cpp \ + qhttpsocketengine.cpp \ + qsocks5socketengine.cpp \ + qabstractsocket.cpp \ + qtcpsocket.cpp \ + qudpsocket.cpp \ + qtcpserver.cpp \ + qlocalsocket.cpp \ + qlocalserver.cpp \ + qnativesocketengine.cpp \ + qnativesocketengine_unix.cpp \ + qlocalsocket_unix.cpp \ + qlocalserver_unix.cpp \ + qssl.cpp \ + qsslcertificate.cpp \ + qsslconfiguration.cpp \ + qsslcipher.cpp \ + qsslerror.cpp \ + qsslkey.cpp \ + qsslsocket.cpp \ + qsslsocket_openssl.cpp \ + qsslsocket_openssl_symbols.cpp \ + qsslcertificateextension.cpp \ + qsslcontext.cpp \ + moc_qhttpnetworkreply_p.cpp \ + moc_qnetworkaccesscache_p.cpp \ + moc_qnetworkaccessbackend_p.cpp \ + moc_qnetworkaccessdebugpipebackend_p.cpp \ + moc_qnetworkaccessfilebackend_p.cpp \ + moc_qnetworkaccessftpbackend_p.cpp \ + moc_qnetworkcookiejar.cpp \ + moc_qnetworkreply.cpp \ + moc_qnetworkreplyhttpimpl_p.cpp \ + moc_qabstractnetworkcache.cpp \ + moc_qnetworkdiskcache.cpp \ + moc_qhttpthreaddelegate_p.cpp \ + moc_qhttpmultipart.cpp \ + moc_qnetworkconfigmanager_p.cpp \ + moc_qnetworksession_p.cpp \ + moc_qbearerplugin_p.cpp \ + moc_qdnslookup_p.cpp \ + moc_qhostinfo_p.cpp \ + moc_qabstractsocketengine_p.cpp \ + moc_qhttpsocketengine_p.cpp \ + moc_qsocks5socketengine_p.cpp \ + moc_qtcpsocket.cpp \ + moc_qudpsocket.cpp \ + moc_qnativesocketengine_p.cpp \ + moc_qsslsocket_openssl_p.cpp + +QT_VPATH += \ + qtbase/src/network/access \ + qtbase/src/network/bearer \ + qtbase/src/network/kernel \ + qtbase/src/network/socket \ + qtbase/src/network/ssl \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + moc_qftp_p.cpp \ + moc_qhttpnetworkreply_p.cpp \ + moc_qhttpnetworkconnection_p.cpp \ + moc_qhttpnetworkconnectionchannel_p.cpp \ + moc_qnetworkaccessmanager.cpp \ + moc_qnetworkaccesscache_p.cpp \ + moc_qnetworkaccessbackend_p.cpp \ + moc_qnetworkaccessdebugpipebackend_p.cpp \ + moc_qnetworkaccessfilebackend_p.cpp \ + moc_qnetworkaccessftpbackend_p.cpp \ + moc_qnetworkcookiejar.cpp \ + moc_qnetworkreply.cpp \ + moc_qnetworkreplyimpl_p.cpp \ + moc_qnetworkreplydataimpl_p.cpp \ + moc_qnetworkreplyhttpimpl_p.cpp \ + moc_qnetworkreplyfileimpl_p.cpp \ + moc_qabstractnetworkcache.cpp \ + moc_qnetworkdiskcache.cpp \ + moc_qhttpthreaddelegate_p.cpp \ + moc_qhttpmultipart.cpp \ + moc_qnetworksession.cpp \ + moc_qnetworkconfigmanager.cpp \ + moc_qnetworkconfigmanager_p.cpp \ + moc_qnetworksession_p.cpp \ + moc_qbearerengine_p.cpp \ + moc_qbearerplugin_p.cpp \ + moc_qdnslookup.cpp \ + moc_qdnslookup_p.cpp \ + moc_qhostinfo_p.cpp \ + moc_qabstractsocketengine_p.cpp \ + moc_qhttpsocketengine_p.cpp \ + moc_qsocks5socketengine_p.cpp \ + moc_qabstractsocket.cpp \ + moc_qtcpsocket.cpp \ + moc_qudpsocket.cpp \ + moc_qtcpserver.cpp \ + moc_qlocalserver.cpp \ + moc_qlocalsocket.cpp \ + moc_qnativesocketengine_p.cpp \ + moc_qsslsocket.cpp \ + moc_qsslsocket_openssl_p.cpp + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + qftp.moc + diff --git a/libports/lib/mk/qt5_printsupport.mk b/libports/lib/mk/qt5_printsupport.mk new file mode 100644 index 0000000000..5ed30c525b --- /dev/null +++ b/libports/lib/mk/qt5_printsupport.mk @@ -0,0 +1,32 @@ +include $(REP_DIR)/lib/import/import-qt5_printsupport.mk + +SHARED_LIB = yes + +# use default warning level to avoid noise when compiling contrib code +CC_WARN = + +include $(REP_DIR)/lib/mk/qt5_printsupport_generated.inc + +# remove unneeded files to prevent moc warnings +COMPILER_MOC_HEADER_MAKE_ALL_FILES_FILTER_OUT = \ + moc_qabstractprintdialog.cpp \ + moc_qprintpreviewwidget.cpp \ + moc_qpagesetupdialog.cpp \ + moc_qprintdialog.cpp \ + moc_qprintpreviewdialog.cpp \ + moc_qpagesetupdialog_unix_p.cpp \ + + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES_FILTER_OUT = \ + qprintpreviewwidget.moc \ + qprintdialog_unix.moc \ + qprintpreviewdialog.moc \ + +include $(REP_DIR)/lib/mk/qt5.inc + +INC_DIR += $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtPrintSupport/$(QT_VERSION)/QtPrintSupport \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtWidgets/$(QT_VERSION)/QtWidgets \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtGui/$(QT_VERSION)/QtGui \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION)/QtCore \ + +LIBS += qt5_core diff --git a/libports/lib/mk/qt5_printsupport_generated.inc b/libports/lib/mk/qt5_printsupport_generated.inc new file mode 100644 index 0000000000..9b2d7d7d90 --- /dev/null +++ b/libports/lib/mk/qt5_printsupport_generated.inc @@ -0,0 +1,68 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_NO_USING_NAMESPACE -DQT_BUILD_PRINTSUPPORT_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/include/QtCore/5.1.0 \ + qtbase/include/QtCore/5.1.0/QtCore \ + qtbase/include/QtGui \ + qtbase/include/QtGui/5.1.0 \ + qtbase/include/QtGui/5.1.0/QtGui \ + qtbase/include/QtPrintSupport \ + qtbase/include/QtPrintSupport/5.1.0 \ + qtbase/include/QtPrintSupport/5.1.0/QtPrintSupport \ + qtbase/include/QtWidgets \ + qtbase/include/QtWidgets/5.1.0 \ + qtbase/include/QtWidgets/5.1.0/QtWidgets \ + qtbase/mkspecs/genode-g++ \ + qtbase/src/plugins/printsupport/cups \ + qtbase/src/printsupport \ + qtbase/src/printsupport/dialogs \ + +QT_SOURCES += \ + qpaintengine_alpha.cpp \ + qpaintengine_preview.cpp \ + qprintengine_pdf.cpp \ + qprinter.cpp \ + qprinterinfo.cpp \ + qplatformprintplugin.cpp \ + qplatformprintersupport.cpp \ + qprintpreviewwidget.cpp \ + qprintdialog_unix.cpp \ + qpagesetupdialog_unix.cpp \ + qabstractprintdialog.cpp \ + qpagesetupdialog.cpp \ + qprintpreviewdialog.cpp \ + qrc_qprintdialog.cpp \ + moc_qplatformprintplugin.cpp \ + moc_qabstractprintdialog.cpp \ + moc_qpagesetupdialog_unix_p.cpp + +QT_VPATH += \ + qtbase/src/printsupport/dialogs \ + qtbase/src/printsupport/kernel \ + qtbase/src/printsupport/widgets \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + moc_qplatformprintplugin.cpp \ + moc_qprintpreviewwidget.cpp \ + moc_qabstractprintdialog.cpp \ + moc_qpagesetupdialog.cpp \ + moc_qprintdialog.cpp \ + moc_qprintpreviewdialog.cpp \ + moc_qpagesetupdialog_unix_p.cpp + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + qprintpreviewwidget.moc \ + qprintdialog_unix.moc \ + qprintpreviewdialog.moc + diff --git a/libports/lib/mk/qt5_qnitpickerviewwidget.mk b/libports/lib/mk/qt5_qnitpickerviewwidget.mk new file mode 100644 index 0000000000..7274fb1445 --- /dev/null +++ b/libports/lib/mk/qt5_qnitpickerviewwidget.mk @@ -0,0 +1,10 @@ +SHARED_LIB = yes + +SRC_CC = qnitpickerviewwidget.cpp + +HEADERS += qnitpickerviewwidget.h + +vpath %.h $(REP_DIR)/include/qt5/qnitpickerviewwidget +vpath %.cpp $(REP_DIR)/src/lib/qt5/qnitpickerviewwidget + +LIBS += qt5_gui qt5_widgets qt5_core libc diff --git a/libports/lib/mk/qt5_qpa_nitpicker.mk b/libports/lib/mk/qt5_qpa_nitpicker.mk new file mode 100644 index 0000000000..fab439a693 --- /dev/null +++ b/libports/lib/mk/qt5_qpa_nitpicker.mk @@ -0,0 +1,38 @@ +include $(REP_DIR)/lib/import/import-qt5_qpa_nitpicker.mk + +# get the correct harfbuzz header included +QT_DEFINES += -DQT_BUILD_GUI_LIB + +SRC_CC = qgenericunixeventdispatcher.cpp \ + qunixeventdispatcher.cpp \ + qbasicfontdatabase.cpp \ + qfontengine_ft.cpp + +SRC_CC += main.cpp \ + qnitpickerintegration.cpp \ + qnitpickerwindowsurface.cpp \ + moc_qnitpickerplatformwindow.cpp \ + moc_qnitpickerwindowsurface.cpp \ + moc_qnitpickerintegrationplugin.cpp \ + qevdevkeyboardhandler.cpp \ + moc_qunixeventdispatcher_qpa_p.cpp \ + moc_qevdevkeyboardhandler_p.cpp + +INC_DIR += $(REP_DIR)/contrib/$(QT5)/qtbase/src/platformsupport/eventdispatchers \ + $(REP_DIR)/contrib/$(QT5)/qtbase/src/platformsupport/input/evdevkeyboard \ + $(REP_DIR)/contrib/$(QT5)/qtbase/src/platformsupport/fontdatabases/basic \ + $(REP_DIR)/contrib/$(QT5)/qtbase/src/3rdparty/harfbuzz/src \ + $(REP_DIR)/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtGui/$(QT_VERSION) \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtGui/$(QT_VERSION)/QtGui \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION) \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION)/QtCore + +LIBS += qt5_xml qt5_gui qt5_core libm freetype + +vpath % $(call select_from_repositories,contrib/$(QT5)/qtbase/src/platformsupport/eventdispatchers) +vpath % $(call select_from_repositories,contrib/$(QT5)/qtbase/src/platformsupport/input/evdevkeyboard) +vpath % $(call select_from_repositories,contrib/$(QT5)/qtbase/src/platformsupport/fontdatabases/basic) +vpath % $(call select_from_repositories,contrib/$(QT5)/qtbase/src/gui/text) +vpath % $(call select_from_repositories,src/lib/qt5/qtbase/src/plugins/platforms/nitpicker) + diff --git a/libports/lib/mk/qt5_qpluginwidget.mk b/libports/lib/mk/qt5_qpluginwidget.mk new file mode 100644 index 0000000000..4185e93e62 --- /dev/null +++ b/libports/lib/mk/qt5_qpluginwidget.mk @@ -0,0 +1,10 @@ +SHARED_LIB = yes + +SRC_CC = qpluginwidget.cpp + +HEADERS += qpluginwidget.h + +vpath %.h $(REP_DIR)/include/qt5/qpluginwidget +vpath %.cpp $(REP_DIR)/src/lib/qt5/qpluginwidget + +LIBS += qt5_gui qt5_widgets qt5_network qt5_qnitpickerviewwidget qt5_core libc zlib diff --git a/libports/lib/mk/qt5_script.mk b/libports/lib/mk/qt5_script.mk new file mode 100644 index 0000000000..fcf5b5bad0 --- /dev/null +++ b/libports/lib/mk/qt5_script.mk @@ -0,0 +1,22 @@ +include $(REP_DIR)/lib/import/import-qt5_script.mk + +SHARED_LIB = yes + +# use default warning level to avoid noise when compiling contrib code +CC_WARN = + +include $(REP_DIR)/lib/mk/qt5_script_generated.inc + +QT_INCPATH += qtscript/src/script/api \ + +# remove unneeded files to prevent moc warnings +COMPILER_MOC_HEADER_MAKE_ALL_FILES_FILTER_OUT = \ + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES_FILTER_OUT = \ + +include $(REP_DIR)/lib/mk/qt5.inc + +INC_DIR += $(REP_DIR)/contrib/$(QT5)/qtscript/include/QtScript/$(QT_VERSION)/QtScript \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION)/QtCore \ + +LIBS += qt5_core pthread diff --git a/libports/lib/mk/qt5_script_generated.inc b/libports/lib/mk/qt5_script_generated.inc new file mode 100644 index 0000000000..cd81bac2d4 --- /dev/null +++ b/libports/lib/mk/qt5_script_generated.inc @@ -0,0 +1,266 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DJSC=QTJSC -Djscyyparse=qtjscyyparse -Djscyylex=qtjscyylex -Djscyyerror=qtjscyyerror -DWTF=QTWTF -DQT_NO_USING_NAMESPACE -DQLALR_NO_QSCRIPTGRAMMAR_DEBUG_INFO -DQT_BUILD_SCRIPT_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DBUILDING_QT__=1 -DNDEBUG -DLOG_DISABLED=1 -DBUILDING_QT__ -DBUILDING_JavaScriptCore -DBUILDING_WTF -DWTF_USE_JAVASCRIPTCORE_BINDINGS=1 -DWTF_CHANGES=1 -DNDEBUG -DJS_NO_EXPORT -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_CORE_LIB + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/include/QtCore/5.1.0 \ + qtbase/include/QtCore/5.1.0/QtCore \ + qtbase/mkspecs/genode-g++ \ + qtscript/include \ + qtscript/include/QtScript \ + qtscript/include/QtScript/5.1.0 \ + qtscript/include/QtScript/5.1.0/QtScript \ + qtscript/src/3rdparty/javascriptcore \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/API \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/assembler \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/bytecode \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/bytecompiler \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/debugger \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/ForwardingHeaders \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/generated \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/interpreter \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/jit \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/parser \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/pcre \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/profiler \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/runtime \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/tmp \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wrec \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/symbian \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/yarr \ + qtscript/src/3rdparty/javascriptcore/WebKit/qt/Api \ + qtscript/src/script \ + qtscript/src/script/../3rdparty/javascriptcore/JavaScriptCore/unicode \ + qtscript/src/script/parser \ + +QT_SOURCES += \ + pcre_compile.cpp \ + pcre_exec.cpp \ + pcre_tables.cpp \ + pcre_ucp_searchfuncs.cpp \ + pcre_xclass.cpp \ + JSBase.cpp \ + JSCallbackConstructor.cpp \ + JSCallbackFunction.cpp \ + JSCallbackObject.cpp \ + JSClassRef.cpp \ + JSContextRef.cpp \ + JSObjectRef.cpp \ + JSStringRef.cpp \ + JSValueRef.cpp \ + OpaqueJSString.cpp \ + ARMAssembler.cpp \ + MacroAssemblerARM.cpp \ + CodeBlock.cpp \ + JumpTable.cpp \ + Opcode.cpp \ + SamplingTool.cpp \ + StructureStubInfo.cpp \ + BytecodeGenerator.cpp \ + NodesCodegen.cpp \ + DebuggerActivation.cpp \ + DebuggerCallFrame.cpp \ + Debugger.cpp \ + CallFrame.cpp \ + Interpreter.cpp \ + RegisterFile.cpp \ + ExecutableAllocatorFixedVMPool.cpp \ + ExecutableAllocatorPosix.cpp \ + ExecutableAllocatorSymbian.cpp \ + ExecutableAllocatorWin.cpp \ + ExecutableAllocator.cpp \ + JITArithmetic.cpp \ + JITCall.cpp \ + JIT.cpp \ + JITOpcodes.cpp \ + JITPropertyAccess.cpp \ + JITStubs.cpp \ + Lexer.cpp \ + Nodes.cpp \ + ParserArena.cpp \ + Parser.cpp \ + Profile.cpp \ + ProfileGenerator.cpp \ + ProfileNode.cpp \ + Profiler.cpp \ + ArgList.cpp \ + Arguments.cpp \ + ArrayConstructor.cpp \ + ArrayPrototype.cpp \ + BooleanConstructor.cpp \ + BooleanObject.cpp \ + BooleanPrototype.cpp \ + CallData.cpp \ + Collector.cpp \ + CommonIdentifiers.cpp \ + Completion.cpp \ + ConstructData.cpp \ + DateConstructor.cpp \ + DateConversion.cpp \ + DateInstance.cpp \ + DatePrototype.cpp \ + ErrorConstructor.cpp \ + Error.cpp \ + ErrorInstance.cpp \ + ErrorPrototype.cpp \ + ExceptionHelpers.cpp \ + Executable.cpp \ + FunctionConstructor.cpp \ + FunctionPrototype.cpp \ + GetterSetter.cpp \ + GlobalEvalFunction.cpp \ + Identifier.cpp \ + InitializeThreading.cpp \ + InternalFunction.cpp \ + JSActivation.cpp \ + JSAPIValueWrapper.cpp \ + JSArray.cpp \ + JSByteArray.cpp \ + JSCell.cpp \ + JSFunction.cpp \ + JSGlobalData.cpp \ + JSGlobalObject.cpp \ + JSGlobalObjectFunctions.cpp \ + JSImmediate.cpp \ + JSLock.cpp \ + JSNotAnObject.cpp \ + JSNumberCell.cpp \ + JSObject.cpp \ + JSONObject.cpp \ + JSPropertyNameIterator.cpp \ + JSStaticScopeObject.cpp \ + JSString.cpp \ + JSValue.cpp \ + JSVariableObject.cpp \ + JSWrapperObject.cpp \ + LiteralParser.cpp \ + Lookup.cpp \ + MarkStackPosix.cpp \ + MarkStackSymbian.cpp \ + MarkStackWin.cpp \ + MarkStack.cpp \ + MathObject.cpp \ + NativeErrorConstructor.cpp \ + NativeErrorPrototype.cpp \ + NumberConstructor.cpp \ + NumberObject.cpp \ + NumberPrototype.cpp \ + ObjectConstructor.cpp \ + ObjectPrototype.cpp \ + Operations.cpp \ + PropertyDescriptor.cpp \ + PropertyNameArray.cpp \ + PropertySlot.cpp \ + PrototypeFunction.cpp \ + RegExpConstructor.cpp \ + RegExp.cpp \ + RegExpObject.cpp \ + RegExpPrototype.cpp \ + ScopeChain.cpp \ + SmallStrings.cpp \ + StringConstructor.cpp \ + StringObject.cpp \ + StringPrototype.cpp \ + StructureChain.cpp \ + Structure.cpp \ + TimeoutChecker.cpp \ + UString.cpp \ + UStringImpl.cpp \ + Assertions.cpp \ + ByteArray.cpp \ + CurrentTime.cpp \ + DateMath.cpp \ + dtoa.cpp \ + FastMalloc.cpp \ + HashTable.cpp \ + MainThread.cpp \ + MainThreadQt.cpp \ + ThreadingQt.cpp \ + RandomNumber.cpp \ + RefCountedLeakCounter.cpp \ + BlockAllocatorSymbian.cpp \ + RegisterFileAllocatorSymbian.cpp \ + ThreadingNone.cpp \ + Threading.cpp \ + TypeTraits.cpp \ + CollatorDefault.cpp \ + CollatorICU.cpp \ + UTF8.cpp \ + RegexCompiler.cpp \ + RegexInterpreter.cpp \ + RegexJIT.cpp \ + Grammar.cpp \ + TCSystemAlloc.cpp \ + qscriptclass.cpp \ + qscriptclasspropertyiterator.cpp \ + qscriptcontext.cpp \ + qscriptcontextinfo.cpp \ + qscriptengine.cpp \ + qscriptengineagent.cpp \ + qscriptextensionplugin.cpp \ + qscriptprogram.cpp \ + qscriptstring.cpp \ + qscriptvalue.cpp \ + qscriptvalueiterator.cpp \ + qscriptable.cpp \ + qscriptfunction.cpp \ + qscriptobject.cpp \ + qscriptclassobject.cpp \ + qscriptvariant.cpp \ + qscriptqobject.cpp \ + qscriptglobalobject.cpp \ + qscriptactivationobject.cpp \ + qscriptstaticscopeobject.cpp \ + qscriptdeclarativeobject.cpp \ + qscriptdeclarativeclass.cpp \ + qscriptast.cpp \ + qscriptastvisitor.cpp \ + qscriptgrammar.cpp \ + qscriptsyntaxchecker.cpp \ + qscriptlexer.cpp \ + moc_qscriptextensionplugin.cpp + +QT_VPATH += \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/API \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/assembler \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/bytecode \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/bytecompiler \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/debugger \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/generated \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/interpreter \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/jit \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/parser \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/pcre \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/profiler \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/runtime \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/qt \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/symbian \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/icu \ + qtscript/src/3rdparty/javascriptcore/JavaScriptCore/yarr \ + qtscript/src/script/api \ + qtscript/src/script/bridge \ + qtscript/src/script/parser \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + moc_qscriptengine.cpp \ + moc_qscriptextensionplugin.cpp \ + moc_qscriptqobject_p.cpp + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + MainThreadQt.moc \ + ThreadingQt.moc + diff --git a/libports/lib/mk/qt5_scriptclassic.mk b/libports/lib/mk/qt5_scriptclassic.mk new file mode 100644 index 0000000000..bf47294cdd --- /dev/null +++ b/libports/lib/mk/qt5_scriptclassic.mk @@ -0,0 +1,31 @@ +include $(REP_DIR)/lib/import/import-qt5_scriptclassic.mk + +SHARED_LIB = yes + +# use default warning level to avoid noise when compiling contrib code +CC_WARN = + +include $(REP_DIR)/lib/mk/qt5_scriptclassic_generated.inc + +include $(REP_DIR)/lib/mk/qt5.inc + +INC_DIR += $(REP_DIR)/src/lib/qt5/qtbase/mkspecs/qws/genode-generic-g++ \ + $(REP_DIR)/include/qt5 \ + $(REP_DIR)/contrib/include \ + $(REP_DIR)/include/qt5/qtbase/QtCore \ + $(REP_DIR)/contrib/qtbase/include/QtCore \ + $(REP_DIR)/include/qt5/QtCore/private \ + $(REP_DIR)/contrib/qtbase/include/QtCore/private \ + $(REP_DIR)/include/qt5/QtScript \ + $(REP_DIR)/contrib/qtscriptclassic-1.0_1-opensource/include/QtScript \ + $(REP_DIR)/contrib/qtscriptclassic-1.0_1-opensource/src \ + $(REP_DIR)/src/lib/qt5/qtbase/src/corelib/global + +LIBS += qt5_core libc + +vpath % $(REP_DIR)/include/qt5/QtScript +vpath % $(REP_DIR)/include/qt5/QtScript/private + +vpath % $(REP_DIR)/src/lib/qt5/qtbase/src/script + +vpath % $(REP_DIR)/contrib/qtscriptclassic-1.0_1-opensource/src diff --git a/libports/lib/mk/qt5_scriptclassic_generated.inc b/libports/lib/mk/qt5_scriptclassic_generated.inc new file mode 100644 index 0000000000..7a51aec133 --- /dev/null +++ b/libports/lib/mk/qt5_scriptclassic_generated.inc @@ -0,0 +1,60 @@ +QT_SOURCES = \ + qscriptasm.cpp \ + qscriptast.cpp \ + qscriptastvisitor.cpp \ + qscriptcompiler.cpp \ + qscriptecmaarray.cpp \ + qscriptecmaboolean.cpp \ + qscriptecmacore.cpp \ + qscriptecmadate.cpp \ + qscriptecmafunction.cpp \ + qscriptecmaglobal.cpp \ + qscriptecmamath.cpp \ + qscriptecmanumber.cpp \ + qscriptecmaobject.cpp \ + qscriptecmaregexp.cpp \ + qscriptecmastring.cpp \ + qscriptecmaerror.cpp \ + qscriptcontext_p.cpp \ + qscriptengine.cpp \ + qscriptengine_p.cpp \ + qscriptengineagent.cpp \ + qscriptextenumeration.cpp \ + qscriptextvariant.cpp \ + qscriptcontext.cpp \ + qscriptcontextinfo.cpp \ + qscriptfunction.cpp \ + qscriptgrammar.cpp \ + qscriptlexer.cpp \ + qscriptclassdata.cpp \ + qscriptparser.cpp \ + qscriptprettypretty.cpp \ + qscriptxmlgenerator.cpp \ + qscriptsyntaxchecker.cpp \ + qscriptstring.cpp \ + qscriptclass.cpp \ + qscriptclasspropertyiterator.cpp \ + qscriptvalueiteratorimpl.cpp \ + qscriptvalueiterator.cpp \ + qscriptvalueimpl.cpp \ + qscriptvalue.cpp \ + qscriptextqobject.cpp \ + qscriptable.cpp \ + qscriptextensionplugin.cpp \ + moc_qscriptextensionplugin.cpp + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in spec-qt4.mk) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + moc_qscriptengine.cpp \ + moc_qscriptextensionplugin.cpp + +# source files generated from existing source files ('%.moc: %.cpp' rule in spec-qt4.mk) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + qscriptextqobject.moc diff --git a/libports/lib/mk/qt5_sql.mk b/libports/lib/mk/qt5_sql.mk new file mode 100644 index 0000000000..a728cef3e8 --- /dev/null +++ b/libports/lib/mk/qt5_sql.mk @@ -0,0 +1,20 @@ +include $(REP_DIR)/lib/import/import-qt5_sql.mk + +SHARED_LIB = yes + +# use default warning level to avoid noise when compiling contrib code +CC_WARN = + +include $(REP_DIR)/lib/mk/qt5_sql_generated.inc + +# remove unneeded files to prevent moc warnings +COMPILER_MOC_HEADER_MAKE_ALL_FILES_FILTER_OUT = \ + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES_FILTER_OUT = \ + +include $(REP_DIR)/lib/mk/qt5.inc + +INC_DIR += $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtSql/$(QT_VERSION)/QtSql \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION)/QtCore + +LIBS += qt5_core diff --git a/libports/lib/mk/qt5_sql_generated.inc b/libports/lib/mk/qt5_sql_generated.inc new file mode 100644 index 0000000000..a336ad8e94 --- /dev/null +++ b/libports/lib/mk/qt5_sql_generated.inc @@ -0,0 +1,57 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_NO_USING_NAMESPACE -DQT_BUILD_SQL_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_CORE_LIB + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/include/QtCore/5.1.0 \ + qtbase/include/QtCore/5.1.0/QtCore \ + qtbase/include/QtSql \ + qtbase/include/QtSql/5.1.0 \ + qtbase/include/QtSql/5.1.0/QtSql \ + qtbase/mkspecs/genode-g++ \ + qtbase/src/sql \ + +QT_SOURCES += \ + qsqlquery.cpp \ + qsqldatabase.cpp \ + qsqlfield.cpp \ + qsqlrecord.cpp \ + qsqldriver.cpp \ + qsqldriverplugin.cpp \ + qsqlerror.cpp \ + qsqlresult.cpp \ + qsqlindex.cpp \ + qsqlcachedresult.cpp \ + qsqlquerymodel.cpp \ + qsqltablemodel.cpp \ + qsqlrelationaldelegate.cpp \ + qsqlrelationaltablemodel.cpp \ + moc_qsqldriver.cpp \ + moc_qsqldriverplugin.cpp \ + moc_qsqlquerymodel.cpp \ + moc_qsqltablemodel.cpp \ + moc_qsqlrelationaltablemodel.cpp + +QT_VPATH += \ + qtbase/src/sql/kernel \ + qtbase/src/sql/models \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + moc_qsqldriver.cpp \ + moc_qsqldriverplugin.cpp \ + moc_qsqlquerymodel.cpp \ + moc_qsqltablemodel.cpp \ + moc_qsqlrelationaltablemodel.cpp + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + + diff --git a/libports/lib/mk/qt5_ui_tools.mk b/libports/lib/mk/qt5_ui_tools.mk new file mode 100644 index 0000000000..7abf4454de --- /dev/null +++ b/libports/lib/mk/qt5_ui_tools.mk @@ -0,0 +1,17 @@ +include $(REP_DIR)/lib/import/import-qt5_ui_tools.mk + +SHARED_LIB = yes + +# use default warning level to avoid noise when compiling contrib code +CC_WARN = + +include $(REP_DIR)/lib/mk/qt5_ui_tools_generated.inc + +# remove unneeded files to prevent moc warnings +COMPILER_MOC_HEADER_MAKE_ALL_FILES_FILTER_OUT = \ + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES_FILTER_OUT = \ + +include $(REP_DIR)/lib/mk/qt5.inc + +LIBS += qt5_widgets qt5_core diff --git a/libports/lib/mk/qt5_ui_tools_generated.inc b/libports/lib/mk/qt5_ui_tools_generated.inc new file mode 100644 index 0000000000..37cc8de2c6 --- /dev/null +++ b/libports/lib/mk/qt5_ui_tools_generated.inc @@ -0,0 +1,47 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_BUILD_UITOOLS_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQFORMINTERNAL_NAMESPACE -DQT_DESIGNER_STATIC -DQT_DESIGNER -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/include/QtGui \ + qtbase/include/QtWidgets \ + qtbase/mkspecs/genode-g++ \ + qttools/include \ + qttools/include/QtUiTools \ + qttools/include/QtUiTools/5.1.0 \ + qttools/include/QtUiTools/5.1.0/QtUiTools \ + qttools/src/designer/src/lib/uilib \ + qttools/src/designer/src/uitools \ + +QT_SOURCES += \ + quiloader.cpp \ + abstractformbuilder.cpp \ + formbuilder.cpp \ + ui4.cpp \ + properties.cpp \ + formbuilderextra.cpp \ + resourcebuilder.cpp \ + textbuilder.cpp \ + moc_quiloader.cpp \ + moc_properties_p.cpp + +QT_VPATH += \ + qttools/src/designer/src/lib/uilib \ + qttools/src/designer/src/uitools \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + moc_quiloader.cpp \ + moc_properties_p.cpp + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + quiloader.moc + diff --git a/libports/lib/mk/qt5_version.inc b/libports/lib/mk/qt5_version.inc new file mode 100644 index 0000000000..a1671738c3 --- /dev/null +++ b/libports/lib/mk/qt5_version.inc @@ -0,0 +1,2 @@ +QT_VERSION := 5.1.0 +QT5 := qt-everywhere-opensource-src-$(QT_VERSION) diff --git a/libports/lib/mk/qt5_webcore.mk b/libports/lib/mk/qt5_webcore.mk new file mode 100644 index 0000000000..06dea9831e --- /dev/null +++ b/libports/lib/mk/qt5_webcore.mk @@ -0,0 +1,27 @@ +include $(REP_DIR)/lib/import/import-qt5_webcore.mk + +SHARED_LIB = yes + +# additional defines for the Genode version +CC_OPT += -DSQLITE_NO_SYNC=1 -DSQLITE_THREADSAFE=0 + +# enable C++ functions that use C99 math functions (disabled by default in the Genode tool chain) +CC_CXX_OPT += -D_GLIBCXX_USE_C99_MATH + +# use default warning level to avoid noise when compiling contrib code +CC_WARN = -Wno-deprecated-declarations + +CC_OPT_sqlite3 += -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast + +# make sure that the correct "Comment.h" file gets included +QT_INCPATH := qtwebkit/Source/WebCore/dom + +include $(REP_DIR)/lib/mk/qt5_webcore_generated.inc + +QT_INCPATH += qtwebkit/Source/WebCore/generated + +QT_VPATH += qtwebkit/Source/WebCore/generated + +include $(REP_DIR)/lib/mk/qt5.inc + +LIBS += qt5_wtf qt5_jscore qt5_sql qt5_network qt5_core icu jpeg libpng zlib libc libm diff --git a/libports/lib/mk/qt5_webcore_generated.inc b/libports/lib/mk/qt5_webcore_generated.inc new file mode 100644 index 0000000000..834caa7945 --- /dev/null +++ b/libports/lib/mk/qt5_webcore_generated.inc @@ -0,0 +1,1935 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DSQLITE_CORE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DBUILDING_QT__=1 -DNDEBUG -DENABLE_3D_RENDERING=1 -DENABLE_BLOB=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_CSS_BOX_DECORATION_BREAK=1 -DENABLE_CSS_COMPOSITING=1 -DENABLE_CSS_EXCLUSIONS=1 -DENABLE_CSS_FILTERS=1 -DENABLE_CSS_IMAGE_SET=1 -DENABLE_CSS_REGIONS=1 -DENABLE_CSS_STICKY_POSITION=1 -DENABLE_DATALIST_ELEMENT=1 -DENABLE_DETAILS_ELEMENT=1 -DENABLE_FAST_MOBILE_SCROLLING=1 -DENABLE_FILTERS=1 -DENABLE_FTPDIR=1 -DENABLE_GESTURE_EVENTS=1 -DENABLE_ICONDATABASE=1 -DENABLE_IFRAME_SEAMLESS=1 -DENABLE_INPUT_TYPE_COLOR=1 -DENABLE_INSPECTOR=1 -DENABLE_INSPECTOR_SERVER=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_LEGACY_NOTIFICATIONS=1 -DENABLE_LEGACY_VIEWPORT_ADAPTION=1 -DENABLE_LEGACY_VENDOR_PREFIXES=1 -DENABLE_LINK_PREFETCH=1 -DENABLE_METER_ELEMENT=1 -DENABLE_MHTML=1 -DENABLE_MUTATION_OBSERVERS=1 -DENABLE_NOTIFICATIONS=1 -DENABLE_PAGE_VISIBILITY_API=1 -DENABLE_PROGRESS_ELEMENT=1 -DENABLE_RESOLUTION_MEDIA_QUERY=1 -DENABLE_REQUEST_ANIMATION_FRAME=1 -DENABLE_SHARED_WORKERS=1 -DENABLE_SMOOTH_SCROLLING=1 -DENABLE_SQL_DATABASE=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_TOUCH_ADJUSTMENT=1 -DENABLE_TOUCH_EVENTS=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_WEB_TIMING=1 -DENABLE_WORKERS=1 -DENABLE_XHR_TIMEOUT=1 -DWTF_USE_TILED_BACKING_STORE=1 -DHAVE_QTPRINTSUPPORT=1 -DHAVE_QSTYLE=1 -DHAVE_QTTESTLIB=1 -DWTF_USE_LIBJPEG=1 -DWTF_USE_LIBPNG=1 -DPLUGIN_ARCHITECTURE_UNSUPPORTED=1 -DENABLE_TOUCH_SLIDER=1 -DENABLE_ACCELERATED_2D_CANVAS=0 -DENABLE_ANIMATION_API=0 -DENABLE_BATTERY_STATUS=0 -DENABLE_CSP_NEXT=0 -DENABLE_CSS_GRID_LAYOUT=0 -DENABLE_CSS_HIERARCHIES=0 -DENABLE_CSS_IMAGE_ORIENTATION=0 -DENABLE_CSS_IMAGE_RESOLUTION=0 -DENABLE_CSS_SHADERS=0 -DENABLE_CSS_VARIABLES=0 -DENABLE_CSS3_BACKGROUND=0 -DENABLE_CSS3_CONDITIONAL_RULES=0 -DENABLE_CSS3_TEXT=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_DATAGRID=0 -DENABLE_DATA_TRANSFER_ITEMS=0 -DENABLE_DEVICE_ORIENTATION=0 -DENABLE_DIRECTORY_UPLOAD=0 -DENABLE_DOWNLOAD_ATTRIBUTE=0 -DENABLE_FILE_SYSTEM=0 -DENABLE_FULLSCREEN_API=0 -DENABLE_GAMEPAD=0 -DENABLE_GEOLOCATION=0 -DENABLE_HIGH_DPI_CANVAS=0 -DENABLE_INDEXED_DATABASE=0 -DENABLE_INPUT_SPEECH=0 -DENABLE_INPUT_TYPE_DATE=0 -DENABLE_INPUT_TYPE_DATETIME=0 -DENABLE_INPUT_TYPE_DATETIMELOCAL=0 -DENABLE_INPUT_TYPE_MONTH=0 -DENABLE_INPUT_TYPE_TIME=0 -DENABLE_INPUT_TYPE_WEEK=0 -DENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 -DENABLE_LINK_PRERENDER=0 -DENABLE_MATHML=0 -DENABLE_MEDIA_SOURCE=0 -DENABLE_MEDIA_STATISTICS=0 -DENABLE_MEDIA_STREAM=0 -DENABLE_MICRODATA=0 -DENABLE_NAVIGATOR_CONTENT_UTILS=0 -DENABLE_NETSCAPE_PLUGIN_API=0 -DENABLE_NETWORK_INFO=0 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_PROXIMITY_EVENTS=0 -DENABLE_QUOTA=0 -DENABLE_SCRIPTED_SPEECH=0 -DENABLE_SHADOW_DOM=0 -DENABLE_STYLE_SCOPED=0 -DENABLE_SVG_DOM_OBJC_BINDINGS=0 -DENABLE_TEXT_AUTOSIZING=0 -DENABLE_TEXT_NOTIFICATIONS_ONLY=0 -DENABLE_TOUCH_ICON_LOADING=0 -DENABLE_VIBRATION=0 -DENABLE_VIDEO=0 -DENABLE_VIDEO_TRACK=0 -DENABLE_WEBGL=0 -DENABLE_WEB_AUDIO=0 -DENABLE_XSLT=0 -DBUILDING_WebCore -DBUILDING_WEBKIT -DQT_ASCII_CAST_WARNINGS -DSTATICALLY_LINKED_WITH_JavaScriptCore -DSTATICALLY_LINKED_WITH_WTF -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_SQL_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/include/QtCore/5.1.0 \ + qtbase/include/QtCore/5.1.0/QtCore \ + qtbase/include/QtGui \ + qtbase/include/QtGui/5.1.0 \ + qtbase/include/QtGui/5.1.0/QtGui \ + qtbase/include/QtNetwork \ + qtbase/include/QtSql \ + qtbase/mkspecs/genode-g++ \ + qtbase/src/3rdparty/sqlite \ + qtscript/include \ + qtscript/include/QtScript \ + qtwebkit/Source \ + qtwebkit/Source/JavaScriptCore \ + qtwebkit/Source/JavaScriptCore/API \ + qtwebkit/Source/JavaScriptCore/assembler \ + qtwebkit/Source/JavaScriptCore/bytecode \ + qtwebkit/Source/JavaScriptCore/bytecompiler \ + qtwebkit/Source/JavaScriptCore/debugger \ + qtwebkit/Source/JavaScriptCore/dfg \ + qtwebkit/Source/JavaScriptCore/disassembler \ + qtwebkit/Source/JavaScriptCore/ForwardingHeaders \ + qtwebkit/Source/JavaScriptCore/heap \ + qtwebkit/Source/JavaScriptCore/interpreter \ + qtwebkit/Source/JavaScriptCore/jit \ + qtwebkit/Source/JavaScriptCore/llint \ + qtwebkit/Source/JavaScriptCore/parser \ + qtwebkit/Source/JavaScriptCore/profiler \ + qtwebkit/Source/JavaScriptCore/runtime \ + qtwebkit/Source/JavaScriptCore/tools \ + qtwebkit/Source/JavaScriptCore/yarr \ + qtwebkit/Source/ThirdParty \ + qtwebkit/Source/WebCore \ + qtwebkit/Source/WebCore/accessibility \ + qtwebkit/Source/WebCore/bindings \ + qtwebkit/Source/WebCore/bindings/generic \ + qtwebkit/Source/WebCore/bindings/js \ + qtwebkit/Source/WebCore/bridge \ + qtwebkit/Source/WebCore/bridge/c \ + qtwebkit/Source/WebCore/bridge/jsc \ + qtwebkit/Source/WebCore/bridge/qt \ + qtwebkit/Source/WebCore/css \ + qtwebkit/Source/WebCore/dom \ + qtwebkit/Source/WebCore/dom/default \ + qtwebkit/Source/WebCore/editing \ + qtwebkit/Source/WebCore/fileapi \ + qtwebkit/Source/WebCore/history \ + qtwebkit/Source/WebCore/html \ + qtwebkit/Source/WebCore/html/canvas \ + qtwebkit/Source/WebCore/html/parser \ + qtwebkit/Source/WebCore/html/shadow \ + qtwebkit/Source/WebCore/html/track \ + qtwebkit/Source/WebCore/inspector \ + qtwebkit/Source/WebCore/loader \ + qtwebkit/Source/WebCore/loader/appcache \ + qtwebkit/Source/WebCore/loader/archive \ + qtwebkit/Source/WebCore/loader/archive/mhtml \ + qtwebkit/Source/WebCore/loader/cache \ + qtwebkit/Source/WebCore/loader/icon \ + qtwebkit/Source/WebCore/mathml \ + qtwebkit/Source/WebCore/Modules/filesystem \ + qtwebkit/Source/WebCore/Modules/geolocation \ + qtwebkit/Source/WebCore/Modules/indexeddb \ + qtwebkit/Source/WebCore/Modules/navigatorcontentutils \ + qtwebkit/Source/WebCore/Modules/notifications \ + qtwebkit/Source/WebCore/Modules/quota \ + qtwebkit/Source/WebCore/Modules/webaudio \ + qtwebkit/Source/WebCore/Modules/webdatabase \ + qtwebkit/Source/WebCore/Modules/websockets \ + qtwebkit/Source/WebCore/page \ + qtwebkit/Source/WebCore/page/animation \ + qtwebkit/Source/WebCore/page/qt \ + qtwebkit/Source/WebCore/page/scrolling \ + qtwebkit/Source/WebCore/platform \ + qtwebkit/Source/WebCore/platform/animation \ + qtwebkit/Source/WebCore/platform/audio \ + qtwebkit/Source/WebCore/platform/graphics \ + qtwebkit/Source/WebCore/platform/graphics/cpu/arm \ + qtwebkit/Source/WebCore/platform/graphics/cpu/arm/filters \ + qtwebkit/Source/WebCore/platform/graphics/filters \ + qtwebkit/Source/WebCore/platform/graphics/filters/texmap \ + qtwebkit/Source/WebCore/platform/graphics/opengl \ + qtwebkit/Source/WebCore/platform/graphics/opentype \ + qtwebkit/Source/WebCore/platform/graphics/qt \ + qtwebkit/Source/WebCore/platform/graphics/surfaces \ + qtwebkit/Source/WebCore/platform/graphics/texmap \ + qtwebkit/Source/WebCore/platform/graphics/transforms \ + qtwebkit/Source/WebCore/platform/image-decoders \ + qtwebkit/Source/WebCore/platform/image-decoders/bmp \ + qtwebkit/Source/WebCore/platform/image-decoders/gif \ + qtwebkit/Source/WebCore/platform/image-decoders/ico \ + qtwebkit/Source/WebCore/platform/image-decoders/jpeg \ + qtwebkit/Source/WebCore/platform/image-decoders/png \ + qtwebkit/Source/WebCore/platform/image-decoders/webp \ + qtwebkit/Source/WebCore/platform/leveldb \ + qtwebkit/Source/WebCore/platform/mock \ + qtwebkit/Source/WebCore/platform/network \ + qtwebkit/Source/WebCore/platform/network/qt \ + qtwebkit/Source/WebCore/platform/qt \ + qtwebkit/Source/WebCore/platform/sql \ + qtwebkit/Source/WebCore/platform/text \ + qtwebkit/Source/WebCore/platform/text/transcoder \ + qtwebkit/Source/WebCore/plugins \ + qtwebkit/Source/WebCore/rendering \ + qtwebkit/Source/WebCore/rendering/mathml \ + qtwebkit/Source/WebCore/rendering/style \ + qtwebkit/Source/WebCore/rendering/svg \ + qtwebkit/Source/WebCore/storage \ + qtwebkit/Source/WebCore/svg \ + qtwebkit/Source/WebCore/svg/animation \ + qtwebkit/Source/WebCore/svg/graphics \ + qtwebkit/Source/WebCore/svg/graphics/filters \ + qtwebkit/Source/WebCore/svg/properties \ + qtwebkit/Source/WebCore/testing \ + qtwebkit/Source/WebCore/testing/js \ + qtwebkit/Source/WebCore/websockets \ + qtwebkit/Source/WebCore/workers \ + qtwebkit/Source/WebCore/xml \ + qtwebkit/Source/WebCore/xml/parser \ + qtwebkit/Source/WTF \ + +QT_SOURCES += \ + Geolocation.cpp \ + GeolocationController.cpp \ + NavigatorGeolocation.cpp \ + AbstractDatabase.cpp \ + DOMWindowWebDatabase.cpp \ + Database.cpp \ + DatabaseAuthorizer.cpp \ + DatabaseContext.cpp \ + DatabaseSync.cpp \ + WorkerContextWebDatabase.cpp \ + AccessibilityMenuList.cpp \ + AccessibilityMenuListOption.cpp \ + AccessibilityMenuListPopup.cpp \ + AccessibilityMockObject.cpp \ + AccessibilityProgressIndicator.cpp \ + AccessibilitySpinButton.cpp \ + ActiveDOMCallback.cpp \ + BindingSecurity.cpp \ + RuntimeEnabledFeatures.cpp \ + ScriptControllerBase.cpp \ + ArrayValue.cpp \ + BindingState.cpp \ + CallbackFunction.cpp \ + DOMObjectHashTableMap.cpp \ + DOMWrapperWorld.cpp \ + Dictionary.cpp \ + GCController.cpp \ + JSArrayBufferCustom.cpp \ + JSAttrCustom.cpp \ + JSBlobCustom.cpp \ + JSCDATASectionCustom.cpp \ + JSCSSFontFaceRuleCustom.cpp \ + JSCSSImportRuleCustom.cpp \ + JSCSSMediaRuleCustom.cpp \ + JSCSSPageRuleCustom.cpp \ + JSCSSRuleCustom.cpp \ + JSCSSRuleListCustom.cpp \ + JSCSSStyleDeclarationCustom.cpp \ + JSCSSStyleRuleCustom.cpp \ + JSCSSValueCustom.cpp \ + JSCallbackData.cpp \ + JSCanvasRenderingContext2DCustom.cpp \ + JSCanvasRenderingContextCustom.cpp \ + JSClipboardCustom.cpp \ + JSConsoleCustom.cpp \ + JSCoordinatesCustom.cpp \ + JSCustomXPathNSResolver.cpp \ + JSDictionary.cpp \ + JSDOMBinding.cpp \ + JSDOMFormDataCustom.cpp \ + JSDOMGlobalObject.cpp \ + JSDOMImplementationCustom.cpp \ + JSDOMMimeTypeArrayCustom.cpp \ + JSDOMPluginArrayCustom.cpp \ + JSDOMPluginCustom.cpp \ + JSDOMStringListCustom.cpp \ + JSDOMStringMapCustom.cpp \ + JSDOMTokenListCustom.cpp \ + JSDOMWindowBase.cpp \ + JSDOMWindowCustom.cpp \ + JSDOMWindowShell.cpp \ + JSDOMWindowWebAudioCustom.cpp \ + JSDOMWindowWebSocketCustom.cpp \ + JSDOMWrapper.cpp \ + JSDataViewCustom.cpp \ + JSDesktopNotificationsCustom.cpp \ + JSDeviceMotionEventCustom.cpp \ + JSDeviceOrientationEventCustom.cpp \ + JSDocumentCustom.cpp \ + JSElementCustom.cpp \ + JSErrorHandler.cpp \ + JSEventCustom.cpp \ + JSEventListener.cpp \ + JSEventTargetCustom.cpp \ + JSExceptionBase.cpp \ + JSFileReaderCustom.cpp \ + JSGeolocationCustom.cpp \ + JSHTMLAllCollectionCustom.cpp \ + JSHTMLAppletElementCustom.cpp \ + JSHTMLCanvasElementCustom.cpp \ + JSHTMLCollectionCustom.cpp \ + JSHTMLDocumentCustom.cpp \ + JSHTMLElementCustom.cpp \ + JSHTMLEmbedElementCustom.cpp \ + JSHTMLFormControlsCollectionCustom.cpp \ + JSHTMLFormElementCustom.cpp \ + JSHTMLFrameElementCustom.cpp \ + JSHTMLFrameSetElementCustom.cpp \ + JSHTMLInputElementCustom.cpp \ + JSHTMLLinkElementCustom.cpp \ + JSHTMLMediaElementCustom.cpp \ + JSHTMLObjectElementCustom.cpp \ + JSHTMLOptionsCollectionCustom.cpp \ + JSHTMLOutputElementCustom.cpp \ + JSHTMLSelectElementCustom.cpp \ + JSHTMLStyleElementCustom.cpp \ + JSHistoryCustom.cpp \ + JSImageConstructor.cpp \ + JSImageDataCustom.cpp \ + JSInjectedScriptHostCustom.cpp \ + JSInjectedScriptManager.cpp \ + JSInspectorFrontendHostCustom.cpp \ + JSLazyEventListener.cpp \ + JSLocationCustom.cpp \ + JSMainThreadExecState.cpp \ + JSMediaListCustom.cpp \ + JSMemoryInfoCustom.cpp \ + JSMessageChannelCustom.cpp \ + JSMessageEventCustom.cpp \ + JSMessagePortCustom.cpp \ + JSMicroDataItemValueCustom.cpp \ + JSMutationCallbackCustom.cpp \ + JSMutationObserverCustom.cpp \ + JSNamedNodeMapCustom.cpp \ + JSNodeCustom.cpp \ + JSNodeFilterCondition.cpp \ + JSNodeFilterCustom.cpp \ + JSNodeIteratorCustom.cpp \ + JSNodeListCustom.cpp \ + JSNotificationCustom.cpp \ + JSPluginElementFunctions.cpp \ + JSPopStateEventCustom.cpp \ + JSProcessingInstructionCustom.cpp \ + JSRequestAnimationFrameCallbackCustom.cpp \ + JSStorageCustom.cpp \ + JSStyleSheetCustom.cpp \ + JSStyleSheetListCustom.cpp \ + JSTextCustom.cpp \ + JSTouchCustom.cpp \ + JSTouchListCustom.cpp \ + JSTreeWalkerCustom.cpp \ + JSWebKitAnimationCustom.cpp \ + JSWebKitAnimationListCustom.cpp \ + JSWebKitCSSKeyframeRuleCustom.cpp \ + JSWebKitCSSKeyframesRuleCustom.cpp \ + JSWebKitPointCustom.cpp \ + JSXMLHttpRequestCustom.cpp \ + JSXMLHttpRequestUploadCustom.cpp \ + JSXPathResultCustom.cpp \ + PageScriptDebugServer.cpp \ + ScheduledAction.cpp \ + ScriptCachedFrameData.cpp \ + ScriptCallStackFactory.cpp \ + ScriptController.cpp \ + ScriptControllerQt.cpp \ + ScriptDebugServer.cpp \ + ScriptEventListener.cpp \ + ScriptFunctionCall.cpp \ + ScriptGCEvent.cpp \ + ScriptObject.cpp \ + ScriptProfile.cpp \ + ScriptState.cpp \ + ScriptValue.cpp \ + SerializedScriptValue.cpp \ + IdentifierRep.cpp \ + NP_jsobject.cpp \ + CRuntimeObject.cpp \ + c_class.cpp \ + c_instance.cpp \ + c_runtime.cpp \ + c_utility.cpp \ + BridgeJSC.cpp \ + npruntime.cpp \ + qt_class.cpp \ + qt_instance.cpp \ + qt_pixmapruntime.cpp \ + qt_runtime.cpp \ + runtime_array.cpp \ + runtime_method.cpp \ + runtime_object.cpp \ + runtime_root.cpp \ + WebCoreTestSupport.cpp \ + DOMFilePath.cpp \ + DOMFileSystem.cpp \ + DOMFileSystemBase.cpp \ + DOMFileSystemSync.cpp \ + DOMWindowFileSystem.cpp \ + DirectoryEntry.cpp \ + DirectoryEntrySync.cpp \ + DirectoryReader.cpp \ + DirectoryReaderSync.cpp \ + Entry.cpp \ + EntryArray.cpp \ + EntryArraySync.cpp \ + EntryBase.cpp \ + EntrySync.cpp \ + FileEntry.cpp \ + FileEntrySync.cpp \ + FileWriter.cpp \ + FileWriterBase.cpp \ + FileWriterSync.cpp \ + LocalFileSystem.cpp \ + WorkerContextFileSystem.cpp \ + NavigatorContentUtils.cpp \ + DOMWindowNotifications.cpp \ + Notification.cpp \ + NotificationCenter.cpp \ + NotificationController.cpp \ + WorkerContextNotifications.cpp \ + BasicShapeFunctions.cpp \ + CSSAspectRatioValue.cpp \ + CSSBasicShapes.cpp \ + CSSBorderImageSliceValue.cpp \ + CSSBorderImage.cpp \ + CSSCalculationValue.cpp \ + CSSCanvasValue.cpp \ + CSSCharsetRule.cpp \ + CSSComputedStyleDeclaration.cpp \ + CSSCrossfadeValue.cpp \ + CSSCursorImageValue.cpp \ + CSSFontFace.cpp \ + CSSFontFaceRule.cpp \ + CSSFontFaceSrcValue.cpp \ + CSSFontSelector.cpp \ + CSSFontFaceSource.cpp \ + CSSFunctionValue.cpp \ + CSSGradientValue.cpp \ + CSSImageValue.cpp \ + CSSImageGeneratorValue.cpp \ + CSSImageSetValue.cpp \ + CSSImportRule.cpp \ + CSSInheritedValue.cpp \ + CSSInitialValue.cpp \ + CSSLineBoxContainValue.cpp \ + CSSMediaRule.cpp \ + CSSOMUtils.cpp \ + CSSPageRule.cpp \ + CSSParser.cpp \ + CSSParserValues.cpp \ + CSSPrimitiveValue.cpp \ + CSSProperty.cpp \ + CSSPropertySourceData.cpp \ + CSSReflectValue.cpp \ + CSSRule.cpp \ + CSSRuleList.cpp \ + CSSSelector.cpp \ + CSSSelectorList.cpp \ + CSSSegmentedFontFace.cpp \ + CSSStyleRule.cpp \ + CSSStyleSheet.cpp \ + CSSTimingFunctionValue.cpp \ + CSSToStyleMap.cpp \ + CSSUnicodeRangeValue.cpp \ + CSSValue.cpp \ + CSSValueList.cpp \ + CSSValuePool.cpp \ + FontFeatureValue.cpp \ + FontValue.cpp \ + LengthFunctions.cpp \ + MediaFeatureNames.cpp \ + MediaList.cpp \ + MediaQuery.cpp \ + MediaQueryEvaluator.cpp \ + MediaQueryExp.cpp \ + MediaQueryList.cpp \ + MediaQueryListListener.cpp \ + MediaQueryMatcher.cpp \ + PropertySetCSSStyleDeclaration.cpp \ + RGBColor.cpp \ + RuleFeature.cpp \ + RuleSet.cpp \ + SelectorChecker.cpp \ + ShadowValue.cpp \ + StyleBuilder.cpp \ + StyleInvalidationAnalysis.cpp \ + StyleMedia.cpp \ + StylePropertySet.cpp \ + StylePropertyShorthand.cpp \ + StyleResolver.cpp \ + StyleRule.cpp \ + StyleRuleImport.cpp \ + StyleScopeResolver.cpp \ + StyleSheet.cpp \ + StyleSheetContents.cpp \ + StyleSheetList.cpp \ + ViewportStyleResolver.cpp \ + WebKitCSSArrayFunctionValue.cpp \ + WebKitCSSFilterValue.cpp \ + WebKitCSSKeyframeRule.cpp \ + WebKitCSSKeyframesRule.cpp \ + WebKitCSSMatrix.cpp \ + WebKitCSSMixFunctionValue.cpp \ + WebKitCSSRegionRule.cpp \ + WebKitCSSSVGDocumentValue.cpp \ + WebKitCSSShaderValue.cpp \ + WebKitCSSTransformValue.cpp \ + WebKitCSSViewportRule.cpp \ + ActiveDOMObject.cpp \ + Attr.cpp \ + BeforeTextInsertedEvent.cpp \ + BeforeUnloadEvent.cpp \ + CDATASection.cpp \ + CharacterData.cpp \ + CheckedRadioButtons.cpp \ + ChildListMutationScope.cpp \ + ChildNodeList.cpp \ + ClassNodeList.cpp \ + ClientRect.cpp \ + ClientRectList.cpp \ + Clipboard.cpp \ + ClipboardEvent.cpp \ + Comment.cpp \ + ComposedShadowTreeWalker.cpp \ + CompositionEvent.cpp \ + ContainerNode.cpp \ + ContainerNodeAlgorithms.cpp \ + ContextDestructionObserver.cpp \ + ContextFeatures.cpp \ + CustomEvent.cpp \ + DecodedDataDocumentParser.cpp \ + DeviceMotionController.cpp \ + DeviceMotionData.cpp \ + DeviceMotionEvent.cpp \ + DeviceOrientationController.cpp \ + DeviceOrientationData.cpp \ + DeviceOrientationEvent.cpp \ + Document.cpp \ + DocumentEventQueue.cpp \ + DocumentFragment.cpp \ + DocumentMarkerController.cpp \ + DocumentMarker.cpp \ + DocumentOrderedMap.cpp \ + DocumentParser.cpp \ + DocumentStyleSheetCollection.cpp \ + DocumentType.cpp \ + DOMCoreException.cpp \ + DOMError.cpp \ + DOMImplementation.cpp \ + DOMNamedFlowCollection.cpp \ + DOMStringList.cpp \ + DOMStringMap.cpp \ + DatasetDOMStringMap.cpp \ + Element.cpp \ + ElementAttributeData.cpp \ + ElementRareData.cpp \ + ElementShadow.cpp \ + EntityReference.cpp \ + ErrorEvent.cpp \ + Event.cpp \ + EventContext.cpp \ + EventDispatchMediator.cpp \ + EventDispatcher.cpp \ + EventException.cpp \ + EventListenerMap.cpp \ + EventNames.cpp \ + EventTarget.cpp \ + ExceptionBase.cpp \ + ExceptionCodePlaceholder.cpp \ + GenericEventQueue.cpp \ + GestureEvent.cpp \ + IconURL.cpp \ + IdTargetObserver.cpp \ + IdTargetObserverRegistry.cpp \ + LiveNodeList.cpp \ + KeyboardEvent.cpp \ + MessageChannel.cpp \ + MessageEvent.cpp \ + MessagePort.cpp \ + MessagePortChannel.cpp \ + MicroDataItemList.cpp \ + MouseEvent.cpp \ + MouseRelatedEvent.cpp \ + MutationEvent.cpp \ + MutationObserver.cpp \ + MutationObserverInterestGroup.cpp \ + MutationObserverRegistration.cpp \ + MutationRecord.cpp \ + WebKitNamedFlow.cpp \ + NamedFlowCollection.cpp \ + NamedNodeMap.cpp \ + NameNodeList.cpp \ + Node.cpp \ + NodeFilterCondition.cpp \ + NodeFilter.cpp \ + NodeIterator.cpp \ + NodeRareData.cpp \ + NodeRenderingContext.cpp \ + Notation.cpp \ + StaticHashSetNodeList.cpp \ + OverflowEvent.cpp \ + PageTransitionEvent.cpp \ + PendingScript.cpp \ + PopStateEvent.cpp \ + Position.cpp \ + PositionIterator.cpp \ + ProcessingInstruction.cpp \ + ProgressEvent.cpp \ + PropertyNodeList.cpp \ + QualifiedName.cpp \ + Range.cpp \ + RangeException.cpp \ + RegisteredEventListener.cpp \ + ScopedEventQueue.cpp \ + ScriptedAnimationController.cpp \ + ScriptableDocumentParser.cpp \ + ScriptElement.cpp \ + ScriptExecutionContext.cpp \ + ScriptRunner.cpp \ + SecurityContext.cpp \ + SelectorQuery.cpp \ + ShadowRoot.cpp \ + SpaceSplitString.cpp \ + StaticNodeList.cpp \ + StyledElement.cpp \ + StyleElement.cpp \ + TagNodeList.cpp \ + Text.cpp \ + TextEvent.cpp \ + Touch.cpp \ + TouchEvent.cpp \ + TouchList.cpp \ + Traversal.cpp \ + TreeScope.cpp \ + TreeScopeAdopter.cpp \ + TreeWalker.cpp \ + UIEvent.cpp \ + UIEventWithKeyState.cpp \ + UserGestureIndicator.cpp \ + UserTypingGestureIndicator.cpp \ + ViewportArguments.cpp \ + WebCoreMemoryInstrumentation.cpp \ + WebKitAnimationEvent.cpp \ + WebKitTransitionEvent.cpp \ + WheelEvent.cpp \ + WindowEventContext.cpp \ + PlatformMessagePortChannel.cpp \ + AsyncFileStream.cpp \ + Blob.cpp \ + BlobURL.cpp \ + File.cpp \ + FileException.cpp \ + FileList.cpp \ + FileReader.cpp \ + FileReaderLoader.cpp \ + FileReaderSync.cpp \ + FileThread.cpp \ + ThreadableBlobRegistry.cpp \ + WebKitBlobBuilder.cpp \ + BackForwardController.cpp \ + BackForwardListImpl.cpp \ + CachedFrame.cpp \ + CachedPage.cpp \ + HistoryItem.cpp \ + HistoryItemQt.cpp \ + PageCache.cpp \ + BaseButtonInputType.cpp \ + BaseCheckableInputType.cpp \ + BaseChooserOnlyDateAndTimeInputType.cpp \ + BaseClickableWithKeyInputType.cpp \ + BaseDateAndTimeInputType.cpp \ + BaseMultipleFieldsDateAndTimeInputType.cpp \ + BaseTextInputType.cpp \ + ButtonInputType.cpp \ + CheckboxInputType.cpp \ + ClassList.cpp \ + ColorInputType.cpp \ + DOMFormData.cpp \ + DOMSettableTokenList.cpp \ + DOMTokenList.cpp \ + DOMURL.cpp \ + DateInputType.cpp \ + DateTimeInputType.cpp \ + DateTimeLocalInputType.cpp \ + EmailInputType.cpp \ + FTPDirectoryDocument.cpp \ + FileInputType.cpp \ + FormAssociatedElement.cpp \ + FormController.cpp \ + FormDataList.cpp \ + HTMLAllCollection.cpp \ + HTMLCollection.cpp \ + HTMLDocument.cpp \ + HTMLFormControlsCollection.cpp \ + HTMLImageLoader.cpp \ + HTMLNameCollection.cpp \ + HTMLOptionsCollection.cpp \ + HTMLOutputElement.cpp \ + HTMLParserErrorCodes.cpp \ + HTMLPropertiesCollection.cpp \ + HTMLTableRowsCollection.cpp \ + HTMLViewSourceDocument.cpp \ + HiddenInputType.cpp \ + ImageData.cpp \ + ImageDocument.cpp \ + ImageInputType.cpp \ + InputType.cpp \ + InputTypeNames.cpp \ + LabelableElement.cpp \ + LabelsNodeList.cpp \ + LinkRelAttribute.cpp \ + MediaDocument.cpp \ + MicroDataItemValue.cpp \ + MonthInputType.cpp \ + NumberInputType.cpp \ + PasswordInputType.cpp \ + PluginDocument.cpp \ + RadioInputType.cpp \ + RadioNodeList.cpp \ + RangeInputType.cpp \ + ResetInputType.cpp \ + SearchInputType.cpp \ + StepRange.cpp \ + SubmitInputType.cpp \ + TelephoneInputType.cpp \ + TextDocument.cpp \ + TextFieldInputType.cpp \ + TextInputType.cpp \ + TimeInputType.cpp \ + TypeAhead.cpp \ + URLInputType.cpp \ + ValidationMessage.cpp \ + ValidityState.cpp \ + WeekInputType.cpp \ + CanvasGradient.cpp \ + CanvasPattern.cpp \ + CanvasRenderingContext.cpp \ + CanvasRenderingContext2D.cpp \ + CanvasStyle.cpp \ + DataView.cpp \ + CSSPreloadScanner.cpp \ + HTMLConstructionSite.cpp \ + HTMLDocumentParser.cpp \ + HTMLElementStack.cpp \ + HTMLEntityParser.cpp \ + HTMLEntitySearch.cpp \ + HTMLFormattingElementList.cpp \ + HTMLMetaCharsetParser.cpp \ + HTMLParserIdioms.cpp \ + HTMLParserScheduler.cpp \ + HTMLPreloadScanner.cpp \ + HTMLScriptRunner.cpp \ + HTMLSourceTracker.cpp \ + HTMLTokenizer.cpp \ + HTMLTreeBuilder.cpp \ + HTMLViewSourceParser.cpp \ + TextDocumentParser.cpp \ + TextViewSourceParser.cpp \ + XSSAuditor.cpp \ + ContentDistributor.cpp \ + ContentSelectorQuery.cpp \ + DateTimeEditElement.cpp \ + DateTimeFieldElement.cpp \ + DateTimeFieldElements.cpp \ + DateTimeNumericFieldElement.cpp \ + DateTimeSymbolicFieldElement.cpp \ + DetailsMarkerControl.cpp \ + InsertionPoint.cpp \ + ImageInnerElement.cpp \ + MediaControls.cpp \ + MediaControlsApple.cpp \ + MeterShadowElement.cpp \ + ProgressShadowElement.cpp \ + SelectRuleFeatureSet.cpp \ + SliderThumbElement.cpp \ + SpinButtonElement.cpp \ + TextControlInnerElements.cpp \ + DOMApplicationCache.cpp \ + ManifestParser.cpp \ + ArchiveResource.cpp \ + ArchiveResourceCollection.cpp \ + CachedMetadata.cpp \ + MemoryCache.cpp \ + CachedCSSStyleSheet.cpp \ + CachedFont.cpp \ + CachedImage.cpp \ + CachedRawResource.cpp \ + CachedResourceHandle.cpp \ + CachedResource.cpp \ + CachedScript.cpp \ + CachedShader.cpp \ + CachedSVGDocument.cpp \ + CachedXSLStyleSheet.cpp \ + CookieJar.cpp \ + CrossOriginAccessControl.cpp \ + CrossOriginPreflightResultCache.cpp \ + CachedResourceLoader.cpp \ + CachedResourceRequest.cpp \ + CachedResourceRequestInitiators.cpp \ + DocumentLoadTiming.cpp \ + DocumentLoader.cpp \ + DocumentThreadableLoader.cpp \ + DocumentWriter.cpp \ + EmptyClients.cpp \ + FormState.cpp \ + FormSubmission.cpp \ + FrameLoadRequest.cpp \ + FrameLoader.cpp \ + FrameLoaderStateMachine.cpp \ + HistoryController.cpp \ + FTPDirectoryParser.cpp \ + IconController.cpp \ + IconDatabaseBase.cpp \ + IconLoader.cpp \ + ImageLoader.cpp \ + LinkLoader.cpp \ + LoaderStrategy.cpp \ + MainResourceLoader.cpp \ + MixedContentChecker.cpp \ + NavigationAction.cpp \ + NetscapePlugInStreamLoader.cpp \ + PingLoader.cpp \ + PlaceholderDocument.cpp \ + PolicyCallback.cpp \ + PolicyChecker.cpp \ + ProgressTracker.cpp \ + Prerenderer.cpp \ + PrerendererClient.cpp \ + NavigationScheduler.cpp \ + ResourceBuffer.cpp \ + ResourceLoader.cpp \ + ResourceLoadNotifier.cpp \ + ResourceLoadScheduler.cpp \ + SinkDocument.cpp \ + SubframeLoader.cpp \ + SubresourceLoader.cpp \ + SubstituteData.cpp \ + TextResourceDecoder.cpp \ + ThreadableLoader.cpp \ + AnimationBase.cpp \ + AnimationController.cpp \ + CompositeAnimation.cpp \ + CSSPropertyAnimation.cpp \ + ImplicitAnimation.cpp \ + KeyframeAnimation.cpp \ + WebKitAnimation.cpp \ + WebKitAnimationList.cpp \ + BarInfo.cpp \ + Chrome.cpp \ + Console.cpp \ + ContentSecurityPolicy.cpp \ + ContextMenuController.cpp \ + Crypto.cpp \ + DeviceController.cpp \ + DiagnosticLoggingKeys.cpp \ + DOMSelection.cpp \ + DOMTimer.cpp \ + DOMWindow.cpp \ + DOMWindowExtension.cpp \ + DOMWindowProperty.cpp \ + DragController.cpp \ + EventHandler.cpp \ + EventSource.cpp \ + FeatureObserver.cpp \ + FocusController.cpp \ + Frame.cpp \ + FrameActionScheduler.cpp \ + FrameDestructionObserver.cpp \ + FrameTree.cpp \ + FrameView.cpp \ + GestureTapHighlighter.cpp \ + GroupSettings.cpp \ + History.cpp \ + Location.cpp \ + MemoryInfo.cpp \ + MouseEventWithHitTestResults.cpp \ + Navigator.cpp \ + NavigatorBase.cpp \ + OriginAccessEntry.cpp \ + Page.cpp \ + PageGroup.cpp \ + PageGroupLoadDeferrer.cpp \ + PageVisibilityState.cpp \ + Performance.cpp \ + PerformanceEntry.cpp \ + PerformanceEntryList.cpp \ + PerformanceNavigation.cpp \ + PerformanceResourceTiming.cpp \ + PerformanceTiming.cpp \ + PrintContext.cpp \ + Screen.cpp \ + ScrollingConstraints.cpp \ + ScrollingCoordinator.cpp \ + SecurityOrigin.cpp \ + SecurityPolicy.cpp \ + Settings.cpp \ + SpatialNavigation.cpp \ + TouchAdjustment.cpp \ + SuspendableTimer.cpp \ + UserContentURLPattern.cpp \ + WindowFeatures.cpp \ + WindowFocusAllowedIndicator.cpp \ + PluginData.cpp \ + DOMPluginArray.cpp \ + DOMPlugin.cpp \ + PluginMainThreadScheduler.cpp \ + DOMMimeType.cpp \ + DOMMimeTypeArray.cpp \ + Animation.cpp \ + AnimationList.cpp \ + Arena.cpp \ + BidiContext.cpp \ + DateTimeFormat.cpp \ + Hyphenation.cpp \ + LocaleNone.cpp \ + LocaleToScriptMappingDefault.cpp \ + PlatformLocale.cpp \ + QuotedPrintable.cpp \ + CalculationValue.cpp \ + Clock.cpp \ + ClockGeneric.cpp \ + ContentType.cpp \ + CrossThreadCopier.cpp \ + DateComponents.cpp \ + Decimal.cpp \ + DragData.cpp \ + DragImage.cpp \ + EventTracer.cpp \ + FileChooser.cpp \ + FileIconLoader.cpp \ + FileStream.cpp \ + FileSystem.cpp \ + HistogramSupport.cpp \ + FontDescription.cpp \ + FontFallbackList.cpp \ + FontFamily.cpp \ + FontFeatureSettings.cpp \ + BitmapImage.cpp \ + Color.cpp \ + CrossfadeGeneratedImage.cpp \ + FloatPoint3D.cpp \ + FloatPoint.cpp \ + FloatQuad.cpp \ + FloatRect.cpp \ + FloatSize.cpp \ + FontData.cpp \ + Font.cpp \ + FontCache.cpp \ + FontFastPath.cpp \ + LayoutBoxExtent.cpp \ + LayoutRect.cpp \ + GeneratedImage.cpp \ + GeneratorGeneratedImage.cpp \ + GlyphPageTreeNode.cpp \ + Gradient.cpp \ + GraphicsContext.cpp \ + GraphicsLayer.cpp \ + GraphicsLayerAnimation.cpp \ + GraphicsLayerUpdater.cpp \ + GraphicsLayerTransform.cpp \ + GraphicsTypes.cpp \ + Image.cpp \ + ImageBuffer.cpp \ + ImageOrientation.cpp \ + ImageSource.cpp \ + IntRect.cpp \ + Path.cpp \ + PathTraversalState.cpp \ + Pattern.cpp \ + FontQt.cpp \ + Region.cpp \ + RoundedRect.cpp \ + SegmentedFontData.cpp \ + ShadowBlur.cpp \ + SVGGlyph.cpp \ + SimpleFontData.cpp \ + StringTruncator.cpp \ + GraphicsSurface.cpp \ + GraphicsSurfaceQt.cpp \ + SurrogatePairAwareTextIterator.cpp \ + TextRun.cpp \ + TiledBackingStore.cpp \ + AffineTransform.cpp \ + TransformationMatrix.cpp \ + MatrixTransformOperation.cpp \ + Matrix3DTransformOperation.cpp \ + PerspectiveTransformOperation.cpp \ + RotateTransformOperation.cpp \ + ScaleTransformOperation.cpp \ + SkewTransformOperation.cpp \ + TransformOperations.cpp \ + TransformState.cpp \ + TranslateTransformOperation.cpp \ + WidthIterator.cpp \ + ImageDecoder.cpp \ + BMPImageDecoder.cpp \ + BMPImageReader.cpp \ + GIFImageDecoder.cpp \ + GIFImageReader.cpp \ + KillRingNone.cpp \ + KURL.cpp \ + Language.cpp \ + LayoutTestSupport.cpp \ + Length.cpp \ + LengthBox.cpp \ + LineEnding.cpp \ + LevelDBDatabase.cpp \ + LevelDBTransaction.cpp \ + LevelDBWriteBatch.cpp \ + LinkHash.cpp \ + Logging.cpp \ + MemoryPressureHandler.cpp \ + MemoryUsageSupportQt.cpp \ + MIMETypeRegistry.cpp \ + DeviceMotionClientMock.cpp \ + DeviceOrientationClientMock.cpp \ + GeolocationClientMock.cpp \ + ScrollbarThemeMock.cpp \ + AuthenticationChallengeBase.cpp \ + BlobData.cpp \ + BlobRegistryImpl.cpp \ + BlobResourceHandle.cpp \ + Credential.cpp \ + CredentialStorage.cpp \ + FormData.cpp \ + FormDataBuilder.cpp \ + HTTPHeaderMap.cpp \ + HTTPParsers.cpp \ + HTTPRequest.cpp \ + HTTPValidation.cpp \ + MIMEHeader.cpp \ + NetworkStateNotifier.cpp \ + ParsedContentType.cpp \ + ProtectionSpace.cpp \ + ProxyServer.cpp \ + ResourceErrorBase.cpp \ + ResourceHandle.cpp \ + ResourceLoadTiming.cpp \ + ResourceRequestBase.cpp \ + ResourceResponseBase.cpp \ + RegularExpression.cpp \ + PlatformEvent.cpp \ + PlatformInstrumentation.cpp \ + PlatformMemoryInstrumentation.cpp \ + RuntimeApplicationChecks.cpp \ + RunLoop.cpp \ + SchemeRegistry.cpp \ + ScrollableArea.cpp \ + ScrollAnimator.cpp \ + Scrollbar.cpp \ + ScrollbarTheme.cpp \ + ScrollbarThemeComposite.cpp \ + ScrollView.cpp \ + SharedBuffer.cpp \ + SharedBufferChunkReader.cpp \ + StatsCounter.cpp \ + SQLiteAuthorizer.cpp \ + SQLiteDatabase.cpp \ + SQLiteFileSystem.cpp \ + SQLiteStatement.cpp \ + SQLiteTransaction.cpp \ + SQLValue.cpp \ + SegmentedString.cpp \ + ThreadGlobalData.cpp \ + ThreadTimers.cpp \ + Timer.cpp \ + UnicodeRange.cpp \ + FontTranscoder.cpp \ + UUID.cpp \ + VisitedLinks.cpp \ + Widget.cpp \ + PlatformStrategies.cpp \ + IFrameShimSupport.cpp \ + PluginDatabase.cpp \ + PluginDebug.cpp \ + PluginPackage.cpp \ + PluginStream.cpp \ + PluginView.cpp \ + ExclusionInterval.cpp \ + ExclusionPolygon.cpp \ + ExclusionRectangle.cpp \ + ExclusionShape.cpp \ + ExclusionShapeInsideInfo.cpp \ + FlowThreadController.cpp \ + RenderFlexibleBox.cpp \ + RenderFlowThread.cpp \ + RenderGeometryMap.cpp \ + RenderGrid.cpp \ + RenderLayerBacking.cpp \ + RenderLayerFilterInfo.cpp \ + RenderNamedFlowThread.cpp \ + RenderRegion.cpp \ + RenderRegionSet.cpp \ + RenderTextTrackCue.cpp \ + BasicShapes.cpp \ + StyleCachedImageSet.cpp \ + StyleCachedShader.cpp \ + StorageTask.cpp \ + StorageThread.cpp \ + Storage.cpp \ + StorageAreaImpl.cpp \ + StorageAreaSync.cpp \ + StorageEvent.cpp \ + StorageEventDispatcher.cpp \ + StorageMap.cpp \ + StorageNamespace.cpp \ + StorageNamespaceImpl.cpp \ + StorageSyncManager.cpp \ + StorageTracker.cpp \ + Internals.cpp \ + InternalSettings.cpp \ + DOMParser.cpp \ + NativeXPathNSResolver.cpp \ + XMLHttpRequest.cpp \ + XMLHttpRequestException.cpp \ + XMLHttpRequestProgressEventThrottle.cpp \ + XMLHttpRequestUpload.cpp \ + XMLErrors.cpp \ + XMLSerializer.cpp \ + XPathEvaluator.cpp \ + XPathException.cpp \ + XPathExpression.cpp \ + XPathExpressionNode.cpp \ + XPathFunctions.cpp \ + XPathNodeSet.cpp \ + XPathNSResolver.cpp \ + XPathParser.cpp \ + XPathPath.cpp \ + XPathPredicate.cpp \ + XPathResult.cpp \ + XPathStep.cpp \ + XPathUtil.cpp \ + XPathValue.cpp \ + XPathVariableReference.cpp \ + NewXMLDocumentParser.cpp \ + XMLCharacterReferenceParser.cpp \ + XMLDocumentParser.cpp \ + XMLTokenizer.cpp \ + XMLTreeBuilder.cpp \ + AccessibilityObjectQt.cpp \ + DragControllerQt.cpp \ + EventHandlerQt.cpp \ + TransformationMatrixQt.cpp \ + ColorQt.cpp \ + FontPlatformDataQt.cpp \ + FloatPointQt.cpp \ + FloatRectQt.cpp \ + FloatSizeQt.cpp \ + LayoutPointQt.cpp \ + LayoutRectQt.cpp \ + LayoutSizeQt.cpp \ + GradientQt.cpp \ + GraphicsContextQt.cpp \ + IconQt.cpp \ + ImageBufferQt.cpp \ + ImageDecoderQt.cpp \ + ImageQt.cpp \ + IntPointQt.cpp \ + IntRectQt.cpp \ + IntSizeQt.cpp \ + PathQt.cpp \ + PatternQt.cpp \ + StillImageQt.cpp \ + GraphicsLayerTextureMapper.cpp \ + TextureMapper.cpp \ + TextureMapperBackingStore.cpp \ + TextureMapperImageBuffer.cpp \ + TextureMapperLayer.cpp \ + DNSResolveQueue.cpp \ + MIMESniffing.cpp \ + CookieJarQt.cpp \ + CredentialStorageQt.cpp \ + ResourceHandleQt.cpp \ + ResourceRequestQt.cpp \ + DNSQt.cpp \ + NetworkStateNotifierQt.cpp \ + ProxyServerQt.cpp \ + QtMIMETypeSniffer.cpp \ + QNetworkReplyHandler.cpp \ + EditorQt.cpp \ + Cursor.cpp \ + ClipboardQt.cpp \ + ContextMenuItemQt.cpp \ + ContextMenuQt.cpp \ + CursorQt.cpp \ + DragDataQt.cpp \ + DragImageQt.cpp \ + EventLoopQt.cpp \ + FileSystemQt.cpp \ + RunLoopQt.cpp \ + SharedBufferQt.cpp \ + ThirdPartyCookiesQt.cpp \ + UserAgentQt.cpp \ + FontCacheQt.cpp \ + FontCustomPlatformDataQt.cpp \ + GlyphPageTreeNodeQt.cpp \ + SimpleFontDataQt.cpp \ + TileQt.cpp \ + KURLQt.cpp \ + MIMETypeRegistryQt.cpp \ + PasteboardQt.cpp \ + PlatformKeyboardEventQt.cpp \ + PlatformScreenQt.cpp \ + RenderThemeQStyle.cpp \ + RenderThemeQt.cpp \ + RenderThemeQtMobile.cpp \ + ScrollbarThemeQStyle.cpp \ + ScrollbarThemeQt.cpp \ + ScrollViewQt.cpp \ + SharedTimerQt.cpp \ + SoundQt.cpp \ + LoggingQt.cpp \ + LanguageQt.cpp \ + LocalizedStringsQt.cpp \ + TemporaryLinkStubsQt.cpp \ + TextBoundariesQt.cpp \ + TextBreakIteratorInternalICUQt.cpp \ + TextCodecQt.cpp \ + WidgetQt.cpp \ + XMLDocumentParserQt.cpp \ + ScrollAnimatorNone.cpp \ + SmartReplaceICU.cpp \ + PluginPackageNone.cpp \ + PluginViewNone.cpp \ + ChangeVersionWrapper.cpp \ + DatabaseTask.cpp \ + DatabaseThread.cpp \ + DatabaseTracker.cpp \ + OriginQuotaManager.cpp \ + OriginUsageRecord.cpp \ + SQLException.cpp \ + SQLResultSet.cpp \ + SQLResultSetRowList.cpp \ + SQLStatement.cpp \ + SQLStatementSync.cpp \ + SQLTransaction.cpp \ + SQLTransactionClient.cpp \ + SQLTransactionCoordinator.cpp \ + SQLTransactionSync.cpp \ + JSCustomSQLStatementErrorCallback.cpp \ + JSSQLResultSetRowListCustom.cpp \ + JSSQLTransactionCustom.cpp \ + JSSQLTransactionSyncCustom.cpp \ + IconDatabase.cpp \ + IconRecord.cpp \ + PageURLRecord.cpp \ + JSDedicatedWorkerContextCustom.cpp \ + JSWorkerContextBase.cpp \ + JSWorkerContextCustom.cpp \ + JSWorkerCustom.cpp \ + WorkerScriptController.cpp \ + WorkerScriptDebugServer.cpp \ + WorkerThreadableLoader.cpp \ + WorkerNavigator.cpp \ + AbstractWorker.cpp \ + DedicatedWorkerContext.cpp \ + DedicatedWorkerThread.cpp \ + Worker.cpp \ + WorkerContext.cpp \ + WorkerEventQueue.cpp \ + WorkerLocation.cpp \ + WorkerMessagingProxy.cpp \ + WorkerRunLoop.cpp \ + WorkerThread.cpp \ + WorkerScriptLoader.cpp \ + JSSharedWorkerCustom.cpp \ + DefaultSharedWorkerRepository.cpp \ + SharedWorker.cpp \ + SharedWorkerContext.cpp \ + SharedWorkerThread.cpp \ + FELightingNEON.cpp \ + CustomFilterValidatedProgramTextureMapper.cpp \ + CustomFilterGlobalContext.cpp \ + CustomFilterOperation.cpp \ + CustomFilterParameterList.cpp \ + ValidatedCustomFilterOperation.cpp \ + CustomFilterProgram.cpp \ + CustomFilterProgramInfo.cpp \ + CustomFilterCompiledProgram.cpp \ + CustomFilterMesh.cpp \ + CustomFilterMeshGenerator.cpp \ + CustomFilterRenderer.cpp \ + CustomFilterValidatedProgram.cpp \ + DistantLightSource.cpp \ + FEBlend.cpp \ + FEColorMatrix.cpp \ + FEComponentTransfer.cpp \ + FEComposite.cpp \ + FEConvolveMatrix.cpp \ + FECustomFilter.cpp \ + FEDiffuseLighting.cpp \ + FEDisplacementMap.cpp \ + FEDropShadow.cpp \ + FEFlood.cpp \ + FEGaussianBlur.cpp \ + FELighting.cpp \ + FEMerge.cpp \ + FEMorphology.cpp \ + FEOffset.cpp \ + FESpecularLighting.cpp \ + FETile.cpp \ + FETurbulence.cpp \ + FilterOperations.cpp \ + FilterOperation.cpp \ + FilterEffect.cpp \ + LightSource.cpp \ + PointLightSource.cpp \ + SpotLightSource.cpp \ + SourceAlpha.cpp \ + SourceGraphic.cpp \ + JSSVGElementInstanceCustom.cpp \ + JSSVGLengthCustom.cpp \ + JSSVGPathSegCustom.cpp \ + SVGCSSComputedStyleDeclaration.cpp \ + SVGCSSParser.cpp \ + SVGCSSStyleSelector.cpp \ + SMILTime.cpp \ + SMILTimeContainer.cpp \ + SVGSMILElement.cpp \ + SVGFEImage.cpp \ + SVGFilter.cpp \ + SVGFilterBuilder.cpp \ + SVGImage.cpp \ + SVGImageCache.cpp \ + SVGAttributeToPropertyMap.cpp \ + SVGPathSegListPropertyTearOff.cpp \ + JSJavaScriptCallFrameCustom.cpp \ + ScriptProfiler.cpp \ + JavaScriptCallFrame.cpp \ + WebSocket.cpp \ + WebSocketChannel.cpp \ + WebSocketDeflateFramer.cpp \ + WebSocketDeflater.cpp \ + WebSocketExtensionDispatcher.cpp \ + WebSocketExtensionParser.cpp \ + WebSocketFrame.cpp \ + WebSocketHandshake.cpp \ + WebSocketHandshakeRequest.cpp \ + WebSocketHandshakeResponse.cpp \ + WorkerThreadableWebSocketChannel.cpp \ + ThreadableWebSocketChannel.cpp \ + ThreadableWebSocketChannelClientWrapper.cpp \ + SocketStreamErrorBase.cpp \ + SocketStreamHandleBase.cpp \ + SocketStreamHandleQt.cpp \ + JSWebSocketCustom.cpp \ + Archive.cpp \ + ArchiveFactory.cpp \ + MHTMLArchive.cpp \ + MHTMLParser.cpp \ + PageSerializer.cpp \ + ICOImageDecoder.cpp \ + PNGImageDecoder.cpp \ + JPEGImageDecoder.cpp \ + sqlite3.c \ + MathMLNames.cpp \ + MathMLElementFactory.cpp \ + SVGNames.cpp \ + SVGElementFactory.cpp \ + JSSVGElementWrapperFactory.cpp \ + XLinkNames.cpp \ + CSSPropertyNames.cpp \ + CSSValueKeywords.cpp \ + JSDOMFileSystem.cpp \ + JSDOMFileSystemSync.cpp \ + JSDOMWindowFileSystem.cpp \ + JSDirectoryEntry.cpp \ + JSDirectoryEntrySync.cpp \ + JSDirectoryReader.cpp \ + JSDirectoryReaderSync.cpp \ + JSEntriesCallback.cpp \ + JSEntry.cpp \ + JSEntryArray.cpp \ + JSEntryArraySync.cpp \ + JSEntryCallback.cpp \ + JSEntrySync.cpp \ + JSErrorCallback.cpp \ + JSFileCallback.cpp \ + JSFileEntry.cpp \ + JSFileEntrySync.cpp \ + JSFileSystemCallback.cpp \ + JSFileWriter.cpp \ + JSFileWriterCallback.cpp \ + JSMetadata.cpp \ + JSMetadataCallback.cpp \ + JSWorkerContextFileSystem.cpp \ + JSGeolocation.cpp \ + JSGeoposition.cpp \ + JSNavigatorGeolocation.cpp \ + JSPositionCallback.cpp \ + JSPositionError.cpp \ + JSPositionErrorCallback.cpp \ + JSDOMWindowIndexedDatabase.cpp \ + JSIDBAny.cpp \ + JSIDBCursor.cpp \ + JSIDBDatabaseException.cpp \ + JSIDBDatabase.cpp \ + JSIDBFactory.cpp \ + JSIDBIndex.cpp \ + JSIDBKey.cpp \ + JSIDBKeyRange.cpp \ + JSIDBObjectStore.cpp \ + JSIDBRequest.cpp \ + JSIDBTransaction.cpp \ + JSWorkerContextIndexedDatabase.cpp \ + JSDOMWindowNotifications.cpp \ + JSNotification.cpp \ + JSNotificationCenter.cpp \ + JSNotificationPermissionCallback.cpp \ + JSWorkerContextNotifications.cpp \ + JSDOMWindowQuota.cpp \ + JSStorageInfo.cpp \ + JSStorageInfoErrorCallback.cpp \ + JSStorageInfoQuotaCallback.cpp \ + JSStorageInfoUsageCallback.cpp \ + JSAudioBuffer.cpp \ + JSAudioBufferCallback.cpp \ + JSAudioBufferSourceNode.cpp \ + JSChannelMergerNode.cpp \ + JSChannelSplitterNode.cpp \ + JSAudioContext.cpp \ + JSAudioDestinationNode.cpp \ + JSAudioGain.cpp \ + JSGainNode.cpp \ + JSAudioListener.cpp \ + JSAudioNode.cpp \ + JSPannerNode.cpp \ + JSAudioParam.cpp \ + JSAudioProcessingEvent.cpp \ + JSAudioSourceNode.cpp \ + JSBiquadFilterNode.cpp \ + JSConvolverNode.cpp \ + JSDelayNode.cpp \ + JSDOMWindowWebAudio.cpp \ + JSDynamicsCompressorNode.cpp \ + JSScriptProcessorNode.cpp \ + JSMediaElementAudioSourceNode.cpp \ + JSMediaStreamAudioSourceNode.cpp \ + JSOfflineAudioCompletionEvent.cpp \ + JSOscillatorNode.cpp \ + JSAnalyserNode.cpp \ + JSWaveShaperNode.cpp \ + JSWaveTable.cpp \ + JSDOMWindowWebDatabase.cpp \ + JSDatabase.cpp \ + JSDatabaseCallback.cpp \ + JSDatabaseSync.cpp \ + JSSQLError.cpp \ + JSSQLException.cpp \ + JSSQLResultSet.cpp \ + JSSQLResultSetRowList.cpp \ + JSSQLStatementCallback.cpp \ + JSSQLStatementErrorCallback.cpp \ + JSSQLTransaction.cpp \ + JSSQLTransactionCallback.cpp \ + JSSQLTransactionErrorCallback.cpp \ + JSSQLTransactionSync.cpp \ + JSSQLTransactionSyncCallback.cpp \ + JSWorkerContextWebDatabase.cpp \ + JSCloseEvent.cpp \ + JSDOMWindowWebSocket.cpp \ + JSWebSocket.cpp \ + JSWorkerContextWebSocket.cpp \ + JSCounter.cpp \ + JSCSSCharsetRule.cpp \ + JSCSSFontFaceRule.cpp \ + JSCSSImportRule.cpp \ + JSCSSMediaRule.cpp \ + JSCSSPageRule.cpp \ + JSCSSPrimitiveValue.cpp \ + JSCSSRule.cpp \ + JSCSSRuleList.cpp \ + JSCSSStyleDeclaration.cpp \ + JSCSSStyleRule.cpp \ + JSCSSStyleSheet.cpp \ + JSCSSValue.cpp \ + JSCSSValueList.cpp \ + JSMediaList.cpp \ + JSMediaQueryList.cpp \ + JSRect.cpp \ + JSRGBColor.cpp \ + JSStyleMedia.cpp \ + JSStyleSheet.cpp \ + JSStyleSheetList.cpp \ + JSWebKitCSSFilterValue.cpp \ + JSWebKitCSSKeyframeRule.cpp \ + JSWebKitCSSKeyframesRule.cpp \ + JSWebKitCSSMatrix.cpp \ + JSWebKitCSSMixFunctionValue.cpp \ + JSWebKitCSSRegionRule.cpp \ + JSWebKitCSSTransformValue.cpp \ + JSWebKitCSSViewportRule.cpp \ + JSAttr.cpp \ + JSBeforeLoadEvent.cpp \ + JSCharacterData.cpp \ + JSClientRect.cpp \ + JSClientRectList.cpp \ + JSClipboard.cpp \ + JSCDATASection.cpp \ + JSComment.cpp \ + JSCompositionEvent.cpp \ + JSCustomEvent.cpp \ + JSDataTransferItem.cpp \ + JSDataTransferItemList.cpp \ + JSDeviceMotionEvent.cpp \ + JSDeviceOrientationEvent.cpp \ + JSDocumentFragment.cpp \ + JSDocument.cpp \ + JSDocumentType.cpp \ + JSDOMCoreException.cpp \ + JSDOMError.cpp \ + JSDOMImplementation.cpp \ + JSDOMStringList.cpp \ + JSDOMStringMap.cpp \ + JSElement.cpp \ + JSEntity.cpp \ + JSEntityReference.cpp \ + JSErrorEvent.cpp \ + JSEvent.cpp \ + JSEventException.cpp \ + JSEventTarget.cpp \ + JSHashChangeEvent.cpp \ + JSKeyboardEvent.cpp \ + JSMouseEvent.cpp \ + JSMessageChannel.cpp \ + JSMessageEvent.cpp \ + JSMessagePort.cpp \ + JSMutationCallback.cpp \ + JSMutationEvent.cpp \ + JSMutationObserver.cpp \ + JSMutationRecord.cpp \ + JSNamedNodeMap.cpp \ + JSNode.cpp \ + JSNodeFilter.cpp \ + JSNodeIterator.cpp \ + JSNodeList.cpp \ + JSNotation.cpp \ + JSOverflowEvent.cpp \ + JSPageTransitionEvent.cpp \ + JSPopStateEvent.cpp \ + JSProcessingInstruction.cpp \ + JSProgressEvent.cpp \ + JSPropertyNodeList.cpp \ + JSRangeException.cpp \ + JSRange.cpp \ + JSRequestAnimationFrameCallback.cpp \ + JSShadowRoot.cpp \ + JSStringCallback.cpp \ + JSText.cpp \ + JSTextEvent.cpp \ + JSTouch.cpp \ + JSTouchEvent.cpp \ + JSTouchList.cpp \ + JSTreeWalker.cpp \ + JSUIEvent.cpp \ + JSWebKitAnimationEvent.cpp \ + JSWebKitNamedFlow.cpp \ + JSDOMNamedFlowCollection.cpp \ + JSWebKitTransitionEvent.cpp \ + JSWheelEvent.cpp \ + JSBlob.cpp \ + JSFile.cpp \ + JSFileError.cpp \ + JSFileException.cpp \ + JSFileList.cpp \ + JSFileReader.cpp \ + JSFileReaderSync.cpp \ + JSArrayBufferView.cpp \ + JSArrayBuffer.cpp \ + JSDataView.cpp \ + JSInt8Array.cpp \ + JSFloat32Array.cpp \ + JSFloat64Array.cpp \ + JSCanvasGradient.cpp \ + JSInt32Array.cpp \ + JSCanvasPattern.cpp \ + JSCanvasRenderingContext.cpp \ + JSCanvasRenderingContext2D.cpp \ + JSEXTTextureFilterAnisotropic.cpp \ + JSOESStandardDerivatives.cpp \ + JSOESTextureFloat.cpp \ + JSOESVertexArrayObject.cpp \ + JSOESElementIndexUint.cpp \ + JSWebGLActiveInfo.cpp \ + JSWebGLBuffer.cpp \ + JSWebGLCompressedTextureS3TC.cpp \ + JSWebGLContextAttributes.cpp \ + JSWebGLContextEvent.cpp \ + JSWebGLDebugRendererInfo.cpp \ + JSWebGLDebugShaders.cpp \ + JSWebGLDepthTexture.cpp \ + JSWebGLFramebuffer.cpp \ + JSWebGLLoseContext.cpp \ + JSWebGLProgram.cpp \ + JSWebGLRenderbuffer.cpp \ + JSWebGLRenderingContext.cpp \ + JSWebGLShader.cpp \ + JSWebGLShaderPrecisionFormat.cpp \ + JSInt16Array.cpp \ + JSWebGLTexture.cpp \ + JSWebGLUniformLocation.cpp \ + JSWebGLVertexArrayObjectOES.cpp \ + JSUint8Array.cpp \ + JSUint8ClampedArray.cpp \ + JSUint32Array.cpp \ + JSUint16Array.cpp \ + JSDOMFormData.cpp \ + JSDOMSettableTokenList.cpp \ + JSDOMTokenList.cpp \ + JSDOMURL.cpp \ + JSHTMLAllCollection.cpp \ + JSHTMLAudioElement.cpp \ + JSHTMLAnchorElement.cpp \ + JSHTMLAppletElement.cpp \ + JSHTMLAreaElement.cpp \ + JSHTMLBaseElement.cpp \ + JSHTMLBaseFontElement.cpp \ + JSHTMLBodyElement.cpp \ + JSHTMLBRElement.cpp \ + JSHTMLButtonElement.cpp \ + JSHTMLCanvasElement.cpp \ + JSHTMLCollection.cpp \ + JSHTMLDataListElement.cpp \ + JSHTMLDetailsElement.cpp \ + JSHTMLDialogElement.cpp \ + JSHTMLDirectoryElement.cpp \ + JSHTMLDivElement.cpp \ + JSHTMLDListElement.cpp \ + JSHTMLDocument.cpp \ + JSHTMLElement.cpp \ + JSHTMLEmbedElement.cpp \ + JSHTMLFieldSetElement.cpp \ + JSHTMLFontElement.cpp \ + JSHTMLFormControlsCollection.cpp \ + JSHTMLFormElement.cpp \ + JSHTMLFrameElement.cpp \ + JSHTMLFrameSetElement.cpp \ + JSHTMLHeadElement.cpp \ + JSHTMLHeadingElement.cpp \ + JSHTMLHRElement.cpp \ + JSHTMLHtmlElement.cpp \ + JSHTMLIFrameElement.cpp \ + JSHTMLImageElement.cpp \ + JSHTMLInputElement.cpp \ + JSHTMLKeygenElement.cpp \ + JSHTMLLabelElement.cpp \ + JSHTMLLegendElement.cpp \ + JSHTMLLIElement.cpp \ + JSHTMLLinkElement.cpp \ + JSHTMLMapElement.cpp \ + JSHTMLMarqueeElement.cpp \ + JSHTMLMediaElement.cpp \ + JSHTMLMenuElement.cpp \ + JSHTMLMetaElement.cpp \ + JSHTMLMeterElement.cpp \ + JSHTMLModElement.cpp \ + JSHTMLObjectElement.cpp \ + JSHTMLOListElement.cpp \ + JSHTMLOptGroupElement.cpp \ + JSHTMLOptionElement.cpp \ + JSHTMLOptionsCollection.cpp \ + JSHTMLOutputElement.cpp \ + JSHTMLParagraphElement.cpp \ + JSHTMLParamElement.cpp \ + JSHTMLPreElement.cpp \ + JSHTMLProgressElement.cpp \ + JSHTMLPropertiesCollection.cpp \ + JSHTMLQuoteElement.cpp \ + JSHTMLScriptElement.cpp \ + JSHTMLSelectElement.cpp \ + JSHTMLSourceElement.cpp \ + JSHTMLSpanElement.cpp \ + JSHTMLStyleElement.cpp \ + JSHTMLTableCaptionElement.cpp \ + JSHTMLTableCellElement.cpp \ + JSHTMLTableColElement.cpp \ + JSHTMLTableElement.cpp \ + JSHTMLTableRowElement.cpp \ + JSHTMLTableSectionElement.cpp \ + JSHTMLTextAreaElement.cpp \ + JSHTMLTitleElement.cpp \ + JSHTMLTrackElement.cpp \ + JSHTMLUListElement.cpp \ + JSHTMLUnknownElement.cpp \ + JSHTMLVideoElement.cpp \ + JSImageData.cpp \ + JSMediaController.cpp \ + JSMediaError.cpp \ + JSMicroDataItemValue.cpp \ + JSRadioNodeList.cpp \ + JSTextMetrics.cpp \ + JSTimeRanges.cpp \ + JSValidityState.cpp \ + JSVoidCallback.cpp \ + JSHTMLContentElement.cpp \ + JSHTMLShadowElement.cpp \ + JSInjectedScriptHost.cpp \ + JSInspectorFrontendHost.cpp \ + JSJavaScriptCallFrame.cpp \ + JSScriptProfile.cpp \ + JSScriptProfileNode.cpp \ + JSDOMApplicationCache.cpp \ + JSBarInfo.cpp \ + JSConsole.cpp \ + JSCoordinates.cpp \ + JSCrypto.cpp \ + JSDOMSecurityPolicy.cpp \ + JSDOMSelection.cpp \ + JSDOMWindow.cpp \ + JSEventSource.cpp \ + JSHistory.cpp \ + JSLocation.cpp \ + JSMemoryInfo.cpp \ + JSNavigator.cpp \ + JSPerformance.cpp \ + JSPerformanceEntry.cpp \ + JSPerformanceEntryList.cpp \ + JSPerformanceNavigation.cpp \ + JSPerformanceResourceTiming.cpp \ + JSPerformanceTiming.cpp \ + JSScreen.cpp \ + JSSpeechInputEvent.cpp \ + JSSpeechInputResult.cpp \ + JSSpeechInputResultList.cpp \ + JSWebKitAnimation.cpp \ + JSWebKitAnimationList.cpp \ + JSWebKitPoint.cpp \ + JSWorkerNavigator.cpp \ + JSDOMPlugin.cpp \ + JSDOMMimeType.cpp \ + JSDOMPluginArray.cpp \ + JSDOMMimeTypeArray.cpp \ + JSStorage.cpp \ + JSStorageEvent.cpp \ + JSInternals.cpp \ + JSInternalSettings.cpp \ + JSMallocStatistics.cpp \ + JSAbstractWorker.cpp \ + JSDedicatedWorkerContext.cpp \ + JSSharedWorker.cpp \ + JSSharedWorkerContext.cpp \ + JSWorker.cpp \ + JSWorkerContext.cpp \ + JSWorkerLocation.cpp \ + JSDOMParser.cpp \ + JSXMLHttpRequest.cpp \ + JSXMLHttpRequestException.cpp \ + JSXMLHttpRequestProgressEvent.cpp \ + JSXMLHttpRequestUpload.cpp \ + JSXMLSerializer.cpp \ + JSXPathNSResolver.cpp \ + JSXPathException.cpp \ + JSXPathExpression.cpp \ + JSXPathResult.cpp \ + JSXPathEvaluator.cpp \ + JSXSLTProcessor.cpp \ + JSSVGAElement.cpp \ + JSSVGAltGlyphDefElement.cpp \ + JSSVGAltGlyphElement.cpp \ + JSSVGAltGlyphItemElement.cpp \ + JSSVGAngle.cpp \ + JSSVGAnimateColorElement.cpp \ + JSSVGAnimateMotionElement.cpp \ + JSSVGAnimatedAngle.cpp \ + JSSVGAnimatedBoolean.cpp \ + JSSVGAnimatedEnumeration.cpp \ + JSSVGAnimatedInteger.cpp \ + JSSVGAnimatedLength.cpp \ + JSSVGAnimatedLengthList.cpp \ + JSSVGAnimatedNumber.cpp \ + JSSVGAnimatedNumberList.cpp \ + JSSVGAnimatedPreserveAspectRatio.cpp \ + JSSVGAnimatedRect.cpp \ + JSSVGAnimatedString.cpp \ + JSSVGAnimatedTransformList.cpp \ + JSSVGAnimateElement.cpp \ + JSSVGAnimateTransformElement.cpp \ + JSSVGAnimationElement.cpp \ + JSSVGCircleElement.cpp \ + JSSVGClipPathElement.cpp \ + JSSVGColor.cpp \ + JSSVGComponentTransferFunctionElement.cpp \ + JSSVGCursorElement.cpp \ + JSSVGDefsElement.cpp \ + JSSVGDescElement.cpp \ + JSSVGDocument.cpp \ + JSSVGElement.cpp \ + JSSVGElementInstance.cpp \ + JSSVGElementInstanceList.cpp \ + JSSVGEllipseElement.cpp \ + JSSVGException.cpp \ + JSSVGFEBlendElement.cpp \ + JSSVGFEColorMatrixElement.cpp \ + JSSVGFEComponentTransferElement.cpp \ + JSSVGFECompositeElement.cpp \ + JSSVGFEConvolveMatrixElement.cpp \ + JSSVGFEDiffuseLightingElement.cpp \ + JSSVGFEDisplacementMapElement.cpp \ + JSSVGFEDistantLightElement.cpp \ + JSSVGFEDropShadowElement.cpp \ + JSSVGFEFloodElement.cpp \ + JSSVGFEFuncAElement.cpp \ + JSSVGFEFuncBElement.cpp \ + JSSVGFEFuncGElement.cpp \ + JSSVGFEFuncRElement.cpp \ + JSSVGFEGaussianBlurElement.cpp \ + JSSVGFEImageElement.cpp \ + JSSVGFEMergeElement.cpp \ + JSSVGFEMergeNodeElement.cpp \ + JSSVGFEMorphologyElement.cpp \ + JSSVGFEOffsetElement.cpp \ + JSSVGFEPointLightElement.cpp \ + JSSVGFESpecularLightingElement.cpp \ + JSSVGFESpotLightElement.cpp \ + JSSVGFETileElement.cpp \ + JSSVGFETurbulenceElement.cpp \ + JSSVGFilterElement.cpp \ + JSSVGFontElement.cpp \ + JSSVGFontFaceElement.cpp \ + JSSVGFontFaceFormatElement.cpp \ + JSSVGFontFaceNameElement.cpp \ + JSSVGFontFaceSrcElement.cpp \ + JSSVGFontFaceUriElement.cpp \ + JSSVGForeignObjectElement.cpp \ + JSSVGGElement.cpp \ + JSSVGGlyphElement.cpp \ + JSSVGGlyphRefElement.cpp \ + JSSVGGradientElement.cpp \ + JSSVGHKernElement.cpp \ + JSSVGImageElement.cpp \ + JSSVGLength.cpp \ + JSSVGLengthList.cpp \ + JSSVGLinearGradientElement.cpp \ + JSSVGLineElement.cpp \ + JSSVGMarkerElement.cpp \ + JSSVGMaskElement.cpp \ + JSSVGMatrix.cpp \ + JSSVGMetadataElement.cpp \ + JSSVGMissingGlyphElement.cpp \ + JSSVGMPathElement.cpp \ + JSSVGNumber.cpp \ + JSSVGNumberList.cpp \ + JSSVGPaint.cpp \ + JSSVGPathElement.cpp \ + JSSVGPathSegArcAbs.cpp \ + JSSVGPathSegArcRel.cpp \ + JSSVGPathSegClosePath.cpp \ + JSSVGPathSegCurvetoCubicAbs.cpp \ + JSSVGPathSegCurvetoCubicRel.cpp \ + JSSVGPathSegCurvetoCubicSmoothAbs.cpp \ + JSSVGPathSegCurvetoCubicSmoothRel.cpp \ + JSSVGPathSegCurvetoQuadraticAbs.cpp \ + JSSVGPathSegCurvetoQuadraticRel.cpp \ + JSSVGPathSegCurvetoQuadraticSmoothAbs.cpp \ + JSSVGPathSegCurvetoQuadraticSmoothRel.cpp \ + JSSVGPathSeg.cpp \ + JSSVGPathSegLinetoAbs.cpp \ + JSSVGPathSegLinetoHorizontalAbs.cpp \ + JSSVGPathSegLinetoHorizontalRel.cpp \ + JSSVGPathSegLinetoRel.cpp \ + JSSVGPathSegLinetoVerticalAbs.cpp \ + JSSVGPathSegLinetoVerticalRel.cpp \ + JSSVGPathSegList.cpp \ + JSSVGPathSegMovetoAbs.cpp \ + JSSVGPathSegMovetoRel.cpp \ + JSSVGPatternElement.cpp \ + JSSVGPoint.cpp \ + JSSVGPointList.cpp \ + JSSVGPolygonElement.cpp \ + JSSVGPolylineElement.cpp \ + JSSVGPreserveAspectRatio.cpp \ + JSSVGRadialGradientElement.cpp \ + JSSVGRectElement.cpp \ + JSSVGRect.cpp \ + JSSVGRenderingIntent.cpp \ + JSSVGScriptElement.cpp \ + JSSVGSetElement.cpp \ + JSSVGStopElement.cpp \ + JSSVGStringList.cpp \ + JSSVGStyleElement.cpp \ + JSSVGSVGElement.cpp \ + JSSVGSwitchElement.cpp \ + JSSVGSymbolElement.cpp \ + JSSVGTextContentElement.cpp \ + JSSVGTextElement.cpp \ + JSSVGTextPathElement.cpp \ + JSSVGTextPositioningElement.cpp \ + JSSVGTitleElement.cpp \ + JSSVGTransform.cpp \ + JSSVGTransformList.cpp \ + JSSVGTRefElement.cpp \ + JSSVGTSpanElement.cpp \ + JSSVGUnitTypes.cpp \ + JSSVGUseElement.cpp \ + JSSVGViewElement.cpp \ + JSSVGVKernElement.cpp \ + JSSVGViewSpec.cpp \ + JSSVGZoomAndPan.cpp \ + JSSVGZoomEvent.cpp \ + InspectorFrontend.cpp \ + InspectorBackendDispatcher.cpp \ + InspectorTypeBuilder.cpp \ + CSSGrammar.cpp \ + HTMLNames.cpp \ + HTMLElementFactory.cpp \ + JSHTMLElementWrapperFactory.cpp \ + XMLNSNames.cpp \ + XMLNames.cpp \ + WebKitFontFamilyNames.cpp \ + EventFactory.cpp \ + ExceptionCodeDescription.cpp \ + HTMLEntityTable.cpp \ + ColorData.cpp \ + UserAgentStyleSheetsData.cpp \ + XPathGrammar.cpp \ + RenderSVGAllInOne.cpp \ + SVGAllInOne.cpp \ + AccessibilityAllInOne.cpp \ + InspectorAllInOne.cpp \ + ApplicationCacheAllInOne.cpp \ + TextAllInOne.cpp \ + StyleAllInOne.cpp \ + HTMLElementsAllInOne.cpp \ + EditingAllInOne.cpp \ + RenderingAllInOne.cpp \ + moc_QtMIMETypeSniffer.cpp + +QT_VPATH += \ + qtbase/src/3rdparty/sqlite \ + qtwebkit/Source/WebCore/accessibility \ + qtwebkit/Source/WebCore/accessibility/qt \ + qtwebkit/Source/WebCore/bindings \ + qtwebkit/Source/WebCore/bindings/generic \ + qtwebkit/Source/WebCore/bindings/js \ + qtwebkit/Source/WebCore/bridge \ + qtwebkit/Source/WebCore/bridge/c \ + qtwebkit/Source/WebCore/bridge/jsc \ + qtwebkit/Source/WebCore/bridge/qt \ + qtwebkit/Source/WebCore/css \ + qtwebkit/Source/WebCore/dom \ + qtwebkit/Source/WebCore/dom/default \ + qtwebkit/Source/WebCore/editing \ + qtwebkit/Source/WebCore/editing/qt \ + qtwebkit/Source/WebCore/fileapi \ + qtwebkit/Source/WebCore/history \ + qtwebkit/Source/WebCore/history/qt \ + qtwebkit/Source/WebCore/html \ + qtwebkit/Source/WebCore/html/canvas \ + qtwebkit/Source/WebCore/html/parser \ + qtwebkit/Source/WebCore/html/shadow \ + qtwebkit/Source/WebCore/inspector \ + qtwebkit/Source/WebCore/loader \ + qtwebkit/Source/WebCore/loader/appcache \ + qtwebkit/Source/WebCore/loader/archive \ + qtwebkit/Source/WebCore/loader/archive/mhtml \ + qtwebkit/Source/WebCore/loader/cache \ + qtwebkit/Source/WebCore/loader/icon \ + qtwebkit/Source/WebCore/Modules/filesystem \ + qtwebkit/Source/WebCore/Modules/geolocation \ + qtwebkit/Source/WebCore/Modules/navigatorcontentutils \ + qtwebkit/Source/WebCore/Modules/notifications \ + qtwebkit/Source/WebCore/Modules/webdatabase \ + qtwebkit/Source/WebCore/Modules/websockets \ + qtwebkit/Source/WebCore/page \ + qtwebkit/Source/WebCore/page/animation \ + qtwebkit/Source/WebCore/page/qt \ + qtwebkit/Source/WebCore/page/scrolling \ + qtwebkit/Source/WebCore/platform \ + qtwebkit/Source/WebCore/platform/animation \ + qtwebkit/Source/WebCore/platform/graphics \ + qtwebkit/Source/WebCore/platform/graphics/cpu/arm/filters \ + qtwebkit/Source/WebCore/platform/graphics/filters \ + qtwebkit/Source/WebCore/platform/graphics/filters/texmap \ + qtwebkit/Source/WebCore/platform/graphics/qt \ + qtwebkit/Source/WebCore/platform/graphics/surfaces \ + qtwebkit/Source/WebCore/platform/graphics/surfaces/qt \ + qtwebkit/Source/WebCore/platform/graphics/texmap \ + qtwebkit/Source/WebCore/platform/graphics/transforms \ + qtwebkit/Source/WebCore/platform/image-decoders \ + qtwebkit/Source/WebCore/platform/image-decoders/bmp \ + qtwebkit/Source/WebCore/platform/image-decoders/gif \ + qtwebkit/Source/WebCore/platform/image-decoders/ico \ + qtwebkit/Source/WebCore/platform/image-decoders/jpeg \ + qtwebkit/Source/WebCore/platform/image-decoders/png \ + qtwebkit/Source/WebCore/platform/leveldb \ + qtwebkit/Source/WebCore/platform/mock \ + qtwebkit/Source/WebCore/platform/network \ + qtwebkit/Source/WebCore/platform/network/qt \ + qtwebkit/Source/WebCore/platform/qt \ + qtwebkit/Source/WebCore/platform/sql \ + qtwebkit/Source/WebCore/platform/text \ + qtwebkit/Source/WebCore/platform/text/qt \ + qtwebkit/Source/WebCore/platform/text/transcoder \ + qtwebkit/Source/WebCore/plugins \ + qtwebkit/Source/WebCore/rendering \ + qtwebkit/Source/WebCore/rendering/style \ + qtwebkit/Source/WebCore/rendering/svg \ + qtwebkit/Source/WebCore/storage \ + qtwebkit/Source/WebCore/svg \ + qtwebkit/Source/WebCore/svg/animation \ + qtwebkit/Source/WebCore/svg/graphics \ + qtwebkit/Source/WebCore/svg/graphics/filters \ + qtwebkit/Source/WebCore/svg/properties \ + qtwebkit/Source/WebCore/testing \ + qtwebkit/Source/WebCore/testing/js \ + qtwebkit/Source/WebCore/workers \ + qtwebkit/Source/WebCore/xml \ + qtwebkit/Source/WebCore/xml/parser \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + moc_QtMIMETypeSniffer.cpp \ + moc_QNetworkReplyHandler.cpp \ + moc_NetworkStateNotifierPrivate.cpp \ + moc_CookieJarQt.cpp \ + moc_SocketStreamHandlePrivate.cpp + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + DNSQt.moc \ + RunLoopQt.moc \ + SharedTimerQt.moc + diff --git a/libports/lib/mk/qt5_webkit.mk b/libports/lib/mk/qt5_webkit.mk new file mode 100644 index 0000000000..70b6fca8b1 --- /dev/null +++ b/libports/lib/mk/qt5_webkit.mk @@ -0,0 +1,25 @@ +include $(REP_DIR)/lib/import/import-qt5_webkit.mk + +SHARED_LIB = yes + +# additional defines for the Genode version +CC_OPT += -DSQLITE_NO_SYNC=1 -DSQLITE_THREADSAFE=0 + +# enable C++ functions that use C99 math functions (disabled by default in the Genode tool chain) +CC_CXX_OPT += -D_GLIBCXX_USE_C99_MATH + +# use default warning level to avoid noise when compiling contrib code +CC_WARN = -Wno-deprecated-declarations + +CC_OPT_sqlite3 += -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast + +include $(REP_DIR)/lib/mk/qt5_webkit_generated.inc + +QT_INCPATH += qtwebkit/Source/WebCore/generated + +include $(REP_DIR)/lib/mk/qt5.inc + +LIBS += qt5_webcore qt5_jscore qt5_network qt5_printsupport qt5_core icu libc libm + +vpath %.qrc $(REP_DIR)/contrib/$(QT5)/src/3rdparty/webkit/Source/WebCore +vpath %.qrc $(REP_DIR)/contrib/$(QT5)/src/3rdparty/webkit/Source/WebCore/inspector/front-end diff --git a/libports/lib/mk/qt5_webkit_generated.inc b/libports/lib/mk/qt5_webkit_generated.inc new file mode 100644 index 0000000000..3b2dde73e7 --- /dev/null +++ b/libports/lib/mk/qt5_webkit_generated.inc @@ -0,0 +1,197 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DBUILDING_QT__=1 -DNDEBUG -DENABLE_3D_RENDERING=1 -DENABLE_BLOB=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_CSS_BOX_DECORATION_BREAK=1 -DENABLE_CSS_COMPOSITING=1 -DENABLE_CSS_EXCLUSIONS=1 -DENABLE_CSS_FILTERS=1 -DENABLE_CSS_IMAGE_SET=1 -DENABLE_CSS_REGIONS=1 -DENABLE_CSS_STICKY_POSITION=1 -DENABLE_DATALIST_ELEMENT=1 -DENABLE_DETAILS_ELEMENT=1 -DENABLE_FAST_MOBILE_SCROLLING=1 -DENABLE_FILTERS=1 -DENABLE_FTPDIR=1 -DENABLE_GESTURE_EVENTS=1 -DENABLE_ICONDATABASE=1 -DENABLE_IFRAME_SEAMLESS=1 -DENABLE_INPUT_TYPE_COLOR=1 -DENABLE_INSPECTOR=1 -DENABLE_INSPECTOR_SERVER=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_LEGACY_NOTIFICATIONS=1 -DENABLE_LEGACY_VIEWPORT_ADAPTION=1 -DENABLE_LEGACY_VENDOR_PREFIXES=1 -DENABLE_LINK_PREFETCH=1 -DENABLE_METER_ELEMENT=1 -DENABLE_MHTML=1 -DENABLE_MUTATION_OBSERVERS=1 -DENABLE_NOTIFICATIONS=1 -DENABLE_PAGE_VISIBILITY_API=1 -DENABLE_PROGRESS_ELEMENT=1 -DENABLE_RESOLUTION_MEDIA_QUERY=1 -DENABLE_REQUEST_ANIMATION_FRAME=1 -DENABLE_SHARED_WORKERS=1 -DENABLE_SMOOTH_SCROLLING=1 -DENABLE_SQL_DATABASE=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_TOUCH_ADJUSTMENT=1 -DENABLE_TOUCH_EVENTS=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_WEB_TIMING=1 -DENABLE_WORKERS=1 -DENABLE_XHR_TIMEOUT=1 -DWTF_USE_TILED_BACKING_STORE=1 -DHAVE_QTPRINTSUPPORT=1 -DHAVE_QSTYLE=1 -DHAVE_QTTESTLIB=1 -DWTF_USE_LIBJPEG=1 -DWTF_USE_LIBPNG=1 -DPLUGIN_ARCHITECTURE_UNSUPPORTED=1 -DENABLE_TOUCH_SLIDER=1 -DENABLE_ACCELERATED_2D_CANVAS=0 -DENABLE_ANIMATION_API=0 -DENABLE_BATTERY_STATUS=0 -DENABLE_CSP_NEXT=0 -DENABLE_CSS_GRID_LAYOUT=0 -DENABLE_CSS_HIERARCHIES=0 -DENABLE_CSS_IMAGE_ORIENTATION=0 -DENABLE_CSS_IMAGE_RESOLUTION=0 -DENABLE_CSS_SHADERS=0 -DENABLE_CSS_VARIABLES=0 -DENABLE_CSS3_BACKGROUND=0 -DENABLE_CSS3_CONDITIONAL_RULES=0 -DENABLE_CSS3_TEXT=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_DATAGRID=0 -DENABLE_DATA_TRANSFER_ITEMS=0 -DENABLE_DEVICE_ORIENTATION=0 -DENABLE_DIRECTORY_UPLOAD=0 -DENABLE_DOWNLOAD_ATTRIBUTE=0 -DENABLE_FILE_SYSTEM=0 -DENABLE_FULLSCREEN_API=0 -DENABLE_GAMEPAD=0 -DENABLE_GEOLOCATION=0 -DENABLE_HIGH_DPI_CANVAS=0 -DENABLE_INDEXED_DATABASE=0 -DENABLE_INPUT_SPEECH=0 -DENABLE_INPUT_TYPE_DATE=0 -DENABLE_INPUT_TYPE_DATETIME=0 -DENABLE_INPUT_TYPE_DATETIMELOCAL=0 -DENABLE_INPUT_TYPE_MONTH=0 -DENABLE_INPUT_TYPE_TIME=0 -DENABLE_INPUT_TYPE_WEEK=0 -DENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 -DENABLE_LINK_PRERENDER=0 -DENABLE_MATHML=0 -DENABLE_MEDIA_SOURCE=0 -DENABLE_MEDIA_STATISTICS=0 -DENABLE_MEDIA_STREAM=0 -DENABLE_MICRODATA=0 -DENABLE_NAVIGATOR_CONTENT_UTILS=0 -DENABLE_NETSCAPE_PLUGIN_API=0 -DENABLE_NETWORK_INFO=0 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_PROXIMITY_EVENTS=0 -DENABLE_QUOTA=0 -DENABLE_SCRIPTED_SPEECH=0 -DENABLE_SHADOW_DOM=0 -DENABLE_STYLE_SCOPED=0 -DENABLE_SVG_DOM_OBJC_BINDINGS=0 -DENABLE_TEXT_AUTOSIZING=0 -DENABLE_TEXT_NOTIFICATIONS_ONLY=0 -DENABLE_TOUCH_ICON_LOADING=0 -DENABLE_VIBRATION=0 -DENABLE_VIDEO=0 -DENABLE_VIDEO_TRACK=0 -DENABLE_WEBGL=0 -DENABLE_WEB_AUDIO=0 -DENABLE_XSLT=0 -DBUILDING_WebKit1 -DBUILDING_WEBKIT -DQT_ASCII_CAST_WARNINGS -DSQLITE_CORE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DSTATICALLY_LINKED_WITH_WebCore -DSTATICALLY_LINKED_WITH_JavaScriptCore -DSTATICALLY_LINKED_WITH_WTF -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_SQL_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/include/QtCore/5.1.0 \ + qtbase/include/QtCore/5.1.0/QtCore \ + qtbase/include/QtGui \ + qtbase/include/QtGui/5.1.0 \ + qtbase/include/QtGui/5.1.0/QtGui \ + qtbase/include/QtNetwork \ + qtbase/include/QtSql \ + qtbase/mkspecs/genode-g++ \ + qtbase/src/3rdparty/sqlite \ + qtwebkit/Source \ + qtwebkit/Source/JavaScriptCore \ + qtwebkit/Source/JavaScriptCore/API \ + qtwebkit/Source/JavaScriptCore/assembler \ + qtwebkit/Source/JavaScriptCore/bytecode \ + qtwebkit/Source/JavaScriptCore/bytecompiler \ + qtwebkit/Source/JavaScriptCore/debugger \ + qtwebkit/Source/JavaScriptCore/dfg \ + qtwebkit/Source/JavaScriptCore/disassembler \ + qtwebkit/Source/JavaScriptCore/ForwardingHeaders \ + qtwebkit/Source/JavaScriptCore/heap \ + qtwebkit/Source/JavaScriptCore/interpreter \ + qtwebkit/Source/JavaScriptCore/jit \ + qtwebkit/Source/JavaScriptCore/llint \ + qtwebkit/Source/JavaScriptCore/parser \ + qtwebkit/Source/JavaScriptCore/profiler \ + qtwebkit/Source/JavaScriptCore/runtime \ + qtwebkit/Source/JavaScriptCore/tools \ + qtwebkit/Source/JavaScriptCore/yarr \ + qtwebkit/Source/ThirdParty \ + qtwebkit/Source/WebCore \ + qtwebkit/Source/WebCore/accessibility \ + qtwebkit/Source/WebCore/bindings \ + qtwebkit/Source/WebCore/bindings/generic \ + qtwebkit/Source/WebCore/bindings/js \ + qtwebkit/Source/WebCore/bridge \ + qtwebkit/Source/WebCore/bridge/c \ + qtwebkit/Source/WebCore/bridge/jsc \ + qtwebkit/Source/WebCore/bridge/qt \ + qtwebkit/Source/WebCore/css \ + qtwebkit/Source/WebCore/dom \ + qtwebkit/Source/WebCore/dom/default \ + qtwebkit/Source/WebCore/editing \ + qtwebkit/Source/WebCore/fileapi \ + qtwebkit/Source/WebCore/history \ + qtwebkit/Source/WebCore/html \ + qtwebkit/Source/WebCore/html/canvas \ + qtwebkit/Source/WebCore/html/parser \ + qtwebkit/Source/WebCore/html/shadow \ + qtwebkit/Source/WebCore/html/track \ + qtwebkit/Source/WebCore/inspector \ + qtwebkit/Source/WebCore/loader \ + qtwebkit/Source/WebCore/loader/appcache \ + qtwebkit/Source/WebCore/loader/archive \ + qtwebkit/Source/WebCore/loader/cache \ + qtwebkit/Source/WebCore/loader/icon \ + qtwebkit/Source/WebCore/mathml \ + qtwebkit/Source/WebCore/Modules/filesystem \ + qtwebkit/Source/WebCore/Modules/geolocation \ + qtwebkit/Source/WebCore/Modules/indexeddb \ + qtwebkit/Source/WebCore/Modules/navigatorcontentutils \ + qtwebkit/Source/WebCore/Modules/notifications \ + qtwebkit/Source/WebCore/Modules/quota \ + qtwebkit/Source/WebCore/Modules/webaudio \ + qtwebkit/Source/WebCore/Modules/webdatabase \ + qtwebkit/Source/WebCore/Modules/websockets \ + qtwebkit/Source/WebCore/page \ + qtwebkit/Source/WebCore/page/animation \ + qtwebkit/Source/WebCore/page/qt \ + qtwebkit/Source/WebCore/page/scrolling \ + qtwebkit/Source/WebCore/platform \ + qtwebkit/Source/WebCore/platform/animation \ + qtwebkit/Source/WebCore/platform/audio \ + qtwebkit/Source/WebCore/platform/graphics \ + qtwebkit/Source/WebCore/platform/graphics/cpu/arm \ + qtwebkit/Source/WebCore/platform/graphics/cpu/arm/filters \ + qtwebkit/Source/WebCore/platform/graphics/filters \ + qtwebkit/Source/WebCore/platform/graphics/filters/texmap \ + qtwebkit/Source/WebCore/platform/graphics/opengl \ + qtwebkit/Source/WebCore/platform/graphics/opentype \ + qtwebkit/Source/WebCore/platform/graphics/qt \ + qtwebkit/Source/WebCore/platform/graphics/surfaces \ + qtwebkit/Source/WebCore/platform/graphics/texmap \ + qtwebkit/Source/WebCore/platform/graphics/transforms \ + qtwebkit/Source/WebCore/platform/image-decoders \ + qtwebkit/Source/WebCore/platform/image-decoders/bmp \ + qtwebkit/Source/WebCore/platform/image-decoders/gif \ + qtwebkit/Source/WebCore/platform/image-decoders/ico \ + qtwebkit/Source/WebCore/platform/image-decoders/jpeg \ + qtwebkit/Source/WebCore/platform/image-decoders/png \ + qtwebkit/Source/WebCore/platform/image-decoders/webp \ + qtwebkit/Source/WebCore/platform/leveldb \ + qtwebkit/Source/WebCore/platform/mock \ + qtwebkit/Source/WebCore/platform/network \ + qtwebkit/Source/WebCore/platform/network/qt \ + qtwebkit/Source/WebCore/platform/qt \ + qtwebkit/Source/WebCore/platform/sql \ + qtwebkit/Source/WebCore/platform/text \ + qtwebkit/Source/WebCore/platform/text/transcoder \ + qtwebkit/Source/WebCore/plugins \ + qtwebkit/Source/WebCore/rendering \ + qtwebkit/Source/WebCore/rendering/mathml \ + qtwebkit/Source/WebCore/rendering/style \ + qtwebkit/Source/WebCore/rendering/svg \ + qtwebkit/Source/WebCore/storage \ + qtwebkit/Source/WebCore/svg \ + qtwebkit/Source/WebCore/svg/animation \ + qtwebkit/Source/WebCore/svg/graphics \ + qtwebkit/Source/WebCore/svg/graphics/filters \ + qtwebkit/Source/WebCore/svg/properties \ + qtwebkit/Source/WebCore/testing \ + qtwebkit/Source/WebCore/testing/js \ + qtwebkit/Source/WebCore/websockets \ + qtwebkit/Source/WebCore/workers \ + qtwebkit/Source/WebCore/xml \ + qtwebkit/Source/WebCore/xml/parser \ + qtwebkit/Source/WebKit \ + qtwebkit/Source/WebKit/qt/Api \ + qtwebkit/Source/WebKit/qt/WebCoreSupport \ + qtwebkit/Source/WTF \ + qtwebkit/Source/WTF/wtf/qt \ + +QT_SOURCES += \ + qhttpheader.cpp \ + qwebdatabase.cpp \ + qwebelement.cpp \ + qwebhistory.cpp \ + qwebhistoryinterface.cpp \ + qwebkitglobal.cpp \ + qwebplugindatabase.cpp \ + qwebpluginfactory.cpp \ + qwebsecurityorigin.cpp \ + qwebsettings.cpp \ + qwebscriptworld.cpp \ + ChromeClientQt.cpp \ + ContextMenuClientQt.cpp \ + DragClientQt.cpp \ + DumpRenderTreeSupportQt.cpp \ + EditorClientQt.cpp \ + FrameLoaderClientQt.cpp \ + FrameNetworkingContextQt.cpp \ + GeolocationPermissionClientQt.cpp \ + InitWebCoreQt.cpp \ + InspectorClientQt.cpp \ + InspectorServerQt.cpp \ + NotificationPresenterClientQt.cpp \ + PlatformStrategiesQt.cpp \ + PopupMenuQt.cpp \ + QtPlatformPlugin.cpp \ + QtPluginWidgetAdapter.cpp \ + QtPrintContext.cpp \ + QWebFrameAdapter.cpp \ + QWebPageAdapter.cpp \ + SearchPopupMenuQt.cpp \ + TextCheckerClientQt.cpp \ + TextureMapperLayerClientQt.cpp \ + UndoStepQt.cpp \ + WebEventConversion.cpp \ + IconDatabaseClientQt.cpp \ + moc_qwebhistoryinterface.cpp \ + moc_qwebplugindatabase_p.cpp \ + moc_qwebpluginfactory.cpp \ + moc_qwebkitplatformplugin.cpp \ + moc_QtPluginWidgetAdapter.cpp + +QT_VPATH += \ + qtwebkit/Source/WebKit/qt/Api \ + qtwebkit/Source/WebKit/qt/WebCoreSupport \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + moc_qwebhistoryinterface.cpp \ + moc_qwebplugindatabase_p.cpp \ + moc_qwebpluginfactory.cpp \ + moc_qwebkitplatformplugin.cpp \ + moc_FrameLoaderClientQt.cpp \ + moc_InspectorServerQt.cpp \ + moc_NotificationPresenterClientQt.cpp \ + moc_PopupMenuQt.cpp \ + moc_QtPluginWidgetAdapter.cpp \ + moc_IconDatabaseClientQt.cpp + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + + diff --git a/libports/lib/mk/qt5_webkitwidgets.mk b/libports/lib/mk/qt5_webkitwidgets.mk new file mode 100644 index 0000000000..f5dead52fa --- /dev/null +++ b/libports/lib/mk/qt5_webkitwidgets.mk @@ -0,0 +1,22 @@ +include $(REP_DIR)/lib/import/import-qt5_webkitwidgets.mk + +SHARED_LIB = yes + +# use default warning level to avoid noise when compiling contrib code +CC_WARN = + +include $(REP_DIR)/lib/mk/qt5_webkitwidgets_generated.inc + +QT_INCPATH += qtwebkit/Source/WebCore/generated + +QT_VPATH += qtwebkit/Source/WebKit/qt/Api \ + +# remove unneeded files to prevent moc warnings +COMPILER_MOC_HEADER_MAKE_ALL_FILES_FILTER_OUT = \ + moc_DefaultFullScreenVideoHandler.cpp \ + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES_FILTER_OUT = \ + +include $(REP_DIR)/lib/mk/qt5.inc + +LIBS += qt5_webkit qt5_widgets qt5_printsupport qt5_core icu diff --git a/libports/lib/mk/qt5_webkitwidgets_generated.inc b/libports/lib/mk/qt5_webkitwidgets_generated.inc new file mode 100644 index 0000000000..a8615a6cae --- /dev/null +++ b/libports/lib/mk/qt5_webkitwidgets_generated.inc @@ -0,0 +1,190 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_BUILD_WEBKITWIDGETS_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DBUILDING_QT__=1 -DNDEBUG -DENABLE_3D_RENDERING=1 -DENABLE_BLOB=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_CSS_BOX_DECORATION_BREAK=1 -DENABLE_CSS_COMPOSITING=1 -DENABLE_CSS_EXCLUSIONS=1 -DENABLE_CSS_FILTERS=1 -DENABLE_CSS_IMAGE_SET=1 -DENABLE_CSS_REGIONS=1 -DENABLE_CSS_STICKY_POSITION=1 -DENABLE_DATALIST_ELEMENT=1 -DENABLE_DETAILS_ELEMENT=1 -DENABLE_FAST_MOBILE_SCROLLING=1 -DENABLE_FILTERS=1 -DENABLE_FTPDIR=1 -DENABLE_GESTURE_EVENTS=1 -DENABLE_ICONDATABASE=1 -DENABLE_IFRAME_SEAMLESS=1 -DENABLE_INPUT_TYPE_COLOR=1 -DENABLE_INSPECTOR=1 -DENABLE_INSPECTOR_SERVER=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_LEGACY_NOTIFICATIONS=1 -DENABLE_LEGACY_VIEWPORT_ADAPTION=1 -DENABLE_LEGACY_VENDOR_PREFIXES=1 -DENABLE_LINK_PREFETCH=1 -DENABLE_METER_ELEMENT=1 -DENABLE_MHTML=1 -DENABLE_MUTATION_OBSERVERS=1 -DENABLE_NOTIFICATIONS=1 -DENABLE_PAGE_VISIBILITY_API=1 -DENABLE_PROGRESS_ELEMENT=1 -DENABLE_RESOLUTION_MEDIA_QUERY=1 -DENABLE_REQUEST_ANIMATION_FRAME=1 -DENABLE_SHARED_WORKERS=1 -DENABLE_SMOOTH_SCROLLING=1 -DENABLE_SQL_DATABASE=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_TOUCH_ADJUSTMENT=1 -DENABLE_TOUCH_EVENTS=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_WEB_TIMING=1 -DENABLE_WORKERS=1 -DENABLE_XHR_TIMEOUT=1 -DWTF_USE_TILED_BACKING_STORE=1 -DHAVE_QTPRINTSUPPORT=1 -DHAVE_QSTYLE=1 -DHAVE_QTTESTLIB=1 -DWTF_USE_LIBJPEG=1 -DWTF_USE_LIBPNG=1 -DPLUGIN_ARCHITECTURE_UNSUPPORTED=1 -DENABLE_TOUCH_SLIDER=1 -DENABLE_ACCELERATED_2D_CANVAS=0 -DENABLE_ANIMATION_API=0 -DENABLE_BATTERY_STATUS=0 -DENABLE_CSP_NEXT=0 -DENABLE_CSS_GRID_LAYOUT=0 -DENABLE_CSS_HIERARCHIES=0 -DENABLE_CSS_IMAGE_ORIENTATION=0 -DENABLE_CSS_IMAGE_RESOLUTION=0 -DENABLE_CSS_SHADERS=0 -DENABLE_CSS_VARIABLES=0 -DENABLE_CSS3_BACKGROUND=0 -DENABLE_CSS3_CONDITIONAL_RULES=0 -DENABLE_CSS3_TEXT=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_DATAGRID=0 -DENABLE_DATA_TRANSFER_ITEMS=0 -DENABLE_DEVICE_ORIENTATION=0 -DENABLE_DIRECTORY_UPLOAD=0 -DENABLE_DOWNLOAD_ATTRIBUTE=0 -DENABLE_FILE_SYSTEM=0 -DENABLE_FULLSCREEN_API=0 -DENABLE_GAMEPAD=0 -DENABLE_GEOLOCATION=0 -DENABLE_HIGH_DPI_CANVAS=0 -DENABLE_INDEXED_DATABASE=0 -DENABLE_INPUT_SPEECH=0 -DENABLE_INPUT_TYPE_DATE=0 -DENABLE_INPUT_TYPE_DATETIME=0 -DENABLE_INPUT_TYPE_DATETIMELOCAL=0 -DENABLE_INPUT_TYPE_MONTH=0 -DENABLE_INPUT_TYPE_TIME=0 -DENABLE_INPUT_TYPE_WEEK=0 -DENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 -DENABLE_LINK_PRERENDER=0 -DENABLE_MATHML=0 -DENABLE_MEDIA_SOURCE=0 -DENABLE_MEDIA_STATISTICS=0 -DENABLE_MEDIA_STREAM=0 -DENABLE_MICRODATA=0 -DENABLE_NAVIGATOR_CONTENT_UTILS=0 -DENABLE_NETSCAPE_PLUGIN_API=0 -DENABLE_NETWORK_INFO=0 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_PROXIMITY_EVENTS=0 -DENABLE_QUOTA=0 -DENABLE_SCRIPTED_SPEECH=0 -DENABLE_SHADOW_DOM=0 -DENABLE_STYLE_SCOPED=0 -DENABLE_SVG_DOM_OBJC_BINDINGS=0 -DENABLE_TEXT_AUTOSIZING=0 -DENABLE_TEXT_NOTIFICATIONS_ONLY=0 -DENABLE_TOUCH_ICON_LOADING=0 -DENABLE_VIBRATION=0 -DENABLE_VIDEO=0 -DENABLE_VIDEO_TRACK=0 -DENABLE_WEBGL=0 -DENABLE_WEB_AUDIO=0 -DENABLE_XSLT=0 -DBUILDING_Qt5WebKitWidgets -DBUILDING_WEBKIT -DQT_ASCII_CAST_WARNINGS -DSQLITE_CORE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WEBKIT_LIB -DQT_WIDGETS_LIB -DQT_SQL_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/include/QtCore/5.1.0 \ + qtbase/include/QtCore/5.1.0/QtCore \ + qtbase/include/QtGui \ + qtbase/include/QtGui/5.1.0 \ + qtbase/include/QtGui/5.1.0/QtGui \ + qtbase/include/QtNetwork \ + qtbase/include/QtPrintSupport \ + qtbase/include/QtSql \ + qtbase/include/QtWidgets \ + qtbase/include/QtWidgets/5.1.0 \ + qtbase/include/QtWidgets/5.1.0/QtWidgets \ + qtbase/mkspecs/genode-g++ \ + qtwebkit/include \ + qtwebkit/include/QtWebKit \ + qtwebkit/include/QtWebKitWidgets \ + qtwebkit/include/QtWebKitWidgets/5.1.0 \ + qtwebkit/include/QtWebKitWidgets/5.1.0/QtWebKitWidgets \ + qtwebkit/Source \ + qtwebkit/Source/JavaScriptCore \ + qtwebkit/Source/JavaScriptCore/API \ + qtwebkit/Source/JavaScriptCore/assembler \ + qtwebkit/Source/JavaScriptCore/bytecode \ + qtwebkit/Source/JavaScriptCore/bytecompiler \ + qtwebkit/Source/JavaScriptCore/debugger \ + qtwebkit/Source/JavaScriptCore/dfg \ + qtwebkit/Source/JavaScriptCore/disassembler \ + qtwebkit/Source/JavaScriptCore/ForwardingHeaders \ + qtwebkit/Source/JavaScriptCore/heap \ + qtwebkit/Source/JavaScriptCore/interpreter \ + qtwebkit/Source/JavaScriptCore/jit \ + qtwebkit/Source/JavaScriptCore/llint \ + qtwebkit/Source/JavaScriptCore/parser \ + qtwebkit/Source/JavaScriptCore/profiler \ + qtwebkit/Source/JavaScriptCore/runtime \ + qtwebkit/Source/JavaScriptCore/tools \ + qtwebkit/Source/JavaScriptCore/yarr \ + qtwebkit/Source/qt/Api \ + qtwebkit/Source/qt/WebCoreSupport \ + qtwebkit/Source/ThirdParty \ + qtwebkit/Source/WebCore \ + qtwebkit/Source/WebCore/accessibility \ + qtwebkit/Source/WebCore/bindings \ + qtwebkit/Source/WebCore/bindings/generic \ + qtwebkit/Source/WebCore/bindings/js \ + qtwebkit/Source/WebCore/bridge \ + qtwebkit/Source/WebCore/bridge/c \ + qtwebkit/Source/WebCore/bridge/jsc \ + qtwebkit/Source/WebCore/bridge/qt \ + qtwebkit/Source/WebCore/css \ + qtwebkit/Source/WebCore/dom \ + qtwebkit/Source/WebCore/dom/default \ + qtwebkit/Source/WebCore/editing \ + qtwebkit/Source/WebCore/fileapi \ + qtwebkit/Source/WebCore/history \ + qtwebkit/Source/WebCore/html \ + qtwebkit/Source/WebCore/html/canvas \ + qtwebkit/Source/WebCore/html/parser \ + qtwebkit/Source/WebCore/html/shadow \ + qtwebkit/Source/WebCore/html/track \ + qtwebkit/Source/WebCore/inspector \ + qtwebkit/Source/WebCore/loader \ + qtwebkit/Source/WebCore/loader/appcache \ + qtwebkit/Source/WebCore/loader/archive \ + qtwebkit/Source/WebCore/loader/cache \ + qtwebkit/Source/WebCore/loader/icon \ + qtwebkit/Source/WebCore/mathml \ + qtwebkit/Source/WebCore/Modules/filesystem \ + qtwebkit/Source/WebCore/Modules/geolocation \ + qtwebkit/Source/WebCore/Modules/indexeddb \ + qtwebkit/Source/WebCore/Modules/navigatorcontentutils \ + qtwebkit/Source/WebCore/Modules/notifications \ + qtwebkit/Source/WebCore/Modules/quota \ + qtwebkit/Source/WebCore/Modules/webaudio \ + qtwebkit/Source/WebCore/Modules/webdatabase \ + qtwebkit/Source/WebCore/Modules/websockets \ + qtwebkit/Source/WebCore/page \ + qtwebkit/Source/WebCore/page/animation \ + qtwebkit/Source/WebCore/page/qt \ + qtwebkit/Source/WebCore/page/scrolling \ + qtwebkit/Source/WebCore/platform \ + qtwebkit/Source/WebCore/platform/animation \ + qtwebkit/Source/WebCore/platform/audio \ + qtwebkit/Source/WebCore/platform/graphics \ + qtwebkit/Source/WebCore/platform/graphics/cpu/arm \ + qtwebkit/Source/WebCore/platform/graphics/cpu/arm/filters \ + qtwebkit/Source/WebCore/platform/graphics/filters \ + qtwebkit/Source/WebCore/platform/graphics/filters/texmap \ + qtwebkit/Source/WebCore/platform/graphics/opengl \ + qtwebkit/Source/WebCore/platform/graphics/opentype \ + qtwebkit/Source/WebCore/platform/graphics/qt \ + qtwebkit/Source/WebCore/platform/graphics/surfaces \ + qtwebkit/Source/WebCore/platform/graphics/texmap \ + qtwebkit/Source/WebCore/platform/graphics/transforms \ + qtwebkit/Source/WebCore/platform/image-decoders \ + qtwebkit/Source/WebCore/platform/image-decoders/bmp \ + qtwebkit/Source/WebCore/platform/image-decoders/gif \ + qtwebkit/Source/WebCore/platform/image-decoders/ico \ + qtwebkit/Source/WebCore/platform/image-decoders/jpeg \ + qtwebkit/Source/WebCore/platform/image-decoders/png \ + qtwebkit/Source/WebCore/platform/image-decoders/webp \ + qtwebkit/Source/WebCore/platform/leveldb \ + qtwebkit/Source/WebCore/platform/mock \ + qtwebkit/Source/WebCore/platform/network \ + qtwebkit/Source/WebCore/platform/network/qt \ + qtwebkit/Source/WebCore/platform/qt \ + qtwebkit/Source/WebCore/platform/sql \ + qtwebkit/Source/WebCore/platform/text \ + qtwebkit/Source/WebCore/platform/text/transcoder \ + qtwebkit/Source/WebCore/plugins \ + qtwebkit/Source/WebCore/rendering \ + qtwebkit/Source/WebCore/rendering/mathml \ + qtwebkit/Source/WebCore/rendering/style \ + qtwebkit/Source/WebCore/rendering/svg \ + qtwebkit/Source/WebCore/storage \ + qtwebkit/Source/WebCore/svg \ + qtwebkit/Source/WebCore/svg/animation \ + qtwebkit/Source/WebCore/svg/graphics \ + qtwebkit/Source/WebCore/svg/graphics/filters \ + qtwebkit/Source/WebCore/svg/properties \ + qtwebkit/Source/WebCore/testing \ + qtwebkit/Source/WebCore/testing/js \ + qtwebkit/Source/WebCore/websockets \ + qtwebkit/Source/WebCore/workers \ + qtwebkit/Source/WebCore/xml \ + qtwebkit/Source/WebCore/xml/parser \ + qtwebkit/Source/WebKit/qt/Api \ + qtwebkit/Source/WebKit/qt/WebCoreSupport \ + qtwebkit/Source/WebKit/qt/WidgetApi \ + qtwebkit/Source/WebKit/qt/WidgetSupport \ + qtwebkit/Source/WTF \ + qtwebkit/Source/WTF/wtf/qt \ + +QT_SOURCES += \ + qgraphicswebview.cpp \ + qwebframe.cpp \ + qwebpage.cpp \ + qwebview.cpp \ + qwebinspector.cpp \ + QtFallbackWebPopup.cpp \ + QtWebComboBox.cpp \ + QWebUndoCommand.cpp \ + DefaultFullScreenVideoHandler.cpp \ + InitWebKitQt.cpp \ + InspectorClientWebPage.cpp \ + PageClientQt.cpp \ + QStyleFacadeImp.cpp \ + QGraphicsWidgetPluginImpl.cpp \ + QWidgetPluginImpl.cpp \ + moc_qwebinspector.cpp \ + moc_qwebkitplatformplugin.cpp \ + moc_InspectorClientWebPage.cpp \ + moc_DefaultFullScreenVideoHandler.cpp \ + moc_QtFallbackWebPopup.cpp \ + moc_QtWebComboBox.cpp + +QT_VPATH += \ + qtwebkit/Source/WebKit/qt/WidgetApi \ + qtwebkit/Source/WebKit/qt/WidgetSupport \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + moc_qgraphicswebview.cpp \ + moc_qwebframe.cpp \ + moc_qwebpage.cpp \ + moc_qwebview.cpp \ + moc_qwebinspector.cpp \ + moc_qwebkitplatformplugin.cpp \ + moc_InspectorClientWebPage.cpp \ + moc_DefaultFullScreenVideoHandler.cpp \ + moc_QtFallbackWebPopup.cpp \ + moc_QtWebComboBox.cpp \ + moc_QGraphicsWidgetPluginImpl.cpp \ + moc_QWidgetPluginImpl.cpp + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + + diff --git a/libports/lib/mk/qt5_widgets.mk b/libports/lib/mk/qt5_widgets.mk new file mode 100644 index 0000000000..e2882f3a51 --- /dev/null +++ b/libports/lib/mk/qt5_widgets.mk @@ -0,0 +1,19 @@ +include $(REP_DIR)/lib/import/import-qt5_widgets.mk + +SHARED_LIB = yes + +include $(REP_DIR)/lib/mk/qt5_widgets_generated.inc + +# UI headers +qfiledialog.o: ui_qfiledialog.h + +include $(REP_DIR)/lib/mk/qt5.inc + +INC_DIR += $(REP_DIR)/include/qt5/qtbase/QtWidgets/private \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtWidgets/$(QT_VERSION)/QtWidgets \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtGui/$(QT_VERSION) \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtGui/$(QT_VERSION)/QtGui \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION) \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION)/QtCore + +LIBS += qt5_core libc diff --git a/libports/lib/mk/qt5_widgets_generated.inc b/libports/lib/mk/qt5_widgets_generated.inc new file mode 100644 index 0000000000..dfd373d923 --- /dev/null +++ b/libports/lib/mk/qt5_widgets_generated.inc @@ -0,0 +1,457 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_NO_USING_NAMESPACE -DQT_BUILD_WIDGETS_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_STYLE_MAC -DQT_STYLE_WINDOWS -DQT_NO_STYLE_WINDOWSVISTA -DQT_NO_STYLE_WINDOWSXP -DQT_NO_STYLE_GTK -DQT_NO_STYLE_WINDOWSCE -DQT_NO_STYLE_WINDOWSMOBILE -DQT_NO_STYLE_ANDROID -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/include/QtCore/5.1.0 \ + qtbase/include/QtCore/5.1.0/QtCore \ + qtbase/include/QtGui \ + qtbase/include/QtGui/5.1.0 \ + qtbase/include/QtGui/5.1.0/QtGui \ + qtbase/include/QtWidgets \ + qtbase/include/QtWidgets/5.1.0 \ + qtbase/include/QtWidgets/5.1.0/QtWidgets \ + qtbase/mkspecs/genode-g++ \ + qtbase/src/widgets \ + qtbase/src/widgets/dialogs \ + +QT_SOURCES += \ + qaction.cpp \ + qactiongroup.cpp \ + qapplication.cpp \ + qwidgetbackingstore.cpp \ + qboxlayout.cpp \ + qformlayout.cpp \ + qgridlayout.cpp \ + qlayout.cpp \ + qlayoutengine.cpp \ + qlayoutitem.cpp \ + qshortcut.cpp \ + qstackedlayout.cpp \ + qtooltip.cpp \ + qwhatsthis.cpp \ + qwidget.cpp \ + qwidgetaction.cpp \ + qgesture.cpp \ + qstandardgestures.cpp \ + qgesturerecognizer.cpp \ + qgesturemanager.cpp \ + qdesktopwidget.cpp \ + qwidgetsvariant.cpp \ + qapplication_qpa.cpp \ + qdesktopwidget_qpa.cpp \ + qwidget_qpa.cpp \ + qwidgetwindow.cpp \ + qwindowcontainer.cpp \ + qdrawutil.cpp \ + qstyle.cpp \ + qstyleanimation.cpp \ + qstylefactory.cpp \ + qstyleoption.cpp \ + qstyleplugin.cpp \ + qstylehelper.cpp \ + qcommonstyle.cpp \ + qproxystyle.cpp \ + qstylepainter.cpp \ + qstylesheetstyle.cpp \ + qstylesheetstyle_default.cpp \ + qwindowsstyle.cpp \ + qfusionstyle.cpp \ + qabstractbutton.cpp \ + qabstractslider.cpp \ + qabstractspinbox.cpp \ + qcalendarwidget.cpp \ + qcheckbox.cpp \ + qcombobox.cpp \ + qcommandlinkbutton.cpp \ + qdatetimeedit.cpp \ + qdial.cpp \ + qdialogbuttonbox.cpp \ + qdockwidget.cpp \ + qdockarealayout.cpp \ + qeffects.cpp \ + qfontcombobox.cpp \ + qframe.cpp \ + qgroupbox.cpp \ + qlabel.cpp \ + qlcdnumber.cpp \ + qlineedit_p.cpp \ + qlineedit.cpp \ + qmainwindow.cpp \ + qmainwindowlayout.cpp \ + qmdiarea.cpp \ + qmdisubwindow.cpp \ + qmenu.cpp \ + qmenubar.cpp \ + qprogressbar.cpp \ + qpushbutton.cpp \ + qradiobutton.cpp \ + qrubberband.cpp \ + qscrollbar.cpp \ + qsizegrip.cpp \ + qslider.cpp \ + qspinbox.cpp \ + qsplashscreen.cpp \ + qsplitter.cpp \ + qstackedwidget.cpp \ + qstatusbar.cpp \ + qtabbar.cpp \ + qtabwidget.cpp \ + qtextedit.cpp \ + qtextbrowser.cpp \ + qtoolbar.cpp \ + qtoolbarlayout.cpp \ + qtoolbarextension.cpp \ + qtoolbarseparator.cpp \ + qtoolbox.cpp \ + qtoolbutton.cpp \ + qabstractscrollarea.cpp \ + qwidgetresizehandler.cpp \ + qfocusframe.cpp \ + qscrollarea.cpp \ + qwidgetanimator.cpp \ + qwidgettextcontrol.cpp \ + qwidgetlinecontrol.cpp \ + qtoolbararealayout.cpp \ + qplaintextedit.cpp \ + qcolordialog.cpp \ + qdialog.cpp \ + qerrormessage.cpp \ + qfiledialog.cpp \ + qfontdialog.cpp \ + qinputdialog.cpp \ + qmessagebox.cpp \ + qprogressdialog.cpp \ + qsidebar.cpp \ + qfilesystemmodel.cpp \ + qfileinfogatherer.cpp \ + qwizard.cpp \ + qabstractitemview.cpp \ + qheaderview.cpp \ + qlistview.cpp \ + qbsptree.cpp \ + qtableview.cpp \ + qtreeview.cpp \ + qabstractitemdelegate.cpp \ + qitemdelegate.cpp \ + qdirmodel.cpp \ + qlistwidget.cpp \ + qtablewidget.cpp \ + qtreewidget.cpp \ + qitemeditorfactory.cpp \ + qtreewidgetitemiterator.cpp \ + qdatawidgetmapper.cpp \ + qfileiconprovider.cpp \ + qcolumnview.cpp \ + qcolumnviewgrip.cpp \ + qstyleditemdelegate.cpp \ + qgraphicsgridlayout.cpp \ + qgraphicsitem.cpp \ + qgraphicsitemanimation.cpp \ + qgraphicslayout.cpp \ + qgraphicslayout_p.cpp \ + qgraphicslayoutitem.cpp \ + qgraphicslinearlayout.cpp \ + qgraphicsproxywidget.cpp \ + qgraphicsscene.cpp \ + qgraphicsscene_bsp.cpp \ + qgraphicsscenebsptreeindex.cpp \ + qgraphicssceneevent.cpp \ + qgraphicssceneindex.cpp \ + qgraphicsscenelinearindex.cpp \ + qgraphicstransform.cpp \ + qgraphicsview.cpp \ + qgraphicswidget.cpp \ + qgraphicswidget_p.cpp \ + qgridlayoutengine.cpp \ + qsimplex_p.cpp \ + qgraphicsanchorlayout_p.cpp \ + qgraphicsanchorlayout.cpp \ + qsystemtrayicon.cpp \ + qcolormap.cpp \ + qcompleter.cpp \ + qscroller.cpp \ + qscrollerproperties.cpp \ + qflickgesture.cpp \ + qundogroup.cpp \ + qundostack.cpp \ + qundoview.cpp \ + qsystemtrayicon_qpa.cpp \ + qguistatemachine.cpp \ + qkeyeventtransition.cpp \ + qmouseeventtransition.cpp \ + qbasickeyeventtransition.cpp \ + qbasicmouseeventtransition.cpp \ + qgraphicseffect.cpp \ + qpixmapfilter.cpp \ + qrc_qstyle.cpp \ + qrc_qmessagebox.cpp \ + moc_qboxlayout.cpp \ + moc_qdesktopwidget.cpp \ + moc_qformlayout.cpp \ + moc_qgridlayout.cpp \ + moc_qlayout.cpp \ + moc_qshortcut.cpp \ + moc_qsizepolicy.cpp \ + moc_qstackedlayout.cpp \ + moc_qdesktopwidget_qpa_p.cpp \ + moc_qwidgetwindow_qpa_p.cpp \ + moc_qwindowcontainer_p.cpp \ + moc_qstyle.cpp \ + moc_qstyleanimation_p.cpp \ + moc_qstyleplugin.cpp \ + moc_qproxystyle.cpp \ + moc_qwindowsstyle_p.cpp \ + moc_qfusionstyle_p.cpp \ + moc_qbuttongroup.cpp \ + moc_qabstractbutton.cpp \ + moc_qabstractslider.cpp \ + moc_qcalendartextnavigator_p.cpp \ + moc_qcheckbox.cpp \ + moc_qcombobox_p.cpp \ + moc_qcommandlinkbutton.cpp \ + moc_qdatetimeedit_p.cpp \ + moc_qdial.cpp \ + moc_qdockwidget_p.cpp \ + moc_qframe.cpp \ + moc_qlcdnumber.cpp \ + moc_qmainwindow.cpp \ + moc_qmainwindowlayout_p.cpp \ + moc_qprogressbar.cpp \ + moc_qradiobutton.cpp \ + moc_qrubberband.cpp \ + moc_qscrollbar.cpp \ + moc_qslider.cpp \ + moc_qspinbox.cpp \ + moc_qsplashscreen.cpp \ + moc_qsplitter.cpp \ + moc_qstackedwidget.cpp \ + moc_qstatusbar.cpp \ + moc_qtabbar_p.cpp \ + moc_qtoolbarlayout_p.cpp \ + moc_qtoolbarextension_p.cpp \ + moc_qtoolbarseparator_p.cpp \ + moc_qwidgetresizehandler_p.cpp \ + moc_qfocusframe.cpp \ + moc_qscrollarea.cpp \ + moc_qwidgetanimator_p.cpp \ + moc_qwidgetlinecontrol_p.cpp \ + moc_qerrormessage.cpp \ + moc_qsidebar_p.cpp \ + moc_qfileinfogatherer_p.cpp \ + moc_qlistview.cpp \ + moc_qabstractitemdelegate.cpp \ + moc_qlistwidget_p.cpp \ + moc_qtablewidget_p.cpp \ + moc_qtreewidget_p.cpp \ + moc_qitemeditorfactory_p.cpp \ + moc_qcolumnviewgrip_p.cpp \ + moc_qgraphicsitemanimation.cpp \ + moc_qgraphicsscenelinearindex_p.cpp \ + moc_qgraphicswidget.cpp \ + moc_qgraphicsanchorlayout.cpp \ + moc_qcompleter_p.cpp \ + moc_qsystemtrayicon_p.cpp \ + moc_qscroller.cpp \ + moc_qscroller_p.cpp \ + moc_qflickgesture_p.cpp \ + moc_qundogroup.cpp \ + moc_qundostack.cpp \ + moc_qundostack_p.cpp \ + moc_qundoview.cpp \ + moc_qkeyeventtransition.cpp \ + moc_qmouseeventtransition.cpp \ + moc_qbasickeyeventtransition_p.cpp \ + moc_qbasicmouseeventtransition_p.cpp \ + moc_qgraphicseffect.cpp \ + moc_qgraphicseffect_p.cpp \ + moc_qpixmapfilter_p.cpp + +QT_VPATH += \ + qtbase/src/widgets/dialogs \ + qtbase/src/widgets/effects \ + qtbase/src/widgets/graphicsview \ + qtbase/src/widgets/itemviews \ + qtbase/src/widgets/kernel \ + qtbase/src/widgets/statemachine \ + qtbase/src/widgets/styles \ + qtbase/src/widgets/util \ + qtbase/src/widgets/widgets \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + moc_qaction.cpp \ + moc_qactiongroup.cpp \ + moc_qapplication.cpp \ + moc_qboxlayout.cpp \ + moc_qdesktopwidget.cpp \ + moc_qformlayout.cpp \ + moc_qgridlayout.cpp \ + moc_qlayout.cpp \ + moc_qshortcut.cpp \ + moc_qsizepolicy.cpp \ + moc_qstackedlayout.cpp \ + moc_qwidget.cpp \ + moc_qwidgetaction.cpp \ + moc_qgesture.cpp \ + moc_qgesturemanager_p.cpp \ + moc_qdesktopwidget_qpa_p.cpp \ + moc_qwidgetwindow_qpa_p.cpp \ + moc_qwindowcontainer_p.cpp \ + moc_qstyle.cpp \ + moc_qstyleanimation_p.cpp \ + moc_qstyleplugin.cpp \ + moc_qcommonstyle.cpp \ + moc_qproxystyle.cpp \ + moc_qstylesheetstyle_p.cpp \ + moc_qwindowsstyle_p.cpp \ + moc_qfusionstyle_p.cpp \ + moc_qbuttongroup.cpp \ + moc_qabstractbutton.cpp \ + moc_qabstractslider.cpp \ + moc_qabstractspinbox.cpp \ + moc_qcalendartextnavigator_p.cpp \ + moc_qcalendarwidget.cpp \ + moc_qcheckbox.cpp \ + moc_qcombobox.cpp \ + moc_qcombobox_p.cpp \ + moc_qcommandlinkbutton.cpp \ + moc_qdatetimeedit.cpp \ + moc_qdatetimeedit_p.cpp \ + moc_qdial.cpp \ + moc_qdialogbuttonbox.cpp \ + moc_qdockwidget.cpp \ + moc_qdockwidget_p.cpp \ + moc_qfontcombobox.cpp \ + moc_qframe.cpp \ + moc_qgroupbox.cpp \ + moc_qlabel.cpp \ + moc_qlcdnumber.cpp \ + moc_qlineedit.cpp \ + moc_qmainwindow.cpp \ + moc_qmainwindowlayout_p.cpp \ + moc_qmdiarea.cpp \ + moc_qmdisubwindow.cpp \ + moc_qmenu.cpp \ + moc_qmenubar.cpp \ + moc_qprogressbar.cpp \ + moc_qpushbutton.cpp \ + moc_qradiobutton.cpp \ + moc_qrubberband.cpp \ + moc_qscrollbar.cpp \ + moc_qsizegrip.cpp \ + moc_qslider.cpp \ + moc_qspinbox.cpp \ + moc_qsplashscreen.cpp \ + moc_qsplitter.cpp \ + moc_qstackedwidget.cpp \ + moc_qstatusbar.cpp \ + moc_qtabbar.cpp \ + moc_qtabbar_p.cpp \ + moc_qtabwidget.cpp \ + moc_qtextedit.cpp \ + moc_qtextbrowser.cpp \ + moc_qtoolbar.cpp \ + moc_qtoolbarlayout_p.cpp \ + moc_qtoolbarextension_p.cpp \ + moc_qtoolbarseparator_p.cpp \ + moc_qtoolbox.cpp \ + moc_qtoolbutton.cpp \ + moc_qabstractscrollarea.cpp \ + moc_qabstractscrollarea_p.cpp \ + moc_qwidgetresizehandler_p.cpp \ + moc_qfocusframe.cpp \ + moc_qscrollarea.cpp \ + moc_qwidgetanimator_p.cpp \ + moc_qwidgettextcontrol_p.cpp \ + moc_qwidgetlinecontrol_p.cpp \ + moc_qplaintextedit.cpp \ + moc_qplaintextedit_p.cpp \ + moc_qcolordialog.cpp \ + moc_qdialog.cpp \ + moc_qerrormessage.cpp \ + moc_qfiledialog.cpp \ + moc_qfontdialog.cpp \ + moc_qinputdialog.cpp \ + moc_qmessagebox.cpp \ + moc_qprogressdialog.cpp \ + moc_qsidebar_p.cpp \ + moc_qfilesystemmodel.cpp \ + moc_qfileinfogatherer_p.cpp \ + moc_qwizard.cpp \ + moc_qabstractitemview.cpp \ + moc_qheaderview.cpp \ + moc_qlistview.cpp \ + moc_qtableview.cpp \ + moc_qtreeview.cpp \ + moc_qabstractitemdelegate.cpp \ + moc_qitemdelegate.cpp \ + moc_qdirmodel.cpp \ + moc_qlistwidget.cpp \ + moc_qlistwidget_p.cpp \ + moc_qtablewidget.cpp \ + moc_qtablewidget_p.cpp \ + moc_qtreewidget.cpp \ + moc_qtreewidget_p.cpp \ + moc_qitemeditorfactory_p.cpp \ + moc_qdatawidgetmapper.cpp \ + moc_qcolumnviewgrip_p.cpp \ + moc_qcolumnview.cpp \ + moc_qstyleditemdelegate.cpp \ + moc_qgraphicsitem.cpp \ + moc_qgraphicsitemanimation.cpp \ + moc_qgraphicsproxywidget.cpp \ + moc_qgraphicsscene.cpp \ + moc_qgraphicsscenebsptreeindex_p.cpp \ + moc_qgraphicssceneindex_p.cpp \ + moc_qgraphicsscenelinearindex_p.cpp \ + moc_qgraphicstransform.cpp \ + moc_qgraphicsview.cpp \ + moc_qgraphicswidget.cpp \ + moc_qgraphicsanchorlayout.cpp \ + moc_qsystemtrayicon.cpp \ + moc_qcompleter.cpp \ + moc_qcompleter_p.cpp \ + moc_qsystemtrayicon_p.cpp \ + moc_qscroller.cpp \ + moc_qscroller_p.cpp \ + moc_qflickgesture_p.cpp \ + moc_qundogroup.cpp \ + moc_qundostack.cpp \ + moc_qundostack_p.cpp \ + moc_qundoview.cpp \ + moc_qkeyeventtransition.cpp \ + moc_qmouseeventtransition.cpp \ + moc_qbasickeyeventtransition_p.cpp \ + moc_qbasicmouseeventtransition_p.cpp \ + moc_qgraphicseffect.cpp \ + moc_qgraphicseffect_p.cpp \ + moc_qpixmapfilter_p.cpp + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + qtooltip.moc \ + qwhatsthis.moc \ + qcalendarwidget.moc \ + qdockwidget.moc \ + qeffects.moc \ + qfontcombobox.moc \ + qmdisubwindow.moc \ + qmenu.moc \ + qtoolbox.moc \ + qcolordialog.moc \ + qfontdialog.moc \ + qinputdialog.moc \ + qmessagebox.moc \ + qtableview.moc \ + qlistwidget.moc \ + qitemeditorfactory.moc \ + qundoview.moc + diff --git a/libports/lib/mk/qt5_wtf.mk b/libports/lib/mk/qt5_wtf.mk new file mode 100644 index 0000000000..caa9d2ca83 --- /dev/null +++ b/libports/lib/mk/qt5_wtf.mk @@ -0,0 +1,17 @@ +include $(REP_DIR)/lib/import/import-qt5_wtf.mk + +SHARED_LIB = yes + +# use default warning level to avoid noise when compiling contrib code +CC_WARN = + +include $(REP_DIR)/lib/mk/qt5_wtf_generated.inc + +# remove unneeded files to prevent moc warnings +COMPILER_MOC_HEADER_MAKE_ALL_FILES_FILTER_OUT = \ + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES_FILTER_OUT = \ + +include $(REP_DIR)/lib/mk/qt5.inc + +LIBS += qt5_core icu diff --git a/libports/lib/mk/qt5_wtf_generated.inc b/libports/lib/mk/qt5_wtf_generated.inc new file mode 100644 index 0000000000..e2c699937b --- /dev/null +++ b/libports/lib/mk/qt5_wtf_generated.inc @@ -0,0 +1,98 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DBUILDING_QT__=1 -DNDEBUG -DENABLE_3D_RENDERING=1 -DENABLE_BLOB=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_CSS_BOX_DECORATION_BREAK=1 -DENABLE_CSS_COMPOSITING=1 -DENABLE_CSS_EXCLUSIONS=1 -DENABLE_CSS_FILTERS=1 -DENABLE_CSS_IMAGE_SET=1 -DENABLE_CSS_REGIONS=1 -DENABLE_CSS_STICKY_POSITION=1 -DENABLE_DATALIST_ELEMENT=1 -DENABLE_DETAILS_ELEMENT=1 -DENABLE_FAST_MOBILE_SCROLLING=1 -DENABLE_FILTERS=1 -DENABLE_FTPDIR=1 -DENABLE_GESTURE_EVENTS=1 -DENABLE_ICONDATABASE=1 -DENABLE_IFRAME_SEAMLESS=1 -DENABLE_INPUT_TYPE_COLOR=1 -DENABLE_INSPECTOR=1 -DENABLE_INSPECTOR_SERVER=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_LEGACY_NOTIFICATIONS=1 -DENABLE_LEGACY_VIEWPORT_ADAPTION=1 -DENABLE_LEGACY_VENDOR_PREFIXES=1 -DENABLE_LINK_PREFETCH=1 -DENABLE_METER_ELEMENT=1 -DENABLE_MHTML=1 -DENABLE_MUTATION_OBSERVERS=1 -DENABLE_NOTIFICATIONS=1 -DENABLE_PAGE_VISIBILITY_API=1 -DENABLE_PROGRESS_ELEMENT=1 -DENABLE_RESOLUTION_MEDIA_QUERY=1 -DENABLE_REQUEST_ANIMATION_FRAME=1 -DENABLE_SHARED_WORKERS=1 -DENABLE_SMOOTH_SCROLLING=1 -DENABLE_SQL_DATABASE=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_TOUCH_ADJUSTMENT=1 -DENABLE_TOUCH_EVENTS=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_WEB_TIMING=1 -DENABLE_WORKERS=1 -DENABLE_XHR_TIMEOUT=1 -DWTF_USE_TILED_BACKING_STORE=1 -DHAVE_QTPRINTSUPPORT=1 -DHAVE_QSTYLE=1 -DHAVE_QTTESTLIB=1 -DWTF_USE_LIBJPEG=1 -DWTF_USE_LIBPNG=1 -DPLUGIN_ARCHITECTURE_UNSUPPORTED=1 -DENABLE_TOUCH_SLIDER=1 -DENABLE_ACCELERATED_2D_CANVAS=0 -DENABLE_ANIMATION_API=0 -DENABLE_BATTERY_STATUS=0 -DENABLE_CSP_NEXT=0 -DENABLE_CSS_GRID_LAYOUT=0 -DENABLE_CSS_HIERARCHIES=0 -DENABLE_CSS_IMAGE_ORIENTATION=0 -DENABLE_CSS_IMAGE_RESOLUTION=0 -DENABLE_CSS_SHADERS=0 -DENABLE_CSS_VARIABLES=0 -DENABLE_CSS3_BACKGROUND=0 -DENABLE_CSS3_CONDITIONAL_RULES=0 -DENABLE_CSS3_TEXT=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_DATAGRID=0 -DENABLE_DATA_TRANSFER_ITEMS=0 -DENABLE_DEVICE_ORIENTATION=0 -DENABLE_DIRECTORY_UPLOAD=0 -DENABLE_DOWNLOAD_ATTRIBUTE=0 -DENABLE_FILE_SYSTEM=0 -DENABLE_FULLSCREEN_API=0 -DENABLE_GAMEPAD=0 -DENABLE_GEOLOCATION=0 -DENABLE_HIGH_DPI_CANVAS=0 -DENABLE_INDEXED_DATABASE=0 -DENABLE_INPUT_SPEECH=0 -DENABLE_INPUT_TYPE_DATE=0 -DENABLE_INPUT_TYPE_DATETIME=0 -DENABLE_INPUT_TYPE_DATETIMELOCAL=0 -DENABLE_INPUT_TYPE_MONTH=0 -DENABLE_INPUT_TYPE_TIME=0 -DENABLE_INPUT_TYPE_WEEK=0 -DENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 -DENABLE_LINK_PRERENDER=0 -DENABLE_MATHML=0 -DENABLE_MEDIA_SOURCE=0 -DENABLE_MEDIA_STATISTICS=0 -DENABLE_MEDIA_STREAM=0 -DENABLE_MICRODATA=0 -DENABLE_NAVIGATOR_CONTENT_UTILS=0 -DENABLE_NETSCAPE_PLUGIN_API=0 -DENABLE_NETWORK_INFO=0 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_PROXIMITY_EVENTS=0 -DENABLE_QUOTA=0 -DENABLE_SCRIPTED_SPEECH=0 -DENABLE_SHADOW_DOM=0 -DENABLE_STYLE_SCOPED=0 -DENABLE_SVG_DOM_OBJC_BINDINGS=0 -DENABLE_TEXT_AUTOSIZING=0 -DENABLE_TEXT_NOTIFICATIONS_ONLY=0 -DENABLE_TOUCH_ICON_LOADING=0 -DENABLE_VIBRATION=0 -DENABLE_VIDEO=0 -DENABLE_VIDEO_TRACK=0 -DENABLE_WEBGL=0 -DENABLE_WEB_AUDIO=0 -DENABLE_XSLT=0 -DBUILDING_WTF -DBUILDING_WEBKIT -DQT_ASCII_CAST_WARNINGS -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_CORE_LIB + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/mkspecs/genode-g++ \ + qtwebkit/Source \ + qtwebkit/Source/WTF \ + qtwebkit/Source/WTF/wtf \ + +QT_SOURCES += \ + ArrayBuffer.cpp \ + ArrayBufferView.cpp \ + Assertions.cpp \ + Atomics.cpp \ + BitVector.cpp \ + CryptographicallyRandomNumber.cpp \ + CurrentTime.cpp \ + DateMath.cpp \ + DataLog.cpp \ + DecimalNumber.cpp \ + dtoa.cpp \ + bignum-dtoa.cc \ + bignum.cc \ + cached-powers.cc \ + diy-fp.cc \ + double-conversion.cc \ + fast-dtoa.cc \ + fixed-dtoa.cc \ + strtod.cc \ + FastMalloc.cpp \ + FilePrintStream.cpp \ + GregorianDateTime.cpp \ + GOwnPtr.cpp \ + GRefPtr.cpp \ + HashTable.cpp \ + MD5.cpp \ + MainThread.cpp \ + MediaTime.cpp \ + MemoryInstrumentation.cpp \ + MetaAllocator.cpp \ + NullPtr.cpp \ + NumberOfCores.cpp \ + RAMSize.cpp \ + OSRandomSource.cpp \ + MainThreadQt.cpp \ + StringQt.cpp \ + PageAllocationAligned.cpp \ + PageBlock.cpp \ + ParallelJobsGeneric.cpp \ + PrintStream.cpp \ + RandomNumber.cpp \ + RefCountedLeakCounter.cpp \ + SHA1.cpp \ + StackBounds.cpp \ + StringPrintStream.cpp \ + TCSystemAlloc.cpp \ + Threading.cpp \ + TypeTraits.cpp \ + WTFThreadData.cpp \ + AtomicString.cpp \ + Base64.cpp \ + CString.cpp \ + StringBuilder.cpp \ + StringImpl.cpp \ + StringStatics.cpp \ + WTFString.cpp \ + CollatorDefault.cpp \ + CollatorICU.cpp \ + UTF8.cpp \ + OSAllocatorPosix.cpp \ + ThreadIdentifierDataPthreads.cpp \ + ThreadingPthreads.cpp + +QT_VPATH += \ + qtwebkit/Source/WTF/wtf \ + qtwebkit/Source/WTF/wtf/dtoa \ + qtwebkit/Source/WTF/wtf/gobject \ + qtwebkit/Source/WTF/wtf/qt \ + qtwebkit/Source/WTF/wtf/text \ + qtwebkit/Source/WTF/wtf/unicode \ + qtwebkit/Source/WTF/wtf/unicode/icu \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + MainThreadQt.moc + diff --git a/libports/lib/mk/qt5_xml.mk b/libports/lib/mk/qt5_xml.mk new file mode 100644 index 0000000000..b2f92e1d1b --- /dev/null +++ b/libports/lib/mk/qt5_xml.mk @@ -0,0 +1,12 @@ +include $(REP_DIR)/lib/import/import-qt5_xml.mk + +SHARED_LIB = yes + +include $(REP_DIR)/lib/mk/qt5_xml_generated.inc + +include $(REP_DIR)/lib/mk/qt5.inc + +INC_DIR += $(REP_DIR)/include/qt5/qtbase/QtXml/private \ + $(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/$(QT_VERSION)/QtCore \ + +LIBS += qt5_core libc diff --git a/libports/lib/mk/qt5_xml_generated.inc b/libports/lib/mk/qt5_xml_generated.inc new file mode 100644 index 0000000000..afe80ea9b2 --- /dev/null +++ b/libports/lib/mk/qt5_xml_generated.inc @@ -0,0 +1,36 @@ +QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_NO_USING_NAMESPACE -DQT_BUILD_XML_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_CORE_LIB + +QT_INCPATH += \ + qtbase/include \ + qtbase/include/QtCore \ + qtbase/include/QtCore/5.1.0 \ + qtbase/include/QtCore/5.1.0/QtCore \ + qtbase/include/QtXml \ + qtbase/include/QtXml/5.1.0 \ + qtbase/include/QtXml/5.1.0/QtXml \ + qtbase/mkspecs/genode-g++ \ + qtbase/src/xml \ + +QT_SOURCES += \ + qdom.cpp \ + qxml.cpp + +QT_VPATH += \ + qtbase/src/xml/dom \ + qtbase/src/xml/sax \ + +# some source files need to be generated by moc from other source/header files before +# they get #included again by the original source file in the compiling stage + +# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc) +# extracted from 'compiler_moc_header_make_all' target + +COMPILER_MOC_HEADER_MAKE_ALL_FILES = \ + + +# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc) +# extracted from 'compiler_moc_source_make_all' rule + +COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \ + + diff --git a/libports/ports/qt5.mk b/libports/ports/qt5.mk new file mode 100644 index 0000000000..cb54ba57d6 --- /dev/null +++ b/libports/ports/qt5.mk @@ -0,0 +1,731 @@ +# +# \brief Download and prepare Qt4 source code +# \author Christian Prochaska +# \author Norman Feske +# \date 2009-05-11 +# + +REP_DIR := $(realpath .) +include $(REP_DIR)/lib/mk/qt5_version.inc + +QT5_URL = http://download.qt-project.org/official_releases/qt/5.1/$(QT_VERSION)/single +QT5_TGZ = $(QT5).tar.gz +QT5_MD5 = 787ce18c7f47fc14538b4362a0aa9edd + +QTSCRIPTCLASSIC_URL = http://ftp.heanet.ie/mirrors/ftp.trolltech.com/pub/qt/solutions/lgpl +QTSCRIPTCLASSIC = qtscriptclassic-1.0_1-opensource +QTSCRIPTCLASSIC_TGZ = $(QTSCRIPTCLASSIC).tar.gz +QTSCRIPTCLASSIC_MD5 = a835edfa9de2206ebfaebcb1267453bf + +# +# Interface to top-level prepare Makefile +# +PORTS += qt5 + +prepare-qt5: $(CONTRIB_DIR)/$(QT5) \ + $(CONTRIB_DIR)/$(QTSCRIPTCLASSIC) \ + tools \ + $(REP_DIR)/src/lib/qt5/qtwebkit/Source/JavaScriptCore/generated/generated.tag \ + $(REP_DIR)/src/lib/qt5/qtwebkit/Source/WebCore/generated/generated.tag + +# +# Port-specific local rules +# +PATCHES_DIR = src/lib/qt5/patches +PATCHES = $(shell cat $(PATCHES_DIR)/series) + +$(call check_tool,wget) +$(call check_tool,patch) +$(call check_tool,bison) +$(call check_tool,perl) +$(call check_tool,python) +$(call check_tool,sed) +$(call check_tool,gperf) + +$(DOWNLOAD_DIR)/$(QT5_TGZ): + $(VERBOSE)wget -c -P $(DOWNLOAD_DIR) $(QT5_URL)/$(QT5_TGZ) && touch $@ + +$(DOWNLOAD_DIR)/$(QT5_TGZ).verified: $(DOWNLOAD_DIR)/$(QT5_TGZ) + $(VERBOSE)$(HASHVERIFIER) $(DOWNLOAD_DIR)/$(QT5_TGZ) $(QT5_MD5) md5 + $(VERBOSE)touch $@ + +$(DOWNLOAD_DIR)/$(QTSCRIPTCLASSIC_TGZ): $(DOWNLOAD_DIR) + $(VERBOSE)wget -c -P $(DOWNLOAD_DIR) $(QTSCRIPTCLASSIC_URL)/$(QTSCRIPTCLASSIC_TGZ) && touch $@ + +$(DOWNLOAD_DIR)/$(QTSCRIPTCLASSIC_TGZ).verified: $(DOWNLOAD_DIR)/$(QTSCRIPTCLASSIC_TGZ) + $(VERBOSE)$(HASHVERIFIER) $(DOWNLOAD_DIR)/$(QTSCRIPTCLASSIC_TGZ) $(QTSCRIPTCLASSIC_MD5) md5 + $(VERBOSE)touch $@ + +$(CONTRIB_DIR)/$(QT5): $(DOWNLOAD_DIR)/$(QT5_TGZ).verified + $(VERBOSE)tar xzf $(DOWNLOAD_DIR)/$(QT5_TGZ) -C $(CONTRIB_DIR) + $(VERBOSE)touch $(CONTRIB_DIR)/$(QT5) + $(VERBOSE)for p in $(PATCHES); do \ + patch -d $(CONTRIB_DIR)/$(QT5) -p1 -i ../../$(PATCHES_DIR)/$$p; done + +$(CONTRIB_DIR)/$(QTSCRIPTCLASSIC): $(DOWNLOAD_DIR)/$(QTSCRIPTCLASSIC_TGZ).verified + $(VERBOSE)tar xzf $(DOWNLOAD_DIR)/$(QTSCRIPTCLASSIC_TGZ) -C $(CONTRIB_DIR) + $(VERBOSE)touch $(CONTRIB_DIR)/$(QTSCRIPTCLASSIC) + $(VERBOSE)patch -d $(CONTRIB_DIR)/$(QTSCRIPTCLASSIC) -p1 -i ../../$(PATCHES_DIR)/qtscriptclassic_qt5.patch + +# +# generated files +# +# some of the following lines have been extracted from Makefiles (and modified afterwards), that's why they can be quite long +# + +JAVASCRIPTCORE_DIR = $(CONTRIB_DIR)/$(QT5)/qtwebkit/Source/JavaScriptCore + +$(REP_DIR)/src/lib/qt5/qtwebkit/Source/JavaScriptCore/generated/generated.tag: + + $(VERBOSE)mkdir -p $(dir $@) + + @# create_hash_table + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/ArrayConstructor.cpp -i > $(dir $@)/ArrayConstructor.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/ArrayPrototype.cpp -i > $(dir $@)/ArrayPrototype.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/BooleanPrototype.cpp -i > $(dir $@)/BooleanPrototype.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/DateConstructor.cpp -i > $(dir $@)/DateConstructor.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/DatePrototype.cpp -i > $(dir $@)/DatePrototype.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/ErrorPrototype.cpp -i > $(dir $@)/ErrorPrototype.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/JSGlobalObject.cpp -i > $(dir $@)/JSGlobalObject.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/JSONObject.cpp -i > $(dir $@)/JSONObject.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/MathObject.cpp -i > $(dir $@)/MathObject.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/NamePrototype.cpp -i > $(dir $@)/NamePrototype.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/NumberConstructor.cpp -i > $(dir $@)/NumberConstructor.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/NumberPrototype.cpp -i > $(dir $@)/NumberPrototype.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/ObjectConstructor.cpp -i > $(dir $@)/ObjectConstructor.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/ObjectPrototype.cpp -i > $(dir $@)/ObjectPrototype.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/RegExpConstructor.cpp -i > $(dir $@)/RegExpConstructor.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/RegExpObject.cpp -i > $(dir $@)/RegExpObject.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/RegExpPrototype.cpp -i > $(dir $@)/RegExpPrototype.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/StringConstructor.cpp -i > $(dir $@)/StringConstructor.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/runtime/StringPrototype.cpp -i > $(dir $@)/StringPrototype.lut.h + $(VERBOSE)perl $(JAVASCRIPTCORE_DIR)/create_hash_table $(JAVASCRIPTCORE_DIR)/parser/Keywords.table -i > $(dir $@)/Lexer.lut.h + + @# KeywordLookupGenerator.py + $(VERBOSE)python $(JAVASCRIPTCORE_DIR)/KeywordLookupGenerator.py $(JAVASCRIPTCORE_DIR)/parser/Keywords.table > $(dir $@)/KeywordLookup.h + + @# create_regex_tables + $(VERBOSE)python $(JAVASCRIPTCORE_DIR)/create_regex_tables > $(dir $@)/RegExpJitTables.h + + $(VERBOSE)touch $@ + + +# command names used by some of the extracted generator commands +DEL_FILE := rm +MOVE := mv + +QT_DEFINES = "LANGUAGE_JAVASCRIPT=1 ENABLE_3D_RENDERING=1 ENABLE_BLOB=1 ENABLE_CHANNEL_MESSAGING=1 ENABLE_CSS_BOX_DECORATION_BREAK=1 ENABLE_CSS_COMPOSITING=1 ENABLE_CSS_EXCLUSIONS=1 ENABLE_CSS_FILTERS=1 ENABLE_CSS_IMAGE_SET=1 ENABLE_CSS_REGIONS=1 ENABLE_CSS_STICKY_POSITION=1 ENABLE_DATALIST_ELEMENT=1 ENABLE_DETAILS_ELEMENT=1 ENABLE_FAST_MOBILE_SCROLLING=1 ENABLE_FILTERS=1 ENABLE_FTPDIR=1 ENABLE_GESTURE_EVENTS=1 ENABLE_ICONDATABASE=1 ENABLE_IFRAME_SEAMLESS=1 ENABLE_INPUT_TYPE_COLOR=1 ENABLE_INSPECTOR=1 ENABLE_INSPECTOR_SERVER=1 ENABLE_JAVASCRIPT_DEBUGGER=1 ENABLE_LEGACY_NOTIFICATIONS=1 ENABLE_LEGACY_VIEWPORT_ADAPTION=1 ENABLE_LEGACY_VENDOR_PREFIXES=1 ENABLE_LINK_PREFETCH=1 ENABLE_METER_ELEMENT=1 ENABLE_MHTML=1 ENABLE_MUTATION_OBSERVERS=1 ENABLE_NOTIFICATIONS=1 ENABLE_PAGE_VISIBILITY_API=1 ENABLE_PROGRESS_ELEMENT=1 ENABLE_RESOLUTION_MEDIA_QUERY=1 ENABLE_REQUEST_ANIMATION_FRAME=1 ENABLE_SHARED_WORKERS=1 ENABLE_SMOOTH_SCROLLING=1 ENABLE_SQL_DATABASE=1 ENABLE_SVG=1 ENABLE_SVG_FONTS=1 ENABLE_TOUCH_ADJUSTMENT=1 ENABLE_TOUCH_EVENTS=1 ENABLE_WEB_SOCKETS=1 ENABLE_WEB_TIMING=1 ENABLE_WORKERS=1 ENABLE_XHR_TIMEOUT=1 ENABLE_TOUCH_SLIDER=1 ENABLE_ACCELERATED_2D_CANVAS=0 ENABLE_ANIMATION_API=0 ENABLE_BATTERY_STATUS=0 ENABLE_CSP_NEXT=0 ENABLE_CSS_GRID_LAYOUT=0 ENABLE_CSS_HIERARCHIES=0 ENABLE_CSS_IMAGE_ORIENTATION=0 ENABLE_CSS_IMAGE_RESOLUTION=0 ENABLE_CSS_SHADERS=0 ENABLE_CSS_VARIABLES=0 ENABLE_CSS3_BACKGROUND=0 ENABLE_CSS3_CONDITIONAL_RULES=0 ENABLE_CSS3_TEXT=0 ENABLE_DASHBOARD_SUPPORT=0 ENABLE_DATAGRID=0 ENABLE_DATA_TRANSFER_ITEMS=0 ENABLE_DEVICE_ORIENTATION=0 ENABLE_DIRECTORY_UPLOAD=0 ENABLE_DOWNLOAD_ATTRIBUTE=0 ENABLE_FILE_SYSTEM=0 ENABLE_FULLSCREEN_API=0 ENABLE_GAMEPAD=0 ENABLE_GEOLOCATION=0 ENABLE_HIGH_DPI_CANVAS=0 ENABLE_INDEXED_DATABASE=0 ENABLE_INPUT_SPEECH=0 ENABLE_INPUT_TYPE_DATE=0 ENABLE_INPUT_TYPE_DATETIME=0 ENABLE_INPUT_TYPE_DATETIMELOCAL=0 ENABLE_INPUT_TYPE_MONTH=0 ENABLE_INPUT_TYPE_TIME=0 ENABLE_INPUT_TYPE_WEEK=0 ENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 ENABLE_LINK_PRERENDER=0 ENABLE_MATHML=0 ENABLE_MEDIA_SOURCE=0 ENABLE_MEDIA_STATISTICS=0 ENABLE_MEDIA_STREAM=0 ENABLE_MICRODATA=0 ENABLE_NAVIGATOR_CONTENT_UTILS=0 ENABLE_NETSCAPE_PLUGIN_API=0 ENABLE_NETWORK_INFO=0 ENABLE_ORIENTATION_EVENTS=0 ENABLE_PROXIMITY_EVENTS=0 ENABLE_QUOTA=0 ENABLE_SCRIPTED_SPEECH=0 ENABLE_SHADOW_DOM=0 ENABLE_STYLE_SCOPED=0 ENABLE_SVG_DOM_OBJC_BINDINGS=0 ENABLE_TEXT_AUTOSIZING=0 ENABLE_TEXT_NOTIFICATIONS_ONLY=0 ENABLE_TOUCH_ICON_LOADING=0 ENABLE_VIBRATION=0 ENABLE_VIDEO=0 ENABLE_VIDEO_TRACK=0 ENABLE_WEBGL=0 ENABLE_WEB_AUDIO=0 ENABLE_XSLT=0" +QT_EXTRA_DEFINES = "QT_NO_LIBUDEV QT_NO_XCB QT_NO_XKBCOMMON ENABLE_3D_RENDERING=1 ENABLE_BLOB=1 ENABLE_CHANNEL_MESSAGING=1 ENABLE_CSS_BOX_DECORATION_BREAK=1 ENABLE_CSS_COMPOSITING=1 ENABLE_CSS_EXCLUSIONS=1 ENABLE_CSS_FILTERS=1 ENABLE_CSS_IMAGE_SET=1 ENABLE_CSS_REGIONS=1 ENABLE_CSS_STICKY_POSITION=1 ENABLE_DATALIST_ELEMENT=1 ENABLE_DETAILS_ELEMENT=1 ENABLE_FAST_MOBILE_SCROLLING=1 ENABLE_FILTERS=1 ENABLE_FTPDIR=1 ENABLE_GESTURE_EVENTS=1 ENABLE_ICONDATABASE=1 ENABLE_IFRAME_SEAMLESS=1 ENABLE_INPUT_TYPE_COLOR=1 ENABLE_INSPECTOR=1 ENABLE_INSPECTOR_SERVER=1 ENABLE_JAVASCRIPT_DEBUGGER=1 ENABLE_LEGACY_NOTIFICATIONS=1 ENABLE_LEGACY_VIEWPORT_ADAPTION=1 ENABLE_LEGACY_VENDOR_PREFIXES=1 ENABLE_LINK_PREFETCH=1 ENABLE_METER_ELEMENT=1 ENABLE_MHTML=1 ENABLE_MUTATION_OBSERVERS=1 ENABLE_NOTIFICATIONS=1 ENABLE_PAGE_VISIBILITY_API=1 ENABLE_PROGRESS_ELEMENT=1 ENABLE_RESOLUTION_MEDIA_QUERY=1 ENABLE_REQUEST_ANIMATION_FRAME=1 ENABLE_SHARED_WORKERS=1 ENABLE_SMOOTH_SCROLLING=1 ENABLE_SQL_DATABASE=1 ENABLE_SVG=1 ENABLE_SVG_FONTS=1 ENABLE_TOUCH_ADJUSTMENT=1 ENABLE_TOUCH_EVENTS=1 ENABLE_WEB_SOCKETS=1 ENABLE_WEB_TIMING=1 ENABLE_WORKERS=1 ENABLE_XHR_TIMEOUT=1 WTF_USE_TILED_BACKING_STORE=1 HAVE_QTPRINTSUPPORT=1 HAVE_QSTYLE=1 HAVE_QTTESTLIB=1 WTF_USE_LIBJPEG=1 WTF_USE_LIBPNG=1 PLUGIN_ARCHITECTURE_UNSUPPORTED=1 ENABLE_TOUCH_SLIDER=1 ENABLE_ACCELERATED_2D_CANVAS=0 ENABLE_ANIMATION_API=0 ENABLE_BATTERY_STATUS=0 ENABLE_CSP_NEXT=0 ENABLE_CSS_GRID_LAYOUT=0 ENABLE_CSS_HIERARCHIES=0 ENABLE_CSS_IMAGE_ORIENTATION=0 ENABLE_CSS_IMAGE_RESOLUTION=0 ENABLE_CSS_SHADERS=0 ENABLE_CSS_VARIABLES=0 ENABLE_CSS3_BACKGROUND=0 ENABLE_CSS3_CONDITIONAL_RULES=0 ENABLE_CSS3_TEXT=0 ENABLE_DASHBOARD_SUPPORT=0 ENABLE_DATAGRID=0 ENABLE_DATA_TRANSFER_ITEMS=0 ENABLE_DEVICE_ORIENTATION=0 ENABLE_DIRECTORY_UPLOAD=0 ENABLE_DOWNLOAD_ATTRIBUTE=0 ENABLE_FILE_SYSTEM=0 ENABLE_FULLSCREEN_API=0 ENABLE_GAMEPAD=0 ENABLE_GEOLOCATION=0 ENABLE_HIGH_DPI_CANVAS=0 ENABLE_INDEXED_DATABASE=0 ENABLE_INPUT_SPEECH=0 ENABLE_INPUT_TYPE_DATE=0 ENABLE_INPUT_TYPE_DATETIME=0 ENABLE_INPUT_TYPE_DATETIMELOCAL=0 ENABLE_INPUT_TYPE_MONTH=0 ENABLE_INPUT_TYPE_TIME=0 ENABLE_INPUT_TYPE_WEEK=0 ENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 ENABLE_LINK_PRERENDER=0 ENABLE_MATHML=0 ENABLE_MEDIA_SOURCE=0 ENABLE_MEDIA_STATISTICS=0 ENABLE_MEDIA_STREAM=0 ENABLE_MICRODATA=0 ENABLE_NAVIGATOR_CONTENT_UTILS=0 ENABLE_NETSCAPE_PLUGIN_API=0 ENABLE_NETWORK_INFO=0 ENABLE_ORIENTATION_EVENTS=0 ENABLE_PROXIMITY_EVENTS=0 ENABLE_QUOTA=0 ENABLE_SCRIPTED_SPEECH=0 ENABLE_SHADOW_DOM=0 ENABLE_STYLE_SCOPED=0 ENABLE_SVG_DOM_OBJC_BINDINGS=0 ENABLE_TEXT_AUTOSIZING=0 ENABLE_TEXT_NOTIFICATIONS_ONLY=0 ENABLE_TOUCH_ICON_LOADING=0 ENABLE_VIBRATION=0 ENABLE_VIDEO=0 ENABLE_VIDEO_TRACK=0 ENABLE_WEBGL=0 ENABLE_WEB_AUDIO=0 ENABLE_XSLT=0" +GENERATE_BINDINGS_PL = $(VERBOSE)export "SOURCE_ROOT=$(WEBCORE_DIR)" && perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/bindings/scripts/generate-bindings.pl --defines $(QT_DEFINES) --generator JS --include Modules/filesystem --include Modules/geolocation --include Modules/indexeddb --include Modules/mediasource --include Modules/notifications --include Modules/quota --include Modules/webaudio --include Modules/webdatabase --include Modules/websockets --include css --include dom --include editing --include fileapi --include html --include html/canvas --include html/shadow --include html/track --include inspector --include loader/appcache --include page --include plugins --include storage --include svg --include testing --include workers --include xml --outputDir $(dir $@) --supplementalDependencyFile $(dir $@)/supplemental_dependency.tmp --preprocessor "$(REP_DIR)/tool/qt5/moc/moc -E" +# the absolute path is needed for makeprop.pl +WEBCORE_DIR = $(REP_DIR)/$(CONTRIB_DIR)/$(QT5)/qtwebkit/Source/WebCore + +$(REP_DIR)/src/lib/qt5/qtwebkit/Source/WebCore/generated/generated.tag: + + $(VERBOSE)mkdir -p $(dir $@) + + $(VERBOSE)bison -d -p xpathyy $(WEBCORE_DIR)/xml/XPathGrammar.y -o $(dir $@)/XPathGrammar.tab.c && $(MOVE) $(dir $@)/XPathGrammar.tab.c $(dir $@)/XPathGrammar.cpp && $(MOVE) $(dir $@)/XPathGrammar.tab.h $(dir $@)/XPathGrammar.h + + @# preprocess-idls.pl + $(VERBOSE)sed -e "s,^,$(CONTRIB_DIR)/$(QT5)/,g" $(dir $@)/../idl_files > $(dir $@)/idl_files.tmp + $(VERBOSE)touch $(dir $@)/supplemental_dependency.tmp + $(VERBOSE)export "CONTRIB_DIR=$(CONTRIB_DIR)" && export "QT5=$(QT5)" && perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/bindings/scripts/preprocess-idls.pl --defines $(QT_DEFINES) --idlFilesList $(dir $@)/idl_files.tmp --supplementalDependencyFile $(dir $@)/supplemental_dependency.tmp --idlAttributesFile $(WEBCORE_DIR)/bindings/scripts/IDLAttributes.txt --preprocessor "$(REP_DIR)/tool/qt5/moc/moc -E" + + @# generate-bindings.pl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/DOMFileSystem.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/DOMFileSystemSync.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/DOMWindowFileSystem.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/DirectoryEntry.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/DirectoryEntrySync.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/DirectoryReader.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/DirectoryReaderSync.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/EntriesCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/Entry.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/EntryArray.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/EntryArraySync.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/EntryCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/EntrySync.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/ErrorCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/FileCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/FileEntry.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/FileEntrySync.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/FileSystemCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/FileWriter.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/FileWriterCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/Metadata.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/MetadataCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/filesystem/WorkerContextFileSystem.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/geolocation/Geolocation.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/geolocation/Geoposition.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/geolocation/NavigatorGeolocation.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/geolocation/PositionCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/geolocation/PositionError.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/geolocation/PositionErrorCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/indexeddb/DOMWindowIndexedDatabase.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/indexeddb/IDBAny.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/indexeddb/IDBCursor.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/indexeddb/IDBDatabaseException.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/indexeddb/IDBDatabase.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/indexeddb/IDBFactory.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/indexeddb/IDBIndex.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/indexeddb/IDBKey.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/indexeddb/IDBKeyRange.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/indexeddb/IDBObjectStore.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/indexeddb/IDBRequest.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/indexeddb/IDBTransaction.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/indexeddb/WorkerContextIndexedDatabase.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/notifications/DOMWindowNotifications.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/notifications/Notification.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/notifications/NotificationCenter.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/notifications/NotificationPermissionCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/notifications/WorkerContextNotifications.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/quota/DOMWindowQuota.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/quota/StorageInfo.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/quota/StorageInfoErrorCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/quota/StorageInfoQuotaCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/quota/StorageInfoUsageCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/AudioBuffer.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/AudioBufferCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/AudioBufferSourceNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/ChannelMergerNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/ChannelSplitterNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/AudioContext.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/AudioDestinationNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/AudioGain.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/GainNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/AudioListener.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/AudioNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/PannerNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/AudioParam.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/AudioProcessingEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/AudioSourceNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/BiquadFilterNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/ConvolverNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/DelayNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/DOMWindowWebAudio.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/DynamicsCompressorNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/ScriptProcessorNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/MediaElementAudioSourceNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/MediaStreamAudioSourceNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/OfflineAudioCompletionEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/OscillatorNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/AnalyserNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/WaveShaperNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webaudio/WaveTable.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/DOMWindowWebDatabase.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/Database.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/DatabaseCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/DatabaseSync.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/SQLError.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/SQLException.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/SQLResultSet.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/SQLResultSetRowList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/SQLStatementCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/SQLStatementErrorCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/SQLTransaction.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/SQLTransactionCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/SQLTransactionErrorCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/SQLTransactionSync.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/SQLTransactionSyncCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/webdatabase/WorkerContextWebDatabase.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/websockets/CloseEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/websockets/DOMWindowWebSocket.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/websockets/WebSocket.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/Modules/websockets/WorkerContextWebSocket.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/Counter.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/CSSCharsetRule.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/CSSFontFaceRule.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/CSSImportRule.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/CSSMediaRule.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/CSSPageRule.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/CSSPrimitiveValue.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/CSSRule.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/CSSRuleList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/CSSStyleDeclaration.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/CSSStyleRule.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/CSSStyleSheet.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/CSSValue.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/CSSValueList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/MediaList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/MediaQueryList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/Rect.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/RGBColor.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/StyleMedia.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/StyleSheet.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/StyleSheetList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/WebKitCSSFilterValue.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/WebKitCSSKeyframeRule.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/WebKitCSSKeyframesRule.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/WebKitCSSMatrix.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/WebKitCSSMixFunctionValue.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/WebKitCSSRegionRule.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/WebKitCSSTransformValue.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/css/WebKitCSSViewportRule.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/Attr.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/BeforeLoadEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/CharacterData.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/ClientRect.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/ClientRectList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/Clipboard.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/CDATASection.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/Comment.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/CompositionEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/CustomEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/DataTransferItem.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/DataTransferItemList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/DeviceMotionEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/DeviceOrientationEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/DocumentFragment.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/Document.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/DocumentType.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/DOMCoreException.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/DOMError.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/DOMImplementation.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/DOMStringList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/DOMStringMap.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/Element.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/Entity.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/EntityReference.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/ErrorEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/Event.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/EventException.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/EventTarget.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/HashChangeEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/KeyboardEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/MouseEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/MessageChannel.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/MessageEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/MessagePort.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/MutationCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/MutationEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/MutationObserver.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/MutationRecord.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/NamedNodeMap.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/Node.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/NodeFilter.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/NodeIterator.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/NodeList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/Notation.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/OverflowEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/PageTransitionEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/PopStateEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/ProcessingInstruction.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/ProgressEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/PropertyNodeList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/RangeException.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/Range.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/RequestAnimationFrameCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/ShadowRoot.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/StringCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/Text.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/TextEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/Touch.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/TouchEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/TouchList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/TreeWalker.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/UIEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/WebKitAnimationEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/WebKitNamedFlow.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/DOMNamedFlowCollection.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/WebKitTransitionEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/dom/WheelEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/fileapi/Blob.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/fileapi/File.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/fileapi/FileError.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/fileapi/FileException.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/fileapi/FileList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/fileapi/FileReader.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/fileapi/FileReaderSync.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/ArrayBufferView.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/ArrayBuffer.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/DataView.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/Int8Array.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/Float32Array.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/Float64Array.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/CanvasGradient.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/Int32Array.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/CanvasPattern.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/CanvasRenderingContext.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/CanvasRenderingContext2D.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/EXTTextureFilterAnisotropic.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/OESStandardDerivatives.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/OESTextureFloat.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/OESVertexArrayObject.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/OESElementIndexUint.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLActiveInfo.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLBuffer.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLCompressedTextureS3TC.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLContextAttributes.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLContextEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLDebugRendererInfo.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLDebugShaders.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLDepthTexture.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLFramebuffer.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLLoseContext.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLProgram.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLRenderbuffer.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLRenderingContext.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLShader.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLShaderPrecisionFormat.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/Int16Array.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLTexture.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLUniformLocation.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/WebGLVertexArrayObjectOES.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/Uint8Array.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/Uint8ClampedArray.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/Uint32Array.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/canvas/Uint16Array.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/DOMFormData.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/DOMSettableTokenList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/DOMTokenList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/DOMURL.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLAllCollection.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLAudioElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLAnchorElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLAppletElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLAreaElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLBaseElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLBaseFontElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLBodyElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLBRElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLButtonElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLCanvasElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLCollection.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLDataListElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLDetailsElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLDialogElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLDirectoryElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLDivElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLDListElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLDocument.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLEmbedElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLFieldSetElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLFontElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLFormControlsCollection.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLFormElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLFrameElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLFrameSetElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLHeadElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLHeadingElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLHRElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLHtmlElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLIFrameElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLImageElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLInputElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLKeygenElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLLabelElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLLegendElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLLIElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLLinkElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLMapElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLMarqueeElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLMediaElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLMenuElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLMetaElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLMeterElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLModElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLObjectElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLOListElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLOptGroupElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLOptionElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLOptionsCollection.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLOutputElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLParagraphElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLParamElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLPreElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLProgressElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLPropertiesCollection.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLQuoteElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLScriptElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLSelectElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLSourceElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLSpanElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLStyleElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLTableCaptionElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLTableCellElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLTableColElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLTableElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLTableRowElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLTableSectionElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLTextAreaElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLTitleElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLTrackElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLUListElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLUnknownElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/HTMLVideoElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/ImageData.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/MediaController.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/MediaError.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/MicroDataItemValue.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/RadioNodeList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/TextMetrics.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/TimeRanges.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/ValidityState.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/VoidCallback.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/shadow/HTMLContentElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/html/shadow/HTMLShadowElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/inspector/InjectedScriptHost.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/inspector/InspectorFrontendHost.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/inspector/JavaScriptCallFrame.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/inspector/ScriptProfile.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/inspector/ScriptProfileNode.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/loader/appcache/DOMApplicationCache.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/BarInfo.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/Console.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/Coordinates.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/Crypto.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/DOMSecurityPolicy.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/DOMSelection.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/DOMWindow.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/EventSource.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/History.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/Location.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/MemoryInfo.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/Navigator.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/Performance.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/PerformanceEntry.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/PerformanceEntryList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/PerformanceNavigation.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/PerformanceResourceTiming.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/PerformanceTiming.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/Screen.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/SpeechInputEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/SpeechInputResult.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/SpeechInputResultList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/WebKitAnimation.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/WebKitAnimationList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/WebKitPoint.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/page/WorkerNavigator.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/plugins/DOMPlugin.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/plugins/DOMMimeType.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/plugins/DOMPluginArray.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/plugins/DOMMimeTypeArray.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/storage/Storage.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/storage/StorageEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/testing/Internals.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/testing/InternalSettings.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/testing/MallocStatistics.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/workers/AbstractWorker.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/workers/DedicatedWorkerContext.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/workers/SharedWorker.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/workers/SharedWorkerContext.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/workers/Worker.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/workers/WorkerContext.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/workers/WorkerLocation.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/xml/DOMParser.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/xml/XMLHttpRequest.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/xml/XMLHttpRequestException.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/xml/XMLHttpRequestProgressEvent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/xml/XMLHttpRequestUpload.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/xml/XMLSerializer.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/xml/XPathNSResolver.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/xml/XPathException.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/xml/XPathExpression.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/xml/XPathResult.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/xml/XPathEvaluator.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/xml/XSLTProcessor.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAltGlyphDefElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAltGlyphElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAltGlyphItemElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAngle.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimateColorElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimateMotionElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimatedAngle.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimatedBoolean.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimatedEnumeration.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimatedInteger.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimatedLength.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimatedLengthList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimatedNumber.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimatedNumberList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimatedPreserveAspectRatio.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimatedRect.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimatedString.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimatedTransformList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimateElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimateTransformElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGAnimationElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGCircleElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGClipPathElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGColor.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGComponentTransferFunctionElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGCursorElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGDefsElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGDescElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGDocument.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGElementInstance.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGElementInstanceList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGEllipseElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGException.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEBlendElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEColorMatrixElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEComponentTransferElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFECompositeElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEConvolveMatrixElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEDiffuseLightingElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEDisplacementMapElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEDistantLightElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEDropShadowElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEFloodElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEFuncAElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEFuncBElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEFuncGElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEFuncRElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEGaussianBlurElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEImageElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEMergeElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEMergeNodeElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEMorphologyElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEOffsetElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFEPointLightElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFESpecularLightingElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFESpotLightElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFETileElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFETurbulenceElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFilterElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFontElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFontFaceElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFontFaceFormatElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFontFaceNameElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFontFaceSrcElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGFontFaceUriElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGForeignObjectElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGGElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGGlyphElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGGlyphRefElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGGradientElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGHKernElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGImageElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGLength.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGLengthList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGLinearGradientElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGLineElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGMarkerElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGMaskElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGMatrix.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGMetadataElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGMissingGlyphElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGMPathElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGNumber.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGNumberList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPaint.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegArcAbs.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegArcRel.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegClosePath.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegCurvetoCubicAbs.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegCurvetoCubicRel.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegCurvetoCubicSmoothAbs.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegCurvetoCubicSmoothRel.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegCurvetoQuadraticAbs.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegCurvetoQuadraticRel.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegCurvetoQuadraticSmoothRel.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSeg.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegLinetoAbs.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegLinetoHorizontalAbs.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegLinetoHorizontalRel.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegLinetoRel.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegLinetoVerticalAbs.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegLinetoVerticalRel.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegMovetoAbs.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPathSegMovetoRel.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPatternElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPoint.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPointList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPolygonElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPolylineElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGPreserveAspectRatio.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGRadialGradientElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGRectElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGRect.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGRenderingIntent.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGScriptElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGSetElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGStopElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGStringList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGStyleElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGSVGElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGSwitchElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGSymbolElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGTextContentElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGTextElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGTextPathElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGTextPositioningElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGTitleElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGTransform.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGTransformList.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGTRefElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGTSpanElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGUnitTypes.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGUseElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGViewElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGVKernElement.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGViewSpec.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGZoomAndPan.idl + $(GENERATE_BINDINGS_PL) $(WEBCORE_DIR)/svg/SVGZoomEvent.idl + + @# generate-webkit-version.pl + $(VERBOSE)perl $(WEBCORE_DIR)/../WebKit/scripts/generate-webkitversion.pl --config $(WEBCORE_DIR)/../WebKit/mac/Configurations/Version.xcconfig --outputDir $(dir $@)/ + + @# make-css-file-arrays.pl + $(VERBOSE)perl $(WEBCORE_DIR)/css/make-css-file-arrays.pl $(dir $@)/UserAgentStyleSheets.h $(dir $@)/UserAgentStyleSheetsData.cpp $(WEBCORE_DIR)/css/html.css $(WEBCORE_DIR)/css/quirks.css $(WEBCORE_DIR)/css/mathml.css $(WEBCORE_DIR)/css/svg.css $(WEBCORE_DIR)/css/view-source.css $(WEBCORE_DIR)/css/fullscreen.css $(WEBCORE_DIR)/css/mediaControls.css $(WEBCORE_DIR)/css/mediaControlsQt.css $(WEBCORE_DIR)/css/mediaControlsQtFullscreen.css $(WEBCORE_DIR)/css/themeQtNoListboxes.css $(WEBCORE_DIR)/css/mobileThemeQt.css + + @# make-dom-exceptions.pl + $(VERBOSE)perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/dom/make_dom_exceptions.pl --input $(WEBCORE_DIR)/dom/DOMExceptions.in --outputDir $(dir $@) + + @# make_event_factory.pl + $(VERBOSE)perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/dom/make_event_factory.pl --input $(WEBCORE_DIR)/dom/EventNames.in --outputDir $(dir $@) + $(VERBOSE)perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/dom/make_event_factory.pl --input $(WEBCORE_DIR)/dom/EventTargetFactory.in --outputDir $(dir $@) + + @# make-hash-tools.pl + $(VERBOSE)perl $(WEBCORE_DIR)/make-hash-tools.pl $(dir $@) $(WEBCORE_DIR)/platform/ColorData.gperf + + @# make_names.pl + $(VERBOSE)perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/dom/make_names.pl --tags $(WEBCORE_DIR)/mathml/mathtags.in --attrs $(WEBCORE_DIR)/mathml/mathattrs.in --extraDefines $(QT_EXTRA_DEFINES) --preprocessor "$(REP_DIR)/tool/qt5/moc/moc -E" --factory --wrapperFactory --outputDir $(dir $@) + $(VERBOSE)perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/dom/make_names.pl --tags $(WEBCORE_DIR)/html/HTMLTagNames.in --attrs $(WEBCORE_DIR)/html/HTMLAttributeNames.in --extraDefines $(QT_EXTRA_DEFINES) --preprocessor "$(REP_DIR)/tool/qt5/moc/moc -E" --factory --wrapperFactory --outputDir $(dir $@) + $(VERBOSE)perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/dom/make_names.pl --fonts $(WEBCORE_DIR)/css/WebKitFontFamilyNames.in --outputDir $(dir $@) + $(VERBOSE)perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/dom/make_names.pl --tags $(WEBCORE_DIR)/svg/svgtags.in --attrs $(WEBCORE_DIR)/svg/svgattrs.in --extraDefines $(QT_EXTRA_DEFINES) --preprocessor "$(REP_DIR)/tool/qt5/moc/moc -E" --factory --wrapperFactory --outputDir $(dir $@) + $(VERBOSE)perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/dom/make_names.pl --attrs $(WEBCORE_DIR)/xml/xmlnsattrs.in --preprocessor "$(REP_DIR)/tool/qt5/moc/moc -E" --outputDir $(dir $@) + $(VERBOSE)perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/dom/make_names.pl --attrs $(WEBCORE_DIR)/svg/xlinkattrs.in --preprocessor "$(REP_DIR)/tool/qt5/moc/moc -E" --outputDir $(dir $@) + $(VERBOSE)perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/dom/make_names.pl --attrs $(WEBCORE_DIR)/xml/xmlattrs.in --preprocessor "$(REP_DIR)/tool/qt5/moc/moc -E" --outputDir $(dir $@) + + @# make_settings.pl + $(VERBOSE)perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/page/make_settings.pl --input $(WEBCORE_DIR)/page/Settings.in --outputDir $(dir $@) + + @# makeprop.pl + $(VERBOSE)perl -ne "print $1" $(WEBCORE_DIR)/css/CSSPropertyNames.in $(WEBCORE_DIR)/css/SVGCSSPropertyNames.in > $(dir $@)/CSSPropertyNames.in && cd $(dir $@) && perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/css/makeprop.pl --defines $(QT_DEFINES) --preprocessor "$(REP_DIR)/tool/qt5/moc/moc -E" $(WEBCORE_DIR)/css/CSSPropertyNames.in && $(DEL_FILE) CSSPropertyNames.in CSSPropertyNames.gperf + + @# makegrammar.pl + $(VERBOSE)perl -I $(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/css/makegrammar.pl --outputDir $(dir $@) --extraDefines $(QT_EXTRA_DEFINES) --preprocessor "$(REP_DIR)/tool/qt5/moc/moc -E" --symbolsPrefix cssyy $(WEBCORE_DIR)/css/CSSGrammar.y.in + + @# makevalues.pl + $(VERBOSE)perl -ne "print $1" $(WEBCORE_DIR)/css/CSSValueKeywords.in $(WEBCORE_DIR)/css/SVGCSSValueKeywords.in > $(dir $@)/CSSValueKeywords.in && cd $(dir $@) && perl -I$(WEBCORE_DIR)/bindings/scripts $(WEBCORE_DIR)/css/makevalues.pl --defines $(QT_DEFINES) --preprocessor "$(REP_DIR)/tool/qt5/moc/moc -E" $(WEBCORE_DIR)/css/CSSValueKeywords.in && $(DEL_FILE) CSSValueKeywords.in CSSValueKeywords.gperf + + @# xxd.pl + $(VERBOSE)perl $(WEBCORE_DIR)/inspector/xxd.pl InspectorOverlayPage_html $(WEBCORE_DIR)/inspector/InspectorOverlayPage.html $(dir $@)/InspectorOverlayPage.h + $(VERBOSE)perl $(WEBCORE_DIR)/inspector/xxd.pl InjectedScriptSource_js $(WEBCORE_DIR)/inspector/InjectedScriptSource.js $(dir $@)/InjectedScriptSource.h + $(VERBOSE)perl $(WEBCORE_DIR)/inspector/xxd.pl InjectedScriptCanvasModuleSource_js $(WEBCORE_DIR)/inspector/InjectedScriptCanvasModuleSource.js $(dir $@)/InjectedScriptCanvasModuleSource.h + + @# CodeGeneratorInspector.py + $(VERBOSE)python $(WEBCORE_DIR)/inspector/CodeGeneratorInspector.py $(WEBCORE_DIR)/inspector/Inspector.json --output_h_dir $(dir $@) --output_cpp_dir $(dir $@) + + @# create-html-entity-table + $(VERBOSE)python $(WEBCORE_DIR)/html/parser/create-html-entity-table -o $(dir $@)/HTMLEntityTable.cpp $(WEBCORE_DIR)/html/parser/HTMLEntityNames.in + + $(VERBOSE)touch $@ + + +tools: + $(VERBOSE)make -C tool/qt5 + +clean-qt5: + $(VERBOSE)make -C tool/qt5 clean + $(VERBOSE)rm -rf $(CONTRIB_DIR)/$(QT5) + $(VERBOSE)rm -rf $(CONTRIB_DIR)/$(QTSCRIPTCLASSIC) + $(VERBOSE)rm -rf $(REP_DIR)/src/lib/qt5/qtwebkit/Source/JavaScriptCore + $(VERBOSE)rm -rf $(REP_DIR)/src/lib/qt5/qtwebkit/Source/WebCore/generated diff --git a/libports/run/qt5.run b/libports/run/qt5.run new file mode 100644 index 0000000000..30aaff2d82 --- /dev/null +++ b/libports/run/qt5.run @@ -0,0 +1,136 @@ +# +# Build +# + +build { + core + init + drivers/input/ps2 + drivers/pci + drivers/framebuffer + drivers/timer + server/nitpicker + server/liquid_framebuffer + app/qt5/qt_launchpad + app/qt5/examples/textedit + app/qt5/examples/tetrix +} + + +create_boot_directory + +# +# Generate config +# + +set config { + + + + + + + + + + + + + + + + + } + +append_if [have_spec sdl] config { + + + + + + + } + +append_if [have_spec pci] config { + + + + } + +append_if [have_spec framebuffer] config { + + + + } + +append_if [have_spec ps2] config { + + + + } + +append config { + + + + + + + + + + + + +} + +install_config $config + +# +# Boot modules +# + +# generic modules +set boot_modules { + core + init + timer + nitpicker + liquid_fb + qt_launchpad + freetype.lib.so + icu.lib.so + ld.lib.so + libc.lib.so + libc_log.lib.so + libc_lock_pipe.lib.so + libm.lib.so + libpng.lib.so + jpeg.lib.so + pthread.lib.so + qt5_core.lib.so + qt5_dejavusans.lib.so + qt5_gui.lib.so + qt5_widgets.lib.so + qt5_xml.lib.so + qt5_scriptclassic.lib.so + qt5_ui_tools.lib.so + zlib.lib.so + stdcxx.lib.so + textedit + tetrix +} + + +# platform-specific modules +lappend_if [have_spec linux] boot_modules fb_sdl +lappend_if [have_spec pci] boot_modules pci_drv +lappend_if [have_spec framebuffer] boot_modules fb_drv +lappend_if [have_spec ps2] boot_modules ps2_drv + +build_boot_image $boot_modules + +append qemu_args " -m 512" + +run_genode_until forever + diff --git a/libports/run/qt5_avplay.run b/libports/run/qt5_avplay.run new file mode 100644 index 0000000000..4619c8636f --- /dev/null +++ b/libports/run/qt5_avplay.run @@ -0,0 +1,160 @@ +# +# Build +# + +build { + core + init + drivers/input/ps2 + drivers/pci + drivers/framebuffer + drivers/timer + drivers/oss + server/nitpicker + server/liquid_framebuffer + app/avplay + app/qt5/qt_avplay +} + +# +# Download media file +# + +set media_url "ftp://ftp.untergrund.net/users/ae/dhstv/escape-chotro.mp4" +if {![file exists bin/mediafile]} { + puts "downloading media file from $media_url" + catch { exec wget -O bin/mediafile $media_url } +} + +create_boot_directory + +# +# Generate config +# + +set config { + + + + + + + + + + + + + + + + + } + +append_if [have_spec sdl] config { + + + + + + + } + +append_if [have_spec pci] config { + + + + } + +append_if [have_spec framebuffer] config { + + + + } + +append_if [have_spec ps2] config { + + + + } + +append config { + + + + + + + + + + + + + + + + + + + +} + +install_config $config + +# +# Boot modules +# + +# generic modules +set boot_modules { + core + init + timer + oss_drv + nitpicker + liquid_fb + qt_avplay + freetype.lib.so + icu.lib.so + ld.lib.so + libc.lib.so + libc_log.lib.so + libc_lock_pipe.lib.so + libm.lib.so + libpng.lib.so + jpeg.lib.so + pthread.lib.so + qt5_core.lib.so + qt5_dejavusans.lib.so + qt5_gui.lib.so + qt5_qnitpickerviewwidget.lib.so + qt5_widgets.lib.so + qt5_xml.lib.so + zlib.lib.so + avcodec.lib.so + avformat.lib.so + avutil.lib.so + avfilter.lib.so + swscale.lib.so + sdl.lib.so + pthread.lib.so + libc_log.lib.so + libc_rom.lib.so + avplay + mediafile + stdcxx.lib.so +} + +# platform-specific modules +lappend_if [have_spec linux] boot_modules fb_sdl +lappend_if [have_spec pci] boot_modules pci_drv +lappend_if [have_spec framebuffer] boot_modules fb_drv +lappend_if [have_spec ps2] boot_modules ps2_drv + +build_boot_image $boot_modules + +append qemu_args " -m 768 -soundhw all" + +run_genode_until forever + diff --git a/libports/run/qt5_calculatorform.run b/libports/run/qt5_calculatorform.run new file mode 100644 index 0000000000..174ac68084 --- /dev/null +++ b/libports/run/qt5_calculatorform.run @@ -0,0 +1,127 @@ +# +# Build +# + +build { + core + init + drivers/input/ps2 + drivers/pci + drivers/framebuffer + drivers/timer + server/nitpicker + server/liquid_framebuffer + app/qt5/examples/calculatorform +} + +create_boot_directory + +# +# Generate config +# + +set config { + + + + + + + + + + + + + + + + + } + +append_if [have_spec sdl] config { + + + + + + + } + +append_if [have_spec pci] config { + + + + } + +append_if [have_spec framebuffer] config { + + + + } + +append_if [have_spec ps2] config { + + + + } + +append config { + + + + + + + + + + + + +} + +install_config $config + +# +# Boot modules +# + +# generic modules +set boot_modules { + core + init + timer + nitpicker + liquid_fb + calculatorform + freetype.lib.so + icu.lib.so + ld.lib.so + libc.lib.so + libc_log.lib.so + libc_lock_pipe.lib.so + libm.lib.so + libpng.lib.so + jpeg.lib.so + pthread.lib.so + qt5_core.lib.so + qt5_dejavusans.lib.so + qt5_gui.lib.so + qt5_widgets.lib.so + qt5_xml.lib.so + zlib.lib.so + stdcxx.lib.so +} + +# platform-specific modules +lappend_if [have_spec linux] boot_modules fb_sdl +lappend_if [have_spec pci] boot_modules pci_drv +lappend_if [have_spec framebuffer] boot_modules fb_drv +lappend_if [have_spec ps2] boot_modules ps2_drv + +build_boot_image $boot_modules + +append qemu_args " -m 128" + +run_genode_until forever diff --git a/libports/run/qt5_previewer.run b/libports/run/qt5_previewer.run new file mode 100644 index 0000000000..b363748aa0 --- /dev/null +++ b/libports/run/qt5_previewer.run @@ -0,0 +1,137 @@ +# +# Build +# + +build { + core + init + drivers/input/ps2 + drivers/pci + drivers/framebuffer + drivers/timer + server/nitpicker + server/liquid_framebuffer + app/qt5/examples/previewer +} + +create_boot_directory + +# +# Generate config +# + +set config { + + + + + + + + + + + + + + + + + } + +append_if [have_spec sdl] config { + + + + + + + } + +append_if [have_spec pci] config { + + + + } + +append_if [have_spec framebuffer] config { + + + + } + +append_if [have_spec ps2] config { + + + + } + +append config { + + + + + + + + + + + + +} + +install_config $config + +# +# Boot modules +# + +# generic modules +set boot_modules { + core + init + timer + nitpicker + liquid_fb + previewer + freetype.lib.so + icu.lib.so + ld.lib.so + libc.lib.so + libc_log.lib.so + libc_lock_pipe.lib.so + libm.lib.so + libpng.lib.so + jpeg.lib.so + libcrypto.lib.so + libssl.lib.so + pthread.lib.so + qt5_core.lib.so + qt5_dejavusans.lib.so + qt5_gui.lib.so + qt5_jscore.lib.so + qt5_network.lib.so + qt5_printsupport.lib.so + qt5_sql.lib.so + qt5_webcore.lib.so + qt5_webkit.lib.so + qt5_webkitwidgets.lib.so + qt5_widgets.lib.so + qt5_wtf.lib.so + qt5_xml.lib.so + zlib.lib.so + stdcxx.lib.so +} + +# platform-specific modules +lappend_if [have_spec linux] boot_modules fb_sdl +lappend_if [have_spec pci] boot_modules pci_drv +lappend_if [have_spec framebuffer] boot_modules fb_drv +lappend_if [have_spec ps2] boot_modules ps2_drv + +build_boot_image $boot_modules + +append qemu_args " -m 256" + +run_genode_until forever diff --git a/libports/run/qt5_qpluginwidget.run b/libports/run/qt5_qpluginwidget.run new file mode 100644 index 0000000000..bcf112c2b7 --- /dev/null +++ b/libports/run/qt5_qpluginwidget.run @@ -0,0 +1,145 @@ +# +# Build +# + +build { + core + init + drivers/input/ps2 + drivers/pci + drivers/framebuffer + drivers/timer + server/nitpicker + server/liquid_framebuffer + server/loader + server/tar_rom + test/nitpicker + test/qt5/qpluginwidget +} + +create_boot_directory + +# +# Generate config +# + +set config { + + + + + + + + + + + + + + + + + } + +append_if [have_spec sdl] config { + + + + + + + } + +append_if [have_spec pci] config { + + + + } + +append_if [have_spec framebuffer] config { + + + + } + +append_if [have_spec ps2] config { + + + + } + +append config { + + + + + + + + + + + + + + + + +} + +install_config $config + +# +# Boot modules +# + +exec sh -c "ln -sf ../test/qt5/qpluginwidget/test-plugin.tar bin/" + +# generic modules +set boot_modules { + core + init + timer + nitpicker + liquid_fb + loader + tar_rom + testnit + test-qpluginwidget + freetype.lib.so + icu.lib.so + ld.lib.so + libc.lib.so + libc_log.lib.so + libc_lock_pipe.lib.so + libcrypto.lib.so + libm.lib.so + libpng.lib.so + libssl.lib.so + jpeg.lib.so + pthread.lib.so + qt5_core.lib.so + qt5_dejavusans.lib.so + qt5_gui.lib.so + qt5_qnitpickerviewwidget.lib.so + qt5_qpluginwidget.lib.so + qt5_widgets.lib.so + qt5_xml.lib.so + qt5_network.lib.so + zlib.lib.so + test-plugin.tar + stdcxx.lib.so +} + +# platform-specific modules +lappend_if [have_spec linux] boot_modules fb_sdl +lappend_if [have_spec pci] boot_modules pci_drv +lappend_if [have_spec framebuffer] boot_modules fb_drv +lappend_if [have_spec ps2] boot_modules ps2_drv + +build_boot_image $boot_modules + +append qemu_args " -m 128" + +run_genode_until forever diff --git a/libports/run/qt5_tetrix.run b/libports/run/qt5_tetrix.run new file mode 100644 index 0000000000..216e1fe5c7 --- /dev/null +++ b/libports/run/qt5_tetrix.run @@ -0,0 +1,131 @@ +# +# Build +# + +build { + core + init + drivers/input/ps2 + drivers/pci + drivers/framebuffer + drivers/timer + server/nitpicker + server/nit_fb + server/liquid_framebuffer + app/qt5/examples/tetrix +} + +create_boot_directory + +# +# Generate config +# + +set config { + + + + + + + + + + + + + + + + + } + +append_if [have_spec sdl] config { + + + + + + + } + +append_if [have_spec pci] config { + + + + } + +append_if [have_spec framebuffer] config { + + + + } + +append_if [have_spec ps2] config { + + + + } + +append config { + + + + + + + + + + + + +} + +install_config $config + +# +# Boot modules +# + +# generic modules +set boot_modules { + core + init + timer + nitpicker + nit_fb + liquid_fb + tetrix + freetype.lib.so + icu.lib.so + ld.lib.so + libc.lib.so + libc_log.lib.so + libc_lock_pipe.lib.so + libm.lib.so + libpng.lib.so + jpeg.lib.so + pthread.lib.so + qt5_core.lib.so + qt5_dejavusans.lib.so + qt5_gui.lib.so + qt5_widgets.lib.so + qt5_scriptclassic.lib.so + qt5_ui_tools.lib.so + qt5_xml.lib.so + zlib.lib.so + stdcxx.lib.so +} + +# platform-specific modules +lappend_if [have_spec linux] boot_modules fb_sdl +lappend_if [have_spec pci] boot_modules pci_drv +lappend_if [have_spec framebuffer] boot_modules fb_drv +lappend_if [have_spec ps2] boot_modules ps2_drv + +build_boot_image $boot_modules + +append qemu_args " -m 128" + +run_genode_until forever diff --git a/libports/run/qt5_textedit.run b/libports/run/qt5_textedit.run new file mode 100644 index 0000000000..61e152242b --- /dev/null +++ b/libports/run/qt5_textedit.run @@ -0,0 +1,185 @@ +# +# Build +# + +set build_components { + core + init + drivers/atapi + drivers/framebuffer + drivers/timer + server/ffat_fs + server/nitpicker + server/liquid_framebuffer + app/qt5/examples/textedit +} + +set use_sd_card_driver [expr [have_spec omap4] || [have_spec exynos5]] +set use_usb_driver [expr [have_spec omap4] || [have_spec exynos5]] + +lappend_if $use_sd_card_driver build_components drivers/sd_card +lappend_if $use_usb_driver build_components drivers/usb +lappend_if [have_spec pci] build_components drivers/pci +lappend_if [have_spec acpi] build_components drivers/acpi +lappend_if [have_spec ps2] build_components drivers/input/ps2 + +build $build_components +create_boot_directory + +# +# Generate config +# + +set config { + + + + + + + + + + + + + + + + + } + +append_if [have_spec sdl] config { + + + + + + + } + +append_if [have_spec pci] config { + + + + + + + + + } + +append_if [expr [have_spec pl180] || [have_spec omap4]] config { + + + + } + +append_if [have_spec framebuffer] config { + + + + } + +append_if [expr ![have_spec ps2] && [have_spec usb]] config { + + + + + } + +append_if [have_spec ps2] config { + + + + } + +append config { + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +install_config $config + +# +# Boot modules +# + +# generic modules +set boot_modules { + core + init + timer + nitpicker + liquid_fb + ffat_fs + textedit + freetype.lib.so + icu.lib.so + ld.lib.so + libc.lib.so + libc_log.lib.so + libc_lock_pipe.lib.so + libc_fs.lib.so + libm.lib.so + libpng.lib.so + jpeg.lib.so + pthread.lib.so + qt5_core.lib.so + qt5_dejavusans.lib.so + qt5_gui.lib.so + qt5_widgets.lib.so + qt5_xml.lib.so + zlib.lib.so + stdcxx.lib.so +} + +# platform-specific modules +lappend_if [have_spec linux] boot_modules fb_sdl +lappend_if [have_spec pci] boot_modules pci_drv +lappend_if [have_spec pci] boot_modules atapi_drv +lappend_if [have_spec ps2] boot_modules ps2_drv +lappend_if [have_spec framebuffer] boot_modules fb_drv +lappend_if $use_sd_card_driver boot_modules sd_card_drv +lappend_if $use_usb_driver boot_modules usb_drv + +build_boot_image $boot_modules + +set disk_image "bin/test.hda" +set cmd "dd if=/dev/zero of=$disk_image bs=1024 count=65536" +puts "creating disk image: $cmd" +catch { exec sh -c $cmd } + +set cmd "mkfs.vfat -F32 $disk_image" +puts "formating disk image with vfat file system: $cmd" +catch { exec sh -c $cmd } + +append_if [have_spec pci] qemu_args " -hda $disk_image -boot order=d " + +append qemu_args " -m 256" + +run_genode_until forever diff --git a/libports/src/app/qt5/examples/calculatorform/target.mk b/libports/src/app/qt5/examples/calculatorform/target.mk new file mode 100644 index 0000000000..4facec810b --- /dev/null +++ b/libports/src/app/qt5/examples/calculatorform/target.mk @@ -0,0 +1,14 @@ +# identify the qt4 repository by searching for a file that is unique for qt4 +QT5_REP_DIR := $(call select_from_repositories,lib/import/import-qt5.inc) +QT5_REP_DIR := $(realpath $(dir $(QT5_REP_DIR))../..) + +include $(QT5_REP_DIR)/lib/mk/qt5_version.inc + +QMAKE_PROJECT_PATH = $(realpath $(QT5_REP_DIR)/contrib/$(QT5)/qttools/examples/designer/calculatorform) +QMAKE_PROJECT_FILE = $(QMAKE_PROJECT_PATH)/calculatorform.pro + +vpath % $(QMAKE_PROJECT_PATH) + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_defaults.inc + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_final.inc diff --git a/libports/src/app/qt5/examples/previewer/target.mk b/libports/src/app/qt5/examples/previewer/target.mk new file mode 100644 index 0000000000..36a008f3ca --- /dev/null +++ b/libports/src/app/qt5/examples/previewer/target.mk @@ -0,0 +1,14 @@ +# identify the qt4 repository by searching for a file that is unique for qt4 +QT5_REP_DIR := $(call select_from_repositories,lib/import/import-qt5.inc) +QT5_REP_DIR := $(realpath $(dir $(QT5_REP_DIR))../..) + +include $(QT5_REP_DIR)/lib/mk/qt5_version.inc + +QMAKE_PROJECT_PATH = $(realpath $(QT5_REP_DIR)/contrib/$(QT5)/qtwebkit-examples/examples/webkitwidgets/previewer) +QMAKE_PROJECT_FILE = $(QMAKE_PROJECT_PATH)/previewer.pro + +vpath % $(QMAKE_PROJECT_PATH) + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_defaults.inc + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_final.inc diff --git a/libports/src/app/qt5/examples/tetrix/target.mk b/libports/src/app/qt5/examples/tetrix/target.mk new file mode 100644 index 0000000000..e233939f3c --- /dev/null +++ b/libports/src/app/qt5/examples/tetrix/target.mk @@ -0,0 +1,16 @@ +# identify the qt5 repository by searching for a file that is unique for qt5 +QT5_REP_DIR := $(call select_from_repositories,lib/import/import-qt5.inc) +QT5_REP_DIR := $(realpath $(dir $(QT5_REP_DIR))../..) + +include $(QT5_REP_DIR)/lib/mk/qt5_version.inc + +QMAKE_PROJECT_PATH = $(realpath $(QT5_REP_DIR)/contrib/$(QT5)/qtscript/examples/script/qstetrix) +QMAKE_PROJECT_FILE = $(QMAKE_PROJECT_PATH)/qstetrix.pro + +vpath % $(QMAKE_PROJECT_PATH) + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_defaults.inc + +CC_CXX_OPT += -DQT_NO_SCRIPTTOOLS + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_final.inc diff --git a/libports/src/app/qt5/examples/textedit/target.mk b/libports/src/app/qt5/examples/textedit/target.mk new file mode 100644 index 0000000000..81c40c0dbe --- /dev/null +++ b/libports/src/app/qt5/examples/textedit/target.mk @@ -0,0 +1,16 @@ +# identify the qt4 repository by searching for a file that is unique for qt4 +QT5_REP_DIR := $(call select_from_repositories,lib/import/import-qt5.inc) +QT5_REP_DIR := $(realpath $(dir $(QT5_REP_DIR))../..) + +include $(QT5_REP_DIR)/lib/mk/qt5_version.inc + +QMAKE_PROJECT_PATH = $(realpath $(QT5_REP_DIR)/contrib/$(QT5)/qtbase/examples/widgets/richtext/textedit) +QMAKE_PROJECT_FILE = $(QMAKE_PROJECT_PATH)/textedit.pro + +vpath % $(QMAKE_PROJECT_PATH) + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_defaults.inc + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_final.inc + +LIBS += libc_fs diff --git a/libports/src/app/qt5/qt_avplay/README b/libports/src/app/qt5/qt_avplay/README new file mode 100644 index 0000000000..5e9a2ef515 --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/README @@ -0,0 +1,18 @@ +This directory contains a simple Qt-based media player which is actually a +graphical user interface for the SDL-based 'avplay' media player from 'libav'. +It starts 'avplay' as a child and shows its graphical output in a +'QNitpickerViewWidget'. The widgets for controlling the player state send the +according keyboard and mouse input events to 'avplay'. + +The 'qt_avplay' player supports the following configuration options: + +:':' + name of the media file to play + +:'': + + This node contains the name of a framebuffer filter service to filter the + video output. It may appear multiple times. If specified more than once, it + is possible to build a post-processing pipeline for the video display where + each processing stage is executed by a separate program. + diff --git a/libports/src/app/qt5/qt_avplay/avplay_policy.h b/libports/src/app/qt5/qt_avplay/avplay_policy.h new file mode 100644 index 0000000000..1bcb30df9b --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/avplay_policy.h @@ -0,0 +1,115 @@ +/* + * \brief Avplay policy + * \author Christian Prochaska + * \date 2012-04-05 + */ + +/* + * Copyright (C) 2012-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef _AVPLAY_POLICY_H_ +#define _AVPLAY_POLICY_H_ + +/* Qt4 includes */ +#include +#include +#include +#include +#include + +/* Genode includes */ +#include + + +class Avplay_policy : public QObject, public Genode::Slave_policy +{ + Q_OBJECT + + private: + + Genode::Service_registry &_input_in; + Genode::Service_registry &_framebuffer_in; + + const char *_mediafile; + int _sdl_audio_volume; + QByteArray _config_byte_array; + + + const char *_config() + { + QDomDocument config_doc; + + QDomElement config_node = config_doc.createElement("config"); + config_doc.appendChild(config_node); + + QDomElement arg0_node = config_doc.createElement("arg"); + arg0_node.setAttribute("value", "avplay"); + config_node.appendChild(arg0_node); + + QDomElement arg1_node = config_doc.createElement("arg"); + arg1_node.setAttribute("value", _mediafile); + config_node.appendChild(arg1_node); + + QDomElement sdl_audio_volume_node = config_doc.createElement("sdl_audio_volume"); + sdl_audio_volume_node.setAttribute("value", QString::number(_sdl_audio_volume)); + config_node.appendChild(sdl_audio_volume_node); + + _config_byte_array = config_doc.toByteArray(4); + + return _config_byte_array.constData(); + } + + protected: + + const char **_permitted_services() const + { + static const char *permitted_services[] = { + "CAP", "LOG", "RM", "ROM", "SIGNAL", + "Timer", "Audio_out", 0 }; + + return permitted_services; + }; + + public: + + Avplay_policy(Genode::Rpc_entrypoint &entrypoint, + Genode::Service_registry &input_in, + Genode::Service_registry &framebuffer_in, + const char *mediafile) + : Genode::Slave_policy("avplay", entrypoint, Genode::env()->ram_session()), + _input_in(input_in), + _framebuffer_in(framebuffer_in), + _mediafile(mediafile), + _sdl_audio_volume(100) + { + configure(_config()); + } + + Genode::Service *resolve_session_request(const char *service_name, + const char *args) + { + if (strcmp(service_name, "Input") == 0) + return _input_in.find(service_name); + + if (strcmp(service_name, "Framebuffer") == 0) { + Genode::Client client; + return _framebuffer_in.wait_for_service(service_name, &client, name()); + } + + return Slave_policy::resolve_session_request(service_name, args); + } + + public Q_SLOTS: + + void volume_changed(int value) + { + _sdl_audio_volume = value; + configure(_config()); + } +}; + +#endif /* _AVPLAY_POLICY_H_ */ diff --git a/libports/src/app/qt5/qt_avplay/control_bar.cpp b/libports/src/app/qt5/qt_avplay/control_bar.cpp new file mode 100644 index 0000000000..2fb88fc6dd --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/control_bar.cpp @@ -0,0 +1,73 @@ +/* + * \brief Control bar + * \author Christian Prochaska + * \date 2012-03-30 + */ + +/* + * Copyright (C) 2012-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +/* Genode includes */ +#include + +/* Qoost includes */ +#include + +#include "input_service.h" +#include "main_window.h" + + +void Control_bar::_rewind() +{ + /* mouse click at horizontal position 0 */ + ev_queue.add(Input::Event(Input::Event::PRESS, Input::BTN_LEFT, 0, 0, 0, 0)); + ev_queue.add(Input::Event(Input::Event::RELEASE, Input::BTN_LEFT, 0, 0, 0, 0)); +} + + +void Control_bar::_pause_resume() +{ + ev_queue.add(Input::Event(Input::Event::PRESS, Input::KEY_SPACE, 0, 0, 0, 0)); + ev_queue.add(Input::Event(Input::Event::RELEASE, Input::KEY_SPACE, 0, 0, 0, 0)); + + _playing = !_playing; + if (_playing) + update_style_id(_play_pause_button, "play"); + else + update_style_id(_play_pause_button, "pause"); +} + + +void Control_bar::_stop() +{ + if (_playing) + _pause_resume(); + + _rewind(); +} + + +Control_bar::Control_bar() +: _playing(true) +{ + update_style_id(_play_pause_button, "play"); + + _volume_slider->setOrientation(Qt::Horizontal); + _volume_slider->setRange(0, 100); + _volume_slider->setTickInterval(10); + _volume_slider->setValue(100); + + _layout->addWidget(_play_pause_button); + _layout->addWidget(_stop_button); + _layout->addStretch(); + _layout->addWidget(_volume_label); + _layout->addWidget(_volume_slider); + + connect(_play_pause_button, SIGNAL(clicked()), this, SLOT(_pause_resume())); + connect(_stop_button, SIGNAL(clicked()), this, SLOT(_stop())); + connect(_volume_slider, SIGNAL(valueChanged(int)), this, SIGNAL(volume_changed(int))); +} diff --git a/libports/src/app/qt5/qt_avplay/control_bar.h b/libports/src/app/qt5/qt_avplay/control_bar.h new file mode 100644 index 0000000000..86f1afcf45 --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/control_bar.h @@ -0,0 +1,59 @@ +/* + * \brief Control bar + * \author Christian Prochaska + * \date 2012-03-30 + */ + +/* + * Copyright (C) 2012-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef _CONTROL_BAR_H_ +#define _CONTROL_BAR_H_ + +/* Qt includes */ +#include +#include + +/* Qoost includes */ +#include +#include + +struct Play_pause_button : QPushButton { Q_OBJECT }; +struct Stop_button : QPushButton { Q_OBJECT }; +struct Volume_label : QLabel { Q_OBJECT }; +struct Volume_slider : QSlider { Q_OBJECT }; + +class Control_bar : public Compound_widget +{ + Q_OBJECT + + private: + + QMember _play_pause_button; + QMember _stop_button; + QMember _volume_label; + QMember _volume_slider; + + bool _playing; + + void _rewind(); + + private Q_SLOTS: + + void _pause_resume(); + void _stop(); + + public: + + Control_bar(); + + Q_SIGNALS: + + void volume_changed(int value); +}; + +#endif /* _CONTROL_BAR_H_ */ diff --git a/libports/src/app/qt5/qt_avplay/filter_framebuffer_policy.h b/libports/src/app/qt5/qt_avplay/filter_framebuffer_policy.h new file mode 100644 index 0000000000..0a6b40572f --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/filter_framebuffer_policy.h @@ -0,0 +1,77 @@ +/* + * \brief Filter framebuffer policy + * \author Christian Prochaska + * \date 2012-04-11 + */ + +/* + * Copyright (C) 2012-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef _FILTER_FRAMEBUFFER_POLICY_H_ +#define _FILTER_FRAMEBUFFER_POLICY_H_ + +/* Genode includes */ +#include +#include + + +class Filter_framebuffer_policy : public Genode::Slave_policy +{ + private: + + Genode::Service_registry &_framebuffer_in; + Genode::Service_registry &_framebuffer_out; + + protected: + + const char **_permitted_services() const + { + static const char *permitted_services[] = { + "CAP", "LOG", "RM", "ROM", "SIGNAL", + "Timer", 0 }; + + return permitted_services; + }; + + public: + + Filter_framebuffer_policy(const char *name, + Genode::Rpc_entrypoint &entrypoint, + Genode::Service_registry &framebuffer_in, + Genode::Service_registry &framebuffer_out) + : Genode::Slave_policy(name, entrypoint, Genode::env()->ram_session()), + _framebuffer_in(framebuffer_in), + _framebuffer_out(framebuffer_out) { } + + Genode::Service *resolve_session_request(const char *service_name, + const char *args) + { + if (strcmp(service_name, "Framebuffer") == 0) { + Genode::Client client; + return _framebuffer_in.wait_for_service(service_name, &client, name()); + } + + return Slave_policy::resolve_session_request(service_name, args); + } + + bool announce_service(const char *name, + Genode::Root_capability root, + Genode::Allocator *alloc, + Genode::Server *server) + { + if (strcmp(name, "Framebuffer") == 0) { + _framebuffer_out.insert(new (alloc) Genode::Child_service(name, root, server)); + return true; + } + + return Slave_policy::announce_service(name, root, alloc, server); + } + + +}; + +#endif /* _FILTER_FRAMEBUFFER_POLICY_H_ */ diff --git a/libports/src/app/qt5/qt_avplay/framebuffer_root.h b/libports/src/app/qt5/qt_avplay/framebuffer_root.h new file mode 100644 index 0000000000..ad46f893a4 --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/framebuffer_root.h @@ -0,0 +1,64 @@ +/* + * \brief Framebuffer root + * \author Christian Prochaska + * \date 2012-04-02 + */ + +/* + * Copyright (C) 2012-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + + +#ifndef _FRAMEBUFFER_ROOT_H_ +#define _FRAMEBUFFER_ROOT_H_ + +/* Genode includes */ +#include + +#include "framebuffer_session_component.h" + +namespace Framebuffer { + + /** + * Shortcut for single-client root component + */ + typedef Genode::Root_component Root_component; + + + class Root : public Root_component + { + private: + + QNitpickerViewWidget &_nitpicker_view_widget; + int _max_width; + int _max_height; + + protected: + + Session_component *_create_session(const char *args) + { + return new (md_alloc()) + Session_component(args, _nitpicker_view_widget, + _max_width, _max_height); + } + + public: + + Root(Genode::Rpc_entrypoint *session_ep, + Genode::Allocator *md_alloc, + QNitpickerViewWidget &nitpicker_view_widget, + int max_width = 0, + int max_height = 0) + : Root_component(session_ep, md_alloc), + _nitpicker_view_widget(nitpicker_view_widget), + _max_width(max_width), + _max_height(max_height) { } + + }; + +} + +#endif /* _FRAMEBUFFER_ROOT_H_ */ diff --git a/libports/src/app/qt5/qt_avplay/framebuffer_session_component.cc b/libports/src/app/qt5/qt_avplay/framebuffer_session_component.cc new file mode 100644 index 0000000000..f12b48ad5a --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/framebuffer_session_component.cc @@ -0,0 +1,86 @@ +/* + * \brief Framebuffer session component + * \author Christian Prochaska + * \date 2012-04-02 + */ + +/* + * Copyright (C) 2012-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +/* Genode includes */ +#include +#include +#include +#include + +#include "framebuffer_session_component.h" + +namespace Framebuffer { + + + int Session_component::_limited_size(int requested_size, int max_size) + { + if (requested_size == 0) + return max_size; + else + return (max_size > 0) ? Genode::min(requested_size, max_size) : requested_size; + } + + + static inline long session_arg(const char *arg, const char *key) + { + return Genode::Arg_string::find_arg(arg, key).long_value(0); + } + + + Session_component::Session_component(const char *args, + QNitpickerViewWidget &nitpicker_view_widget, + int max_width, + int max_height) + : _nitpicker(Nitpicker::Connection( + _limited_size(session_arg(args, "fb_width"), max_width), + _limited_size(session_arg(args, "fb_height"), max_height))), + _framebuffer(_nitpicker.framebuffer_session()) + { + Nitpicker::View_capability nitpicker_view_cap = _nitpicker.create_view(); + Mode _mode = _framebuffer.mode(); + nitpicker_view_widget.setNitpickerView(nitpicker_view_cap, + 0, 0, + _mode.width(), + _mode.height()); + } + + + Genode::Dataspace_capability Session_component::dataspace() + { + return _framebuffer.dataspace(); + } + + + void Session_component::release() + { + _framebuffer.release(); + } + + + Mode Session_component::mode() const + { + return _framebuffer.mode(); + } + + + void Session_component::mode_sigh(Genode::Signal_context_capability sigh_cap) + { + _framebuffer.mode_sigh(sigh_cap); + } + + + void Session_component::refresh(int x, int y, int w, int h) + { + _framebuffer.refresh(x, y, w, h); + } +} diff --git a/libports/src/app/qt5/qt_avplay/framebuffer_session_component.h b/libports/src/app/qt5/qt_avplay/framebuffer_session_component.h new file mode 100644 index 0000000000..b2ea637f2f --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/framebuffer_session_component.h @@ -0,0 +1,57 @@ +/* + * \brief Framebuffer session component + * \author Christian Prochaska + * \date 2012-04-02 + */ + +/* + * Copyright (C) 2012-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + + +#ifndef _FRAMEBUFFER_SESSION_COMPONENT_H_ +#define _FRAMEBUFFER_SESSION_COMPONENT_H_ + +/* Genode includes */ +#include +#include +#include + +/* Qt4 includes */ +#include + + +namespace Framebuffer { + + class Session_component : public Genode::Rpc_object + { + private: + + Nitpicker::Connection _nitpicker; + Session_client _framebuffer; + + int _limited_size(int requested_size, int max_size); + + public: + + /** + * Constructor + */ + Session_component(const char *args, + QNitpickerViewWidget &nitpicker_view_widget, + int max_width = 0, + int max_height = 0); + + Genode::Dataspace_capability dataspace(); + void release(); + Mode mode() const; + void mode_sigh(Genode::Signal_context_capability sigh_cap); + void refresh(int x, int y, int w, int h); + }; + +} + +#endif /* _FRAMEBUFFER_SESSION_COMPONENT_H_ */ diff --git a/libports/src/app/qt5/qt_avplay/input_service.cpp b/libports/src/app/qt5/qt_avplay/input_service.cpp new file mode 100644 index 0000000000..65bb5a5c4c --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/input_service.cpp @@ -0,0 +1,40 @@ +/* + * \brief Input service + * \author Christian Prochaska + * \date 2012-03-29 + */ + +/* + * Copyright (C) 2012-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +/* Genode includes */ +#include + +#include "input_service.h" + +using namespace Genode; + +Event_queue ev_queue; + + +namespace Input { + + /* + * Event handling is disabled on queue creation and will be enabled later if a + * session is created. + */ + void event_handling(bool enable) + { + if (enable) + ev_queue.enable(); + else + ev_queue.disable(); + } + + bool event_pending() { return !ev_queue.empty(); } + Event get_event() { return ev_queue.get(); } +} diff --git a/libports/src/app/qt5/qt_avplay/input_service.h b/libports/src/app/qt5/qt_avplay/input_service.h new file mode 100644 index 0000000000..7612f26997 --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/input_service.h @@ -0,0 +1,24 @@ +/* + * \brief Input service + * \author Christian Prochaska + * \date 2012-03-29 + */ + +/* + * Copyright (C) 2012-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef _INPUT_SERVICE_H_ +#define _INPUT_SERVICE_H_ + +/* Genode includes */ +#include + +extern Event_queue ev_queue; + +extern void create_input_service(); + +#endif /* _INPUT_SERVICE_H_ */ diff --git a/libports/src/app/qt5/qt_avplay/main.cpp b/libports/src/app/qt5/qt_avplay/main.cpp new file mode 100644 index 0000000000..84a751adf7 --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/main.cpp @@ -0,0 +1,45 @@ +/* + * \brief Simple Qt interface for 'avplay' media player + * \author Christian Prochaska + * \date 2012-03-21 + */ + +/* + * Copyright (C) 2012-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +/* Qt includes */ +#include + +/* qt_avplay includes */ +#include "main_window.h" + + +static inline void load_stylesheet() +{ + QFile file(":style.qss"); + if (!file.open(QFile::ReadOnly)) { + qWarning() << "Warning:" << file.errorString() + << "opening file" << file.fileName(); + return; + } + + qApp->setStyleSheet(QLatin1String(file.readAll())); +} + + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + load_stylesheet(); + + QMember main_window; + + main_window->show(); + + return app.exec(); +} diff --git a/libports/src/app/qt5/qt_avplay/main_window.cpp b/libports/src/app/qt5/qt_avplay/main_window.cpp new file mode 100644 index 0000000000..e3c0909785 --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/main_window.cpp @@ -0,0 +1,129 @@ +/* + * \brief Main window of the media player + * \author Christian Prochaska + * \date 2012-03-29 + */ + +/* + * Copyright (C) 2012-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +/* Genode includes */ +#include +#include +#include +#include + +/* qt_avplay includes */ +#include "avplay_policy.h" +#include "filter_framebuffer_policy.h" +#include "framebuffer_root.h" +#include "input_service.h" +#include "main_window.h" + + +using namespace Genode; + + +struct Framebuffer_filter +{ + enum { MAX_FILTER_NAME_SIZE = 32 }; + char name[MAX_FILTER_NAME_SIZE]; + Genode::Number_of_bytes ram_quota; + + Service_registry *framebuffer_out_registry; + Rpc_entrypoint *ep; + Filter_framebuffer_policy *policy; + Slave *slave; +}; + + +Main_window::Main_window() +{ + /* look for dynamic linker */ + + try { + static Rom_connection ldso_rom("ld.lib.so"); + Process::dynamic_linker(ldso_rom.dataspace()); + } catch (...) { + PERR("ld.lib.so not found"); + } + + /* get the name of the media file from the config file */ + enum { MAX_LEN_MEDIAFILE_NAME = 256 }; + static char mediafile[MAX_LEN_MEDIAFILE_NAME] = "mediafile"; + try { + config()->xml_node().sub_node("mediafile").attribute("name").value(mediafile, sizeof(mediafile)); + } catch(...) { + PWRN("no config node found, using \"mediafile\""); + } + + /* create local services */ + + enum { STACK_SIZE = 2*sizeof(addr_t)*1024 }; + static Cap_connection cap; + static Rpc_entrypoint avplay_ep(&cap, STACK_SIZE, "avplay_ep"); + static Service_registry input_registry; + static Service_registry nitpicker_framebuffer_registry; + + static Input::Root input_root(&avplay_ep, env()->heap()); + static Local_service input_service(Input::Session::service_name(), &input_root); + input_registry.insert(&input_service); + avplay_ep.manage(&input_root); + + /* find out which filtering framebuffer services to start and sort them in reverse order */ + + static QList framebuffer_filters; + try { + Xml_node node = config()->xml_node().sub_node("framebuffer_filter"); + for (; ; node = node.next("framebuffer_filter")) { + Framebuffer_filter *framebuffer_filter = new Framebuffer_filter; + node.attribute("name").value(framebuffer_filter->name, sizeof(framebuffer_filter->name)); + node.attribute("ram_quota").value(&framebuffer_filter->ram_quota); + qDebug() << "filter:" << framebuffer_filter->name << "," << framebuffer_filter->ram_quota; + framebuffer_filters.prepend(framebuffer_filter); + } + } catch (Config::Invalid) { + } catch (Xml_node::Nonexistent_sub_node) { + } + + /* start the filtering framebuffer services */ + + Service_registry *framebuffer_in_registry = &nitpicker_framebuffer_registry; + + Q_FOREACH(Framebuffer_filter *framebuffer_filter, framebuffer_filters) { + framebuffer_filter->framebuffer_out_registry = new Service_registry; + framebuffer_filter->ep = new Rpc_entrypoint(&cap, STACK_SIZE, "filter_fb_ep"); + framebuffer_filter->policy = new Filter_framebuffer_policy(framebuffer_filter->name, + *framebuffer_filter->ep, + *framebuffer_in_registry, + *framebuffer_filter->framebuffer_out_registry); + framebuffer_filter->slave = new Slave(*framebuffer_filter->ep, + *framebuffer_filter->policy, + framebuffer_filter->ram_quota); + framebuffer_in_registry = framebuffer_filter->framebuffer_out_registry; + } + + Rpc_entrypoint *local_framebuffer_ep = framebuffer_filters.isEmpty() ? + &avplay_ep : + framebuffer_filters.at(0)->ep; + + static Framebuffer::Root framebuffer_root(local_framebuffer_ep, env()->heap(), *_avplay_widget, 640, 480); + static Local_service framebuffer_service(Framebuffer::Session::service_name(), &framebuffer_root); + nitpicker_framebuffer_registry.insert(&framebuffer_service); + + /* start avplay */ + + static Avplay_policy avplay_policy(avplay_ep, input_registry, *framebuffer_in_registry, mediafile); + static Genode::Slave avplay_slave(avplay_ep, avplay_policy, 32*1024*1024); + + /* add widgets to layout */ + + _layout->addWidget(_avplay_widget); + _layout->addWidget(_control_bar); + + connect(_control_bar, SIGNAL(volume_changed(int)), &avplay_policy, SLOT(volume_changed(int))); +} diff --git a/libports/src/app/qt5/qt_avplay/main_window.h b/libports/src/app/qt5/qt_avplay/main_window.h new file mode 100644 index 0000000000..aaf8699223 --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/main_window.h @@ -0,0 +1,43 @@ +/* + * \brief Main window of the media player + * \author Christian Prochaska + * \date 2012-03-29 + */ + +/* + * Copyright (C) 2012-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef _MAIN_WINDOW_H_ +#define _MAIN_WINDOW_H_ + +/* Qt includes */ +#include +#include +#include + +/* Qoost includes */ +#include +#include + +#include "control_bar.h" + + +class Main_window : public Compound_widget +{ + Q_OBJECT + + private: + + QMember _avplay_widget; + QMember _control_bar; + + public: + + Main_window(); +}; + +#endif /* _MAIN_WINDOW_H_ */ diff --git a/libports/src/app/qt5/qt_avplay/qt_avplay.pro b/libports/src/app/qt5/qt_avplay/qt_avplay.pro new file mode 100644 index 0000000000..8b9dc41c57 --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/qt_avplay.pro @@ -0,0 +1,12 @@ +TEMPLATE = app +TARGET = qt_avplay +QT = core gui xml +HEADERS = avplay_policy.h \ + control_bar.h \ + main_window.h +SOURCES = control_bar.cpp \ + framebuffer_session_component.cc \ + input_service.cpp \ + main.cpp \ + main_window.cpp +RESOURCES = style.qrc diff --git a/libports/src/app/qt5/qt_avplay/style.qrc b/libports/src/app/qt5/qt_avplay/style.qrc new file mode 100644 index 0000000000..631a62ef22 --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/style.qrc @@ -0,0 +1,10 @@ + + + +style.qss +../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtbase/examples/network/torrent/icons/player_play.png +../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtbase/examples/network/torrent/icons/player_pause.png +../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtbase/examples/network/torrent/icons/player_stop.png +../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtwebkit/Source/WebKit/efl/DefaultTheme/widget/mediacontrol/mutebutton/unmutebutton.png + + diff --git a/libports/src/app/qt5/qt_avplay/style.qss b/libports/src/app/qt5/qt_avplay/style.qss new file mode 100644 index 0000000000..66d19169fa --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/style.qss @@ -0,0 +1,32 @@ +Main_window { + max-width: 640px; + max-height: 512px; +} + +Play_pause_button, Stop_button { + width: 32px; + height: 32px; +} + +Play_pause_button#play { + border-image: url(:player_pause.png); +} + + +Play_pause_button#pause { + border-image: url(:player_play.png); +} + + +Stop_button { + border-image: url(:player_stop.png); +} + +Volume_label { + border-image: url(:volume.png); + min-width: 32px; + max-width: 32px; + min-height: 32px; + max-height: 32px; + margin-right: 5px; +} diff --git a/libports/src/app/qt5/qt_avplay/target.mk b/libports/src/app/qt5/qt_avplay/target.mk new file mode 100644 index 0000000000..125eb934e8 --- /dev/null +++ b/libports/src/app/qt5/qt_avplay/target.mk @@ -0,0 +1,9 @@ +# identify the qt4 repository by searching for a file that is unique for qt4 +QT5_REP_DIR := $(call select_from_repositories,lib/import/import-qt5.inc) +QT5_REP_DIR := $(realpath $(dir $(QT5_REP_DIR))../..) + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_defaults.inc + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_final.inc + +LIBS += qt5_qnitpickerviewwidget diff --git a/libports/src/app/qt5/qt_launchpad/child_entry.cpp b/libports/src/app/qt5/qt_launchpad/child_entry.cpp new file mode 100644 index 0000000000..4dd13c7deb --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/child_entry.cpp @@ -0,0 +1,29 @@ +/* + * \brief Child entry widget implementation + * \author Christian Prochaska + * \date 2008-04-06 + */ + +#include "child_entry.h" + +Child_entry::Child_entry(const char *name, int quota_kb, int max_quota_kb, + Launchpad *launchpad, Launchpad_child *launchpad_child, + QWidget *parent) + : QWidget(parent), _launchpad(launchpad), _launchpad_child(launchpad_child) +{ + ui.setupUi(this); + + ui.nameLabel->setText(name); + ui.quotaBar->setMaximum(max_quota_kb); + ui.quotaBar->setValue(quota_kb); +} + +Child_entry::~Child_entry() +{ + +} + +void Child_entry::on_exitButton_clicked() +{ + _launchpad->exit_child(_launchpad_child); +} diff --git a/libports/src/app/qt5/qt_launchpad/child_entry.h b/libports/src/app/qt5/qt_launchpad/child_entry.h new file mode 100644 index 0000000000..ac825a375c --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/child_entry.h @@ -0,0 +1,43 @@ +/* + * \brief Child entry widget interface + * \author Christian Prochaska + * \date 2008-04-06 + */ + +/* + * Copyright (C) 2008-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef CHILD_ENTRY_H +#define CHILD_ENTRY_H + +#include + +#include + +#include "ui_child_entry.h" + +class Child_entry : public QWidget +{ + Q_OBJECT + +public: + Child_entry(const char *name, int quota_kb, int max_quota_kb, + Launchpad *launchpad, Launchpad_child *launchpad_child, + QWidget *parent = 0); + ~Child_entry(); + +private: + Ui::Child_entryClass ui; + + Launchpad *_launchpad; + Launchpad_child *_launchpad_child; + +private slots: + void on_exitButton_clicked(); +}; + +#endif // CHILD_ENTRY_H diff --git a/libports/src/app/qt5/qt_launchpad/child_entry.ui b/libports/src/app/qt5/qt_launchpad/child_entry.ui new file mode 100644 index 0000000000..7004ca5096 --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/child_entry.ui @@ -0,0 +1,148 @@ + + Child_entryClass + + + + 0 + 0 + 396 + 30 + + + + + 4 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 100 + 22 + + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + + 240 + 22 + + + + + 240 + 16777215 + + + + 0 + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 6 + 30 + + + + + + + + + 20 + 20 + + + + + 20 + 20 + + + + + 75 + true + + + + X + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 6 + 30 + + + + + + + + + + Kbyte_loadbar + QProgressBar +
kbyte_loadbar.h
+
+
+ + +
diff --git a/libports/src/app/qt5/qt_launchpad/kbyte_loadbar.cpp b/libports/src/app/qt5/qt_launchpad/kbyte_loadbar.cpp new file mode 100644 index 0000000000..216091fe9b --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/kbyte_loadbar.cpp @@ -0,0 +1,24 @@ +/* + * \brief KByte loadbar implementation + * \author Christian Prochaska + * \date 2008-04-05 + */ + +#include "kbyte_loadbar.h" + +Kbyte_loadbar::Kbyte_loadbar(QWidget *parent) + : QProgressBar(parent) +{ +} + +Kbyte_loadbar::~Kbyte_loadbar() +{ + +} + +QString Kbyte_loadbar::text() const +{ + return QString::number(value()) + " KByte / " + + QString::number(maximum()) + " KByte"; + +} diff --git a/libports/src/app/qt5/qt_launchpad/kbyte_loadbar.h b/libports/src/app/qt5/qt_launchpad/kbyte_loadbar.h new file mode 100644 index 0000000000..69d8462acd --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/kbyte_loadbar.h @@ -0,0 +1,33 @@ +/* + * \brief KByte loadbar interface + * \author Christian Prochaska + * \date 2008-04-05 + */ + +/* + * Copyright (C) 2008-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef KBYTE_LOADBAR_H +#define KBYTE_LOADBAR_H + +#include + +class Kbyte_loadbar : public QProgressBar +{ + Q_OBJECT + +public: + Kbyte_loadbar(QWidget *parent = 0); + ~Kbyte_loadbar(); + + virtual QString text() const; + +protected: + +}; + +#endif // KBYTE_LOADBAR_H diff --git a/libports/src/app/qt5/qt_launchpad/launch_entry.cpp b/libports/src/app/qt5/qt_launchpad/launch_entry.cpp new file mode 100644 index 0000000000..d82c204bb3 --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/launch_entry.cpp @@ -0,0 +1,31 @@ +/* + * \brief Launcher entry widget implementation + * \author Christian Prochaska + * \date 2008-04-06 + */ + +#include "launch_entry.h" + +Launch_entry::Launch_entry(const char *filename, unsigned long default_quota, + unsigned long max_quota, Launchpad *launchpad, + QWidget *parent) + : QWidget(parent), _filename(filename), _launchpad(launchpad) +{ + ui.setupUi(this); + + ui.launchButton->setText(filename); + + ui.quotaDial->setMaximum(max_quota); + ui.quotaDial->setSingleStep(max_quota / 100); + ui.quotaDial->setValue(default_quota); +} + +Launch_entry::~Launch_entry() +{ + +} + +void Launch_entry::on_launchButton_clicked() +{ + _launchpad->start_child(_filename, 1024 * ui.quotaDial->value(), Genode::Dataspace_capability()); +} diff --git a/libports/src/app/qt5/qt_launchpad/launch_entry.h b/libports/src/app/qt5/qt_launchpad/launch_entry.h new file mode 100644 index 0000000000..8a647f58ca --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/launch_entry.h @@ -0,0 +1,43 @@ +/* + * \brief Launcher entry widget interface + * \author Christian Prochaska + * \date 2008-04-06 + */ + +/* + * Copyright (C) 2008-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef LAUNCH_ENTRY_H +#define LAUNCH_ENTRY_H + +#include + +#include + +#include "ui_launch_entry.h" + +class Launch_entry : public QWidget +{ + Q_OBJECT + +public: + Launch_entry(const char *filename, unsigned long default_quota, + unsigned long max_quota, Launchpad *launchpad, + QWidget *parent = 0); + ~Launch_entry(); + +private: + Ui::Launch_entryClass ui; + + const char *_filename; + Launchpad *_launchpad; + +private slots: + void on_launchButton_clicked(); +}; + +#endif // LAUNCH_ENTRY_H diff --git a/libports/src/app/qt5/qt_launchpad/launch_entry.ui b/libports/src/app/qt5/qt_launchpad/launch_entry.ui new file mode 100644 index 0000000000..dae32b8244 --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/launch_entry.ui @@ -0,0 +1,133 @@ + + Launch_entryClass + + + + 0 + 0 + 396 + 40 + + + + + 4 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 100 + 40 + + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + + 240 + 40 + + + + + 240 + 16777215 + + + + 0 + + + + + + + + 40 + 40 + + + + 100 + + + false + + + true + + + + + + + + Kbyte_loadbar + QProgressBar +
kbyte_loadbar.h
+
+
+ + + + quotaDial + valueChanged(int) + quotaBar + setValue(int) + + + 395 + 43 + + + 355 + 43 + + + + + quotaDial + rangeChanged(int,int) + quotaBar + setRange(int,int) + + + 395 + 30 + + + 355 + 30 + + + + +
diff --git a/libports/src/app/qt5/qt_launchpad/main.cpp b/libports/src/app/qt5/qt_launchpad/main.cpp new file mode 100644 index 0000000000..3c2043732f --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/main.cpp @@ -0,0 +1,47 @@ +/* + * \brief Qt Launchpad main program + * \author Christian Prochaska + * \date 2008-04-05 + */ + +/* local includes */ +#include "qt_launchpad.h" + +/* Qt includes */ +#include +#include + +/* Genode includes */ +#include +#include + +int main(int argc, char *argv[]) +{ + /* look for dynamic linker */ + try { + static Genode::Rom_connection rom("ld.lib.so"); + Genode::Process::dynamic_linker(rom.dataspace()); + } catch (...) { } + + int result; + + QApplication *a = new QApplication(argc, argv); + + Qt_launchpad *launchpad = new Qt_launchpad(Genode::env()->ram_session()->quota()); + + launchpad->add_launcher("previewer", 25*1024*1024); + launchpad->add_launcher("textedit", 25*1024*1024); + launchpad->add_launcher("tetrix", 40*1024*1024); + + launchpad->move(300,100); + launchpad->show(); + + a->connect(a, SIGNAL(lastWindowClosed()), a, SLOT(quit())); + + result = a->exec(); + + delete launchpad; + delete a; + + return result; +} diff --git a/libports/src/app/qt5/qt_launchpad/qt_launchpad.cpp b/libports/src/app/qt5/qt_launchpad/qt_launchpad.cpp new file mode 100644 index 0000000000..2ad8604edb --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/qt_launchpad.cpp @@ -0,0 +1,115 @@ +/* + * \brief Qt Launchpad window implementation + * \author Christian Prochaska + * \date 2008-04-05 + */ + +#include + +#include "qt_launchpad.h" + +#include "launch_entry.h" +#include "child_entry.h" + +Qt_launchpad::Qt_launchpad(unsigned long initial_quota, QWidget *parent) + : QMainWindow(parent), Launchpad(initial_quota) +{ + setupUi(this); + + // disable minimize and maximize buttons + Qt::WindowFlags flags = windowFlags(); + flags &= ~Qt::WindowMinMaxButtonsHint; + setWindowFlags(flags); + + // put a QScrollArea into launcherDockWidget for scrolling of launcher entries + QScrollArea *launcherScrollArea = new QScrollArea; + launcherScrollArea->setFrameStyle(QFrame::NoFrame); + launcherScrollArea->setWidget(launcherDockWidgetContents); + + launcherDockWidget->setWidget(launcherScrollArea); + + QVBoxLayout *launcherDockWidgetLayout = new QVBoxLayout; + launcherDockWidgetLayout->setContentsMargins(2, 2, 2, 2); + launcherDockWidgetLayout->setSpacing(2); + launcherDockWidgetContents->setLayout(launcherDockWidgetLayout); + + // put a QScrollArea into childrenDockWidget for scrolling of child entries + QScrollArea *childrenScrollArea = new QScrollArea; + childrenScrollArea->setFrameStyle(QFrame::NoFrame); + childrenScrollArea->setWidget(childrenDockWidgetContents); + + childrenDockWidget->setWidget(childrenScrollArea); + + QVBoxLayout *childrenDockWidgetLayout = new QVBoxLayout; + childrenDockWidgetLayout->setContentsMargins(2, 2, 2, 2); + childrenDockWidgetLayout->setSpacing(2); + childrenDockWidgetContents->setLayout(childrenDockWidgetLayout); + + // update the available quota bar every 200ms + QTimer *avail_quota_timer = new QTimer(this); + connect(avail_quota_timer, SIGNAL(timeout()), this, SLOT(avail_quota_update())); + avail_quota_timer->start(200); +} + +Qt_launchpad::~Qt_launchpad() +{ + +} + +void Qt_launchpad::avail_quota_update() +{ + static Genode::size_t _avail = 0; + + Genode::size_t new_avail = Genode::env()->ram_session()->avail(); + + if (new_avail != _avail) + quota(new_avail); + + _avail = new_avail; +} + +void Qt_launchpad::quota(unsigned long quota) +{ + totalQuotaProgressBar->setMaximum(initial_quota() / 1024); + totalQuotaProgressBar->setValue(quota / 1024); +} + +void Qt_launchpad::add_launcher(const char *filename, + unsigned long default_quota) +{ + Launch_entry *launch_entry = new Launch_entry(filename, default_quota / 1024, + initial_quota() / 1024, this); + launcherDockWidgetContents->layout()->addWidget(launch_entry); + launch_entry->show(); + launcherDockWidgetContents->adjustSize(); +} + +void Qt_launchpad::add_child(const char *unique_name, + unsigned long quota, + Launchpad_child *launchpad_child, + Genode::Allocator *alloc) +{ + Child_entry *child_entry = new Child_entry(unique_name, quota / 1024, + initial_quota() / 1024, + this, launchpad_child); + child_entry->setObjectName(QString(unique_name) + "_child_entry"); + childrenDockWidgetContents->layout()->addWidget(child_entry); + child_entry->show(); + childrenDockWidgetContents->adjustSize(); +} + +void Qt_launchpad::remove_child(const char *name, Genode::Allocator *alloc) +{ + Child_entry *child_entry = + childrenDockWidgetContents->findChild(QString(name) + "_child_entry"); + + if (!child_entry) { + PWRN("child entry lookup failed"); + return; + } + + // still in "button clicked" event handler + child_entry->deleteLater(); + + childrenDockWidgetContents->adjustSize(); +} diff --git a/libports/src/app/qt5/qt_launchpad/qt_launchpad.h b/libports/src/app/qt5/qt_launchpad/qt_launchpad.h new file mode 100644 index 0000000000..c817f2556b --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/qt_launchpad.h @@ -0,0 +1,46 @@ +/* + * \brief Qt Launchpad window interface + * \author Christian Prochaska + * \date 2008-04-05 + */ + +/* + * Copyright (C) 2008-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef QT_LAUNCHPAD_H +#define QT_LAUNCHPAD_H + +#include + +#include +#include "ui_qt_launchpad.h" + +class Qt_launchpad : public QMainWindow, public Launchpad, private Ui::Qt_launchpadClass +{ + Q_OBJECT + +public: + Qt_launchpad(unsigned long initial_quota, QWidget *parent = 0); + ~Qt_launchpad(); + + virtual void quota(unsigned long quota); + + virtual void add_launcher(const char *filename, + unsigned long default_quota); + + virtual void add_child(const char *unique_name, + unsigned long quota, + Launchpad_child *launchpad_child, + Genode::Allocator *alloc); + + virtual void remove_child(const char *name, Genode::Allocator *alloc); + +private slots: + void avail_quota_update(); +}; + +#endif // QT_LAUNCHPAD_H diff --git a/libports/src/app/qt5/qt_launchpad/qt_launchpad.pro b/libports/src/app/qt5/qt_launchpad/qt_launchpad.pro new file mode 100644 index 0000000000..0546c53e01 --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/qt_launchpad.pro @@ -0,0 +1,15 @@ +TEMPLATE = app +TARGET = qt_launchpad +QT = core gui +HEADERS += child_entry.h \ + kbyte_loadbar.h \ + launch_entry.h \ + qt_launchpad.h +SOURCES += child_entry.cpp \ + kbyte_loadbar.cpp \ + launch_entry.cpp \ + main.cpp \ + qt_launchpad.cpp +FORMS += child_entry.ui \ + launch_entry.ui \ + qt_launchpad.ui diff --git a/libports/src/app/qt5/qt_launchpad/qt_launchpad.ui b/libports/src/app/qt5/qt_launchpad/qt_launchpad.ui new file mode 100644 index 0000000000..31e7820af9 --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/qt_launchpad.ui @@ -0,0 +1,152 @@ + + Qt_launchpadClass + + + + 0 + 0 + 410 + 500 + + + + + 410 + 500 + + + + + 410 + 500 + + + + Qt Launchpad + + + + + + 410 + 0 + + + + QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable|QDockWidget::NoDockWidgetFeatures + + + Qt::LeftDockWidgetArea + + + Status + + + 1 + + + + + 16777215 + 50 + + + + + + + + 100 + 0 + + + + Quota + + + Qt::AlignCenter + + + + + + + + 240 + 0 + + + + 0 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 410 + 0 + + + + QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable|QDockWidget::NoDockWidgetFeatures + + + Qt::LeftDockWidgetArea + + + Launcher + + + 1 + + + + + + + 410 + 0 + + + + QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable|QDockWidget::NoDockWidgetFeatures + + + Qt::LeftDockWidgetArea + + + Children + + + 1 + + + + + + + Kbyte_loadbar + QProgressBar +
kbyte_loadbar.h
+
+
+ + +
diff --git a/libports/src/app/qt5/qt_launchpad/target.mk b/libports/src/app/qt5/qt_launchpad/target.mk new file mode 100644 index 0000000000..1f035e42bf --- /dev/null +++ b/libports/src/app/qt5/qt_launchpad/target.mk @@ -0,0 +1,7 @@ +# identify the qt5 repository by searching for a file that is unique for qt5 +QT5_REP_DIR := $(call select_from_repositories,lib/import/import-qt5.inc) +QT5_REP_DIR := $(realpath $(dir $(QT5_REP_DIR))../..) + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_defaults.inc + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_final.inc diff --git a/libports/src/app/qt5/tmpl/target.mk.example b/libports/src/app/qt5/tmpl/target.mk.example new file mode 100644 index 0000000000..2e7ce237a4 --- /dev/null +++ b/libports/src/app/qt5/tmpl/target.mk.example @@ -0,0 +1,7 @@ +# identify the qt4 repository by searching for a file that is unique for qt4 +QT5_REP_DIR := $(call select_from_repositories,lib/import/import-qt5.inc) +QT5_REP_DIR := $(realpath $(dir $(QT5_REP_DIR))../..) + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_defaults.inc + +include $(QT5_REP_DIR)/src/app/qt5/tmpl/target_final.inc diff --git a/libports/src/app/qt5/tmpl/target_defaults.inc b/libports/src/app/qt5/tmpl/target_defaults.inc new file mode 100644 index 0000000000..a3a42736d2 --- /dev/null +++ b/libports/src/app/qt5/tmpl/target_defaults.inc @@ -0,0 +1,31 @@ +# build with QtCore and QtGui support by default +# - can be overridden in the qmake project file + +QT = core gui + +# find out the name of the project directory + +PROJECT_DIR_NAME = $(notdir $(abspath $(PRG_DIR))) + +# include the qmake project file +# - if the qmake project file has a different name than the project directory, +# set QMAKE_PROJECT_FILE in target.mk before the inclusion of this file + +QMAKE_PROJECT_FILE ?= $(realpath $(PRG_DIR)/$(PROJECT_DIR_NAME).pro) + +ifneq ($(strip $(QMAKE_PROJECT_FILE)),) +include $(QMAKE_PROJECT_FILE) +endif + +# how to name the generated executable +# (if not already defined in the qmake project file) +# - can be overridden in target.mk after inclusion of this file + +ifndef TARGET +TARGET = $(PROJECT_DIR_NAME) +endif + +# default stack size of the main thread +# - can be overridden anywhere in target.mk + +QT_MAIN_STACK_SIZE ?= 512*1024 diff --git a/libports/src/app/qt5/tmpl/target_final.inc b/libports/src/app/qt5/tmpl/target_final.inc new file mode 100644 index 0000000000..756efaf40b --- /dev/null +++ b/libports/src/app/qt5/tmpl/target_final.inc @@ -0,0 +1,71 @@ +INC_DIR += $(PRG_DIR) + +LIBS += libc libc_log + +# set the stack size of the main thread +CC_CXX_OPT += -DQT_MAIN_STACK_SIZE=$(QT_MAIN_STACK_SIZE) + +# static Qt plugins +#ifeq ($(findstring qgif, $(QT_PLUGIN)), qgif) +#LIBS += qgif +#endif +#ifeq ($(findstring qjpeg, $(QT_PLUGIN)), qjpeg) +#LIBS += qjpeg +#endif + +# QtCore +ifeq ($(findstring core, $(QT)), core) +QT_DEFINES += -DQT_CORE_LIB +LIBS += qt5_core +endif + +# QtGui +ifeq ($(findstring gui, $(QT)), gui) +QT_DEFINES += -DQT_GUI_LIB +LIBS += qt5_gui qt5_qpa_nitpicker qt5_widgets qt5_dejavusans +endif + +# QtNetwork +ifeq ($(findstring network, $(QT)), network) +LIBS += qt5_network +endif + +# QtScript +ifeq ($(findstring scriptclassic, $(QT)), scriptclassic) +LIBS += qt5_scriptclassic +else +ifeq ($(findstring script, $(QT)), script) +# qt5_script does dot work very well at this time, so qt5_scriptclassic gets used in any case +LIBS += qt5_scriptclassic +endif +endif + +# QtScriptTools +ifeq ($(findstring scripttools, $(QT)), scripttools) +LIBS += qt5_scripttools +endif + +# QtSvg +ifeq ($(findstring svg, $(QT)), svg) +LIBS += qt5_svg +endif + +# QtXml +ifeq ($(findstring xml, $(QT)), xml) +LIBS += qt5_xml +endif + +# QtUiTools +# Qt4 documentation says: CONFIG += uitools +ifeq ($(findstring uitools, $(CONFIG)), uitools) +LIBS += qt5_ui_tools +endif +# Qt5 documentation says: QT += uitools +ifeq ($(findstring uitools, $(QT)), uitools) +LIBS += qt5_ui_tools +endif + +# QtWebKit +ifeq ($(findstring webkit, $(QT)), webkit) +LIBS += qt5_webcore qt5_webkit qt5_webkitwidgets +endif diff --git a/libports/src/lib/qt5/dejavusans/dejavusans.qrc b/libports/src/lib/qt5/dejavusans/dejavusans.qrc new file mode 100644 index 0000000000..56c13579f1 --- /dev/null +++ b/libports/src/lib/qt5/dejavusans/dejavusans.qrc @@ -0,0 +1,6 @@ + + + +../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtbase/lib/fonts/DejaVuSans.ttf + + diff --git a/libports/src/lib/qt5/patches/qt5_configuration.patch b/libports/src/lib/qt5/patches/qt5_configuration.patch new file mode 100644 index 0000000000..7fece002c6 --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_configuration.patch @@ -0,0 +1,220 @@ +qt5_configuration.patch + +From: Christian Prochaska + + +--- + configure | 2 - + qt.pro | 42 ++++++++++---------- + qtbase/configure | 6 +-- + qtbase/mkspecs/genode-g++/qmake.conf | 1 + qtbase/mkspecs/genode-g++/qplatformdefs.h | 1 + qtbase/src/corelib/global/qconfig-genode.h | 1 + qtdeclarative/examples/quick/quick.pro | 6 ++- + qtdeclarative/src/imports/imports.pro | 2 - + qtdeclarative/tests/tests.pro | 4 +- + qtquick1/examples/declarative/declarative.pro | 1 + qtwebkit/Tools/qmake/mkspecs/features/features.prf | 6 +-- + 11 files changed, 39 insertions(+), 33 deletions(-) + create mode 120000 qtbase/mkspecs/genode-g++/qmake.conf + create mode 120000 qtbase/mkspecs/genode-g++/qplatformdefs.h + create mode 120000 qtbase/src/corelib/global/qconfig-genode.h + +diff --git a/configure b/configure +index 9ba24b5..d0f1357 100755 +--- a/configure ++++ b/configure +@@ -60,4 +60,4 @@ echo "+ cd .." + cd .. + + echo "+ qtbase/bin/qmake $srcpath" +-exec qtbase/bin/qmake "$srcpath" ++exec qtbase/bin/qmake -r "$srcpath" +diff --git a/qt.pro b/qt.pro +index 218701a..bb4c037 100644 +--- a/qt.pro ++++ b/qt.pro +@@ -54,33 +54,33 @@ defineTest(addModule) { + # it may not build. + + addModule(qtbase) +-addModule(qtx11extras, qtbase) +-addModule(qlalr, qtbase) ++#addModule(qtx11extras, qtbase) ++#addModule(qlalr, qtbase) + addModule(qtsvg, qtbase) + addModule(qtxmlpatterns, qtbase) + addModule(qtjsbackend, qtbase) + addModule(qtdeclarative, qtjsbackend, qtsvg qtxmlpatterns) +-addModule(qtquickcontrols, qtdeclarative) +-addModule(qtmultimedia, qtdeclarative) +-addModule(qtactiveqt, qtbase) +-addModule(qt3d, qtdeclarative) +-addModule(qtjsondb, qtdeclarative) +-addModule(qtsystems, qtbase, qtdeclarative qtjsondb) +-addModule(qtlocation, qtbase, qt3d qtjsondb qtsystems qtmultimedia) +-addModule(qtsensors, qtbase, qtdeclarative) +-addModule(qtconnectivity, qtsystems) +-addModule(qtfeedback, qtdeclarative, qtmultimedia) +-addModule(qtpim, qtdeclarative, qtjsondb) ++#addModule(qtquickcontrols, qtdeclarative) ++#addModule(qtmultimedia, qtdeclarative) ++#addModule(qtactiveqt, qtbase) ++#addModule(qt3d, qtdeclarative) ++#addModule(qtjsondb, qtdeclarative) ++#addModule(qtsystems, qtbase, qtdeclarative qtjsondb) ++#addModule(qtlocation, qtbase, qt3d qtjsondb qtsystems qtmultimedia) ++#addModule(qtsensors, qtbase, qtdeclarative) ++#addModule(qtconnectivity, qtsystems) ++#addModule(qtfeedback, qtdeclarative, qtmultimedia) ++#addModule(qtpim, qtdeclarative, qtjsondb) + addModule(qtwebkit, qtdeclarative, qtlocation qtsensors, WebKit.pro) + addModule(qttools, qtbase, qtdeclarative qtactiveqt qtwebkit) + addModule(qtwebkit-examples, qtwebkit qttools) + addModule(qtimageformats, qtbase) +-addModule(qtgraphicaleffects, qtdeclarative) ++#addModule(qtgraphicaleffects, qtdeclarative) + addModule(qtscript, qtbase) +-addModule(qtquick1, qtscript, qtsvg qtxmlpatterns qtwebkit qttools) +-addModule(qtdocgallery, qtdeclarative, qtjsondb) +-!win32:!mac:addModule(qtwayland, qtbase, qtdeclarative) +-addModule(qtserialport, qtbase) +-addModule(qttranslations, qttools) +-addModule(qtdoc, qtdeclarative) +-addModule(qtqa, qtbase) ++#addModule(qtquick1, qtscript, qtsvg qtxmlpatterns qtwebkit qttools) ++#addModule(qtdocgallery, qtdeclarative, qtjsondb) ++#!win32:!mac:addModule(qtwayland, qtbase, qtdeclarative) ++#addModule(qtserialport, qtbase) ++#addModule(qttranslations, qttools) ++#addModule(qtdoc, qtdeclarative) ++#addModule(qtqa, qtbase) +diff --git a/qtbase/configure b/qtbase/configure +index d7c9674..f4198b8 100755 +--- a/qtbase/configure ++++ b/qtbase/configure +@@ -857,10 +857,10 @@ CFG_XINERAMA=runtime + CFG_XFIXES=runtime + CFG_ZLIB=auto + CFG_SQLITE=qt +-CFG_GIF=auto ++CFG_GIF=yes + CFG_PNG=yes + CFG_LIBPNG=auto +-CFG_JPEG=auto ++CFG_JPEG=yes + CFG_LIBJPEG=auto + CFG_XCURSOR=runtime + CFG_XRANDR=runtime +@@ -949,7 +949,7 @@ CFG_GETADDRINFO=auto + CFG_IPV6IFNAME=auto + CFG_GETIFADDRS=auto + CFG_INOTIFY=auto +-CFG_EVENTFD=auto ++CFG_EVENTFD=no + CFG_RPATH=yes + CFG_FRAMEWORK=auto + CFG_MAC_HARFBUZZ=no +diff --git a/qtbase/mkspecs/genode-g++/qmake.conf b/qtbase/mkspecs/genode-g++/qmake.conf +new file mode 120000 +index 0000000..d4c4a25 +--- /dev/null ++++ b/qtbase/mkspecs/genode-g++/qmake.conf +@@ -0,0 +1 @@ ++../../../../../src/lib/qt5/qtbase/mkspecs/genode-g++/qmake.conf +\ No newline at end of file +diff --git a/qtbase/mkspecs/genode-g++/qplatformdefs.h b/qtbase/mkspecs/genode-g++/qplatformdefs.h +new file mode 120000 +index 0000000..7d0c24b +--- /dev/null ++++ b/qtbase/mkspecs/genode-g++/qplatformdefs.h +@@ -0,0 +1 @@ ++../../../../../src/lib/qt5/qtbase/mkspecs/genode-g++/qplatformdefs.h +\ No newline at end of file +diff --git a/qtbase/src/corelib/global/qconfig-genode.h b/qtbase/src/corelib/global/qconfig-genode.h +new file mode 120000 +index 0000000..ca3b847 +--- /dev/null ++++ b/qtbase/src/corelib/global/qconfig-genode.h +@@ -0,0 +1 @@ ++../../../../../../src/lib/qt5/qtbase/src/corelib/global/qconfig-genode.h +\ No newline at end of file +diff --git a/qtdeclarative/examples/quick/quick.pro b/qtdeclarative/examples/quick/quick.pro +index 311e264..b356a56 100644 +--- a/qtdeclarative/examples/quick/quick.pro ++++ b/qtdeclarative/examples/quick/quick.pro +@@ -12,7 +12,6 @@ SUBDIRS = accessibility \ + positioners \ + righttoleft \ + scenegraph \ +- shadereffects \ + text \ + threading \ + touchinteraction \ +@@ -29,6 +28,11 @@ qtHaveModule(widgets) { + SUBDIRS += embeddedinwidgets + } + ++# OpenGL dependent examples ++qtHaveModule(opengl) { ++ SUBDIRS += shadereffects ++} ++ + EXAMPLE_FILES = \ + ui-components \ + shared +diff --git a/qtdeclarative/src/imports/imports.pro b/qtdeclarative/src/imports/imports.pro +index 733c7c4..fb1a413 100644 +--- a/qtdeclarative/src/imports/imports.pro ++++ b/qtdeclarative/src/imports/imports.pro +@@ -16,4 +16,4 @@ qtHaveModule(quick) { + + qtHaveModule(xmlpatterns) : SUBDIRS += xmllistmodel + +-qtHaveModule(widgets) : SUBDIRS += widgets ++qtHaveModule(widgets),qtHaveModule(quick): SUBDIRS += widgets +diff --git a/qtdeclarative/tests/tests.pro b/qtdeclarative/tests/tests.pro +index 85e4f3a..9aa752b 100644 +--- a/qtdeclarative/tests/tests.pro ++++ b/qtdeclarative/tests/tests.pro +@@ -1,2 +1,2 @@ +-TEMPLATE = subdirs +-SUBDIRS += auto ++#TEMPLATE = subdirs ++#SUBDIRS += auto +diff --git a/qtquick1/examples/declarative/declarative.pro b/qtquick1/examples/declarative/declarative.pro +index 91378da..123539f 100644 +--- a/qtquick1/examples/declarative/declarative.pro ++++ b/qtquick1/examples/declarative/declarative.pro +@@ -16,7 +16,6 @@ SUBDIRS = \ + righttoleft \ + rssnews \ + samegame \ +- shadereffects \ + snake \ + sqllocalstorage \ + text \ +diff --git a/qtwebkit/Tools/qmake/mkspecs/features/features.prf b/qtwebkit/Tools/qmake/mkspecs/features/features.prf +index ddbccf9..e4d3999 100644 +--- a/qtwebkit/Tools/qmake/mkspecs/features/features.prf ++++ b/qtwebkit/Tools/qmake/mkspecs/features/features.prf +@@ -39,8 +39,8 @@ defineTest(detectFeatures) { + + config_libxml2: WEBKIT_CONFIG += use_libxml2 + config_libxslt: WEBKIT_CONFIG += xslt +- config_libzlib: WEBKIT_CONFIG += use_zlib +- config_libwebp: WEBKIT_CONFIG += use_webp ++ #config_libzlib: WEBKIT_CONFIG += use_zlib ++ #config_libwebp: WEBKIT_CONFIG += use_webp + + # We can't use Qt's 3rdparty sources for libjpeg and libpng outside of qtbase, but if Qt + # is using the system libraries, use them to take advantage of the WebCore image decoders as well. +@@ -81,7 +81,7 @@ defineTest(detectFeatures) { + + # Enable the USE(3D_GRAPHICS) flag when QtOpenGL is enabled. + # Disable on Windows CE for now, as ANGLE won't compile. +- !wince*:contains(QT_CONFIG, opengl): WEBKIT_CONFIG += use_3d_graphics ++ #!wince*:contains(QT_CONFIG, opengl): WEBKIT_CONFIG += use_3d_graphics + + # Temporarily disable FTPDIR on Windows CE (missing functions from time.h) + wince* { diff --git a/libports/src/lib/qt5/patches/qt5_generated_headers.patch b/libports/src/lib/qt5/patches/qt5_generated_headers.patch new file mode 100644 index 0000000000..b7a9f8b628 --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_generated_headers.patch @@ -0,0 +1,155 @@ +qt5_generated_headers.patch + +From: Christian Prochaska + + +--- + .stgit-new.txt~ | 0 + qtbase/include/QtCore/QtCoreDepends | 1 + + qtbase/include/QtGui/QtGuiDepends | 2 ++ + qtbase/include/QtNetwork/QtNetworkDepends | 2 ++ + .../include/QtPrintSupport/QtPrintSupportDepends | 4 ++++ + qtbase/include/QtSql/QtSqlDepends | 2 ++ + qtbase/include/QtWidgets/QtWidgetsDepends | 3 +++ + qtbase/include/QtXml/QtXmlDepends | 2 ++ + qtscript/include/QtScript/QtScriptDepends | 2 ++ + qtsvg/include/QtSvg/QtSvgDepends | 4 ++++ + qttools/include/QtUiTools/QtUiToolsDepends | 2 ++ + qtwebkit/include/QtWebKit/QtWebKitDepends | 4 ++++ + .../include/QtWebKitWidgets/QtWebKitWidgetsDepends | 7 +++++++ + .../include/QtXmlPatterns/QtXmlPatternsDepends | 3 +++ + 14 files changed, 38 insertions(+) + create mode 100644 .stgit-new.txt~ + create mode 100644 qtbase/include/QtCore/QtCoreDepends + create mode 100644 qtbase/include/QtGui/QtGuiDepends + create mode 100644 qtbase/include/QtNetwork/QtNetworkDepends + create mode 100644 qtbase/include/QtPrintSupport/QtPrintSupportDepends + create mode 100644 qtbase/include/QtSql/QtSqlDepends + create mode 100644 qtbase/include/QtWidgets/QtWidgetsDepends + create mode 100644 qtbase/include/QtXml/QtXmlDepends + create mode 100644 qtscript/include/QtScript/QtScriptDepends + create mode 100644 qtsvg/include/QtSvg/QtSvgDepends + create mode 100644 qttools/include/QtUiTools/QtUiToolsDepends + create mode 100644 qtwebkit/include/QtWebKit/QtWebKitDepends + create mode 100644 qtwebkit/include/QtWebKitWidgets/QtWebKitWidgetsDepends + create mode 100644 qtxmlpatterns/include/QtXmlPatterns/QtXmlPatternsDepends + +diff --git a/.stgit-new.txt~ b/.stgit-new.txt~ +new file mode 100644 +index 0000000..e69de29 +diff --git a/qtbase/include/QtCore/QtCoreDepends b/qtbase/include/QtCore/QtCoreDepends +new file mode 100644 +index 0000000..f6a4430 +--- /dev/null ++++ b/qtbase/include/QtCore/QtCoreDepends +@@ -0,0 +1 @@ ++/* This file was generated by qmake with the info from /src/corelib/corelib.pro. */ +diff --git a/qtbase/include/QtGui/QtGuiDepends b/qtbase/include/QtGui/QtGuiDepends +new file mode 100644 +index 0000000..52697ae +--- /dev/null ++++ b/qtbase/include/QtGui/QtGuiDepends +@@ -0,0 +1,2 @@ ++/* This file was generated by qmake with the info from /src/gui/gui.pro. */ ++#include +diff --git a/qtbase/include/QtNetwork/QtNetworkDepends b/qtbase/include/QtNetwork/QtNetworkDepends +new file mode 100644 +index 0000000..cb2c29d +--- /dev/null ++++ b/qtbase/include/QtNetwork/QtNetworkDepends +@@ -0,0 +1,2 @@ ++/* This file was generated by qmake with the info from /src/network/network.pro. */ ++#include +diff --git a/qtbase/include/QtPrintSupport/QtPrintSupportDepends b/qtbase/include/QtPrintSupport/QtPrintSupportDepends +new file mode 100644 +index 0000000..520b700 +--- /dev/null ++++ b/qtbase/include/QtPrintSupport/QtPrintSupportDepends +@@ -0,0 +1,4 @@ ++/* This file was generated by qmake with the info from /src/printsupport/printsupport.pro. */ ++#include ++#include ++#include +diff --git a/qtbase/include/QtSql/QtSqlDepends b/qtbase/include/QtSql/QtSqlDepends +new file mode 100644 +index 0000000..42eb220 +--- /dev/null ++++ b/qtbase/include/QtSql/QtSqlDepends +@@ -0,0 +1,2 @@ ++/* This file was generated by qmake with the info from /src/sql/sql.pro. */ ++#include +diff --git a/qtbase/include/QtWidgets/QtWidgetsDepends b/qtbase/include/QtWidgets/QtWidgetsDepends +new file mode 100644 +index 0000000..03776b6 +--- /dev/null ++++ b/qtbase/include/QtWidgets/QtWidgetsDepends +@@ -0,0 +1,3 @@ ++/* This file was generated by qmake with the info from /src/widgets/widgets.pro. */ ++#include ++#include +diff --git a/qtbase/include/QtXml/QtXmlDepends b/qtbase/include/QtXml/QtXmlDepends +new file mode 100644 +index 0000000..39dd8ec +--- /dev/null ++++ b/qtbase/include/QtXml/QtXmlDepends +@@ -0,0 +1,2 @@ ++/* This file was generated by qmake with the info from /src/xml/xml.pro. */ ++#include +diff --git a/qtscript/include/QtScript/QtScriptDepends b/qtscript/include/QtScript/QtScriptDepends +new file mode 100644 +index 0000000..b88d662 +--- /dev/null ++++ b/qtscript/include/QtScript/QtScriptDepends +@@ -0,0 +1,2 @@ ++/* This file was generated by qmake with the info from /src/script/script.pro. */ ++#include +diff --git a/qtsvg/include/QtSvg/QtSvgDepends b/qtsvg/include/QtSvg/QtSvgDepends +new file mode 100644 +index 0000000..549510d +--- /dev/null ++++ b/qtsvg/include/QtSvg/QtSvgDepends +@@ -0,0 +1,4 @@ ++/* This file was generated by qmake with the info from /src/svg/svg.pro. */ ++#include ++#include ++#include +diff --git a/qttools/include/QtUiTools/QtUiToolsDepends b/qttools/include/QtUiTools/QtUiToolsDepends +new file mode 100644 +index 0000000..2c0063e +--- /dev/null ++++ b/qttools/include/QtUiTools/QtUiToolsDepends +@@ -0,0 +1,2 @@ ++/* This file was generated by qmake with the info from /src/designer/src/uitools/uitools.pro. */ ++#include +diff --git a/qtwebkit/include/QtWebKit/QtWebKitDepends b/qtwebkit/include/QtWebKit/QtWebKitDepends +new file mode 100644 +index 0000000..1b3f8ad +--- /dev/null ++++ b/qtwebkit/include/QtWebKit/QtWebKitDepends +@@ -0,0 +1,4 @@ ++/* This file was generated by qmake with the info from /Source/api.pri. */ ++#include ++#include ++#include +diff --git a/qtwebkit/include/QtWebKitWidgets/QtWebKitWidgetsDepends b/qtwebkit/include/QtWebKitWidgets/QtWebKitWidgetsDepends +new file mode 100644 +index 0000000..672bd42 +--- /dev/null ++++ b/qtwebkit/include/QtWebKitWidgets/QtWebKitWidgetsDepends +@@ -0,0 +1,7 @@ ++/* This file was generated by qmake with the info from /Source/widgetsapi.pri. */ ++#include ++#include ++#include ++#include ++#include ++#include +diff --git a/qtxmlpatterns/include/QtXmlPatterns/QtXmlPatternsDepends b/qtxmlpatterns/include/QtXmlPatterns/QtXmlPatternsDepends +new file mode 100644 +index 0000000..60615c7 +--- /dev/null ++++ b/qtxmlpatterns/include/QtXmlPatterns/QtXmlPatternsDepends +@@ -0,0 +1,3 @@ ++/* This file was generated by qmake with the info from /src/xmlpatterns/xmlpatterns.pro. */ ++#include ++#include diff --git a/libports/src/lib/qt5/patches/qt5_qarraydata.patch b/libports/src/lib/qt5/patches/qt5_qarraydata.patch new file mode 100644 index 0000000000..ded4198524 --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_qarraydata.patch @@ -0,0 +1,24 @@ +qt5_qarraydata.patch + +From: Christian Prochaska + + +--- + qtbase/src/corelib/tools/qarraydata.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/qtbase/src/corelib/tools/qarraydata.cpp b/qtbase/src/corelib/tools/qarraydata.cpp +index a61147a..ee9cde3 100644 +--- a/qtbase/src/corelib/tools/qarraydata.cpp ++++ b/qtbase/src/corelib/tools/qarraydata.cpp +@@ -97,8 +97,8 @@ QArrayData *QArrayData::allocate(size_t objectSize, size_t alignment, + + QArrayData *header = static_cast(::malloc(allocSize)); + if (header) { +- quintptr data = (quintptr(header) + sizeof(QArrayData) + alignment - 1) +- & ~(alignment - 1); ++ quintptr data = (quintptr(header) + sizeof(QArrayData) + /*alignment*/4 - 1) ++ & ~(/*alignment*/4 - 1); + + header->ref.atomic.store(bool(!(options & Unsharable))); + header->size = 0; diff --git a/libports/src/lib/qt5/patches/qt5_qpa.patch b/libports/src/lib/qt5/patches/qt5_qpa.patch new file mode 100644 index 0000000000..b726175054 --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_qpa.patch @@ -0,0 +1,93 @@ +qt5_qpa.patch + +From: Christian Prochaska + + +--- + .../fontdatabases/basic/qbasicfontdatabase.cpp | 9 +++++++++ + .../input/evdevkeyboard/qevdevkeyboardhandler.cpp | 9 ++++++--- + .../input/evdevkeyboard/qevdevkeyboardhandler_p.h | 2 ++ + 3 files changed, 17 insertions(+), 3 deletions(-) + +diff --git a/qtbase/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp b/qtbase/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp +index 9b87418..aa25c6b 100644 +--- a/qtbase/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp ++++ b/qtbase/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp +@@ -114,7 +114,16 @@ void QBasicFontDatabase::populateFontDatabase() + for (int i = 0; i < int(dir.count()); ++i) { + const QByteArray file = QFile::encodeName(dir.absoluteFilePath(dir[i])); + // qDebug() << "looking at" << file; ++#ifdef Q_OS_GENODE ++ QByteArray data; ++ QFile f(file); ++ if (!f.open(QIODevice::ReadOnly)) ++ continue; ++ data = f.readAll(); ++ addTTFile(data, file); ++#else + addTTFile(QByteArray(), file); ++#endif + } + } + +diff --git a/qtbase/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp b/qtbase/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp +index 26dc116..3d0e3e2 100644 +--- a/qtbase/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp ++++ b/qtbase/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp +@@ -49,7 +49,9 @@ + #include + #include + ++#ifndef Q_OS_GENODE + #include ++#endif /* Q_OS_GENODE */ + + //#define QT_QPA_KEYMAP_DEBUG + +@@ -78,11 +80,12 @@ QEvdevKeyboardHandler::QEvdevKeyboardHandler(const QString &device, int fd, bool + + if (keymapFile.isEmpty() || !loadKeymap(keymapFile)) + unloadKeymap(); +- ++#ifndef Q_OS_GENODE + // socket notifier for events on the keyboard device + QSocketNotifier *notifier; + notifier = new QSocketNotifier(m_fd, QSocketNotifier::Read, this); + connect(notifier, SIGNAL(activated(int)), this, SLOT(readKeycode())); ++#endif /* Q_OS_GENODE */ + } + + QEvdevKeyboardHandler::~QEvdevKeyboardHandler() +@@ -92,7 +95,7 @@ QEvdevKeyboardHandler::~QEvdevKeyboardHandler() + if (m_fd >= 0) + qt_safe_close(m_fd); + } +- ++#ifndef Q_OS_GENODE + QEvdevKeyboardHandler *QEvdevKeyboardHandler::create(const QString &device, const QString &specification) + { + #ifdef QT_QPA_KEYMAP_DEBUG +@@ -218,7 +221,7 @@ void QEvdevKeyboardHandler::readKeycode() + } + } + } +- ++#endif /* Q_OS_GENODE */ + void QEvdevKeyboardHandler::processKeyEvent(int nativecode, int unicode, int qtcode, + Qt::KeyboardModifiers modifiers, bool isPress, bool autoRepeat) + { +diff --git a/qtbase/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h b/qtbase/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h +index 1065b05..b395d46 100644 +--- a/qtbase/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h ++++ b/qtbase/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h +@@ -161,8 +161,10 @@ public: + return qtmod; + } + ++#ifndef Q_OS_GENODE + private slots: + void readKeycode(); ++#endif /* Q_OS_GENODE */ + KeycodeAction processKeycode(quint16 keycode, bool pressed, bool autorepeat); + + private: diff --git a/libports/src/lib/qt5/patches/qt5_qtbase_genode.patch b/libports/src/lib/qt5/patches/qt5_qtbase_genode.patch new file mode 100644 index 0000000000..7ffce5940f --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_qtbase_genode.patch @@ -0,0 +1,623 @@ +qt5_qtbase_genode.patch + +From: Christian Prochaska + +Genode-specific adaptations +--- + qtbase/src/corelib/codecs/qtextcodec.cpp | 4 + + qtbase/src/corelib/global/qlogging.cpp | 6 ++ + qtbase/src/corelib/global/qsystemdetection.h | 5 +- + qtbase/src/corelib/io/qprocess.cpp | 64 ++++++++++++++++++++ + qtbase/src/corelib/io/qprocess_p.h | 45 ++++++++++++++ + qtbase/src/corelib/io/qresource.cpp | 2 - + qtbase/src/corelib/kernel/qcoreapplication.cpp | 2 - + .../src/corelib/kernel/qeventdispatcher_unix.cpp | 14 ++++ + qtbase/src/corelib/kernel/qtranslator.cpp | 2 - + qtbase/src/corelib/thread/qmutex.cpp | 2 + + qtbase/src/corelib/thread/qmutex_p.h | 8 +++ + qtbase/src/corelib/thread/qthread.cpp | 5 +- + qtbase/src/corelib/thread/qthread_p.h | 55 +++++++++++++++++ + qtbase/src/corelib/tools/qdatetime.cpp | 12 ++++ + qtbase/src/gui/image/qxpmhandler.cpp | 8 +++ + .../network/access/qnetworkaccessfilebackend.cpp | 5 ++ + qtbase/src/network/kernel/qhostinfo.cpp | 5 ++ + qtbase/src/network/kernel/qhostinfo_unix.cpp | 7 ++ + qtbase/src/widgets/dialogs/qfiledialog.cpp | 2 - + qtbase/src/widgets/styles/qstylefactory.cpp | 7 ++ + 20 files changed, 252 insertions(+), 8 deletions(-) + +diff --git a/qtbase/src/corelib/codecs/qtextcodec.cpp b/qtbase/src/corelib/codecs/qtextcodec.cpp +index 1cedd3a..646be07 100644 +--- a/qtbase/src/corelib/codecs/qtextcodec.cpp ++++ b/qtbase/src/corelib/codecs/qtextcodec.cpp +@@ -203,7 +203,11 @@ static QTextCodec *setupLocaleMapper() + // First part is getting that locale name. First try setlocale() which + // definitely knows it, but since we cannot fully trust it, get ready + // to fall back to environment variables. ++#ifdef Q_OS_GENODE ++ const QByteArray ctype; ++#else + const QByteArray ctype = setlocale(LC_CTYPE, 0); ++#endif /* Q_OS_GENODE */ + + // Get the first nonempty value from $LC_ALL, $LC_CTYPE, and $LANG + // environment variables. +diff --git a/qtbase/src/corelib/global/qlogging.cpp b/qtbase/src/corelib/global/qlogging.cpp +index c8293be..c7e9422 100644 +--- a/qtbase/src/corelib/global/qlogging.cpp ++++ b/qtbase/src/corelib/global/qlogging.cpp +@@ -61,6 +61,10 @@ + #include + #endif + ++#ifdef Q_OS_GENODE ++#include ++#endif ++ + #include + + QT_BEGIN_NAMESPACE +@@ -875,6 +879,8 @@ static void qDefaultMessageHandler(QtMsgType type, const QMessageLogContext &con + + #if defined(QT_USE_SLOG2) + slog2_default_handler(type, logMessage.toLocal8Bit().constData()); ++#elif defined(Q_OS_GENODE) ++ PDBG("%s", logMessage.toLocal8Bit().constData()); + #elif defined(Q_OS_ANDROID) + static bool logToAndroid = qEnvironmentVariableIsEmpty("QT_ANDROID_PLAIN_LOG"); + if (logToAndroid) { +diff --git a/qtbase/src/corelib/global/qsystemdetection.h b/qtbase/src/corelib/global/qsystemdetection.h +index cb55fa8..7d5c507 100644 +--- a/qtbase/src/corelib/global/qsystemdetection.h ++++ b/qtbase/src/corelib/global/qsystemdetection.h +@@ -49,6 +49,7 @@ + /* + The operating system, must be one of: (Q_OS_x) + ++ GENODE - Genode + DARWIN - Darwin OS (synonym for Q_OS_MAC) + MAC - OS X or iOS (synonym for Q_OS_DARWIN) + MACX - OS X +@@ -84,7 +85,9 @@ + ANDROID - Android platform + */ + +-#if defined(__APPLE__) && (defined(__GNUC__) || defined(__xlC__) || defined(__xlc__)) ++#if defined(__GENODE__) ++# define Q_OS_GENODE ++#elif defined(__APPLE__) && (defined(__GNUC__) || defined(__xlC__) || defined(__xlc__)) + # define Q_OS_DARWIN + # define Q_OS_BSD4 + # ifdef __LP64__ +diff --git a/qtbase/src/corelib/io/qprocess.cpp b/qtbase/src/corelib/io/qprocess.cpp +index b1861d8..b1cbf57 100644 +--- a/qtbase/src/corelib/io/qprocess.cpp ++++ b/qtbase/src/corelib/io/qprocess.cpp +@@ -98,6 +98,11 @@ QT_END_NAMESPACE + #include + #endif + ++#ifdef Q_OS_GENODE ++#include ++#include ++#endif ++ + #ifndef QT_NO_PROCESS + + QT_BEGIN_NAMESPACE +@@ -789,6 +794,65 @@ QProcessPrivate::QProcessPrivate() + #ifdef Q_OS_UNIX + serial = 0; + #endif ++#ifdef Q_OS_GENODE ++ launchpad_child = 0; ++ ++ /* request config file from ROM service */ ++ Genode::Rom_connection rom("config"); ++ rom.on_destruction(Genode::Rom_connection::KEEP_OPEN); ++ void *addr; ++ try { ++ addr = Genode::env()->rm_session()->attach(rom.dataspace()); ++ } catch(Genode::Parent::Service_denied) { ++ qWarning("Error: Couldn't open config file."); ++ return; ++ } ++ ++ /* ++ * The XML data of a valid config file starts with ++ * a tag. ++ */ ++ Genode::Xml_node config_node((const char *)addr); ++ ++ if (!config_node.has_type("config")) { ++ qWarning("Error: Root node of config file is not a tag."); ++ return; ++ } ++ ++ /* ++ * Iterate through all entries of the config file and start ++ * children as specified. ++ */ ++ for (int i = 0; i < config_node.num_sub_nodes(); i++) { ++ Genode::Xml_node program_node = config_node.sub_node(i); ++ if (program_node.has_type("program")) { ++ ++ /* add filename and ram_quota to ram_quota_hash */ ++ char filename[32]; ++ try { ++ program_node.sub_node("filename").value(filename, sizeof(filename)); ++ } catch (Genode::Xml_node::Nonexistent_sub_node) { ++ qWarning("Warning: Missing valid in config-file entry."); ++ return; ++ } ++ ++ size_t ram_quota = 0; ++ try { ++ program_node.sub_node("ram_quota").value(&ram_quota); ++ } catch (Genode::Xml_node::Nonexistent_sub_node) { ++ qWarning("Warning: Missing valid in config-file entry."); ++ return; ++ } ++ ++ ram_quota_hash()->insert(QString(filename), ram_quota); ++ } else { ++ char buf[32]; ++ program_node.type_name(buf, sizeof(buf)); ++ qWarning("Warning: Ignoring unsupported tag <%s>.", buf); ++ } ++ } ++ ++#endif + } + + /*! +diff --git a/qtbase/src/corelib/io/qprocess_p.h b/qtbase/src/corelib/io/qprocess_p.h +index 2a2cc9f..2173aa0 100644 +--- a/qtbase/src/corelib/io/qprocess_p.h ++++ b/qtbase/src/corelib/io/qprocess_p.h +@@ -74,6 +74,11 @@ typedef int Q_PIPE; + + #ifndef QT_NO_PROCESS + ++#ifdef Q_OS_GENODE ++#include ++#include ++#endif ++ + QT_BEGIN_NAMESPACE + + class QSocketNotifier; +@@ -235,6 +240,28 @@ template<> Q_INLINE_TEMPLATE void QSharedDataPointer + d = x; + } + ++#ifdef Q_OS_GENODE ++ ++class QProcess_launchpad : public Launchpad ++{ ++public: ++ QProcess_launchpad(unsigned long initial_quota) : Launchpad(initial_quota) {} ++ ++ virtual void quota(unsigned long quota) {} ++ ++ virtual void add_launcher(const char *filename, ++ unsigned long default_quota) {} ++ ++ virtual void add_child(const char *unique_name, ++ unsigned long quota, ++ Launchpad_child *launchpad_child, ++ Genode::Allocator *alloc) {} ++ ++ virtual void remove_child(const char *name, Genode::Allocator *alloc) {} ++}; ++ ++#endif ++ + class QProcessPrivate : public QIODevicePrivate + { + public: +@@ -347,7 +374,7 @@ public: + #endif + + void startProcess(); +-#if defined(Q_OS_UNIX) && !defined(Q_OS_QNX) ++#if defined(Q_OS_UNIX) && !defined(Q_OS_QNX) && !defined(Q_OS_GENODE) + void execChild(const char *workingDirectory, char **path, char **argv, char **envp); + #elif defined(Q_OS_QNX) + pid_t spawnChild(const char *workingDirectory, char **argv, char **envp); +@@ -375,6 +402,22 @@ public: + int serial; + #endif + ++#ifdef Q_OS_GENODE ++ static QProcess_launchpad *launchpad() ++ { ++ static QProcess_launchpad _launchpad(Genode::env()->ram_session()->quota()); ++ return &_launchpad; ++ } ++ ++ static QHash *ram_quota_hash() ++ { ++ static QHash _ram_quota_hash; ++ return &_ram_quota_hash; ++ } ++ ++ Launchpad_child *launchpad_child; ++#endif ++ + bool waitForStarted(int msecs = 30000); + bool waitForReadyRead(int msecs = 30000); + bool waitForBytesWritten(int msecs = 30000); +diff --git a/qtbase/src/corelib/io/qresource.cpp b/qtbase/src/corelib/io/qresource.cpp +index 04ec81e..2211125 100644 +--- a/qtbase/src/corelib/io/qresource.cpp ++++ b/qtbase/src/corelib/io/qresource.cpp +@@ -920,7 +920,7 @@ public: + } + }; + +-#if defined(Q_OS_UNIX) && !defined (Q_OS_NACL) && !defined(Q_OS_INTEGRITY) ++#if defined(Q_OS_UNIX) && !defined (Q_OS_NACL) && !defined(Q_OS_INTEGRITY) && !defined(Q_OS_GENODE) + #define QT_USE_MMAP + #endif + +diff --git a/qtbase/src/corelib/kernel/qcoreapplication.cpp b/qtbase/src/corelib/kernel/qcoreapplication.cpp +index 100e014..00263a0 100644 +--- a/qtbase/src/corelib/kernel/qcoreapplication.cpp ++++ b/qtbase/src/corelib/kernel/qcoreapplication.cpp +@@ -525,7 +525,7 @@ void QCoreApplicationPrivate::initLocale() + if (qt_locale_initialized) + return; + qt_locale_initialized = true; +-#ifdef Q_OS_UNIX ++#if defined(Q_OS_UNIX) && !defined(Q_OS_GENODE) + setlocale(LC_ALL, ""); + #endif + } +diff --git a/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp b/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp +index 69363bc..0a7aa7d 100644 +--- a/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp ++++ b/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp +@@ -74,6 +74,11 @@ + # include + #endif + ++#ifdef Q_OS_GENODE ++#include ++#define perror PERR ++#endif /* Q_OS_GENODE */ ++ + QT_BEGIN_NAMESPACE + + #if defined(Q_OS_INTEGRITY) || defined(Q_OS_VXWORKS) +@@ -287,6 +292,9 @@ int QEventDispatcherUNIXPrivate::processThreadWakeUp(int nsel) + char c[16]; + ::read(thread_pipe[0], c, sizeof(c)); + ::ioctl(thread_pipe[0], FIOFLUSH, 0); ++#elif defined(Q_OS_GENODE) ++ char c[16]; ++ ::read(thread_pipe[0], c, sizeof(c)); // FIXME: the while loop only works in non-blocking mode + #else + # ifndef QT_NO_EVENTFD + if (thread_pipe[1] == -1) { +@@ -325,6 +333,12 @@ QEventDispatcherUNIX::~QEventDispatcherUNIX() + int QEventDispatcherUNIX::select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, + timespec *timeout) + { ++#ifdef Q_OS_GENODE ++ /* if < 10ms round up to the 10ms minimum granularity supported by ++ * the timed semaphore */ ++ if (timeout && (timeout->tv_sec == 0) && (timeout->tv_nsec > 0) && (timeout->tv_nsec < 10*1000*1000)) ++ timeout->tv_nsec = 10*1000*1000; ++#endif /* Q_OS_GENODE */ + return qt_safe_select(nfds, readfds, writefds, exceptfds, timeout); + } + +diff --git a/qtbase/src/corelib/kernel/qtranslator.cpp b/qtbase/src/corelib/kernel/qtranslator.cpp +index 9243d09..d953b20 100644 +--- a/qtbase/src/corelib/kernel/qtranslator.cpp ++++ b/qtbase/src/corelib/kernel/qtranslator.cpp +@@ -60,7 +60,7 @@ + #include "qendian.h" + #include "qresource.h" + +-#if defined(Q_OS_UNIX) && !defined(Q_OS_INTEGRITY) ++#if defined(Q_OS_UNIX) && !defined(Q_OS_INTEGRITY) && !defined(Q_OS_GENODE) + #define QT_USE_MMAP + #include "private/qcore_unix_p.h" + #endif +diff --git a/qtbase/src/corelib/thread/qmutex.cpp b/qtbase/src/corelib/thread/qmutex.cpp +index 1ed4a77..d1c10d1 100644 +--- a/qtbase/src/corelib/thread/qmutex.cpp ++++ b/qtbase/src/corelib/thread/qmutex.cpp +@@ -649,6 +649,8 @@ QT_END_NAMESPACE + # include "qmutex_mac.cpp" + #elif defined(Q_OS_WIN) + # include "qmutex_win.cpp" ++#elif defined(Q_OS_GENODE) ++# include "qmutex_genode.cpp" + #else + # include "qmutex_unix.cpp" + #endif +diff --git a/qtbase/src/corelib/thread/qmutex_p.h b/qtbase/src/corelib/thread/qmutex_p.h +index bec2d93..74c0df4 100644 +--- a/qtbase/src/corelib/thread/qmutex_p.h ++++ b/qtbase/src/corelib/thread/qmutex_p.h +@@ -65,6 +65,12 @@ + # include + #endif + ++#include ++ ++#ifdef Q_OS_GENODE ++#include ++#endif ++ + #if defined(Q_OS_LINUX) && !defined(QT_LINUXBASE) + // use Linux mutexes everywhere except for LSB builds + # define QT_LINUX_FUTEX +@@ -128,6 +134,8 @@ public: + //platform specific stuff + #if defined(Q_OS_MAC) + semaphore_t mach_semaphore; ++#elif defined(Q_OS_GENODE) ++ Genode::Timed_semaphore sem; + #elif defined(Q_OS_UNIX) + bool wakeup; + pthread_mutex_t mutex; +diff --git a/qtbase/src/corelib/thread/qthread.cpp b/qtbase/src/corelib/thread/qthread.cpp +index 4d5bee3..622056e 100644 +--- a/qtbase/src/corelib/thread/qthread.cpp ++++ b/qtbase/src/corelib/thread/qthread.cpp +@@ -150,7 +150,10 @@ QThreadPrivate::QThreadPrivate(QThreadData *d) + stackSize(0), priority(QThread::InheritPriority), data(d) + { + #if defined (Q_OS_UNIX) +- thread_id = 0; ++ thread_id = 0; ++#ifdef Q_OS_GENODE ++ genode_thread = 0; ++#endif /* Q_OS_GENODE */ + #elif defined (Q_OS_WIN) + handle = 0; + id = 0; +diff --git a/qtbase/src/corelib/thread/qthread_p.h b/qtbase/src/corelib/thread/qthread_p.h +index 9d773b3..9beb7e6 100644 +--- a/qtbase/src/corelib/thread/qthread_p.h ++++ b/qtbase/src/corelib/thread/qthread_p.h +@@ -54,6 +54,10 @@ + // + // + ++#ifdef Q_OS_GENODE ++#include ++#endif ++ + #include "qplatformdefs.h" + #include "QtCore/qthread.h" + #include "QtCore/qmutex.h" +@@ -160,12 +164,63 @@ public: + static QThread *threadForId(int id); + + #ifdef Q_OS_UNIX ++#ifdef Q_OS_GENODE ++ ++ class Genode_thread : public Genode::Thread_qt ++ { ++ private: ++ ++ /* ++ * The '_finished_lock' is necessary because 'QThreadPrivate::mutex' ++ * uses a 'Genode::Timed_semaphore' internally and it isn't safe ++ * to delete a Genode thread that just called 'Semaphore::up()', ++ * because the 'Semaphore::_meta_lock' could still be locked. ++ */ ++ Genode::Lock _finished_lock; ++ QThread *_qthread; ++ ++ public: ++ ++ Genode_thread(QThread *qthread) ++ : _finished_lock(Genode::Lock::LOCKED), ++ _qthread(qthread) { } ++ ++ virtual void entry() ++ { ++ QThreadPrivate::start(_qthread); ++ QThreadPrivate::finish(_qthread); ++ _finished_lock.unlock(); ++ } ++ ++ void join() ++ { ++ _finished_lock.lock(); ++ } ++ }; ++ ++ Genode_thread *genode_thread; ++ ++ struct tls_struct { ++ QThreadData *data; ++ bool termination_enabled; ++ }; ++ ++ static QHash tls; ++ ++ Qt::HANDLE thread_id; ++ QWaitCondition thread_done; ++ ++ static void *start(void *arg); ++ static void finish(void *arg); ++ ++#else // Q_OS_UNIX && !Q_OS_GENODE + pthread_t thread_id; + QWaitCondition thread_done; + + static void *start(void *arg); + static void finish(void *); + ++#endif // Q_OS_GENODE + #endif // Q_OS_UNIX + + #ifdef Q_OS_WIN +diff --git a/qtbase/src/corelib/tools/qdatetime.cpp b/qtbase/src/corelib/tools/qdatetime.cpp +index d8e3a78..6a579e9 100644 +--- a/qtbase/src/corelib/tools/qdatetime.cpp ++++ b/qtbase/src/corelib/tools/qdatetime.cpp +@@ -3072,6 +3072,9 @@ QTime QTime::currentTime() + // posix compliant system + struct timeval tv; + gettimeofday(&tv, 0); ++#ifdef Q_OS_GENODE ++ ct.mds = (tv.tv_sec * 1000) + (tv.tv_usec / 1000); ++#else + time_t ltime = tv.tv_sec; + struct tm *t = 0; + +@@ -3086,6 +3089,7 @@ QTime QTime::currentTime() + Q_CHECK_PTR(t); + + ct.mds = msecsFromDecomposed(t->tm_hour, t->tm_min, t->tm_sec, tv.tv_usec / 1000); ++#endif /* Q_OS_GENODE */ + return ct; + } + +@@ -3970,6 +3974,10 @@ static QDate adjustDate(QDate date) + + static QDateTimePrivate::Spec utcToLocal(QDate &date, QTime &time) + { ++#ifdef Q_OS_GENODE ++ /* no timezones in Genode */ ++ return QDateTimePrivate::LocalUnknown; ++#endif + QDate fakeDate = adjustDate(date); + + // won't overflow because of fakeDate +@@ -4023,6 +4031,10 @@ static QDateTimePrivate::Spec utcToLocal(QDate &date, QTime &time) + + static void localToUtc(QDate &date, QTime &time, int isdst) + { ++#ifdef Q_OS_GENODE ++ /* no timezones in Genode */ ++ return; ++#endif + if (!date.isValid()) + return; + +diff --git a/qtbase/src/gui/image/qxpmhandler.cpp b/qtbase/src/gui/image/qxpmhandler.cpp +index a7936f9..eee3a87 100644 +--- a/qtbase/src/gui/image/qxpmhandler.cpp ++++ b/qtbase/src/gui/image/qxpmhandler.cpp +@@ -848,8 +848,16 @@ static bool read_xpm_header( + #if defined(_MSC_VER) && _MSC_VER >= 1400 && !defined(Q_OS_WINCE) + if (sscanf_s(buf, "%d %d %d %d", w, h, ncols, cpp) < 4) + #else ++#ifdef Q_OS_GENODE ++ *w = QString(buf).section(" ", 0, 0, QString::SectionSkipEmpty).toInt(); ++ *h = QString(buf).section(" ", 1, 1, QString::SectionSkipEmpty).toInt(); ++ *ncols = QString(buf).section(" ", 2, 2, QString::SectionSkipEmpty).toInt(); ++ *cpp = QString(buf).section(" ", 3, 3, QString::SectionSkipEmpty).toInt(); ++ if (*w <= 0 || *h <= 0 || *ncols <= 0 || *cpp <= 0) ++#else + if (sscanf(buf, "%d %d %d %d", w, h, ncols, cpp) < 4) + #endif ++#endif + return false; // < 4 numbers parsed + + return true; +diff --git a/qtbase/src/network/access/qnetworkaccessfilebackend.cpp b/qtbase/src/network/access/qnetworkaccessfilebackend.cpp +index 13428cc..0713528 100644 +--- a/qtbase/src/network/access/qnetworkaccessfilebackend.cpp ++++ b/qtbase/src/network/access/qnetworkaccessfilebackend.cpp +@@ -115,6 +115,7 @@ void QNetworkAccessFileBackend::open() + url.setPath(QLatin1String("/")); + setUrl(url); + ++#ifndef Q_OS_GENODE + QString fileName = url.toLocalFile(); + if (fileName.isEmpty()) { + if (url.scheme() == QLatin1String("qrc")) { +@@ -128,6 +129,10 @@ void QNetworkAccessFileBackend::open() + fileName = url.toString(QUrl::RemoveAuthority | QUrl::RemoveFragment | QUrl::RemoveQuery); + } + } ++#else ++ QString fileName = QLatin1String(":") + url.path(); ++#endif ++ + file.setFileName(fileName); + + if (operation() == QNetworkAccessManager::GetOperation) { +diff --git a/qtbase/src/network/kernel/qhostinfo.cpp b/qtbase/src/network/kernel/qhostinfo.cpp +index d25372e..131100e 100644 +--- a/qtbase/src/network/kernel/qhostinfo.cpp ++++ b/qtbase/src/network/kernel/qhostinfo.cpp +@@ -508,7 +508,12 @@ QHostInfoLookupManager::QHostInfoLookupManager() : mutex(QMutex::Recursive), was + { + moveToThread(QCoreApplicationPrivate::mainThread()); + connect(QCoreApplication::instance(), SIGNAL(destroyed()), SLOT(waitForThreadPoolDone()), Qt::DirectConnection); ++#ifdef Q_OS_GENODE ++ /* 'getaddrinfo()' is currently not thread-safe on Genode */ ++ threadPool.setMaxThreadCount(1); ++#else + threadPool.setMaxThreadCount(5); // do 5 DNS lookups in parallel ++#endif + } + + QHostInfoLookupManager::~QHostInfoLookupManager() +diff --git a/qtbase/src/network/kernel/qhostinfo_unix.cpp b/qtbase/src/network/kernel/qhostinfo_unix.cpp +index 04daf2e..001354c 100644 +--- a/qtbase/src/network/kernel/qhostinfo_unix.cpp ++++ b/qtbase/src/network/kernel/qhostinfo_unix.cpp +@@ -144,6 +144,11 @@ QHostInfo QHostInfoAgent::fromName(const QString &hostName) + QHostAddress address; + if (address.setAddress(hostName)) { + // Reverse lookup ++#ifdef Q_OS_GENODE ++ results.setError(QHostInfo::HostNotFound); ++ results.setErrorString(tr("Reverse lookup is not implemented because of missing support in lwip.")); ++ return results; ++#else + // Reverse lookups using getnameinfo are broken on darwin, use gethostbyaddr instead. + #if !defined (QT_NO_GETADDRINFO) && !defined (Q_OS_DARWIN) + sockaddr_in sa4; +@@ -174,7 +179,7 @@ QHostInfo QHostInfoAgent::fromName(const QString &hostName) + if (ent) + results.setHostName(QString::fromLatin1(ent->h_name)); + #endif +- ++#endif + if (results.hostName().isEmpty()) + results.setHostName(address.toString()); + results.setAddresses(QList() << address); +diff --git a/qtbase/src/widgets/dialogs/qfiledialog.cpp b/qtbase/src/widgets/dialogs/qfiledialog.cpp +index c427523..ed92116 100644 +--- a/qtbase/src/widgets/dialogs/qfiledialog.cpp ++++ b/qtbase/src/widgets/dialogs/qfiledialog.cpp +@@ -943,7 +943,7 @@ Q_AUTOTEST_EXPORT QString qt_tildeExpansion(const QString &path, bool *expanded + userName.remove(0, 1); + #if defined(Q_OS_VXWORKS) + const QString homePath = QDir::homePath(); +-#elif defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) ++#elif defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) && !defined(Q_OS_GENODE) + passwd pw; + passwd *tmpPw; + char buf[200]; +diff --git a/qtbase/src/widgets/styles/qstylefactory.cpp b/qtbase/src/widgets/styles/qstylefactory.cpp +index 2b81acf..eb3510a 100644 +--- a/qtbase/src/widgets/styles/qstylefactory.cpp ++++ b/qtbase/src/widgets/styles/qstylefactory.cpp +@@ -192,6 +192,13 @@ QStringList QStyleFactory::keys() + for (PluginKeyMap::const_iterator it = keyMap.constBegin(); it != cend; ++it) + list.append(it.value()); + #endif ++#ifdef Q_OS_GENODE ++/* on Genode, the first style in the list gets selected by default and we want the "Fusion" style */ ++#ifndef QT_NO_STYLE_FUSION ++ if (!list.contains(QLatin1String("Fusion"))) ++ list << QLatin1String("Fusion"); ++#endif ++#endif + #ifndef QT_NO_STYLE_WINDOWS + if (!list.contains(QLatin1String("Windows"))) + list << QLatin1String("Windows"); diff --git a/libports/src/lib/qt5/patches/qt5_qtbase_lwip_connect_semantics_adaption.patch b/libports/src/lib/qt5/patches/qt5_qtbase_lwip_connect_semantics_adaption.patch new file mode 100644 index 0000000000..d2f7d24dc9 --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_qtbase_lwip_connect_semantics_adaption.patch @@ -0,0 +1,36 @@ +qt5_qtbase_lwip_connect_semantics_adaption.patch + +From: Christian Prochaska + + +--- + .../network/socket/qnativesocketengine_unix.cpp | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/qtbase/src/network/socket/qnativesocketengine_unix.cpp b/qtbase/src/network/socket/qnativesocketengine_unix.cpp +index 4c94c4d..03c98fa 100644 +--- a/qtbase/src/network/socket/qnativesocketengine_unix.cpp ++++ b/qtbase/src/network/socket/qnativesocketengine_unix.cpp +@@ -408,6 +408,22 @@ bool QNativeSocketEnginePrivate::nativeConnect(const QHostAddress &addr, quint16 + case EISCONN: + socketState = QAbstractSocket::ConnectedState; + break; ++#ifdef Q_OS_GENODE ++ /* to have Arora get an error indication, socketState needs to change ++ * to "ConnectingState" before changing to "UnconnectedState" again ++ */ ++ case ECONNABORTED: ++ if (socketState == QAbstractSocket::UnconnectedState) { ++ /* interpret ECONNABORTED as EINPROGRESS */ ++ setError(QAbstractSocket::UnfinishedSocketOperationError, InvalidSocketErrorString); ++ socketState = QAbstractSocket::ConnectingState; ++ } else { ++ /* interpret ECONNABORTED as EHOSTUNREACH */ ++ setError(QAbstractSocket::NetworkError, HostUnreachableErrorString); ++ socketState = QAbstractSocket::UnconnectedState; ++ } ++ break; ++#endif + case ECONNREFUSED: + case EINVAL: + setError(QAbstractSocket::ConnectionRefusedError, ConnectionRefusedErrorString); diff --git a/libports/src/lib/qt5/patches/qt5_qtbase_virtual_deletelater.patch b/libports/src/lib/qt5/patches/qt5_qtbase_virtual_deletelater.patch new file mode 100644 index 0000000000..272052801c --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_qtbase_virtual_deletelater.patch @@ -0,0 +1,22 @@ +qt5_qtbase_virtual_deletelater.patch + +From: Christian Prochaska + + +--- + qtbase/src/corelib/kernel/qobject.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/qtbase/src/corelib/kernel/qobject.h b/qtbase/src/corelib/kernel/qobject.h +index aaa09fa..5e07216 100644 +--- a/qtbase/src/corelib/kernel/qobject.h ++++ b/qtbase/src/corelib/kernel/qobject.h +@@ -389,7 +389,7 @@ public: + { return const_cast(this)->qt_metacast(classname) != 0; } + + public Q_SLOTS: +- void deleteLater(); ++ virtual void deleteLater(); + + protected: + QObject *sender() const; diff --git a/libports/src/lib/qt5/patches/qt5_qtnetwork.patch b/libports/src/lib/qt5/patches/qt5_qtnetwork.patch new file mode 100644 index 0000000000..e7a84622e7 --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_qtnetwork.patch @@ -0,0 +1,68 @@ +qt5_qtnetwork.patch + +From: Christian Prochaska + + +--- + qtbase/src/network/access/qhttpnetworkreply.cpp | 8 ++++++++ + qtbase/src/network/ssl/qsslconfiguration_p.h | 9 +++++++++ + qtbase/src/network/ssl/qsslsocket_openssl.cpp | 3 +++ + 3 files changed, 20 insertions(+) + +diff --git a/qtbase/src/network/access/qhttpnetworkreply.cpp b/qtbase/src/network/access/qhttpnetworkreply.cpp +index eb8a886..1150088 100644 +--- a/qtbase/src/network/access/qhttpnetworkreply.cpp ++++ b/qtbase/src/network/access/qhttpnetworkreply.cpp +@@ -238,8 +238,16 @@ void QHttpNetworkReply::setReadBufferSize(qint64 size) + + bool QHttpNetworkReply::supportsUserProvidedDownloadBuffer() + { ++#ifdef Q_OS_GENODE ++ /* ++ * Without this change Arora shows garbage when loading, for example, ++ * www.genode.org ++ */ ++ return false; ++#else + Q_D(QHttpNetworkReply); + return (!d->isChunked() && !d->autoDecompress && d->bodyLength > 0 && d->statusCode == 200); ++#endif + } + + void QHttpNetworkReply::setUserProvidedDownloadBuffer(char* b) +diff --git a/qtbase/src/network/ssl/qsslconfiguration_p.h b/qtbase/src/network/ssl/qsslconfiguration_p.h +index 54b7264..5702e01 100644 +--- a/qtbase/src/network/ssl/qsslconfiguration_p.h ++++ b/qtbase/src/network/ssl/qsslconfiguration_p.h +@@ -81,7 +81,16 @@ class QSslConfigurationPrivate: public QSharedData + public: + QSslConfigurationPrivate() + : protocol(QSsl::SecureProtocols), ++#ifdef Q_OS_GENODE ++ /* ++ * With enabled peer verification, currently often a 'handshake error' ++ * occurs. This patch disables the peer verification until a fix for ++ * the handshake problem has been found. ++ */ ++ peerVerifyMode(QSslSocket::VerifyNone), ++#else + peerVerifyMode(QSslSocket::AutoVerifyPeer), ++#endif + peerVerifyDepth(0), + allowRootCertOnDemandLoading(true), + peerSessionShared(false), +diff --git a/qtbase/src/network/ssl/qsslsocket_openssl.cpp b/qtbase/src/network/ssl/qsslsocket_openssl.cpp +index 675bd7d..647f3fd 100644 +--- a/qtbase/src/network/ssl/qsslsocket_openssl.cpp ++++ b/qtbase/src/network/ssl/qsslsocket_openssl.cpp +@@ -445,7 +445,10 @@ bool QSslSocketPrivate::ensureLibraryLoaded() + if (q_SSL_library_init() != 1) + return false; + q_SSL_load_error_strings(); ++#ifndef Q_OS_GENODE ++ /* FIXME: currently, on Genode this function causes 'exit(1)' */ + q_OpenSSL_add_all_algorithms(); ++#endif + + // Initialize OpenSSL's random seed. + if (!q_RAND_status()) { diff --git a/libports/src/lib/qt5/patches/qt5_qtscript.patch b/libports/src/lib/qt5/patches/qt5_qtscript.patch new file mode 100644 index 0000000000..efce5bacb8 --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_qtscript.patch @@ -0,0 +1,149 @@ +qt5_qtscript.patch + +From: Christian Prochaska + + +--- + qtbase/src/corelib/global/qglobal.h | 6 +++++- + qtbase/src/corelib/kernel/qvariant_p.h | 3 +++ + .../JavaScriptCore/runtime/Collector.cpp | 21 ++++++++++++++++++++ + .../javascriptcore/JavaScriptCore/wtf/Assertions.h | 11 ++++++++++ + .../javascriptcore/JavaScriptCore/wtf/Platform.h | 5 +++++ + 5 files changed, 45 insertions(+), 1 deletion(-) + +diff --git a/qtbase/src/corelib/global/qglobal.h b/qtbase/src/corelib/global/qglobal.h +index 79e32fe..324c168 100644 +--- a/qtbase/src/corelib/global/qglobal.h ++++ b/qtbase/src/corelib/global/qglobal.h +@@ -763,13 +763,17 @@ inline void qSwap(T &value1, T &value2) + swap(value1, value2); + } + ++#ifndef Q_OS_GENODE + #if QT_DEPRECATED_SINCE(5, 0) ++#endif ++#else ++/* QtScript classic still needs these functions */ + Q_CORE_EXPORT QT_DEPRECATED void *qMalloc(size_t size) Q_ALLOC_SIZE(1); + Q_CORE_EXPORT QT_DEPRECATED void qFree(void *ptr); + Q_CORE_EXPORT QT_DEPRECATED void *qRealloc(void *ptr, size_t size) Q_ALLOC_SIZE(2); + Q_CORE_EXPORT QT_DEPRECATED void *qMemCopy(void *dest, const void *src, size_t n); + Q_CORE_EXPORT QT_DEPRECATED void *qMemSet(void *dest, int c, size_t n); +-#endif ++#endif /* Q_OS_GENODE */ + Q_CORE_EXPORT void *qMallocAligned(size_t size, size_t alignment) Q_ALLOC_SIZE(1); + Q_CORE_EXPORT void *qReallocAligned(void *ptr, size_t size, size_t oldsize, size_t alignment) Q_ALLOC_SIZE(2); + Q_CORE_EXPORT void qFreeAligned(void *ptr); +diff --git a/qtbase/src/corelib/kernel/qvariant_p.h b/qtbase/src/corelib/kernel/qvariant_p.h +index 4ec049e..e5e8dc4 100644 +--- a/qtbase/src/corelib/kernel/qvariant_p.h ++++ b/qtbase/src/corelib/kernel/qvariant_p.h +@@ -401,7 +401,10 @@ public: + + void delegate(const void*) + { ++#ifndef Q_OS_GENODE ++ /* this warning appears often when using the QtScript classic lib (tetrix), not sure if it is serious */ + qWarning("Trying to create a QVariant instance of QMetaType::Void type, an invalid QVariant will be constructed instead"); ++#endif + m_x->type = QMetaType::UnknownType; + m_x->is_shared = false; + m_x->is_null = !m_copy; +diff --git a/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp b/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp +index d5adbd7..d9dd773 100644 +--- a/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp ++++ b/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp +@@ -64,6 +64,13 @@ + + #include + ++#elif OS(GENODE) ++ ++#include ++#include ++#include ++#include ++ + #elif OS(UNIX) + + #include +@@ -209,6 +216,15 @@ NEVER_INLINE CollectorBlock* Heap::allocateBlock() + void* address = _aligned_malloc(BLOCK_SIZE, BLOCK_SIZE); + #endif + memset(address, 0, BLOCK_SIZE); ++#elif OS(GENODE) ++ void* real_address = malloc(sizeof(Genode::addr_t) + BLOCK_SIZE + BLOCK_SIZE); ++ Genode::addr_t address = reinterpret_cast(real_address); ++ address += sizeof(Genode::addr_t); ++ address = Genode::align_addr(address, Genode::log2(BLOCK_SIZE)); ++ address -= sizeof(Genode::addr_t); ++ *(Genode::addr_t*)address = (Genode::addr_t)real_address; ++ address += sizeof(Genode::addr_t); ++ memset(reinterpret_cast(address), 0, BLOCK_SIZE); + #elif HAVE(POSIX_MEMALIGN) + void* address; + posix_memalign(&address, BLOCK_SIZE, BLOCK_SIZE); +@@ -299,6 +315,9 @@ NEVER_INLINE void Heap::freeBlockPtr(CollectorBlock* block) + #else + _aligned_free(block); + #endif ++#elif OS(GENODE) ++ void *real_address = (void*)*(Genode::addr_t*)((Genode::addr_t)block - sizeof(Genode::addr_t)); ++ free(real_address); + #elif HAVE(POSIX_MEMALIGN) + free(block); + #else +@@ -649,6 +668,8 @@ static inline void* currentThreadStackBase() + thread_info threadInfo; + get_thread_info(find_thread(NULL), &threadInfo); + return threadInfo.stack_end; ++#elif OS(GENODE) ++ return Genode::Thread_qt::myself()->stack_top(); + #elif OS(UNIX) + AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex); + MutexLocker locker(mutex); +diff --git a/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Assertions.h b/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Assertions.h +index 352a74b..6a1aea3 100644 +--- a/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Assertions.h ++++ b/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Assertions.h +@@ -44,6 +44,10 @@ + + #include "Platform.h" + ++#if OS(GENODE) ++#include ++#endif ++ + #if COMPILER(MSVC) + #include + #else +@@ -156,6 +160,13 @@ void WTFLogVerbose(const char* file, int line, const char* function, WTFLogChann + __DEBUGGER(); \ + User::Panic(_L("Webkit CRASH"),0); \ + } while(false) ++#elif OS(GENODE) ++#define CRASH() ( \ ++ PERR("QtScript CRASH in '%s'", WTF_PRETTY_FUNCTION), \ ++ PERR(" in %s:%d", __FILE__, __LINE__), \ ++ *(int *)(uintptr_t)0xbbadbeef = 0, \ ++ ((void(*)())0)() /* More reliable, but doesn't say BBADBEEF */ \ ++) + #else + #define CRASH() do { \ + *(int *)(uintptr_t)0xbbadbeef = 0; \ +diff --git a/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h b/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h +index d483806..e956b49 100644 +--- a/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h ++++ b/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h +@@ -330,6 +330,11 @@ + /* ==== OS() - underlying operating system; only to be used for mandated low-level services like + virtual memory, not to choose a GUI toolkit ==== */ + ++/* OS(GENODE) - Genode */ ++#ifdef __GENODE__ ++#define WTF_OS_GENODE 1 ++#endif ++ + /* OS(ANDROID) - Android */ + #ifdef ANDROID + #define WTF_OS_ANDROID 1 diff --git a/libports/src/lib/qt5/patches/qt5_qtwebkit.patch b/libports/src/lib/qt5/patches/qt5_qtwebkit.patch new file mode 100644 index 0000000000..f28aa237f4 --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_qtwebkit.patch @@ -0,0 +1,303 @@ +qt5_qtwebkit.patch + +From: Christian Prochaska + + +--- + .../Source/JavaScriptCore/dfg/DFGOperations.cpp | 1 + + qtwebkit/Source/WTF/wtf/Assertions.h | 11 ++++++++++ + qtwebkit/Source/WTF/wtf/FastMalloc.cpp | 2 +- + qtwebkit/Source/WTF/wtf/InlineASM.h | 4 ++-- + qtwebkit/Source/WTF/wtf/OSAllocatorPosix.cpp | 13 ++++++++++++ + qtwebkit/Source/WTF/wtf/OSRandomSource.cpp | 8 ++++++++ + qtwebkit/Source/WTF/wtf/Platform.h | 19 +++++++++++++++--- + qtwebkit/Source/WTF/wtf/StackBounds.cpp | 12 +++++++++++ + qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp | 21 ++++++++++++++++++++ + .../platform/graphics/qt/MediaPlayerPrivateQt.cpp | 3 +++ + 10 files changed, 88 insertions(+), 6 deletions(-) + +diff --git a/qtwebkit/Source/JavaScriptCore/dfg/DFGOperations.cpp b/qtwebkit/Source/JavaScriptCore/dfg/DFGOperations.cpp +index bb9ccc3..077cbed 100644 +--- a/qtwebkit/Source/JavaScriptCore/dfg/DFGOperations.cpp ++++ b/qtwebkit/Source/JavaScriptCore/dfg/DFGOperations.cpp +@@ -1624,6 +1624,7 @@ namespace JSC { + + #if COMPILER(GCC) && CPU(X86_64) + asm ( ++".text" "\n" \ + ".globl " SYMBOL_STRING(getHostCallReturnValue) "\n" + HIDE_SYMBOL(getHostCallReturnValue) "\n" + SYMBOL_STRING(getHostCallReturnValue) ":" "\n" +diff --git a/qtwebkit/Source/WTF/wtf/Assertions.h b/qtwebkit/Source/WTF/wtf/Assertions.h +index 7e079ab..cac10fc 100644 +--- a/qtwebkit/Source/WTF/wtf/Assertions.h ++++ b/qtwebkit/Source/WTF/wtf/Assertions.h +@@ -50,6 +50,10 @@ + #include + #endif + ++#if OS(GENODE) ++#include ++#endif ++ + #ifdef NDEBUG + /* Disable ASSERT* macros in release mode. */ + #define ASSERTIONS_DISABLED_DEFAULT 1 +@@ -173,6 +177,13 @@ WTF_EXPORT_PRIVATE void WTFInstallReportBacktraceOnCrashHook(); + WTFInvokeCrashHook(), \ + (*(int *)(uintptr_t)0xbbadbeef = 0), \ + __builtin_trap()) ++#elif OS(GENODE) ++#define CRASH() ( \ ++ PERR("WebKit CRASH in '%s'", WTF_PRETTY_FUNCTION), \ ++ PERR(" in %s:%d", __FILE__, __LINE__), \ ++ *(int *)(uintptr_t)0xbbadbeef = 0, \ ++ ((void(*)())0)() /* More reliable, but doesn't say BBADBEEF */ \ ++) + #else + #define CRASH() \ + (WTFReportBacktrace(), \ +diff --git a/qtwebkit/Source/WTF/wtf/FastMalloc.cpp b/qtwebkit/Source/WTF/wtf/FastMalloc.cpp +index f2e34c7..f91c2fc 100644 +--- a/qtwebkit/Source/WTF/wtf/FastMalloc.cpp ++++ b/qtwebkit/Source/WTF/wtf/FastMalloc.cpp +@@ -101,7 +101,7 @@ + #endif + + // Use a background thread to periodically scavenge memory to release back to the system +-#if PLATFORM(IOS) ++#if PLATFORM(IOS) || OS(GENODE) + #define USE_BACKGROUND_THREAD_TO_SCAVENGE_MEMORY 0 + #else + #define USE_BACKGROUND_THREAD_TO_SCAVENGE_MEMORY 1 +diff --git a/qtwebkit/Source/WTF/wtf/InlineASM.h b/qtwebkit/Source/WTF/wtf/InlineASM.h +index 0a2fe78..d1fdd01 100644 +--- a/qtwebkit/Source/WTF/wtf/InlineASM.h ++++ b/qtwebkit/Source/WTF/wtf/InlineASM.h +@@ -62,12 +62,12 @@ + #elif OS(AIX) + // IBM's own file format + #define HIDE_SYMBOL(name) ".lglobl " #name +-#elif OS(LINUX) \ ++#elif (OS(LINUX) \ + || OS(FREEBSD) \ + || OS(OPENBSD) \ + || OS(SOLARIS) \ + || (OS(HPUX) && CPU(IA64)) \ +- || OS(NETBSD) ++ || OS(NETBSD)) \ + // ELF platform + #define HIDE_SYMBOL(name) ".hidden " #name + #else +diff --git a/qtwebkit/Source/WTF/wtf/OSAllocatorPosix.cpp b/qtwebkit/Source/WTF/wtf/OSAllocatorPosix.cpp +index a2f6a79..be8fff9 100644 +--- a/qtwebkit/Source/WTF/wtf/OSAllocatorPosix.cpp ++++ b/qtwebkit/Source/WTF/wtf/OSAllocatorPosix.cpp +@@ -120,6 +120,7 @@ void* OSAllocator::reserveAndCommit(size_t bytes, Usage usage, bool writable, bo + #endif + CRASH(); + } ++#if !OS(GENODE) + if (result && includesGuardPages) { + // We use mmap to remap the guardpages rather than using mprotect as + // mprotect results in multiple references to the code region. This +@@ -128,6 +129,7 @@ void* OSAllocator::reserveAndCommit(size_t bytes, Usage usage, bool writable, bo + mmap(result, pageSize(), PROT_NONE, MAP_FIXED | MAP_PRIVATE | MAP_ANON, fd, 0); + mmap(static_cast(result) + bytes - pageSize(), pageSize(), PROT_NONE, MAP_FIXED | MAP_PRIVATE | MAP_ANON, fd, 0); + } ++#endif /* OS(GENODE) */ + return result; + } + +@@ -179,9 +181,20 @@ void OSAllocator::decommit(void* address, size_t bytes) + + void OSAllocator::releaseDecommitted(void* address, size_t bytes) + { ++#if OS(GENODE) ++ /* ++ * 'releaseDecommitted()' sometimes gets called with a start address ++ * different than the one returned by 'mmap()' to release only a part of the ++ * allocated memory. This feature is currently not supported by Genode's ++ * 'munmap()' implementation, so we don't crash on purpose if the result of ++ * 'munmap()' is -1. ++ */ ++ munmap(address, bytes); ++#else + int result = munmap(address, bytes); + if (result == -1) + CRASH(); ++#endif /* OS(GENODE) */ + } + + } // namespace WTF +diff --git a/qtwebkit/Source/WTF/wtf/OSRandomSource.cpp b/qtwebkit/Source/WTF/wtf/OSRandomSource.cpp +index 0c1416a..5a10b3d 100644 +--- a/qtwebkit/Source/WTF/wtf/OSRandomSource.cpp ++++ b/qtwebkit/Source/WTF/wtf/OSRandomSource.cpp +@@ -29,6 +29,10 @@ + #include + #include + ++#if OS(GENODE) ++#include ++#endif /* OS(GENODE) */ ++ + #if OS(UNIX) + #include + #include +@@ -44,6 +48,10 @@ namespace WTF { + #if USE(OS_RANDOMNESS) + void cryptographicallyRandomValuesFromOS(unsigned char* buffer, size_t length) + { ++#if OS(GENODE) ++ PWRN("cryptographicallyRandomValuesFromOS(): no strong source of randomness available"); ++ return; ++#endif /* OS(GENODE) */ + #if OS(UNIX) + int fd = open("/dev/urandom", O_RDONLY, 0); + if (fd < 0) +diff --git a/qtwebkit/Source/WTF/wtf/Platform.h b/qtwebkit/Source/WTF/wtf/Platform.h +index 35fa7e3..89e6205 100644 +--- a/qtwebkit/Source/WTF/wtf/Platform.h ++++ b/qtwebkit/Source/WTF/wtf/Platform.h +@@ -426,6 +426,12 @@ + #define WTF_OS_UNIX 1 + #endif + ++/* OS(GENODE) */ ++#ifdef __GENODE__ ++/* Note: WTF_OS_FREEBSD is defined, too */ ++#define WTF_OS_GENODE 1 ++#endif ++ + /* Operating environments */ + + /* FIXME: these are all mixes of OS, operating environment and policy choices. */ +@@ -699,7 +705,8 @@ + + #if !OS(WINDOWS) && !OS(SOLARIS) \ + && !OS(RVCT) \ +- && !OS(ANDROID) ++ && !OS(ANDROID) \ ++ && !OS(GENODE) + #define HAVE_TM_GMTOFF 1 + #define HAVE_TM_ZONE 1 + #define HAVE_TIMEGM 1 +@@ -764,6 +771,11 @@ + #define HAVE_SYS_PARAM_H 1 + #define HAVE_SYS_TIME_H 1 + ++#elif OS(GENODE) ++ ++#define HAVE_ERRNO_H 1 ++#define HAVE_SYS_TIME_H 1 ++ + #else + + /* FIXME: is this actually used or do other platforms generate their own config.h? */ +@@ -782,7 +794,7 @@ + #if PLATFORM(QT) + /* We must not customize the global operator new and delete for the Qt port. */ + #define ENABLE_GLOBAL_FASTMALLOC_NEW 0 +-#if !OS(UNIX) ++#if !OS(UNIX) || OS(GENODE) + #define USE_SYSTEM_MALLOC 1 + #endif + #endif +@@ -1005,7 +1017,8 @@ + #define ENABLE_REGEXP_TRACING 0 + + /* Yet Another Regex Runtime - turned on by default for JIT enabled ports. */ +-#if !defined(ENABLE_YARR_JIT) && (ENABLE(JIT) || ENABLE(LLINT_C_LOOP)) && !PLATFORM(CHROMIUM) ++/* When enabled for Genode, the 'exec()' function returns invalid string objects */ ++#if !defined(ENABLE_YARR_JIT) && (ENABLE(JIT) || ENABLE(LLINT_C_LOOP)) && !PLATFORM(CHROMIUM) && !OS(GENODE) + #define ENABLE_YARR_JIT 1 + + /* Setting this flag compares JIT results with interpreter results. */ +diff --git a/qtwebkit/Source/WTF/wtf/StackBounds.cpp b/qtwebkit/Source/WTF/wtf/StackBounds.cpp +index a272ce3..a2e7484 100644 +--- a/qtwebkit/Source/WTF/wtf/StackBounds.cpp ++++ b/qtwebkit/Source/WTF/wtf/StackBounds.cpp +@@ -44,6 +44,10 @@ + #include + #include + ++#elif OS(GENODE) ++ ++#include ++ + #elif OS(UNIX) + + #include +@@ -128,6 +132,14 @@ void StackBounds::initialize() + m_bound = estimateStackBound(m_origin); + } + ++#elif OS(GENODE) ++ ++void StackBounds::initialize() ++{ ++ m_bound = Genode::Thread_base::myself()->stack_base(); ++ m_origin = Genode::Thread_base::myself()->stack_top(); ++} ++ + #elif OS(UNIX) + + void StackBounds::initialize() +diff --git a/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp b/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp +index f547085..07fc9b0 100644 +--- a/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp ++++ b/qtwebkit/Source/WTF/wtf/TCSystemAlloc.cpp +@@ -49,6 +49,12 @@ + #include + #endif + ++#if OS(GENODE) ++#include ++#include ++#include ++#endif ++ + #ifndef MAP_ANONYMOUS + #define MAP_ANONYMOUS MAP_ANON + #endif +@@ -367,6 +373,21 @@ void* TCMalloc_SystemAlloc(size_t size, size_t *actual_size, size_t alignment) { + } + #endif + ++#if OS(GENODE) ++ if (actual_size) ++ *actual_size = size; ++ ++ void* real_address = malloc(sizeof(Genode::addr_t) + size + alignment); ++ Genode::addr_t address = reinterpret_cast(real_address); ++ address += sizeof(Genode::addr_t); ++ address = Genode::align_addr(address, Genode::log2(alignment)); ++ address -= sizeof(Genode::addr_t); ++ *(Genode::addr_t*)address = (Genode::addr_t)real_address; ++ address += sizeof(Genode::addr_t); ++ ++ return (void*)address;; ++#endif ++ + // nothing worked - reset failure flags and try again + devmem_failure = false; + sbrk_failure = false; +diff --git a/qtwebkit/Source/WebCore/platform/graphics/qt/MediaPlayerPrivateQt.cpp b/qtwebkit/Source/WebCore/platform/graphics/qt/MediaPlayerPrivateQt.cpp +index e083e29..dc73aac 100644 +--- a/qtwebkit/Source/WebCore/platform/graphics/qt/MediaPlayerPrivateQt.cpp ++++ b/qtwebkit/Source/WebCore/platform/graphics/qt/MediaPlayerPrivateQt.cpp +@@ -18,6 +18,8 @@ + */ + + #include "config.h" ++ ++#if ENABLE(VIDEO) + #include "MediaPlayerPrivateQt.h" + + #include "Frame.h" +@@ -661,3 +663,4 @@ PlatformMedia MediaPlayerPrivateQt::platformMedia() const + } // namespace WebCore + + #include "moc_MediaPlayerPrivateQt.cpp" ++#endif /* ENABLE(VIDEO) */ diff --git a/libports/src/lib/qt5/patches/qt5_qwidgetanimator.patch b/libports/src/lib/qt5/patches/qt5_qwidgetanimator.patch new file mode 100644 index 0000000000..d21658af88 --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_qwidgetanimator.patch @@ -0,0 +1,32 @@ +qt5_qwidgetanimator.patch + +From: Christian Prochaska + + +--- + qtbase/src/widgets/widgets/qwidgetanimator.cpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/qtbase/src/widgets/widgets/qwidgetanimator.cpp b/qtbase/src/widgets/widgets/qwidgetanimator.cpp +index bbd96ca..d3fbf92 100644 +--- a/qtbase/src/widgets/widgets/qwidgetanimator.cpp ++++ b/qtbase/src/widgets/widgets/qwidgetanimator.cpp +@@ -74,7 +74,8 @@ void QWidgetAnimator::abort(QWidget *w) + void QWidgetAnimator::animationFinished() + { + QPropertyAnimation *anim = qobject_cast(sender()); +- abort(static_cast(anim->targetObject())); ++ if (anim) ++ abort(static_cast(anim->targetObject())); + } + #endif //QT_NO_ANIMATION + +@@ -92,7 +93,7 @@ void QWidgetAnimator::animate(QWidget *widget, const QRect &_final_geometry, boo + + #ifndef QT_NO_ANIMATION + AnimationMap::const_iterator it = m_animation_map.constFind(widget); +- if (it != m_animation_map.constEnd() && (*it)->endValue().toRect() == final_geometry) ++ if (it != m_animation_map.constEnd() && (*it) && (*it)->endValue().toRect() == final_geometry) + return; + + QPropertyAnimation *anim = new QPropertyAnimation(widget, "geometry", widget); diff --git a/libports/src/lib/qt5/patches/qt5_qwidgetwindow.patch b/libports/src/lib/qt5/patches/qt5_qwidgetwindow.patch new file mode 100644 index 0000000000..b1e13f14fa --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_qwidgetwindow.patch @@ -0,0 +1,23 @@ +qt5_qwidgetwindow.patch + +From: Christian Prochaska + + +--- + qtbase/src/widgets/kernel/qwidgetwindow.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/qtbase/src/widgets/kernel/qwidgetwindow.cpp b/qtbase/src/widgets/kernel/qwidgetwindow.cpp +index 18dd315..347ce7e 100644 +--- a/qtbase/src/widgets/kernel/qwidgetwindow.cpp ++++ b/qtbase/src/widgets/kernel/qwidgetwindow.cpp +@@ -231,6 +231,9 @@ bool QWidgetWindow::event(QEvent *event) + case QEvent::Hide: + return QWindow::event(event); + ++ case QEvent::MetaCall: ++ return QWindow::event(event); ++ + default: + break; + } diff --git a/libports/src/lib/qt5/patches/qt5_textedit_example.patch b/libports/src/lib/qt5/patches/qt5_textedit_example.patch new file mode 100644 index 0000000000..1bc2cbbed2 --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_textedit_example.patch @@ -0,0 +1,100 @@ +qt5_textedit_example.patch + +From: Christian Prochaska + + +--- + qtbase/examples/widgets/richtext/textedit/main.cpp | 21 +++++++++++++++++++- + .../widgets/richtext/textedit/textedit.cpp | 11 +++++----- + .../widgets/richtext/textedit/textedit.pro | 4 ---- + 3 files changed, 25 insertions(+), 11 deletions(-) + +diff --git a/qtbase/examples/widgets/richtext/textedit/main.cpp b/qtbase/examples/widgets/richtext/textedit/main.cpp +index 196dbfc..2513df9 100644 +--- a/qtbase/examples/widgets/richtext/textedit/main.cpp ++++ b/qtbase/examples/widgets/richtext/textedit/main.cpp +@@ -39,16 +39,35 @@ + ** + ****************************************************************************/ + ++/* Genode includes */ ++#include ++ ++/* Qt includes */ + #include "textedit.h" + #include + ++/* disable "not implemented yet" messages */ ++extern "C" void _sigprocmask() { } ++extern "C" void sigprocmask() { } ++ + int main(int argc, char *argv[]) + { + Q_INIT_RESOURCE(textedit); + ++ unsigned int x = 300; ++ unsigned int y = 0; ++ unsigned int w = 700; ++ unsigned int h = 700; ++ ++ try { Genode::config()->xml_node().attribute("xpos").value(&x); } catch (...) { } ++ try { Genode::config()->xml_node().attribute("ypos").value(&y); } catch (...) { } ++ try { Genode::config()->xml_node().attribute("width").value(&w); } catch (...) { } ++ try { Genode::config()->xml_node().attribute("height").value(&h); } catch (...) { } ++ + QApplication a(argc, argv); + TextEdit mw; +- mw.resize(700, 800); ++ mw.move(x, y); ++ mw.resize(w, h); + mw.show(); + return a.exec(); + } +diff --git a/qtbase/examples/widgets/richtext/textedit/textedit.cpp b/qtbase/examples/widgets/richtext/textedit/textedit.cpp +index ae2bded..be98558 100644 +--- a/qtbase/examples/widgets/richtext/textedit/textedit.cpp ++++ b/qtbase/examples/widgets/richtext/textedit/textedit.cpp +@@ -476,7 +476,7 @@ void TextEdit::fileNew() + void TextEdit::fileOpen() + { + QString fn = QFileDialog::getOpenFileName(this, tr("Open File..."), +- QString(), tr("HTML-Files (*.htm *.html);;All Files (*)")); ++ QString("/"), tr("HTML-Files (*.htm *.html);;All Files (*)")); + if (!fn.isEmpty()) + load(fn); + } +@@ -495,15 +495,14 @@ bool TextEdit::fileSave() + + bool TextEdit::fileSaveAs() + { +- QString fn = QFileDialog::getSaveFileName(this, tr("Save as..."), QString(), +- tr("ODF files (*.odt);;HTML-Files " ++ QString fn = QFileDialog::getSaveFileName(this, tr("Save as..."), QString("/"), ++ tr("HTML-Files " + "(*.htm *.html);;All Files (*)")); + if (fn.isEmpty()) + return false; +- if (!(fn.endsWith(".odt", Qt::CaseInsensitive) +- || fn.endsWith(".htm", Qt::CaseInsensitive) ++ if (!(fn.endsWith(".htm", Qt::CaseInsensitive) + || fn.endsWith(".html", Qt::CaseInsensitive))) { +- fn += ".odt"; // default ++ fn += ".html"; // default + } + setCurrentFileName(fn); + return fileSave(); +diff --git a/qtbase/examples/widgets/richtext/textedit/textedit.pro b/qtbase/examples/widgets/richtext/textedit/textedit.pro +index c32bf68..704f738 100644 +--- a/qtbase/examples/widgets/richtext/textedit/textedit.pro ++++ b/qtbase/examples/widgets/richtext/textedit/textedit.pro +@@ -9,10 +9,6 @@ SOURCES = textedit.cpp \ + main.cpp + + RESOURCES += textedit.qrc +-build_all:!build_pass { +- CONFIG -= build_all +- CONFIG += release +-} + + EXAMPLE_FILES = textedit.qdoc + diff --git a/libports/src/lib/qt5/patches/qt5_tools.patch b/libports/src/lib/qt5/patches/qt5_tools.patch new file mode 100644 index 0000000000..ae82c5c04f --- /dev/null +++ b/libports/src/lib/qt5/patches/qt5_tools.patch @@ -0,0 +1,123 @@ +qt5_tools.patch + +From: Christian Prochaska + +Support out-of-tree build of Qt host tools. +This patch should not be applied when running the Qt 'configure' script. +--- + qtbase/mkspecs/features/qt_build_config.prf | 2 + + qtbase/mkspecs/features/qt_functions.prf | 2 + + qtbase/mkspecs/features/qt_module.prf | 4 +- + qtbase/mkspecs/features/qt_tool.prf | 54 ++++++++++++++------------- + 4 files changed, 31 insertions(+), 31 deletions(-) + +diff --git a/qtbase/mkspecs/features/qt_build_config.prf b/qtbase/mkspecs/features/qt_build_config.prf +index a29e09c..32c8388 100644 +--- a/qtbase/mkspecs/features/qt_build_config.prf ++++ b/qtbase/mkspecs/features/qt_build_config.prf +@@ -12,7 +12,7 @@ + !contains(QMAKE_INTERNAL_INCLUDED_FILES, .*qmodule\\.pri) { + QMAKE_QT_MODULE = $$[QT_HOST_DATA/get]/mkspecs/qmodule.pri + !exists($$QMAKE_QT_MODULE)|!include($$QMAKE_QT_MODULE, "", true) { +- error("Cannot load qmodule.pri!") ++ debug(1, "Cannot load qmodule.pri!") + } else { + debug(1, "Loaded qmodule.pri from ($$QMAKE_QT_MODULE)") + } +diff --git a/qtbase/mkspecs/features/qt_functions.prf b/qtbase/mkspecs/features/qt_functions.prf +index bbbb5d3..62006ee 100644 +--- a/qtbase/mkspecs/features/qt_functions.prf ++++ b/qtbase/mkspecs/features/qt_functions.prf +@@ -167,7 +167,7 @@ defineTest(qtAddModules) { + + qtAddModule($$QTLIB, $$eval(QT.$${QTLIB}.want_private), $$2) + } +- !isEmpty(BAD_QT):error("Unknown module(s) in $$1: $$BAD_QT") ++ !isEmpty(BAD_QT):debug(1, "Unknown module(s) in $$1: $$BAD_QT") + + export(using_privates) + } +diff --git a/qtbase/mkspecs/features/qt_module.prf b/qtbase/mkspecs/features/qt_module.prf +index 53a5499..035480d 100644 +--- a/qtbase/mkspecs/features/qt_module.prf ++++ b/qtbase/mkspecs/features/qt_module.prf +@@ -21,7 +21,7 @@ load(qt_build_config) # loads qmodule.pri if hasn't been loaded already + + isEmpty(MODULE):MODULE = $$section($$list($$basename(_PRO_FILE_)), ., 0, 0) + isEmpty(VERSION): VERSION = $$MODULE_VERSION +-isEmpty(VERSION): error("Module does not define version.") ++isEmpty(VERSION): debug(1, "Module does not define version.") + + # Compile as shared/DLL or static according to the option given to configure + # unless overridden. Host builds are always static +@@ -53,7 +53,7 @@ else: \ + MODULE_DEFINE = QT_$${ucmodule}_LIB + MODULE_DEFINES = $$MODULE_DEFINE $$MODULE_DEFINES + +-load(qt_module_pris) ++#load(qt_module_pris) + + INCLUDEPATH *= $$eval(QT.$${MODULE}.includes) $$eval(QT.$${MODULE}.private_includes) + +diff --git a/qtbase/mkspecs/features/qt_tool.prf b/qtbase/mkspecs/features/qt_tool.prf +index 9a6b963..30a2059 100644 +--- a/qtbase/mkspecs/features/qt_tool.prf ++++ b/qtbase/mkspecs/features/qt_tool.prf +@@ -16,30 +16,30 @@ CONFIG += console + # If we are doing a prefix build, create a "module" pri which enables + # qtPrepareTool() to work with the non-installed build. + # Non-bootstrapped tools always need this because of the environment setup. +-!build_pass:if(!host_build|!force_bootstrap|force_independent) { +- isEmpty(MODULE):MODULE = $$TARGET +- +- !host_build|!force_bootstrap: MODULE_DEPENDS = $$replace(QT, -private$, ) +- +- load(qt_build_paths) +- +- load(resolve_target) +- +- TOOL_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_tool_$${MODULE}.pri +- +- TOOL_PRI_CONT = \ +- "QT_TOOL.$${MODULE}.binary = $$QMAKE_RESOLVED_TARGET" \ +- "QT_TOOL.$${MODULE}.depends =$$join(MODULE_DEPENDS, " ", " ")" +- write_file($$TOOL_PRI, TOOL_PRI_CONT)|error("Aborting.") +- +- # Then, inject the new tool into the current cache state +- !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$TOOL_PRI) { # before the actual include()! +- added = $$TOOL_PRI +- cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, added) +- unset(added) +- } +- include($$TOOL_PRI) +- for(var, $$list(binary depends)): \ +- cache(QT_TOOL.$${MODULE}.$$var, transient) +- +-} ++#!build_pass:if(!host_build|!force_bootstrap|force_independent) { ++# isEmpty(MODULE):MODULE = $$TARGET ++# ++# !host_build|!force_bootstrap: MODULE_DEPENDS = $$replace(QT, -private$, ) ++# ++# load(qt_build_paths) ++# ++# load(resolve_target) ++# ++# TOOL_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_tool_$${MODULE}.pri ++# ++# TOOL_PRI_CONT = \ ++# "QT_TOOL.$${MODULE}.binary = $$QMAKE_RESOLVED_TARGET" \ ++# "QT_TOOL.$${MODULE}.depends =$$join(MODULE_DEPENDS, " ", " ")" ++# write_file($$TOOL_PRI, TOOL_PRI_CONT)|error("Aborting.") ++# ++# # Then, inject the new tool into the current cache state ++# !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$TOOL_PRI) { # before the actual include()! ++# added = $$TOOL_PRI ++# cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, added) ++# unset(added) ++# } ++# include($$TOOL_PRI) ++# for(var, $$list(binary depends)): \ ++# cache(QT_TOOL.$${MODULE}.$$var, transient) ++# ++#} diff --git a/libports/src/lib/qt5/patches/qtscriptclassic_qt5.patch b/libports/src/lib/qt5/patches/qtscriptclassic_qt5.patch new file mode 100644 index 0000000000..65bc4ebef4 --- /dev/null +++ b/libports/src/lib/qt5/patches/qtscriptclassic_qt5.patch @@ -0,0 +1,472 @@ +qtscriptclassic_qt5.patch + +From: Christian Prochaska + + +--- + src/qscriptcontextinfo.cpp | 2 - + src/qscriptecmafunction.cpp | 12 ++++----- + src/qscriptengine_p.cpp | 30 ++++++++++++++-------- + src/qscriptextqobject.cpp | 52 +++++++++++++++++--------------------- + src/qscriptstring.cpp | 1 - + src/qscriptsyntaxcheckresult_p.h | 2 + + src/qscriptvalue.cpp | 4 +-- + src/qscriptvalue.h | 4 +-- + src/qscriptvalue_p.h | 1 - + src/qscriptvalueimpl_p.h | 3 +- + 10 files changed, 55 insertions(+), 56 deletions(-) + +diff --git a/src/qscriptcontextinfo.cpp b/src/qscriptcontextinfo.cpp +index ef080ff..df0e555 100644 +--- a/src/qscriptcontextinfo.cpp ++++ b/src/qscriptcontextinfo.cpp +@@ -108,7 +108,6 @@ QT_BEGIN_NAMESPACE + QScriptContextInfoPrivate::QScriptContextInfoPrivate() + : q_ptr(0) + { +- ref = 0; + functionType = QScriptContextInfo::NativeFunction; + functionMetaIndex = -1; + functionStartLineNumber = -1; +@@ -125,7 +124,6 @@ QScriptContextInfoPrivate::QScriptContextInfoPrivate(const QScriptContext *conte + : q_ptr(0) + { + Q_ASSERT(context); +- ref = 0; + functionType = QScriptContextInfo::NativeFunction; + functionMetaIndex = -1; + functionStartLineNumber = -1; +diff --git a/src/qscriptecmafunction.cpp b/src/qscriptecmafunction.cpp +index 7ba4596..fade83f 100644 +--- a/src/qscriptecmafunction.cpp ++++ b/src/qscriptecmafunction.cpp +@@ -328,7 +328,7 @@ QScriptValueImpl Function::method_disconnect(QScriptContextPrivate *context, QSc + return context->throwError(QScriptContext::TypeError, + QString::fromLatin1("Function.prototype.disconnect: %0::%1 is not a signal") + .arg(QLatin1String(qtSignal->metaObject()->className())) +- .arg(QLatin1String(sig.signature()))); ++ .arg(QLatin1String(sig.methodSignature()))); + } + + QScriptValueImpl receiver; +@@ -357,7 +357,7 @@ QScriptValueImpl Function::method_disconnect(QScriptContextPrivate *context, QSc + return context->throwError( + QString::fromLatin1("Function.prototype.disconnect: failed to disconnect from %0::%1") + .arg(QLatin1String(qtSignal->metaObject()->className())) +- .arg(QLatin1String(sig.signature()))); ++ .arg(QLatin1String(sig.methodSignature()))); + } + return eng->undefinedValue(); + #else +@@ -399,20 +399,20 @@ QScriptValueImpl Function::method_connect(QScriptContextPrivate *context, QScrip + return context->throwError(QScriptContext::TypeError, + QString::fromLatin1("Function.prototype.connect: %0::%1 is not a signal") + .arg(QLatin1String(qtSignal->metaObject()->className())) +- .arg(QLatin1String(sig.signature()))); ++ .arg(QLatin1String(sig.methodSignature()))); + } + + { + QList overloads = qtSignal->overloadedIndexes(); + if (!overloads.isEmpty()) { + overloads.append(qtSignal->initialIndex()); +- QByteArray signature = sig.signature(); ++ QByteArray signature = sig.methodSignature(); + QString message = QString::fromLatin1("Function.prototype.connect: ambiguous connect to %0::%1(); candidates are\n") + .arg(QLatin1String(qtSignal->metaObject()->className())) + .arg(QLatin1String(signature.left(signature.indexOf('(')))); + for (int i = 0; i < overloads.size(); ++i) { + QMetaMethod mtd = meta->method(overloads.at(i)); +- message.append(QString::fromLatin1(" %0\n").arg(QString::fromLatin1(mtd.signature()))); ++ message.append(QString::fromLatin1(" %0\n").arg(QString::fromLatin1(mtd.methodSignature()))); + } + message.append(QString::fromLatin1("Use e.g. object['%0'].connect() to connect to a particular overload") + .arg(QLatin1String(signature))); +@@ -446,7 +446,7 @@ QScriptValueImpl Function::method_connect(QScriptContextPrivate *context, QScrip + return context->throwError( + QString::fromLatin1("Function.prototype.connect: failed to connect to %0::%1") + .arg(QLatin1String(qtSignal->metaObject()->className())) +- .arg(QLatin1String(sig.signature()))); ++ .arg(QLatin1String(sig.methodSignature()))); + } + return eng->undefinedValue(); + #else +diff --git a/src/qscriptengine_p.cpp b/src/qscriptengine_p.cpp +index d36b605..4e9076d 100644 +--- a/src/qscriptengine_p.cpp ++++ b/src/qscriptengine_p.cpp +@@ -1436,7 +1436,6 @@ QScriptValueImpl QScriptEnginePrivate::create(int type, const void *ptr) + #endif + #ifndef QT_NO_QOBJECT + case QMetaType::QObjectStar: +- case QMetaType::QWidgetStar: + newQObject(&result, *reinterpret_cast(ptr)); + break; + #endif +@@ -1448,6 +1447,10 @@ QScriptValueImpl QScriptEnginePrivate::create(int type, const void *ptr) + } + + #ifndef QT_NO_QOBJECT ++ else if (type == qMetaTypeId()) { ++ newQObject(&result, *reinterpret_cast(ptr)); ++ } ++ + // lazy registration of some common list types + else if (type == qMetaTypeId()) { + qScriptRegisterSequenceMetaType(q); +@@ -1563,14 +1566,6 @@ bool QScriptEnginePrivate::convert(const QScriptValueImpl &value, + *reinterpret_cast(ptr) = value.toQObject(); + return true; + } break; +- case QMetaType::QWidgetStar: +- if (value.isQObject() || value.isNull()) { +- QObject *qo = value.toQObject(); +- if (!qo || qo->isWidgetType()) { +- *reinterpret_cast(ptr) = reinterpret_cast(qo); +- return true; +- } +- } break; + #endif + case QMetaType::QStringList: + if (value.isArray()) { +@@ -1588,6 +1583,17 @@ bool QScriptEnginePrivate::convert(const QScriptValueImpl &value, + return true; + } break; + default: ++#ifndef QT_NO_QOBJECT ++ if (type == qMetaTypeId()) { ++ if (value.isQObject() || value.isNull()) { ++ QObject *qo = value.toQObject(); ++ if (!qo || qo->isWidgetType()) { ++ *reinterpret_cast(ptr) = reinterpret_cast(qo); ++ return true; ++ } ++ } ++ } ++#endif + ; + } + +@@ -2609,6 +2615,7 @@ static QScriptValueImpl qsTranslate(QScriptContextPrivate *ctx, QScriptEnginePri + QString comment; + if (ctx->argumentCount() > 2) + comment = ctx->argument(2).toString(); ++#if 0 + QCoreApplication::Encoding encoding = QCoreApplication::CodecForTr; + if (ctx->argumentCount() > 3) { + QString encStr = ctx->argument(3).toString(); +@@ -2619,6 +2626,7 @@ static QScriptValueImpl qsTranslate(QScriptContextPrivate *ctx, QScriptEnginePri + else + return ctx->throwError(QString::fromLatin1("qsTranslate(): invalid encoding '%s'").arg(encStr)); + } ++#endif + int n = -1; + if (ctx->argumentCount() > 4) + n = ctx->argument(4).toInt32(); +@@ -2628,7 +2636,7 @@ static QScriptValueImpl qsTranslate(QScriptContextPrivate *ctx, QScriptEnginePri + result = QCoreApplication::translate(context.toLatin1().constData(), + text.toLatin1().constData(), + comment.toLatin1().constData(), +- encoding, n); ++ n); + #else + result = text; + #endif +@@ -2669,7 +2677,7 @@ static QScriptValueImpl qsTr(QScriptContextPrivate *ctx, QScriptEnginePrivate *e + result = QCoreApplication::translate(context.toLatin1().constData(), + text.toLatin1().constData(), + comment.toLatin1().constData(), +- QCoreApplication::CodecForTr, n); ++ n); + #else + result = text; + #endif +diff --git a/src/qscriptextqobject.cpp b/src/qscriptextqobject.cpp +index 06db925..cbf4e2a 100644 +--- a/src/qscriptextqobject.cpp ++++ b/src/qscriptextqobject.cpp +@@ -98,9 +98,9 @@ namespace QScript { + class QObjectNotifyCaller : public QObject + { + public: +- void callConnectNotify(const char *signal) ++ void callConnectNotify(const QMetaMethod &signal) + { connectNotify(signal); } +- void callDisconnectNotify(const char *signal) ++ void callDisconnectNotify(const QMetaMethod &signal) + { disconnectNotify(signal); } + }; + +@@ -135,7 +135,7 @@ public: + + static inline QByteArray methodName(const QMetaMethod &method) + { +- QByteArray signature = method.signature(); ++ QByteArray signature = method.methodSignature(); + return signature.left(signature.indexOf('(')); + } + +@@ -555,22 +555,22 @@ static void callQtMethod(QScriptContextPrivate *context, QMetaMethod::MethodType + } else if (actual.isQObject()) { + switch (tid) { + case QMetaType::QObjectStar: +- case QMetaType::QWidgetStar: + // perfect + break; + default: +- matchDistance += 10; ++ if (tid != qMetaTypeId()) ++ matchDistance += 10; + break; + } + } else if (actual.isNull()) { + switch (tid) { + case QMetaType::VoidStar: + case QMetaType::QObjectStar: +- case QMetaType::QWidgetStar: + // perfect + break; + default: +- if (!argType.name().endsWith('*')) ++ if (!argType.name().endsWith('*') && ++ (tid != qMetaTypeId())) + matchDistance += 10; + break; + } +@@ -647,7 +647,7 @@ static void callQtMethod(QScriptContextPrivate *context, QMetaMethod::MethodType + if (i > 0) + message += QLatin1String("\n"); + QMetaMethod mtd = metaMethod(meta, callType, conversionFailed.at(i)); +- message += QString::fromLatin1(" %0").arg(QString::fromLatin1(mtd.signature())); ++ message += QString::fromLatin1(" %0").arg(QString::fromLatin1(mtd.methodSignature())); + } + result = context->throwError(QScriptContext::TypeError, message); + } else if (!unresolved.isEmpty()) { +@@ -674,7 +674,7 @@ static void callQtMethod(QScriptContextPrivate *context, QMetaMethod::MethodType + if (i > 0) + message += QLatin1String("\n"); + QMetaMethod mtd = metaMethod(meta, callType, tooFewArgs.at(i)); +- message += QString::fromLatin1(" %0").arg(QString::fromLatin1(mtd.signature())); ++ message += QString::fromLatin1(" %0").arg(QString::fromLatin1(mtd.methodSignature())); + } + result = context->throwError(QScriptContext::SyntaxError, message); + } +@@ -691,7 +691,7 @@ static void callQtMethod(QScriptContextPrivate *context, QMetaMethod::MethodType + if (i > 0) + message += QLatin1String("\n"); + QMetaMethod mtd = metaMethod(meta, callType, candidates.at(i).index); +- message += QString::fromLatin1(" %0").arg(QString::fromLatin1(mtd.signature())); ++ message += QString::fromLatin1(" %0").arg(QString::fromLatin1(mtd.methodSignature())); + } + result = context->throwError(QScriptContext::TypeError, message); + } else { +@@ -847,7 +847,7 @@ bool ExtQObjectDataIterator::hasNext() const + for ( ; i < meta->methodCount(); ++i) { + QMetaMethod method = meta->method(i); + if (hasMethodAccess(method, i, inst->options) +- && !isObjectProperty(m_object, method.signature())) { ++ && !isObjectProperty(m_object, method.methodSignature())) { + return true; + } + } +@@ -909,9 +909,9 @@ void ExtQObjectDataIterator::next(QScript::Member *member) + for ( ; i < meta->methodCount(); ++i) { + QMetaMethod method = meta->method(i); + if (hasMethodAccess(method, i, inst->options) +- && !isObjectProperty(m_object, method.signature())) { ++ && !isObjectProperty(m_object, method.methodSignature())) { + QMetaMethod method = meta->method(i); +- QScriptNameIdImpl *nameId = eng->nameId(QLatin1String(method.signature())); ++ QScriptNameIdImpl *nameId = eng->nameId(QLatin1String(method.methodSignature())); + member->native(nameId, i, + QScriptValue::QObjectMember + | METHOD_ID); +@@ -941,7 +941,7 @@ bool ExtQObjectDataIterator::hasPrevious() const + for ( ; i >= limit; --i) { + QMetaMethod method = meta->method(i); + if (hasMethodAccess(method, i, inst->options) +- && !isObjectProperty(m_object, method.signature())) { ++ && !isObjectProperty(m_object, method.methodSignature())) { + return true; + } + } +@@ -993,9 +993,9 @@ void ExtQObjectDataIterator::previous(QScript::Member *member) + for ( ; i >= limit; --i) { + QMetaMethod method = meta->method(i); + if (hasMethodAccess(method, i, inst->options) +- && !isObjectProperty(m_object, method.signature())) { ++ && !isObjectProperty(m_object, method.methodSignature())) { + QMetaMethod method = meta->method(i); +- QScriptNameIdImpl *nameId = eng->nameId(QLatin1String(method.signature())); ++ QScriptNameIdImpl *nameId = eng->nameId(QLatin1String(method.methodSignature())); + member->native(nameId, i, + QScriptValue::QObjectMember + | METHOD_ID); +@@ -1508,7 +1508,7 @@ QScriptValueImpl QScript::ExtQObject::method_findChild(QScriptContextPrivate *co + if (Instance *instance = Instance::get(context->thisObject(), classInfo)) { + QObject *obj = instance->value; + QString name = context->argument(0).toString(); +- QObject *child = qFindChild(obj, name); ++ QObject *child = obj->findChild(name); + QScriptEngine::QObjectWrapOptions opt = QScriptEngine::PreferExistingWrapperObject; + QScriptValueImpl result; + eng->newQObject(&result, child, QScriptEngine::QtOwnership, opt); +@@ -1526,12 +1526,12 @@ QScriptValueImpl QScript::ExtQObject::method_findChildren(QScriptContextPrivate + #ifndef QT_NO_REGEXP + if (arg.isRegExp()) { + QRegExp re = arg.toRegExp(); +- found = qFindChildren(obj, re); ++ found = obj->findChildren(re); + } else + #endif + { + QString name = arg.isUndefined() ? QString() : arg.toString(); +- found = qFindChildren(obj, name); ++ found = obj->findChildren(name); + } + QScriptValueImpl result = eng->newArray(found.size()); + QScriptEngine::QObjectWrapOptions opt = QScriptEngine::PreferExistingWrapperObject; +@@ -1582,7 +1582,7 @@ static const char qt_meta_stringdata_QObjectConnectionManager[] = { + }; + + const QMetaObject QScript::QObjectConnectionManager::staticMetaObject = { +- { &QObject::staticMetaObject, qt_meta_stringdata_QObjectConnectionManager, ++ { &QObject::staticMetaObject, reinterpret_cast(qt_meta_stringdata_QObjectConnectionManager), + qt_meta_data_QObjectConnectionManager, 0 } + }; + +@@ -1684,7 +1684,7 @@ void QScript::QObjectConnectionManager::execute(int slotIndex, void **argv) + } else { + qWarning("QScriptEngine: Unable to handle unregistered datatype '%s' " + "when invoking handler of signal %s::%s", +- typeName.constData(), meta->className(), method.signature()); ++ typeName.constData(), meta->className(), method.methodSignature().constData()); + actual = eng->undefinedValue(); + } + } else { +@@ -1758,10 +1758,7 @@ bool QScript::QObjectConnectionManager::addSignalHandler( + if (ok) { + cs.append(QScript::QObjectConnection(m_slotCounter++, receiver, function, senderWrapper)); + QMetaMethod signal = sender->metaObject()->method(signalIndex); +- QByteArray signalString; +- signalString.append('2'); // signal code +- signalString.append(signal.signature()); +- static_cast(sender)->callConnectNotify(signalString); ++ static_cast(sender)->callConnectNotify(signal); + } + return ok; + } +@@ -1782,10 +1779,7 @@ bool QScript::QObjectConnectionManager::removeSignalHandler( + if (ok) { + cs.remove(i); + QMetaMethod signal = sender->metaObject()->method(signalIndex); +- QByteArray signalString; +- signalString.append('2'); // signal code +- signalString.append(signal.signature()); +- static_cast(sender)->callDisconnectNotify(signalString); ++ static_cast(sender)->callDisconnectNotify(signal); + } + return ok; + } +diff --git a/src/qscriptstring.cpp b/src/qscriptstring.cpp +index 1ed7f33..2436061 100644 +--- a/src/qscriptstring.cpp ++++ b/src/qscriptstring.cpp +@@ -88,7 +88,6 @@ QT_BEGIN_NAMESPACE + QScriptStringPrivate::QScriptStringPrivate() + : nameId(0), engine(0), q_ptr(0) + { +- ref = 0; + } + + /*! +diff --git a/src/qscriptsyntaxcheckresult_p.h b/src/qscriptsyntaxcheckresult_p.h +index bd6ef51..ed32383 100644 +--- a/src/qscriptsyntaxcheckresult_p.h ++++ b/src/qscriptsyntaxcheckresult_p.h +@@ -72,7 +72,7 @@ QT_BEGIN_NAMESPACE + class QScriptSyntaxCheckResultPrivate + { + public: +- QScriptSyntaxCheckResultPrivate() { ref = 0; } ++ QScriptSyntaxCheckResultPrivate() {} + ~QScriptSyntaxCheckResultPrivate() {} + + QScriptSyntaxCheckResult::State state; +diff --git a/src/qscriptvalue.cpp b/src/qscriptvalue.cpp +index 7fa655e..5d3d875 100644 +--- a/src/qscriptvalue.cpp ++++ b/src/qscriptvalue.cpp +@@ -347,7 +347,7 @@ QScriptValue::QScriptValue(QScriptEngine *engine, const char *val) + if (engine) { + QScriptValueImpl v; + QScriptEnginePrivate *eng_p = QScriptEnginePrivate::get(engine); +- eng_p->newString(&v, QString::fromAscii(val)); ++ eng_p->newString(&v, QString::fromLatin1(val)); + d_ptr = eng_p->registerValue(v); + d_ptr->ref.ref(); + } else { +@@ -453,7 +453,7 @@ QScriptValue::QScriptValue(const char *value) + : d_ptr(new QScriptValuePrivate) + { + d_ptr->value.m_type = QScript::LazyStringType; +- d_ptr->value.m_lazy_string_value = new QString(QString::fromAscii(value)); ++ d_ptr->value.m_lazy_string_value = new QString(QString::fromLatin1(value)); + d_ptr->ref.ref(); + } + #endif +diff --git a/src/qscriptvalue.h b/src/qscriptvalue.h +index 726fc26..a9c9ae9 100644 +--- a/src/qscriptvalue.h ++++ b/src/qscriptvalue.h +@@ -120,7 +120,7 @@ public: + QScriptValue(QScriptEngine *engine, qsreal val); + QScriptValue(QScriptEngine *engine, const QString &val); + #ifndef QT_NO_CAST_FROM_ASCII +- QT_ASCII_CAST_WARN_CONSTRUCTOR QScriptValue(QScriptEngine *engine, const char *val); ++ QT_ASCII_CAST_WARN QScriptValue(QScriptEngine *engine, const char *val); + #endif + + QScriptValue(SpecialValue value); +@@ -131,7 +131,7 @@ public: + QScriptValue(const QString &value); + QScriptValue(const QLatin1String &value); + #ifndef QT_NO_CAST_FROM_ASCII +- QT_ASCII_CAST_WARN_CONSTRUCTOR QScriptValue(const char *value); ++ QT_ASCII_CAST_WARN QScriptValue(const char *value); + #endif + + QScriptValue &operator=(const QScriptValue &other); +diff --git a/src/qscriptvalue_p.h b/src/qscriptvalue_p.h +index 7d891ed..86b62e4 100644 +--- a/src/qscriptvalue_p.h ++++ b/src/qscriptvalue_p.h +@@ -67,7 +67,6 @@ QT_BEGIN_NAMESPACE + inline QScriptValuePrivate::QScriptValuePrivate() + { + engine = 0; +- ref = 0; + } + + inline QScriptValuePrivate::~QScriptValuePrivate() +diff --git a/src/qscriptvalueimpl_p.h b/src/qscriptvalueimpl_p.h +index cf2695b..72b3252 100644 +--- a/src/qscriptvalueimpl_p.h ++++ b/src/qscriptvalueimpl_p.h +@@ -64,6 +64,7 @@ + #include "qscriptcontextfwd_p.h" + + #include ++#include + + QT_BEGIN_NAMESPACE + +@@ -348,7 +349,7 @@ inline QObject *QScriptValueImpl::toQObject() const + return data->value; + } else if (isVariant()) { + int type = variantValue().userType(); +- if ((type == QMetaType::QObjectStar) || (type == QMetaType::QWidgetStar)) ++ if ((type == QMetaType::QObjectStar) || (type == qMetaTypeId())) + return *reinterpret_cast(variantValue().constData()); + } + #endif diff --git a/libports/src/lib/qt5/patches/series b/libports/src/lib/qt5/patches/series new file mode 100644 index 0000000000..e7343d11fe --- /dev/null +++ b/libports/src/lib/qt5/patches/series @@ -0,0 +1,14 @@ +qt5_configuration.patch +qt5_generated_headers.patch +qt5_qtbase_genode.patch +qt5_qtbase_virtual_deletelater.patch +qt5_qtbase_lwip_connect_semantics_adaption.patch +qt5_qpa.patch +qt5_qarraydata.patch +qt5_qwidgetanimator.patch +qt5_qwidgetwindow.patch +qt5_qtscript.patch +qt5_qtnetwork.patch +qt5_qtwebkit.patch +qt5_textedit_example.patch +qt5_tools.patch diff --git a/libports/src/lib/qt5/qnitpickerviewwidget/qnitpickerviewwidget.cpp b/libports/src/lib/qt5/qnitpickerviewwidget/qnitpickerviewwidget.cpp new file mode 100644 index 0000000000..b8baa2a662 --- /dev/null +++ b/libports/src/lib/qt5/qnitpickerviewwidget/qnitpickerviewwidget.cpp @@ -0,0 +1,282 @@ +/* + * \brief A Qt Widget that shows a nitpicker view + * \author Christian Prochaska + * \date 2010-08-26 + */ + +#include + +#include + +#include +#if 0 +#include +#include +#endif + +#include + + +QNitpickerViewWidget::QNitpickerViewWidget(QWidget *parent) + : QWidget(parent), vc(0), orig_w(0), orig_h(0), orig_buf_x(0), orig_buf_y(0) +{ +} + + +void QNitpickerViewWidget::setNitpickerView(Nitpicker::View_capability view, int buf_x, int buf_y, int w, int h) +{ + orig_buf_x = buf_x; + orig_buf_y = buf_y; + orig_w = w; + orig_h = h; +// PDBG("orig_w = %d, orig_h = %d", orig_w, orig_h); + vc = new Nitpicker::View_client(view); + setFixedSize(orig_w, orig_h); +} + + +QNitpickerViewWidget::~QNitpickerViewWidget() +{ + delete vc; +} + + +void QNitpickerViewWidget::showEvent(QShowEvent *event) +{ +// qDebug() << "showEvent()"; +#if 0 + connect(qwsServer, SIGNAL(windowEvent(QWSWindow*, QWSServer::WindowEvent)), + this, SLOT(windowEvent(QWSWindow*, QWSServer::WindowEvent))); +#endif + QWidget::showEvent(event); +} + +void QNitpickerViewWidget::hideEvent(QHideEvent *event) +{ +// qDebug() << "hideEvent()"; +#if 0 + disconnect(this, SLOT(windowEvent(QWSWindow*, QWSServer::WindowEvent))); +#endif + QWidget::hideEvent(event); + + if (vc) + vc->viewport(mapToGlobal(pos()).x(), mapToGlobal(pos()).y(), 0, 0, orig_buf_x, orig_buf_y, 1); +} + +void QNitpickerViewWidget::paintEvent(QPaintEvent *event) +{ + QWidget::paintEvent(event); + + if (!vc) + return; + + /* mark all sliders as unchecked */ + QHashIterator i(_scrollbars); + while(i.hasNext()) { + i.next(); + _scrollbars.insert(i.key(), false); + } + +#if 0 +// qDebug() << "paintEvent()"; + qDebug() << "geometry: " << geometry(); /* widget relative to parent widget */ + qDebug() << "rect: " << rect(); /* (0, 0, width(), height()) without frames */ + qDebug() << "event->rect(): " << event->rect(); + qDebug() << "event->region(): " << event->region(); + qDebug() << "global(0, 0): " << mapToGlobal(QPoint(0, 0)); + qDebug() << "x(): " << x() << "y(): " << y(); + qDebug() << "global(x, y): " << mapToGlobal(QPoint(x(), y())); + qDebug() << "window =" << window(); +// qDebug() << "window->geometry() =" << window()->geometry(); +// qDebug() << "mapToGlobal(window->geometry().topLeft()) =" << mapToGlobal(window()->geometry().topLeft()); + qDebug() << "window->rect().topLeft() =" << window()->rect().topLeft(); + qDebug() << "mapToGlobal(window->rect().topLeft()) =" << mapToGlobal(window()->rect().topLeft()); + qDebug() << "mapToGlobal(window->childrenRect().topLeft()) =" << mapToGlobal(window()->childrenRect().topLeft()); + qDebug() << "mapToGlobal(window->contentsRect().topLeft()) =" << mapToGlobal(window()->contentsRect().topLeft()); + qDebug() << "mapToGlobal(mask().boundingRect().bottomRight()) =" << mapToGlobal(mask().boundingRect().bottomRight()); +#endif + +// QPainter painter(this); +// painter.fillRect(rect(), Qt::black); + + QWidget *parent = parentWidget(); + + int w = 0; + int h = 0; + + int diff_x = 0; + int diff_y = 0; + + int x0 = mapToGlobal(QPoint(0, 0)).x(); +// qDebug() << "x0 = " << x0; + int x1 = mapToGlobal(QPoint(orig_w - 1, 0)).x(); +// qDebug() << "x1 = " << x1; + int y0 = mapToGlobal(QPoint(0, 0)).y(); +// qDebug() << "y0 = " << y0; + int y1 = mapToGlobal(QPoint(0, orig_h - 1)).y(); +// qDebug() << "y1 = " << y1; + + while(parent) { +#if 0 + qDebug() << "parent =" << parent; + qDebug() << "parent's rect: " << parent->rect(); + qDebug() << "parent's children rect:" << parent->childrenRect(); + qDebug() << "parent's contents rect:" << parent->contentsRect(); + + /* start of view = most right window start position */ +// qDebug() << "parent->geometry() =" << parent->geometry(); +// qDebug() << "parent->frameGeometry() =" << parent->frameGeometry(); +// qDebug() << "mapToGlobal(parent->frameGeometry().topLeft()) =" << parent->mapToGlobal(parent->frameGeometry().topLeft()); + qDebug() << "mapToGlobal(parent->geometry().bottomRight()) =" << parent->mapToGlobal(parent->geometry().bottomRight()); + qDebug() << "mapToGlobal(parent->rect().topLeft()) =" << parent->mapToGlobal(parent->rect().topLeft()); + qDebug() << "mapToGlobal(parent->rect().bottomRight()) =" << parent->mapToGlobal(parent->rect().bottomRight()); + qDebug() << "mapToGlobal(parent->childrenRect().topLeft()) =" << parent->mapToGlobal(parent->childrenRect().topLeft()); + qDebug() << "mapToGlobal(parent->childrenRect().bottomRight()) =" << parent->mapToGlobal(parent->childrenRect().bottomRight()); + qDebug() << "mapToGlobal(parent->contentsRect().topLeft()) =" << parent->mapToGlobal(parent->contentsRect().topLeft()); + qDebug() << "mapToGlobal(parent->contentsRect().bottomRight()) =" << parent->mapToGlobal(parent->contentsRect().bottomRight()); + qDebug() << "parentWidget()->childAt(" << geometry().topRight() << ") = " << parentWidget()->childAt(geometry().topRight()); + qDebug() << "visibleRegion() = " << visibleRegion(); + qDebug() << "geometry().contains(" << geometry().topRight() << ") = " << geometry().contains(geometry().topRight()); + qDebug() << "mask() = " << mask(); +#endif + + if (parent->inherits("QAbstractScrollArea")) { + QAbstractScrollArea *scrollarea = qobject_cast(parent); + QScrollBar *scrollbar; + + scrollbar = scrollarea->horizontalScrollBar(); + if (!_scrollbars.contains(scrollbar)) { + connect(scrollbar, SIGNAL(valueChanged(int)), this, SLOT(valueChanged())); + connect(scrollbar, SIGNAL(destroyed(QObject*)), this, SLOT(destroyed(QObject*))); + } + /* update/insert value */ + _scrollbars.insert(scrollbar, true); + + scrollbar = scrollarea->verticalScrollBar(); + if (!_scrollbars.contains(scrollbar)) { + connect(scrollbar, SIGNAL(valueChanged(int)), this, SLOT(valueChanged())); + connect(scrollbar, SIGNAL(destroyed(QObject*)), this, SLOT(destroyed(QObject*))); + } + /* update/insert value */ + _scrollbars.insert(scrollbar, true); + +// w = qMin(w, parent->contentsRect().width() + parent->childrenRect().x()); +// qDebug() << "mapToGlobal(viewport->rect().topLeft()) =" << scrollarea->viewport()->mapToGlobal(scrollarea->viewport()->rect().topLeft()); +// qDebug() << "mapToGlobal(viewport->rect().bottomRight()) =" << scrollarea->viewport()->mapToGlobal(scrollarea->viewport()->rect().bottomRight()); + } + + x0 = qMax(x0, parent->mapToGlobal(parent->contentsRect().topLeft()).x()); +// qDebug() << "x0 = " << x0; + x1 = qMin(x1, parent->mapToGlobal(parent->contentsRect().bottomRight()).x()); +// qDebug() << "x1 = " << x1; + y0 = qMax(y0, parent->mapToGlobal(parent->contentsRect().topLeft()).y()); +// qDebug() << "y0 = " << y0; + y1 = qMin(y1, parent->mapToGlobal(parent->contentsRect().bottomRight()).y()); +// qDebug() << "y1 = " << y1; + + //w = qMin(w, parent->contentsRect().width() /*+ parent->childrenRect().x()*/); + w = x1 - x0 + 1; +// qDebug() << "w = " << w; + h = y1 - y0 + 1; +// qDebug() << "h = " << h; + + if (parent->childrenRect().x() < 0) { + diff_x += parent->childrenRect().x(); + } + + if (parent->childrenRect().y() < 0) { + diff_y += parent->childrenRect().y(); + } + + parent = parent->parentWidget(); + } + + /* disconnect and remove any scrollbar that is not in the hierarchy anymore */ + i.toBack(); + while(i.hasNext()) { + i.next(); + if (_scrollbars.value(i.key()) == false) { + disconnect(i.key(), SIGNAL(valueChanged(int)), this, SLOT(valueChanged())); + disconnect(i.key(), SIGNAL(destroyed(QObject*)), this, SLOT(destroyed(QObject*))); + _scrollbars.remove(i.key()); + } + } + + /* argument to mapToGlobal() is relative to the Widget's origin + * the plugin view starts at (0, 0) + */ + if (mask().isEmpty()) { +// PDBG("x0 = %d, y0 = %d, w = %d, h = %d, buf_x = %d, buf_y = %d", x0, y0, w, h, orig_buf_x + diff_x, orig_buf_y + diff_y); + vc->viewport(x0, + y0, + /*qMin(width(), w)*/w, + /*qMin(height(), h)*/h, + orig_buf_x + diff_x, + orig_buf_y + diff_y, + true); + } else { +// PDBG("x = %d, y = %d, w = %d, h = %d, buf_x = %d, buf_y = %d", mapToGlobal(mask().boundingRect().topLeft()).x(), mapToGlobal(mask().boundingRect().topLeft()).y(), mask().boundingRect().width(), mask().boundingRect().height(), orig_buf_x + diff_x, orig_buf_y + diff_y); + vc->viewport(mapToGlobal(mask().boundingRect().topLeft()).x(), + mapToGlobal(mask().boundingRect().topLeft()).y(), + mask().boundingRect().width(), + mask().boundingRect().height(), + orig_buf_x + diff_x, + orig_buf_y + diff_y, + true); + } +#if 0 + /* bring the plugin view to the front of the Qt window */ + QWSNitpickerWindowSurface *ws = static_cast(windowSurface()); + vc->stack(ws->view_cap(), false, true); +#endif +} +#if 0 +void QNitpickerViewWidget::windowEvent(QWSWindow *window, + QWSServer::WindowEvent eventType) +{ + if (this->window()->windowSurface() && (window->winId() == static_cast(this->window()->windowSurface())->winId())) { + + switch (eventType) { + + /* the window has changed its geometry */ + case QWSServer::Geometry: + { + if (isVisible()) { + QPaintEvent e(rect()); + paintEvent(&e); + } + break; + } + + case QWSServer::Raise: + { + if (vc) { + try { + vc->stack(Nitpicker::View_capability(), true, true); + } catch (Genode::Ipc_error) { + delete vc; + vc = 0; + } + } + break; + } + + default: + break; + } + } +} +#endif +void QNitpickerViewWidget::valueChanged() +{ +// qDebug() << "valueChanged()"; + if (isVisible()) { + QPaintEvent e(rect()); + paintEvent(&e); + } +} + +void QNitpickerViewWidget::destroyed(QObject *obj) +{ + _scrollbars.remove(qobject_cast(obj)); +} diff --git a/libports/src/lib/qt5/qpluginwidget/qpluginwidget.cpp b/libports/src/lib/qt5/qpluginwidget/qpluginwidget.cpp new file mode 100644 index 0000000000..bb617f2aeb --- /dev/null +++ b/libports/src/lib/qt5/qpluginwidget/qpluginwidget.cpp @@ -0,0 +1,395 @@ +/* + * \brief A Qt Widget that can load a plugin application and show its Nitpicker view + * \author Christian Prochaska + * \date 2010-08-26 + */ + +#include +#include +#include +#include +#include + +#include +#include + +#include +#if 0 +#include +#endif + +#include + +QPluginWidget *QPluginWidget::_last = 0; + +using namespace Genode; + + +const char *config = " \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ +"; + + +class Signal_wait_thread : public QThread +{ + private: + + Signal_receiver &_signal_receiver; + Timed_semaphore &_timeout_semaphore; + + protected: + + void run() + { + _signal_receiver.wait_for_signal(); + _timeout_semaphore.up(); + } + + public: + + Signal_wait_thread(Signal_receiver &signal_receiver, Timed_semaphore &timeout_semaphore) + : _signal_receiver(signal_receiver), + _timeout_semaphore(timeout_semaphore) { } +}; + + +PluginStarter::PluginStarter(QUrl plugin_url, QString &args, + int max_width, int max_height) +: _plugin_url(plugin_url), + _args(args.toLatin1()), + _max_width(max_width), + _max_height(max_height), + _pc(0), + _plugin_loading_state(LOADING), + _qnam(0), + _reply(0) +{ +} + + +void PluginStarter::_start_plugin(QString &file_name, QByteArray const &file_buf) +{ + if (file_name.endsWith(".gz")) { + file_name.remove(".gz"); + + uint32_t file_size = *(uint32_t*)(file_buf.constData() + file_buf.size() - sizeof(uint32_t)); + + PDBG("file_size_uncompressed = %u", file_size); + + size_t ram_quota = Arg_string::find_arg(_args.constData(), "ram_quota").long_value(0) + file_size; + + if ((long)env()->ram_session()->avail() - (long)ram_quota < QPluginWidget::RAM_QUOTA) { + PERR("quota exceeded"); + _plugin_loading_state = QUOTA_EXCEEDED_ERROR; + return; + } + + _pc = new Loader::Connection(ram_quota); + + Dataspace_capability ds = _pc->alloc_rom_module(file_name.toUtf8().constData(), file_size); + if (ds.valid()) { + void *ds_addr = env()->rm_session()->attach(ds); + + z_stream zs; + zs.next_in = (Bytef*)(file_buf.data()); + zs.avail_in = file_buf.size(); + zs.total_in = 0; + zs.next_out = (Bytef*)ds_addr; + zs.avail_out = file_size; + zs.total_out = 0; + zs.zalloc = Z_NULL; + zs.zfree = Z_NULL; + + /* enable gzip format detection */ + if (inflateInit2(&zs, 16 + MAX_WBITS) != Z_OK) { + PERR("inflateInit2() failed"); + _plugin_loading_state = INFLATE_ERROR; + + inflateEnd(&zs); + env()->rm_session()->detach(ds_addr); + return; + } + + /* uncompress */ + if (inflate(&zs, Z_SYNC_FLUSH) != Z_STREAM_END) { + PERR("inflate() failed"); + _plugin_loading_state = INFLATE_ERROR; + + inflateEnd(&zs); + env()->rm_session()->detach(ds_addr); + return; + } + + inflateEnd(&zs); + + env()->rm_session()->detach(ds_addr); + _pc->commit_rom_module(file_name.toUtf8().constData()); + } + } else { + size_t ram_quota = Arg_string::find_arg(_args.constData(), "ram_quota").long_value(0); + + if ((long)env()->ram_session()->avail() - (long)ram_quota < QPluginWidget::RAM_QUOTA) { + _plugin_loading_state = QUOTA_EXCEEDED_ERROR; + return; + } + + _pc = new Loader::Connection(ram_quota); + + Dataspace_capability plugin_ds = _pc->alloc_rom_module("plugin.tar", file_buf.size()); + if (plugin_ds.valid()) { + void *plugin_ds_addr = env()->rm_session()->attach(plugin_ds); + ::memcpy(plugin_ds_addr, file_buf.constData(), file_buf.size()); + env()->rm_session()->detach(plugin_ds_addr); + _pc->commit_rom_module("plugin.tar"); + } + } + + Dataspace_capability config_ds = _pc->alloc_rom_module("config", ::strlen(config) + 1); + if (config_ds.valid()) { + void *config_ds_addr = env()->rm_session()->attach(config_ds); + ::memcpy(config_ds_addr, config, ::strlen(config) + 1); + env()->rm_session()->detach(config_ds_addr); + _pc->commit_rom_module("config"); + } + + Signal_context sig_ctx; + Signal_receiver sig_rec; + + _pc->view_ready_sigh(sig_rec.manage(&sig_ctx)); + _pc->constrain_geometry(_max_width, _max_height); + _pc->start("init", "init"); + + Timed_semaphore view_ready_semaphore; + Signal_wait_thread signal_wait_thread(sig_rec, view_ready_semaphore); + signal_wait_thread.start(); + try { + view_ready_semaphore.down(10000); + _plugin_loading_state = LOADED; + } catch (Timeout_exception) { + _plugin_loading_state = TIMEOUT_EXCEPTION; + signal_wait_thread.terminate(); + } + signal_wait_thread.wait(); +} + + +void PluginStarter::run() +{ + if (_plugin_url.scheme() == "rom") { + + QString file_name = _plugin_url.path().remove("/"); + + try { + Rom_connection rc(file_name.toLatin1().constData()); + + Dataspace_capability rom_ds = rc.dataspace(); + + char const *rom_ds_addr = (char const *)env()->rm_session()->attach(rom_ds); + + QByteArray file_buf = QByteArray::fromRawData(rom_ds_addr, Dataspace_client(rom_ds).size()); + + _start_plugin(file_name, file_buf); + + env()->rm_session()->detach(rom_ds_addr); + + } catch (Rom_connection::Rom_connection_failed) { + _plugin_loading_state = ROM_CONNECTION_FAILED_EXCEPTION; + } + + emit finished(); + + } else if (_plugin_url.scheme() == "http") { + + _qnam = new QNetworkAccessManager(); + _reply = _qnam->get(QNetworkRequest(_plugin_url)); + + connect(_reply, SIGNAL(finished()), this, SLOT(networkReplyFinished())); + } + + exec(); + + delete _pc; + + moveToThread(QApplication::instance()->thread()); +} + + +void PluginStarter::networkReplyFinished() +{ + if (_reply->error() != QNetworkReply::NoError) { + _plugin_loading_state = NETWORK_ERROR; + _plugin_loading_error_string = _reply->errorString(); + _reply->deleteLater(); + emit finished(); + return; + } + + qDebug() << "download finished, size = " << _reply->size(); + + QString file_name = _plugin_url.path().remove("/");; + QByteArray file_buf = _reply->readAll(); + + _start_plugin(file_name, file_buf); + + _reply->deleteLater(); + _qnam->deleteLater(); + + emit finished(); +} + + +Nitpicker::View_capability PluginStarter::plugin_view(int *w, int *h, int *buf_x, int *buf_y) +{ + Loader::Session::View_geometry geometry = _pc->view_geometry(); + if (w) *w = geometry.width; + if (h) *h = geometry.height; + if (buf_x) *buf_x = geometry.buf_x; + if (buf_y) *buf_y = geometry.buf_y; + return _pc->view(); +} + + +QPluginWidget::QPluginWidget(QWidget *parent, QUrl plugin_url, QString &args, + int max_width, int max_height) +: + QNitpickerViewWidget(parent), + _plugin_loading_state(LOADING), + _plugin_starter(0), + _max_width(max_width), + _max_height(max_height) +{ + qDebug() << "plugin_url = " << plugin_url; + qDebug() << "plugin_url.scheme() = " << plugin_url.scheme(); + qDebug() << "plugin_url.path() = " << plugin_url.path(); + qDebug() << "plugin_url.toLocalFile() = " << plugin_url.toLocalFile(); + qDebug() << "args =" << args; + + if (_last) { + _last->cleanup(); + _last = this; + } + + _plugin_starter = new PluginStarter(plugin_url, args, max_width, max_height); + _plugin_starter->moveToThread(_plugin_starter); + connect(_plugin_starter, SIGNAL(finished()), this, SLOT(pluginStartFinished())); + _plugin_starter->start(); +} + + +QPluginWidget::~QPluginWidget() +{ + cleanup(); + + if (_last == this) + _last = 0; +} + + +void QPluginWidget::cleanup() +{ + if (_plugin_starter) { + /* make the thread leave the event loop */ + _plugin_starter->exit(); + /* wait until the thread has left the run() function */ + _plugin_starter->wait(); + /* delete the QThread object */ + delete _plugin_starter; + _plugin_starter = 0; + delete vc; + vc = 0; + } +} + + +void QPluginWidget::paintEvent(QPaintEvent *event) +{ + if (_plugin_loading_state == LOADED) + QNitpickerViewWidget::paintEvent(event); + else { + QWidget::paintEvent(event); + QPainter painter(this); + painter.drawRect(0, 0, width() - 1, height() - 1); + switch (_plugin_loading_state) { + case LOADING: + painter.drawText(rect(), Qt::AlignCenter, tr("Loading plugin...")); + break; + case NETWORK_ERROR: + painter.drawText(rect(), Qt::AlignCenter, tr("Could not load plugin: ") + + _plugin_loading_error_string); + break; + case INFLATE_ERROR: + painter.drawText(rect(), Qt::AlignCenter, + tr("Could not load plugin: error decompressing gzipped file.")); + break; + case QUOTA_EXCEEDED_ERROR: + painter.drawText(rect(), Qt::AlignCenter, + tr("Could not load plugin: not enough memory.")); + break; + case TIMEOUT_EXCEPTION: + painter.drawText(rect(), Qt::AlignCenter, tr("Could not load plugin: timeout.")); + break; + case ROM_CONNECTION_FAILED_EXCEPTION: + painter.drawText(rect(), Qt::AlignCenter, tr("Could not load plugin: file not found.")); + break; + default: + break; + } + } +} + + +void QPluginWidget::pluginStartFinished() +{ + _plugin_loading_state = _plugin_starter->plugin_loading_state(); + + if (_plugin_loading_state == LOADED) { + Nitpicker::View_capability view = _plugin_starter->plugin_view(&orig_w, &orig_h, &orig_buf_x, &orig_buf_y); + + vc = new Nitpicker::View_client(view); + + setFixedSize((_max_width > -1) ? qMin(orig_w, _max_width) : orig_w, + (_max_height > -1) ? qMin(orig_h, _max_height) : orig_h); + } else { + _plugin_loading_error_string = _plugin_starter->plugin_loading_error_string(); + setFixedSize((_max_width > -1) ? _max_width : 100, + (_max_height > -1) ? _max_height : 100); + cleanup(); + } + + update(); +} + diff --git a/libports/src/lib/qt5/qt_main.cc b/libports/src/lib/qt5/qt_main.cc new file mode 100644 index 0000000000..7f81bceee0 --- /dev/null +++ b/libports/src/lib/qt5/qt_main.cc @@ -0,0 +1,77 @@ +/* + * \brief main() wrapper for customizing main()'s stack size + * \author Christian Prochaska + * \date 2008-08-20 + */ + +/* + * Copyright (C) 2008-2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifdef QT_MAIN_STACK_SIZE + +#include +#include +#include + +#include + +using namespace Genode; + +extern int qt_main(int argc, char *argv[]); + +class Main_thread : public Thread_qt +{ + protected: + + int _argc; + char **_argv; + Semaphore &_finished; + int _result; + + public: + + Main_thread(int argc, char *argv[], Semaphore &finished) : + Thread_qt("Qt main thread"), + _argc(argc), + _argv(argv), + _finished(finished), + _result(0) { } + + virtual void entry() + { + /* call the real main() function */ + _result = ::qt_main(_argc, _argv); + + _finished.up(); + + sleep_forever(); + } + + int result() { return _result; } +}; + +#define qt_main main + +int main(int argc, char *argv[]) +{ +// PDBG("QT_MAIN_STACK_SIZE == %d", QT_MAIN_STACK_SIZE); + + Semaphore finished; + + Main_thread main_thread(argc, argv, finished); + main_thread.set_stack_size(QT_MAIN_STACK_SIZE); + main_thread.start(); + + /* wait for the thread to finish */ + finished.down(); + +// PDBG("main_thread finished"); + + return main_thread.result(); +} + +#endif /* QT_MAIN_STACK_SIZE */ diff --git a/libports/src/lib/qt5/qtbase/mkspecs/genode-g++/qmake.conf b/libports/src/lib/qt5/qtbase/mkspecs/genode-g++/qmake.conf new file mode 100644 index 0000000000..f99671fc15 --- /dev/null +++ b/libports/src/lib/qt5/qtbase/mkspecs/genode-g++/qmake.conf @@ -0,0 +1,12 @@ +# +# qmake configuration for genode-g++ +# + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental gdb_dwarf_index +QMAKE_INCREMENTAL_STYLE = sublib + +include(../common/linux.conf) +include(../common/gcc-base-unix.conf) +include(../common/g++-unix.conf) +load(qt_config) diff --git a/libports/src/lib/qt5/qtbase/mkspecs/genode-g++/qplatformdefs.h b/libports/src/lib/qt5/qtbase/mkspecs/genode-g++/qplatformdefs.h new file mode 100644 index 0000000000..d3b5acfa14 --- /dev/null +++ b/libports/src/lib/qt5/qtbase/mkspecs/genode-g++/qplatformdefs.h @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the qmake spec of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +// Get Qt defines/settings + +#include "qglobal.h" + +// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs + +// 1) need to reset default environment if _BSD_SOURCE is defined +// 2) need to specify POSIX thread interfaces explicitly in glibc 2.0 +// 3) it seems older glibc need this to include the X/Open stuff +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif + +#include + + +// We are hot - unistd.h should have turned on the specific APIs we requested + +#ifndef Q_OS_GENODE +#include +#endif +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#ifndef Q_OS_GENODE +#include +#endif +#include +#include +#include +#include +#ifdef Q_OS_GENODE +#define QT_NO_IPV6IFNAME +#endif +#ifndef QT_NO_IPV6IFNAME +#include +#endif + +#define QT_USE_XOPEN_LFS_EXTENSIONS +#ifdef Q_OS_GENODE +#include "../../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtbase/mkspecs/common/posix/qplatformdefs.h" +#else +#include "../common/posix/qplatformdefs.h" +#endif + +#ifdef Q_OS_GENODE +#undef QT_OPEN_LARGEFILE +#define QT_OPEN_LARGEFILE 0 +#endif + +#undef QT_SOCKLEN_T + +#if (defined(__GLIBC__) && (__GLIBC__ >= 2)) || defined(Q_OS_GENODE) +#define QT_SOCKLEN_T socklen_t +#else +#define QT_SOCKLEN_T int +#endif + +#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf +#endif + +#endif // QPLATFORMDEFS_H diff --git a/libports/src/lib/qt5/qtbase/src/corelib/global/qconfig-genode.h b/libports/src/lib/qt5/qtbase/src/corelib/global/qconfig-genode.h new file mode 100644 index 0000000000..68c47e9361 --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/corelib/global/qconfig-genode.h @@ -0,0 +1,550 @@ +/* Data structures */ +#ifndef QT_NO_STL +# define QT_NO_STL +#endif +//#ifndef QT_NO_TEXTDATE +//# define QT_NO_TEXTDATE +//#endif +//#ifndef QT_NO_DATESTRING +//# define QT_NO_DATESTRING +//#endif + +/* Dialogs */ +//#ifndef QT_NO_COLORDIALOG +//# define QT_NO_COLORDIALOG +//#endif +//#ifndef QT_NO_ERRORMESSAGE +//# define QT_NO_ERRORMESSAGE +//#endif +//#ifndef QT_NO_FILEDIALOG +//# define QT_NO_FILEDIALOG +//#endif +//#ifndef QT_NO_FONTDIALOG +//# define QT_NO_FONTDIALOG +//#endif +//#ifndef QT_NO_INPUTDIALOG +//# define QT_NO_INPUTDIALOG +//#endif +//#ifndef QT_NO_MESSAGEBOX +//# define QT_NO_MESSAGEBOX +//#endif +#ifndef QT_NO_PRINTDIALOG +# define QT_NO_PRINTDIALOG +#endif +#ifndef QT_NO_PRINTPREVIEWDIALOG +# define QT_NO_PRINTPREVIEWDIALOG +#endif +//#ifndef QT_NO_PROGRESSDIALOG +//# define QT_NO_PROGRESSDIALOG +//#endif +//#ifndef QT_NO_TABDIALOG +//# define QT_NO_TABDIALOG +//#endif +//#ifndef QT_NO_WIZARD +//# define QT_NO_WIZARD +//#endif + +/* File I/O */ +//#ifndef QT_NO_DOM +//# define QT_NO_DOM +//#endif +//#ifndef QT_NO_FILESYSTEMWATCHER +//# define QT_NO_FILESYSTEMWATCHER +//#endif +//#ifndef QT_NO_FILESYSTEMMODEL +//# define QT_NO_FILESYSTEMMODEL +//#endif +//#ifndef QT_NO_PROCESS +//# define QT_NO_PROCESS +//#endif +//#ifndef QT_NO_TEMPORARYFILE +//# define QT_NO_TEMPORARYFILE +//#endif +//#ifndef QT_NO_SETTINGS +//# define QT_NO_SETTINGS +//#endif +//#ifndef QT_NO_LIBRARY +//# define QT_NO_LIBRARY +//#endif + +/* Fonts */ +//#ifndef QT_NO_FREETYPE +//# define QT_NO_FREETYPE +//#endif +#ifndef QT_NO_QWS_QPF2 +# define QT_NO_QWS_QPF2 +#endif +#ifndef QT_FONTS_ARE_RESOURCES +# define QT_FONTS_ARE_RESOURCES +#endif + + +/* Images */ +//#ifndef QT_NO_IMAGEFORMATPLUGIN +//# define QT_NO_IMAGEFORMATPLUGIN +//#endif +//#ifndef QT_NO_IMAGEFORMAT_BMP +//# define QT_NO_IMAGEFORMAT_BMP +//#endif +//#ifndef QT_NO_IMAGEFORMAT_JPEG +//# define QT_NO_IMAGEFORMAT_JPEG +//#endif +//#ifndef QT_NO_IMAGEFORMAT_PNG +//# define QT_NO_IMAGEFORMAT_PNG +//#endif +//#ifndef QT_NO_IMAGEFORMAT_PPM +//# define QT_NO_IMAGEFORMAT_PPM +//#endif +//#ifndef QT_NO_IMAGEFORMAT_XBM +//# define QT_NO_IMAGEFORMAT_XBM +//#endif +//#ifndef QT_NO_IMAGEFORMAT_XPM +//# define QT_NO_IMAGEFORMAT_XPM +//#endif +//#ifndef QT_NO_IMAGE_HEURISTIC_MASK +//# define QT_NO_IMAGE_HEURISTIC_MASK +//#endif +//#ifndef QT_NO_MOVIE +//# define QT_NO_MOVIE +//#endif + +/* Internationalization */ +//#ifndef QT_NO_BIG_CODECS +//# define QT_NO_BIG_CODECS +//#endif +//#ifndef QT_NO_QWS_INPUTMETHODS +//# define QT_NO_QWS_INPUTMETHODS +//#endif +//#ifndef QT_NO_TEXTCODEC +//# define QT_NO_TEXTCODEC +//#endif +//#ifndef QT_NO_CODECS +//# define QT_NO_CODECS +//#endif +//#ifndef QT_NO_TRANSLATION +//# define QT_NO_TRANSLATION +//#endif +//#ifndef QT_NO_TRANSLATION_UTF8 +//# define QT_NO_TRANSLATION_UTF8 +//#endif + +/* ItemViews */ +//#ifndef QT_NO_ITEMVIEWS +//# define QT_NO_ITEMVIEWS +//#endif +//#ifndef QT_NO_DATAWIDGETMAPPER +//# define QT_NO_DATAWIDGETMAPPER +//#endif +//#ifndef QT_NO_DIRMODEL +//# define QT_NO_DIRMODEL +//#endif +//#ifndef QT_NO_LISTVIEW +//# define QT_NO_LISTVIEW +//#endif +//#ifndef QT_NO_COLUMNVIEW +//# define QT_NO_COLUMNVIEW +//#endif +//#ifndef QT_NO_PROXYMODEL +//# define QT_NO_PROXYMODEL +//#endif +//#ifndef QT_NO_SORTFILTERPROXYMODEL +//# define QT_NO_SORTFILTERPROXYMODEL +//#endif +//#ifndef QT_NO_STANDARDITEMMODEL +//# define QT_NO_STANDARDITEMMODEL +//#endif +//#ifndef QT_NO_STRINGLISTMODEL +//# define QT_NO_STRINGLISTMODEL +//#endif +//#ifndef QT_NO_TABLEVIEW +//# define QT_NO_TABLEVIEW +//#endif +//#ifndef QT_NO_TREEVIEW +//# define QT_NO_TREEVIEW +//#endif + +/* Kernel */ +//#ifndef QT_NO_ACTION +//# define QT_NO_ACTION +//#endif +//#ifndef QT_NO_CLIPBOARD +//# define QT_NO_CLIPBOARD +//#endif +//#ifndef QT_NO_CSSPARSER +//# define QT_NO_CSSPARSER +//#endif +//#ifndef QT_NO_CURSOR +//# define QT_NO_CURSOR +//#endif +//#ifndef QT_NO_DRAGANDDROP +//# define QT_NO_DRAGANDDROP +//#endif +//#ifndef QT_NO_EFFECTS +//# define QT_NO_EFFECTS +//#endif +//#ifndef QT_NO_PROPERTIES +//# define QT_NO_PROPERTIES +//#endif +#ifndef QT_NO_SESSIONMANAGER +# define QT_NO_SESSIONMANAGER +#endif +#ifndef QT_NO_SHAREDMEMORY +# define QT_NO_SHAREDMEMORY +#endif +//#ifndef QT_NO_SHORTCUT +//# define QT_NO_SHORTCUT +//#endif +#ifndef QT_NO_SOUND +# define QT_NO_SOUND +#endif +#ifndef QT_NO_SYSTEMLOCALE +# define QT_NO_SYSTEMLOCALE +#endif +#ifndef QT_NO_SYSTEMSEMAPHORE +# define QT_NO_SYSTEMSEMAPHORE +#endif +//#ifndef QT_NO_TABLETEVENT +//# define QT_NO_TABLETEVENT +//#endif +//#ifndef QT_NO_TEXTHTMLPARSER +//# define QT_NO_TEXTHTMLPARSER +//#endif +#ifndef QT_NO_CONCURRENT +# define QT_NO_CONCURRENT +#endif +//#ifndef QT_NO_WHEELEVENT +//# define QT_NO_WHEELEVENT +//#endif +//#ifndef QT_NO_XMLSTREAM +//# define QT_NO_XMLSTREAM +//#endif +//#ifndef QT_NO_XMLSTREAMREADER +//# define QT_NO_XMLSTREAMREADER +//#endif +//#ifndef QT_NO_XMLSTREAMWRITER +//# define QT_NO_XMLSTREAMWRITER +//#endif + +/* Networking */ +#ifndef QT_NO_COP +# define QT_NO_COP +#endif +//#ifndef QT_NO_HOSTINFO +//# define QT_NO_HOSTINFO +//#endif +//#ifndef QT_NO_HTTP +//# define QT_NO_HTTP +//#endif +//#ifndef QT_NO_NETWORKPROXY +//# define QT_NO_NETWORKPROXY +//#endif +//#ifndef QT_NO_SOCKS5 +//# define QT_NO_SOCKS5 +//#endif +#ifndef QT_NO_UDPSOCKET +# define QT_NO_UDPSOCKET +#endif +#ifndef QT_NO_URLINFO +# define QT_NO_URLINFO +#endif +#ifndef QT_NO_FTP +# define QT_NO_FTP +#endif +/* found in source files */ +//#ifndef QT_NO_LOCALSOCKET +//# define QT_NO_LOCALSOCKET +//#endif +//#ifndef QT_NO_LOCALSERVER +//# define QT_NO_LOCALSERVER +//#endif +#ifndef QT_NO_NETWORKINTERFACE +# define QT_NO_NETWORKINTERFACE +#endif + + +/* Painting */ +//#ifndef QT_NO_COLORNAMES +//# define QT_NO_COLORNAMES +//#endif +//#ifndef QT_NO_DIRECTPAINTER +//# define QT_NO_DIRECTPAINTER +//#endif +//#ifndef QT_NO_PAINTONSCREEN +//# define QT_NO_PAINTONSCREEN +//#endif +//#ifndef QT_NO_PAINT_DEBUG +//# define QT_NO_PAINT_DEBUG +//#endif +//#ifndef QT_NO_PICTURE +//# define QT_NO_PICTURE +//#endif +#ifndef QT_NO_PRINTER +# define QT_NO_PRINTER +#endif +#ifndef QT_NO_CUPS +# define QT_NO_CUPS +#endif + +/* Qt for Embedded Linux */ +//#ifndef QT_NO_QWSEMBEDWIDGET +//# define QT_NO_QWSEMBEDWIDGET +//#endif +//#ifndef QT_NO_QWS_ALPHA_CURSOR +//# define QT_NO_QWS_ALPHA_CURSOR +//#endif +#ifndef QT_NO_QWS_CURSOR +# define QT_NO_QWS_CURSOR +#endif +//#ifndef QT_NO_QWS_DECORATION_DEFAULT +//# define QT_NO_QWS_DECORATION_DEFAULT +//#endif +//#ifndef QT_NO_QWS_DECORATION_STYLED +//# define QT_NO_QWS_DECORATION_STYLED +//#endif +//#ifndef QT_NO_QWS_DECORATION_WINDOWS +//# define QT_NO_QWS_DECORATION_WINDOWS +//#endif +//#ifndef QT_NO_QWS_MANAGER +//# define QT_NO_QWS_MANAGER +//#endif +//#ifndef QT_NO_QWS_KEYBOARD +//# define QT_NO_QWS_KEYBOARD +//#endif +//#ifndef QT_NO_QWS_MOUSE +//# define QT_NO_QWS_MOUSE +//#endif +//#ifndef QT_NO_QWS_MOUSE_AUTO +//# define QT_NO_QWS_MOUSE_AUTO +//#endif +//#ifndef QT_NO_QWS_MOUSE_MANUAL +//# define QT_NO_QWS_MOUSE_MANUAL +//#endif +#ifndef QT_NO_QWS_MULTIPROCESS +# define QT_NO_QWS_MULTIPROCESS +#endif +#ifndef QT_NO_QWS_SOUNDSERVER +# define QT_NO_QWS_SOUNDSERVER +#endif +//#ifndef QT_NO_QWS_PROPERTIES +//# define QT_NO_QWS_PROPERTIES +//#endif +//#ifndef QT_NO_QWS_PROXYSCREEN +//# define QT_NO_QWS_PROXYSCREEN +//#endif +//#ifndef QT_NO_QWS_DYNAMICSCREENTRANSFORMATION +//# define QT_NO_QWS_DYNAMICSCREENTRANSFORMATION +//#endif + +/* SVG */ +//#ifndef QT_NO_SVG +//# define QT_NO_SVG +//#endif +//#ifndef QT_NO_GRAPHICSSVGITEM +//# define QT_NO_GRAPHICSSVGITEM +//#endif +//#ifndef QT_NO_SVGGENERATOR +//# define QT_NO_SVGGENERATOR +//#endif +//#ifndef QT_NO_SVGRENDERER +//# define QT_NO_SVGRENDERER +//#endif +//#ifndef QT_NO_SVGWIDGET +//# define QT_NO_SVGWIDGET +//#endif + +/* Styles */ +//#ifndef QT_NO_STYLE_FUSION +//# define QT_NO_STYLE_FUSION +//#endif +//#ifndef QT_NO_STYLE_STYLESHEET +//# define QT_NO_STYLE_STYLESHEET +//#endif +//#ifndef QT_NO_STYLE_WINDOWSCE +//# define QT_NO_STYLE_WINDOWSCE +//#endif +//#ifndef QT_NO_STYLE_WINDOWSMOBILE +//# define QT_NO_STYLE_WINDOWSMOBILE +//#endif +//#ifndef QT_NO_STYLE_WINDOWSVISTA +//# define QT_NO_STYLE_WINDOWSVISTA +//#endif +//#ifndef QT_NO_STYLE_WINDOWSXP +//# define QT_NO_STYLE_WINDOWSXP +//#endif + +/* Utilities */ +//#ifndef QT_NO_ACCESSIBILITY +//# define QT_NO_ACCESSIBILITY +//#endif +//#ifndef QT_NO_COMPLETER +//# define QT_NO_COMPLETER +//#endif +//#ifndef QT_NO_DESKTOPSERVICES +//# define QT_NO_DESKTOPSERVICES +//#endif +//#ifndef QT_NO_SCRIPT +//# define QT_NO_SCRIPT +//#endif +//#ifndef QT_NO_SYSTEMTRAYICON +//# define QT_NO_SYSTEMTRAYICON +//#endif +//#ifndef QT_NO_UNDOCOMMAND +//# define QT_NO_UNDOCOMMAND +//#endif +//#ifndef QT_NO_UNDOGROUP +//# define QT_NO_UNDOGROUP +//#endif +//#ifndef QT_NO_UNDOSTACK +//# define QT_NO_UNDOSTACK +//#endif +//#ifndef QT_NO_UNDOVIEW +//# define QT_NO_UNDOVIEW +//#endif +//#ifndef QT_NO_GESTURES +//# define QT_NO_GESTURES +//#endif + +/* Widgets */ +//#ifndef QT_NO_GROUPBOX +//# define QT_NO_GROUPBOX +//#endif +//#ifndef QT_NO_BUTTONGROUP +//# define QT_NO_BUTTONGROUP +//#endif +//#ifndef QT_NO_LCDNUMBER +//# define QT_NO_LCDNUMBER +//#endif +//#ifndef QT_NO_LINEEDIT +//# define QT_NO_LINEEDIT +//#endif +//#ifndef QT_NO_COMBOBOX +//# define QT_NO_COMBOBOX +//#endif +//#ifndef QT_NO_FONTCOMBOBOX +//# define QT_NO_FONTCOMBOBOX +//#endif +//#ifndef QT_NO_SPINBOX +//# define QT_NO_SPINBOX +//#endif +//#ifndef QT_NO_CALENDARWIDGET +//# define QT_NO_CALENDARWIDGET +//#endif +//#ifndef QT_NO_DATETIMEEDIT +//# define QT_NO_DATETIMEEDIT +//#endif +//#ifndef QT_NO_LISTWIDGET +//# define QT_NO_LISTWIDGET +//#endif +//#ifndef QT_NO_MENU +//# define QT_NO_MENU +//#endif +//#ifndef QT_NO_CONTEXTMENU +//# define QT_NO_CONTEXTMENU +//#endif +//#ifndef QT_NO_MAINWINDOW +//# define QT_NO_MAINWINDOW +//#endif +//#ifndef QT_NO_DOCKWIDGET +//# define QT_NO_DOCKWIDGET +//#endif +//#ifndef QT_NO_TOOLBAR +//# define QT_NO_TOOLBAR +//#endif +//#ifndef QT_NO_MENUBAR +//# define QT_NO_MENUBAR +//#endif +//#ifndef QT_NO_PROGRESSBAR +//# define QT_NO_PROGRESSBAR +//#endif +//#ifndef QT_NO_RESIZEHANDLER +//# define QT_NO_RESIZEHANDLER +//#endif +//#ifndef QT_NO_RUBBERBAND +//# define QT_NO_RUBBERBAND +//#endif +//#ifndef QT_NO_SPLITTER +//# define QT_NO_SPLITTER +//#endif +//#ifndef QT_NO_SIGNALMAPPER +//# define QT_NO_SIGNALMAPPER +//#endif +//#ifndef QT_NO_SIZEGRIP +//# define QT_NO_SIZEGRIP +//#endif +//#ifndef QT_NO_SLIDER +//# define QT_NO_SLIDER +//#endif +//#ifndef QT_NO_DIAL +//# define QT_NO_DIAL +//#endif +//#ifndef QT_NO_SCROLLBAR +//# define QT_NO_SCROLLBAR +//#endif +//#ifndef QT_NO_SCROLLAREA +//# define QT_NO_SCROLLAREA +//#endif +//#ifndef QT_NO_GRAPHICSVIEW +//# define QT_NO_GRAPHICSVIEW +//#endif +//#ifndef QT_NO_PRINTPREVIEWWIDGET +//# define QT_NO_PRINTPREVIEWWIDGET +//#endif +//#ifndef QT_NO_MDIAREA +//# define QT_NO_MDIAREA +//#endif +//#ifndef QT_NO_TEXTEDIT +//# define QT_NO_TEXTEDIT +//#endif +//#ifndef QT_NO_SYNTAXHIGHLIGHTER +//# define QT_NO_SYNTAXHIGHLIGHTER +//#endif +//#ifndef QT_NO_TEXTBROWSER +//# define QT_NO_TEXTBROWSER +//#endif +//#ifndef QT_NO_SPINWIDGET +//# define QT_NO_SPINWIDGET +//#endif +//#ifndef QT_NO_SPLASHSCREEN +//# define QT_NO_SPLASHSCREEN +//#endif +//#ifndef QT_NO_STACKEDWIDGET +//# define QT_NO_STACKEDWIDGET +//#endif +//#ifndef QT_NO_TABWIDGET +//# define QT_NO_TABWIDGET +//#endif +//#ifndef QT_NO_STATUSBAR +//# define QT_NO_STATUSBAR +//#endif +//#ifndef QT_NO_STATUSTIP +//# define QT_NO_STATUSTIP +//#endif +//#ifndef QT_NO_TABLEWIDGET +//# define QT_NO_TABLEWIDGET +//#endif +//#ifndef QT_NO_TOOLBUTTON +//# define QT_NO_TOOLBUTTON +//#endif +//#ifndef QT_NO_TABBAR +//# define QT_NO_TABBAR +//#endif +//#ifndef QT_NO_TOOLBOX +//# define QT_NO_TOOLBOX +//#endif +//#ifndef QT_NO_WHATSTHIS +//# define QT_NO_WHATSTHIS +//#endif +//#ifndef QT_NO_TOOLTIP +//# define QT_NO_TOOLTIP +//#endif +//#ifndef QT_NO_TREEWIDGET +//# define QT_NO_TREEWIDGET +//#endif +//#ifndef QT_NO_VALIDATOR +//# define QT_NO_VALIDATOR +//#endif + +/* Windows */ +//#ifndef QT_NO_WIN_ACTIVEQT +//# define QT_NO_WIN_ACTIVEQT +//#endif diff --git a/libports/src/lib/qt5/qtbase/src/corelib/global/qconfig.cpp b/libports/src/lib/qt5/qtbase/src/corelib/global/qconfig.cpp new file mode 100644 index 0000000000..89d4e0fd58 --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/corelib/global/qconfig.cpp @@ -0,0 +1,39 @@ +/* License Info */ +static const char qt_configure_licensee_str [256 + 12] = "qt_lcnsuser=Open Source"; +static const char qt_configure_licensed_products_str [256 + 12] = "qt_lcnsprod=OpenSource"; + +/* Installation date */ +static const char qt_configure_installation [12+11] = "qt_instdate=2013-05-23"; + +/* Installation Info */ +static const char qt_configure_prefix_path_strs[][256 + 12] = { + "qt_prfxpath=:/qt", + "qt_docspath=:/qt/doc", + "qt_hdrspath=:/qt/include", + "qt_libspath=:/qt/lib", + "qt_lbexpath=:/qt/libexec", + "qt_binspath=:/qt/bin", + "qt_plugpath=:/qt/plugins", + "qt_impspath=:/qt/imports", + "qt_qml2path=:/qt/qml", + "qt_adatpath=:/qt", + "qt_datapath=:/qt", + "qt_trnspath=:/qt/translations", + "qt_xmplpath=:/qt/examples", + "qt_tstspath=:/qt/tests", +#ifdef QT_BUILD_QMAKE + "qt_ssrtpath=", + "qt_hpfxpath=:/qt", + "qt_hbinpath=:/qt/bin", + "qt_hdatpath=:/qt", + "qt_targspec=genode-g++", + "qt_hostspec=linux-g++", +#endif +}; +static const char qt_configure_settings_path_str[256 + 12] = "qt_stngpath=:/qt/etc/xdg"; + +/* strlen( "qt_lcnsxxxx" ) == 12 */ +#define QT_CONFIGURE_LICENSEE qt_configure_licensee_str + 12; +#define QT_CONFIGURE_LICENSED_PRODUCTS qt_configure_licensed_products_str + 12; + +#define QT_CONFIGURE_SETTINGS_PATH qt_configure_settings_path_str + 12; diff --git a/libports/src/lib/qt5/qtbase/src/corelib/global/qconfig.h b/libports/src/lib/qt5/qtbase/src/corelib/global/qconfig.h new file mode 100644 index 0000000000..f9361ac946 --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/corelib/global/qconfig.h @@ -0,0 +1,195 @@ +#ifndef QT_BOOTSTRAPPED +#include "qconfig-genode.h" +#endif + +/* Qt Edition */ +#ifndef QT_EDITION +# define QT_EDITION QT_EDITION_OPENSOURCE +#endif + +/* Compile time features */ +#ifdef QT_ARCH_X86_64 +# define QT_POINTER_SIZE 8 +#endif +#ifdef QT_ARCH_I386 +# define QT_POINTER_SIZE 4 +#endif + +//#define QT_REDUCE_RELOCATIONS + +// Compiler sub-arch support + +#if defined(QT_BUILTIN_GIF_READER) && defined(QT_NO_BUILTIN_GIF_READER) +# undef QT_BUILTIN_GIF_READER +#elif !defined(QT_BUILTIN_GIF_READER) && !defined(QT_NO_BUILTIN_GIF_READER) +# define QT_BUILTIN_GIF_READER 1 +#endif + +#if defined(QT_LINKED_OPENSSL) && defined(QT_NO_LINKED_OPENSSL) +# undef QT_LINKED_OPENSSL +#elif !defined(QT_LINKED_OPENSSL) && !defined(QT_NO_LINKED_OPENSSL) +# define QT_LINKED_OPENSSL +#endif + +#if defined(QT_NO_ACCESSIBILITY) && defined(QT_ACCESSIBILITY) +# undef QT_NO_ACCESSIBILITY +#elif !defined(QT_NO_ACCESSIBILITY) && !defined(QT_ACCESSIBILITY) +# define QT_NO_ACCESSIBILITY +#endif + +#if defined(QT_NO_CLOCK_MONOTONIC) && defined(QT_CLOCK_MONOTONIC) +# undef QT_NO_CLOCK_MONOTONIC +#elif !defined(QT_NO_CLOCK_MONOTONIC) && !defined(QT_CLOCK_MONOTONIC) +# define QT_NO_CLOCK_MONOTONIC +#endif + +#if defined(QT_NO_CUPS) && defined(QT_CUPS) +# undef QT_NO_CUPS +#elif !defined(QT_NO_CUPS) && !defined(QT_CUPS) +# define QT_NO_CUPS +#endif + +#if defined(QT_NO_DBUS) && defined(QT_DBUS) +# undef QT_NO_DBUS +#elif !defined(QT_NO_DBUS) && !defined(QT_DBUS) +# define QT_NO_DBUS +#endif + +#if defined(QT_NO_EGL) && defined(QT_EGL) +# undef QT_NO_EGL +#elif !defined(QT_NO_EGL) && !defined(QT_EGL) +# define QT_NO_EGL +#endif + +#if defined(QT_NO_EGLFS) && defined(QT_EGLFS) +# undef QT_NO_EGLFS +#elif !defined(QT_NO_EGLFS) && !defined(QT_EGLFS) +# define QT_NO_EGLFS +#endif + +#if defined(QT_NO_EVENTFD) && defined(QT_EVENTFD) +# undef QT_NO_EVENTFD +#elif !defined(QT_NO_EVENTFD) && !defined(QT_EVENTFD) +# define QT_NO_EVENTFD +#endif + +#if defined(QT_NO_FONTCONFIG) && defined(QT_FONTCONFIG) +# undef QT_NO_FONTCONFIG +#elif !defined(QT_NO_FONTCONFIG) && !defined(QT_FONTCONFIG) +# define QT_NO_FONTCONFIG +#endif + +#if defined(QT_NO_GLIB) && defined(QT_GLIB) +# undef QT_NO_GLIB +#elif !defined(QT_NO_GLIB) && !defined(QT_GLIB) +# define QT_NO_GLIB +#endif + +#if defined(QT_NO_GSTREAMER) && defined(QT_GSTREAMER) +# undef QT_NO_GSTREAMER +#elif !defined(QT_NO_GSTREAMER) && !defined(QT_GSTREAMER) +# define QT_NO_GSTREAMER +#endif + +#if defined(QT_NO_ICONV) && defined(QT_ICONV) +# undef QT_NO_ICONV +#elif !defined(QT_NO_ICONV) && !defined(QT_ICONV) +# define QT_NO_ICONV +#endif + +#if defined(QT_NO_NIS) && defined(QT_NIS) +# undef QT_NO_NIS +#elif !defined(QT_NO_NIS) && !defined(QT_NIS) +# define QT_NO_NIS +#endif + +#if defined(QT_NO_OPENGL) && defined(QT_OPENGL) +# undef QT_NO_OPENGL +#elif !defined(QT_NO_OPENGL) && !defined(QT_OPENGL) +# define QT_NO_OPENGL +#endif + +#if defined(QT_NO_OPENVG) && defined(QT_OPENVG) +# undef QT_NO_OPENVG +#elif !defined(QT_NO_OPENVG) && !defined(QT_OPENVG) +# define QT_NO_OPENVG +#endif + +#if defined(QT_NO_PULSEAUDIO) && defined(QT_PULSEAUDIO) +# undef QT_NO_PULSEAUDIO +#elif !defined(QT_NO_PULSEAUDIO) && !defined(QT_PULSEAUDIO) +# define QT_NO_PULSEAUDIO +#endif + +#if defined(QT_NO_STYLE_GTK) && defined(QT_STYLE_GTK) +# undef QT_NO_STYLE_GTK +#elif !defined(QT_NO_STYLE_GTK) && !defined(QT_STYLE_GTK) +# define QT_NO_STYLE_GTK +#endif + +#if defined(QT_NO_ZLIB) && defined(QT_ZLIB) +# undef QT_NO_ZLIB +#elif !defined(QT_NO_ZLIB) && !defined(QT_ZLIB) +# define QT_NO_ZLIB +#endif + +#if defined(QT_RUNTIME_XCURSOR) && defined(QT_NO_RUNTIME_XCURSOR) +# undef QT_RUNTIME_XCURSOR +#elif !defined(QT_RUNTIME_XCURSOR) && !defined(QT_NO_RUNTIME_XCURSOR) +# define QT_RUNTIME_XCURSOR +#endif + +#if defined(QT_RUNTIME_XFIXES) && defined(QT_NO_RUNTIME_XFIXES) +# undef QT_RUNTIME_XFIXES +#elif !defined(QT_RUNTIME_XFIXES) && !defined(QT_NO_RUNTIME_XFIXES) +# define QT_RUNTIME_XFIXES +#endif + +#if defined(QT_RUNTIME_XINERAMA) && defined(QT_NO_RUNTIME_XINERAMA) +# undef QT_RUNTIME_XINERAMA +#elif !defined(QT_RUNTIME_XINERAMA) && !defined(QT_NO_RUNTIME_XINERAMA) +# define QT_RUNTIME_XINERAMA +#endif + +#if defined(QT_RUNTIME_XINPUT) && defined(QT_NO_RUNTIME_XINPUT) +# undef QT_RUNTIME_XINPUT +#elif !defined(QT_RUNTIME_XINPUT) && !defined(QT_NO_RUNTIME_XINPUT) +# define QT_RUNTIME_XINPUT +#endif + +#if defined(QT_RUNTIME_XRANDR) && defined(QT_NO_RUNTIME_XRANDR) +# undef QT_RUNTIME_XRANDR +#elif !defined(QT_RUNTIME_XRANDR) && !defined(QT_NO_RUNTIME_XRANDR) +# define QT_RUNTIME_XRANDR +#endif + +#if defined(QT_USE_MATH_H_FLOATS) && defined(QT_NO_USE_MATH_H_FLOATS) +# undef QT_USE_MATH_H_FLOATS +#elif !defined(QT_USE_MATH_H_FLOATS) && !defined(QT_NO_USE_MATH_H_FLOATS) +# define QT_USE_MATH_H_FLOATS +#endif + +#ifndef Q_WS_QPA +# define Q_WS_QPA +#endif + +#define QT_VISIBILITY_AVAILABLE + +#define QT_QPA_DEFAULT_PLATFORM_NAME "nitpicker" + +/* needed for QtScript classic */ +#ifndef QT_STATIC +# if defined(QT_BUILD_SCRIPT_LIB) +# define Q_SCRIPT_EXPORT Q_DECL_EXPORT +# else +# define Q_SCRIPT_EXPORT Q_DECL_IMPORT +# endif +# if defined(QT_BUILD_SCRIPTTOOLS_LIB) +# define Q_SCRIPTTOOLS_EXPORT Q_DECL_EXPORT +# else +# define Q_SCRIPTTOOLS_EXPORT Q_DECL_IMPORT +# endif +#else +# define Q_SCRIPT_EXPORT +# define Q_SCRIPTTOOLS_EXPORT +#endif diff --git a/libports/src/lib/qt5/qtbase/src/corelib/io/qprocess_genode.cpp b/libports/src/lib/qt5/qtbase/src/corelib/io/qprocess_genode.cpp new file mode 100644 index 0000000000..1446b9c01a --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/corelib/io/qprocess_genode.cpp @@ -0,0 +1,1595 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//#define QPROCESS_DEBUG +#include "qdebug.h" + +#ifndef QT_NO_PROCESS + +#ifndef Q_OS_GENODE +#if defined QPROCESS_DEBUG +#include "qstring.h" +#include + + +/* + Returns a human readable representation of the first \a len + characters in \a data. +*/ +QT_BEGIN_NAMESPACE +static QByteArray qt_prettyDebug(const char *data, int len, int maxSize) +{ + if (!data) return "(null)"; + QByteArray out; + for (int i = 0; i < len; ++i) { + char c = data[i]; + if (isprint(c)) { + out += c; + } else switch (c) { + case '\n': out += "\\n"; break; + case '\r': out += "\\r"; break; + case '\t': out += "\\t"; break; + default: + QString tmp; + tmp.sprintf("\\%o", c); + out += tmp.toLatin1(); + } + } + + if (len < maxSize) + out += "..."; + + return out; +} +QT_END_NAMESPACE +#endif +#endif /* Q_OS_GENODE */ + +#include "qplatformdefs.h" + +#include "qprocess.h" +#include "qprocess_p.h" +#include "private/qcore_unix_p.h" + +#ifdef Q_OS_MAC +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#ifdef Q_OS_QNX +#include "qvarlengtharray.h" + +#include +#include +#endif + +QT_BEGIN_NAMESPACE + +// POSIX requires PIPE_BUF to be 512 or larger +// so we will use 512 +static const int errorBufferMax = 512; +#ifndef Q_OS_GENODE +static int qt_qprocess_deadChild_pipe[2]; +static struct sigaction qt_sa_old_sigchld_handler; +static void qt_sa_sigchld_handler(int signum) +{ + qt_safe_write(qt_qprocess_deadChild_pipe[1], "", 1); +#if defined (QPROCESS_DEBUG) + fprintf(stderr, "*** SIGCHLD\n"); +#endif + + // load it as volatile + void (*oldAction)(int) = ((volatile struct sigaction *)&qt_sa_old_sigchld_handler)->sa_handler; + if (oldAction && oldAction != SIG_IGN) + oldAction(signum); +} +#endif /* Q_OS_GENODE */ + +static inline void add_fd(int &nfds, int fd, fd_set *fdset) +{ + FD_SET(fd, fdset); + if ((fd) > nfds) + nfds = fd; +} + +struct QProcessInfo { + QProcess *process; + int deathPipe; + int exitResult; + pid_t pid; + int serialNumber; +}; + +#ifndef Q_OS_GENODE +class QProcessManager : public QThread +{ + Q_OBJECT +public: + QProcessManager(); + ~QProcessManager(); + + void run(); + void catchDeadChildren(); + void add(pid_t pid, QProcess *process); + void remove(QProcess *process); + void lock(); + void unlock(); + +private: + QMutex mutex; + QHash children; +}; + + +static QProcessManager *processManagerInstance = 0; + +static QProcessManager *processManager() +{ + // The constructor of QProcessManager should be called only once + // so we cannot use Q_GLOBAL_STATIC directly for QProcessManager + static QBasicMutex processManagerGlobalMutex; + QMutexLocker locker(&processManagerGlobalMutex); + + if (!processManagerInstance) + new QProcessManager; + + Q_ASSERT(processManagerInstance); + return processManagerInstance; +} + +QProcessManager::QProcessManager() +{ +#if defined (QPROCESS_DEBUG) + qDebug() << "QProcessManager::QProcessManager()"; +#endif + // initialize the dead child pipe and make it non-blocking. in the + // extremely unlikely event that the pipe fills up, we do not under any + // circumstances want to block. + qt_safe_pipe(qt_qprocess_deadChild_pipe, O_NONBLOCK); + + // set up the SIGCHLD handler, which writes a single byte to the dead + // child pipe every time a child dies. + struct sigaction action; + memset(&action, 0, sizeof(action)); + action.sa_handler = qt_sa_sigchld_handler; + action.sa_flags = SA_NOCLDSTOP; + ::sigaction(SIGCHLD, &action, &qt_sa_old_sigchld_handler); + + processManagerInstance = this; +} + +QProcessManager::~QProcessManager() +{ + // notify the thread that we're shutting down. + qt_safe_write(qt_qprocess_deadChild_pipe[1], "@", 1); + qt_safe_close(qt_qprocess_deadChild_pipe[1]); + wait(); + + // on certain unixes, closing the reading end of the pipe will cause + // select in run() to block forever, rather than return with EBADF. + qt_safe_close(qt_qprocess_deadChild_pipe[0]); + + qt_qprocess_deadChild_pipe[0] = -1; + qt_qprocess_deadChild_pipe[1] = -1; + + qDeleteAll(children.values()); + children.clear(); + + struct sigaction currentAction; + ::sigaction(SIGCHLD, 0, ¤tAction); + if (currentAction.sa_handler == qt_sa_sigchld_handler) { + ::sigaction(SIGCHLD, &qt_sa_old_sigchld_handler, 0); + } + + processManagerInstance = 0; +} + +void QProcessManager::run() +{ + forever { + fd_set readset; + FD_ZERO(&readset); + FD_SET(qt_qprocess_deadChild_pipe[0], &readset); + +#if defined (QPROCESS_DEBUG) + qDebug() << "QProcessManager::run() waiting for children to die"; +#endif + + // block forever, or until activity is detected on the dead child + // pipe. the only other peers are the SIGCHLD signal handler, and the + // QProcessManager destructor. + int nselect = select(qt_qprocess_deadChild_pipe[0] + 1, &readset, 0, 0, 0); + if (nselect < 0) { + if (errno == EINTR) + continue; + break; + } + + // empty only one byte from the pipe, even though several SIGCHLD + // signals may have been delivered in the meantime, to avoid race + // conditions. + char c; + if (qt_safe_read(qt_qprocess_deadChild_pipe[0], &c, 1) < 0 || c == '@') + break; + + // catch any and all children that we can. + catchDeadChildren(); + } +} + +void QProcessManager::catchDeadChildren() +{ + QMutexLocker locker(&mutex); + + // try to catch all children whose pid we have registered, and whose + // deathPipe is still valid (i.e, we have not already notified it). + QHash::Iterator it = children.begin(); + while (it != children.end()) { + // notify all children that they may have died. they need to run + // waitpid() in their own thread. + QProcessInfo *info = it.value(); + qt_safe_write(info->deathPipe, "", 1); + +#if defined (QPROCESS_DEBUG) + qDebug() << "QProcessManager::run() sending death notice to" << info->process; +#endif + ++it; + } +} + +static QBasicAtomicInt idCounter = Q_BASIC_ATOMIC_INITIALIZER(1); + +void QProcessManager::add(pid_t pid, QProcess *process) +{ +#if defined (QPROCESS_DEBUG) + qDebug() << "QProcessManager::add() adding pid" << pid << "process" << process; +#endif + + // insert a new info structure for this process + QProcessInfo *info = new QProcessInfo; + info->process = process; + info->deathPipe = process->d_func()->deathPipe[1]; + info->exitResult = 0; + info->pid = pid; + + int serial = idCounter.fetchAndAddRelaxed(1); + process->d_func()->serial = serial; + children.insert(serial, info); +} + +void QProcessManager::remove(QProcess *process) +{ + QMutexLocker locker(&mutex); + + int serial = process->d_func()->serial; + QProcessInfo *info = children.take(serial); +#if defined (QPROCESS_DEBUG) + if (info) + qDebug() << "QProcessManager::remove() removing pid" << info->pid << "process" << info->process; +#endif + delete info; +} + +void QProcessManager::lock() +{ + mutex.lock(); +} + +void QProcessManager::unlock() +{ + mutex.unlock(); +} + +static void qt_create_pipe(int *pipe) +{ + if (pipe[0] != -1) + qt_safe_close(pipe[0]); + if (pipe[1] != -1) + qt_safe_close(pipe[1]); + if (qt_safe_pipe(pipe) != 0) { + qWarning("QProcessPrivate::createPipe: Cannot create pipe %p: %s", + pipe, qPrintable(qt_error_string(errno))); + } +} +#endif /* Q_OS_GENODE */ + +void QProcessPrivate::destroyPipe(int *pipe) +{ +#ifdef Q_OS_GENODE +#if defined QPROCESS_DEBUG + qDebug() << "destroyPipe()"; +#endif +#else + if (pipe[1] != -1) { + qt_safe_close(pipe[1]); + pipe[1] = -1; + } + if (pipe[0] != -1) { + qt_safe_close(pipe[0]); + pipe[0] = -1; + } +#endif /* Q_OS_GENODE */ +} + +void QProcessPrivate::destroyChannel(Channel *channel) +{ +#ifdef Q_OS_GENODE +#if defined QPROCESS_DEBUG + qDebug() << "destroyChannel()"; +#endif +#else + destroyPipe(channel->pipe); +#endif /* Q_OS_GENODE */ +} + +/* + Create the pipes to a QProcessPrivate::Channel. + + This function must be called in order: stdin, stdout, stderr +*/ +bool QProcessPrivate::createChannel(Channel &channel) +{ +#ifdef Q_OS_GENODE +#if defined QPROCESS_DEBUG + qDebug() << "createChannel()"; +#endif +#else + Q_Q(QProcess); + + if (&channel == &stderrChannel && processChannelMode == QProcess::MergedChannels) { + channel.pipe[0] = -1; + channel.pipe[1] = -1; + return true; + } + + if (channel.type == Channel::Normal) { + // we're piping this channel to our own process + qt_create_pipe(channel.pipe); + + // create the socket notifiers + if (threadData->eventDispatcher) { + if (&channel == &stdinChannel) { + channel.notifier = new QSocketNotifier(channel.pipe[1], + QSocketNotifier::Write, q); + channel.notifier->setEnabled(false); + QObject::connect(channel.notifier, SIGNAL(activated(int)), + q, SLOT(_q_canWrite())); + } else { + channel.notifier = new QSocketNotifier(channel.pipe[0], + QSocketNotifier::Read, q); + const char *receiver; + if (&channel == &stdoutChannel) + receiver = SLOT(_q_canReadStandardOutput()); + else + receiver = SLOT(_q_canReadStandardError()); + QObject::connect(channel.notifier, SIGNAL(activated(int)), + q, receiver); + } + } + + return true; + } else if (channel.type == Channel::Redirect) { + // we're redirecting the channel to/from a file + QByteArray fname = QFile::encodeName(channel.file); + + if (&channel == &stdinChannel) { + // try to open in read-only mode + channel.pipe[1] = -1; + if ( (channel.pipe[0] = qt_safe_open(fname, O_RDONLY)) != -1) + return true; // success + + q->setErrorString(QProcess::tr("Could not open input redirection for reading")); + } else { + int mode = O_WRONLY | O_CREAT; + if (channel.append) + mode |= O_APPEND; + else + mode |= O_TRUNC; + + channel.pipe[0] = -1; + if ( (channel.pipe[1] = qt_safe_open(fname, mode, 0666)) != -1) + return true; // success + + q->setErrorString(QProcess::tr("Could not open output redirection for writing")); + } + + // could not open file + processError = QProcess::FailedToStart; + emit q->error(processError); + cleanup(); + return false; + } else { + Q_ASSERT_X(channel.process, "QProcess::start", "Internal error"); + + Channel *source; + Channel *sink; + + if (channel.type == Channel::PipeSource) { + // we are the source + source = &channel; + sink = &channel.process->stdinChannel; + + Q_ASSERT(source == &stdoutChannel); + Q_ASSERT(sink->process == this && sink->type == Channel::PipeSink); + } else { + // we are the sink; + source = &channel.process->stdoutChannel; + sink = &channel; + + Q_ASSERT(sink == &stdinChannel); + Q_ASSERT(source->process == this && source->type == Channel::PipeSource); + } + + if (source->pipe[1] != INVALID_Q_PIPE || sink->pipe[0] != INVALID_Q_PIPE) { + // already created, do nothing + return true; + } else { + Q_ASSERT(source->pipe[0] == INVALID_Q_PIPE && source->pipe[1] == INVALID_Q_PIPE); + Q_ASSERT(sink->pipe[0] == INVALID_Q_PIPE && sink->pipe[1] == INVALID_Q_PIPE); + + Q_PIPE pipe[2] = { -1, -1 }; + qt_create_pipe(pipe); + sink->pipe[0] = pipe[0]; + source->pipe[1] = pipe[1]; + + return true; + } + } +#endif /* Q_OS_GENODE */ +} + +#ifndef Q_OS_GENODE +QT_BEGIN_INCLUDE_NAMESPACE +#if defined(Q_OS_MAC) && !defined(Q_OS_IOS) +# include +# define environ (*_NSGetEnviron()) +#else + extern char **environ; +#endif +QT_END_INCLUDE_NAMESPACE + +QProcessEnvironment QProcessEnvironment::systemEnvironment() +{ + QProcessEnvironment env; +#if !defined(Q_OS_IOS) + const char *entry; + for (int count = 0; (entry = environ[count]); ++count) { + const char *equal = strchr(entry, '='); + if (!equal) + continue; + + QByteArray name(entry, equal - entry); + QByteArray value(equal + 1); + env.d->hash.insert(QProcessEnvironmentPrivate::Key(name), + QProcessEnvironmentPrivate::Value(value)); + } +#endif + return env; +} + +static char **_q_dupEnvironment(const QProcessEnvironmentPrivate::Hash &environment, int *envc) +{ + *envc = 0; + if (environment.isEmpty()) + return 0; + + // if LD_LIBRARY_PATH exists in the current environment, but + // not in the environment list passed by the programmer, then + // copy it over. +#if defined(Q_OS_MAC) + static const char libraryPath[] = "DYLD_LIBRARY_PATH"; +#else + static const char libraryPath[] = "LD_LIBRARY_PATH"; +#endif + const QByteArray envLibraryPath = qgetenv(libraryPath); + bool needToAddLibraryPath = !envLibraryPath.isEmpty() && + !environment.contains(QProcessEnvironmentPrivate::Key(QByteArray(libraryPath))); + + char **envp = new char *[environment.count() + 2]; + envp[environment.count()] = 0; + envp[environment.count() + 1] = 0; + + QProcessEnvironmentPrivate::Hash::ConstIterator it = environment.constBegin(); + const QProcessEnvironmentPrivate::Hash::ConstIterator end = environment.constEnd(); + for ( ; it != end; ++it) { + QByteArray key = it.key().key; + QByteArray value = it.value().bytes(); + key.reserve(key.length() + 1 + value.length()); + key.append('='); + key.append(value); + + envp[(*envc)++] = ::strdup(key.constData()); + } + + if (needToAddLibraryPath) + envp[(*envc)++] = ::strdup(QByteArray(QByteArray(libraryPath) + '=' + + envLibraryPath).constData()); + return envp; +} +#endif /* Q_OS_GENODE */ + +void QProcessPrivate::startProcess() +{ + Q_Q(QProcess); + +#if defined (QPROCESS_DEBUG) + qDebug("QProcessPrivate::startProcess()"); +#endif + +#ifndef Q_OS_GENODE + processManager()->start(); + + // Initialize pipes + if (!createChannel(stdinChannel) || + !createChannel(stdoutChannel) || + !createChannel(stderrChannel)) + return; + qt_create_pipe(childStartedPipe); + qt_create_pipe(deathPipe); + + if (threadData->eventDispatcher) { + startupSocketNotifier = new QSocketNotifier(childStartedPipe[0], + QSocketNotifier::Read, q); + QObject::connect(startupSocketNotifier, SIGNAL(activated(int)), + q, SLOT(_q_startupNotification())); + + deathNotifier = new QSocketNotifier(deathPipe[0], + QSocketNotifier::Read, q); + QObject::connect(deathNotifier, SIGNAL(activated(int)), + q, SLOT(_q_processDied())); + } +#endif /* Q_OS_GENODE */ + + // Start the process (platform dependent) + q->setProcessState(QProcess::Starting); + +#ifdef Q_OS_GENODE + launchpad_child = launchpad()->start_child(program.toLocal8Bit().constData(), + ram_quota_hash()->value(program), + Genode::Dataspace_capability()); + if (launchpad_child) { + _q_startupNotification(); + } +#else + // Create argument list with right number of elements, and set the final + // one to 0. + char **argv = new char *[arguments.count() + 2]; + argv[arguments.count() + 1] = 0; + + // Encode the program name. + QByteArray encodedProgramName = QFile::encodeName(program); +#ifdef Q_OS_MAC + // allow invoking of .app bundles on the Mac. + QFileInfo fileInfo(program); + if (encodedProgramName.endsWith(".app") && fileInfo.isDir()) { + QCFType url = CFURLCreateWithFileSystemPath(0, + QCFString(fileInfo.absoluteFilePath()), + kCFURLPOSIXPathStyle, true); + { + // CFBundle is not reentrant, since CFBundleCreate might return a reference + // to a cached bundle object. Protect the bundle calls with a mutex lock. + static QBasicMutex cfbundleMutex; + QMutexLocker lock(&cfbundleMutex); + QCFType bundle = CFBundleCreate(0, url); + url = CFBundleCopyExecutableURL(bundle); + } + if (url) { + QCFString str = CFURLCopyFileSystemPath(url, kCFURLPOSIXPathStyle); + encodedProgramName += "/Contents/MacOS/" + QCFString::toQString(str).toUtf8(); + } + } +#endif + + // Add the program name to the argument list. + char *dupProgramName = ::strdup(encodedProgramName.constData()); + argv[0] = dupProgramName; + + // Add every argument to the list + for (int i = 0; i < arguments.count(); ++i) + argv[i + 1] = ::strdup(QFile::encodeName(arguments.at(i)).constData()); + + // Duplicate the environment. + int envc = 0; + char **envp = 0; + if (environment.d.constData()) + envp = _q_dupEnvironment(environment.d.constData()->hash, &envc); + + // Encode the working directory if it's non-empty, otherwise just pass 0. + const char *workingDirPtr = 0; + QByteArray encodedWorkingDirectory; + if (!workingDirectory.isEmpty()) { + encodedWorkingDirectory = QFile::encodeName(workingDirectory); + workingDirPtr = encodedWorkingDirectory.constData(); + } + + // If the program does not specify a path, generate a list of possible + // locations for the binary using the PATH environment variable. + char **path = 0; + int pathc = 0; + if (!program.contains(QLatin1Char('/'))) { + const QString pathEnv = QString::fromLocal8Bit(::getenv("PATH")); + if (!pathEnv.isEmpty()) { + QStringList pathEntries = pathEnv.split(QLatin1Char(':'), QString::SkipEmptyParts); + if (!pathEntries.isEmpty()) { + pathc = pathEntries.size(); + path = new char *[pathc + 1]; + path[pathc] = 0; + + for (int k = 0; k < pathEntries.size(); ++k) { + QByteArray tmp = QFile::encodeName(pathEntries.at(k)); + if (!tmp.endsWith('/')) tmp += '/'; + tmp += encodedProgramName; + path[k] = ::strdup(tmp.constData()); + } + } + } + } + + // Start the process manager, and fork off the child process. + processManager()->lock(); +#if defined(Q_OS_QNX) + pid_t childPid = spawnChild(workingDirPtr, argv, envp); +#else + pid_t childPid = fork(); + int lastForkErrno = errno; +#endif + if (childPid != 0) { + // Clean up duplicated memory. + free(dupProgramName); + for (int i = 1; i <= arguments.count(); ++i) + free(argv[i]); + for (int i = 0; i < envc; ++i) + free(envp[i]); + for (int i = 0; i < pathc; ++i) + free(path[i]); + delete [] argv; + delete [] envp; + delete [] path; + } + + // This is not a valid check under QNX, because the semantics are + // different. While under other platforms where fork() may succeed and exec() can still fail, + // causing the childPid to hold a valid value (and thus evaluating the + // following if to false), and then signaling the error via + // childStartedPipe, under QNX on the other hand, spawn() return value will be assigned + // to childPid (which will be -1 in case of failure). This will force + // QProcess to cleanup, instead of signaling the error via + // childStartedPipe. Since it will invalidade the pipes, functions like + // QProcess::waitForStarted() will fail, for childStartedPipe will be + // '-1' and mess with the select() calls. +#if !defined(Q_OS_QNX) + if (childPid < 0) { + // Cleanup, report error and return +#if defined (QPROCESS_DEBUG) + qDebug("fork failed: %s", qPrintable(qt_error_string(lastForkErrno))); +#endif + processManager()->unlock(); + q->setProcessState(QProcess::NotRunning); + processError = QProcess::FailedToStart; + q->setErrorString(QProcess::tr("Resource error (fork failure): %1").arg(qt_error_string(lastForkErrno))); + emit q->error(processError); + cleanup(); + return; + } + + // Start the child. + if (childPid == 0) { + execChild(workingDirPtr, path, argv, envp); + ::_exit(-1); + } +#endif + + // Register the child. In the mean time, we can get a SIGCHLD, so we need + // to keep the lock held to avoid a race to catch the child. + processManager()->add(childPid, q); + pid = Q_PID(childPid); + processManager()->unlock(); + + // parent + // close the ends we don't use and make all pipes non-blocking + ::fcntl(deathPipe[0], F_SETFL, ::fcntl(deathPipe[0], F_GETFL) | O_NONBLOCK); + qt_safe_close(childStartedPipe[1]); + childStartedPipe[1] = -1; + + if (stdinChannel.pipe[0] != -1) { + qt_safe_close(stdinChannel.pipe[0]); + stdinChannel.pipe[0] = -1; + } + + if (stdinChannel.pipe[1] != -1) + ::fcntl(stdinChannel.pipe[1], F_SETFL, ::fcntl(stdinChannel.pipe[1], F_GETFL) | O_NONBLOCK); + + if (stdoutChannel.pipe[1] != -1) { + qt_safe_close(stdoutChannel.pipe[1]); + stdoutChannel.pipe[1] = -1; + } + + if (stdoutChannel.pipe[0] != -1) + ::fcntl(stdoutChannel.pipe[0], F_SETFL, ::fcntl(stdoutChannel.pipe[0], F_GETFL) | O_NONBLOCK); + + if (stderrChannel.pipe[1] != -1) { + qt_safe_close(stderrChannel.pipe[1]); + stderrChannel.pipe[1] = -1; + } + if (stderrChannel.pipe[0] != -1) + ::fcntl(stderrChannel.pipe[0], F_SETFL, ::fcntl(stderrChannel.pipe[0], F_GETFL) | O_NONBLOCK); +#endif /* Q_OS_GENODE */ +} + +#ifndef Q_OS_GENODE +#if defined(Q_OS_QNX) +static pid_t doSpawn(int fd_count, int fd_map[], char **argv, char **envp, + const char *workingDir, bool spawn_detached) +{ + // A multi threaded QNX Process can't fork so we call spawn() instead. + + struct inheritance inherit; + memset(&inherit, 0, sizeof(inherit)); + inherit.flags |= SPAWN_SETSID; + inherit.flags |= SPAWN_CHECK_SCRIPT; + if (spawn_detached) + inherit.flags |= SPAWN_NOZOMBIE; + inherit.flags |= SPAWN_SETSIGDEF; + sigaddset(&inherit.sigdefault, SIGPIPE); // reset the signal that we ignored + + // enter the working directory + const char *oldWorkingDir = 0; + char buff[PATH_MAX + 1]; + + if (workingDir) { + //we need to freeze everyone in order to avoid race conditions with //chdir(). + if (ThreadCtl(_NTO_TCTL_THREADS_HOLD, 0) == -1) + qWarning("ThreadCtl(): cannot hold threads: %s", qPrintable(qt_error_string(errno))); + + oldWorkingDir = QT_GETCWD(buff, PATH_MAX + 1); + if (QT_CHDIR(workingDir) == -1) + qWarning("ThreadCtl(): failed to chdir to %s", workingDir); + } + + pid_t childPid; + EINTR_LOOP(childPid, ::spawn(argv[0], fd_count, fd_map, &inherit, argv, envp)); + if (childPid == -1) { + inherit.flags |= SPAWN_SEARCH_PATH; + EINTR_LOOP(childPid, ::spawn(argv[0], fd_count, fd_map, &inherit, argv, envp)); + } + + if (oldWorkingDir) { + if (QT_CHDIR(oldWorkingDir) == -1) + qWarning("ThreadCtl(): failed to chdir to %s", oldWorkingDir); + + if (ThreadCtl(_NTO_TCTL_THREADS_CONT, 0) == -1) + qFatal("ThreadCtl(): cannot resume threads: %s", qPrintable(qt_error_string(errno))); + } + + return childPid; +} + +pid_t QProcessPrivate::spawnChild(const char *workingDir, char **argv, char **envp) +{ + // we need to manually fill in fd_map + // to inherit the file descriptors from + // the parent + const int fd_count = sysconf(_SC_OPEN_MAX); + QVarLengthArray fd_map(fd_count); + + for (int i = 3; i < fd_count; ++i) { + // here we rely that fcntl returns -1 and + // sets errno to EBADF + const int flags = ::fcntl(i, F_GETFD); + + fd_map[i] = ((flags >= 0) && !(flags & FD_CLOEXEC)) + ? i : SPAWN_FDCLOSED; + } + + switch (processChannelMode) { + case QProcess::ForwardedChannels: + fd_map[0] = stdinChannel.pipe[0]; + fd_map[1] = QT_FILENO(stdout); + fd_map[2] = QT_FILENO(stderr); + break; + case QProcess::MergedChannels: + fd_map[0] = stdinChannel.pipe[0]; + fd_map[1] = stdoutChannel.pipe[1]; + fd_map[2] = stdoutChannel.pipe[1]; + break; + case QProcess::SeparateChannels: + fd_map[0] = stdinChannel.pipe[0]; + fd_map[1] = stdoutChannel.pipe[1]; + fd_map[2] = stderrChannel.pipe[1]; + break; + } + + pid_t childPid = doSpawn(fd_count, fd_map.data(), argv, envp, workingDir, false); + + if (childPid == -1) { + QString error = qt_error_string(errno); + qt_safe_write(childStartedPipe[1], error.data(), error.length() * sizeof(QChar)); + qt_safe_close(childStartedPipe[1]); + childStartedPipe[1] = -1; + } + + return childPid; +} + +#else + +void QProcessPrivate::execChild(const char *workingDir, char **path, char **argv, char **envp) +{ + ::signal(SIGPIPE, SIG_DFL); // reset the signal that we ignored + + Q_Q(QProcess); + + // copy the stdin socket (without closing on exec) + qt_safe_dup2(stdinChannel.pipe[0], fileno(stdin), 0); + + // copy the stdout and stderr if asked to + if (processChannelMode != QProcess::ForwardedChannels) { + qt_safe_dup2(stdoutChannel.pipe[1], fileno(stdout), 0); + + // merge stdout and stderr if asked to + if (processChannelMode == QProcess::MergedChannels) { + qt_safe_dup2(fileno(stdout), fileno(stderr), 0); + } else { + qt_safe_dup2(stderrChannel.pipe[1], fileno(stderr), 0); + } + } + + // make sure this fd is closed if execvp() succeeds + qt_safe_close(childStartedPipe[0]); + + // enter the working directory + if (workingDir) { + if (QT_CHDIR(workingDir) == -1) + qWarning("QProcessPrivate::execChild() failed to chdir to %s", workingDir); + } + + // this is a virtual call, and it base behavior is to do nothing. + q->setupChildProcess(); + + // execute the process + if (!envp) { + qt_safe_execvp(argv[0], argv); + } else { + if (path) { + char **arg = path; + while (*arg) { + argv[0] = *arg; +#if defined (QPROCESS_DEBUG) + fprintf(stderr, "QProcessPrivate::execChild() searching / starting %s\n", argv[0]); +#endif + qt_safe_execve(argv[0], argv, envp); + ++arg; + } + } else { +#if defined (QPROCESS_DEBUG) + fprintf(stderr, "QProcessPrivate::execChild() starting %s\n", argv[0]); +#endif + qt_safe_execve(argv[0], argv, envp); + } + } + + // notify failure + QString error = qt_error_string(errno); +#if defined (QPROCESS_DEBUG) + fprintf(stderr, "QProcessPrivate::execChild() failed (%s), notifying parent process\n", qPrintable(error)); +#endif + qt_safe_write(childStartedPipe[1], error.data(), error.length() * sizeof(QChar)); + qt_safe_close(childStartedPipe[1]); + childStartedPipe[1] = -1; +} +#endif +#endif /* Q_OS_GENODE */ + +bool QProcessPrivate::processStarted() +{ +#ifdef Q_OS_GENODE +#if defined QPROCESS_DEBUG + qDebug() << "QProcessPrivate::processStarted()"; +#endif + return false; +#else + ushort buf[errorBufferMax]; + int i = qt_safe_read(childStartedPipe[0], &buf, sizeof buf); + if (startupSocketNotifier) { + startupSocketNotifier->setEnabled(false); + startupSocketNotifier->deleteLater(); + startupSocketNotifier = 0; + } + qt_safe_close(childStartedPipe[0]); + childStartedPipe[0] = -1; + +#if defined (QPROCESS_DEBUG) + qDebug("QProcessPrivate::processStarted() == %s", i <= 0 ? "true" : "false"); +#endif + + // did we read an error message? + if (i > 0) + q_func()->setErrorString(QString((const QChar *)buf, i / sizeof(QChar))); + + return i <= 0; +#endif /* Q_OS_GENODE */ +} + +qint64 QProcessPrivate::bytesAvailableFromStdout() const +{ +#ifdef Q_OS_GENODE +#if defined QPROCESS_DEBUG + qDebug() << "QProcessPrivate::bytesAvailableFromStdout()"; +#endif + return 0; +#else + int nbytes = 0; + qint64 available = 0; + if (::ioctl(stdoutChannel.pipe[0], FIONREAD, (char *) &nbytes) >= 0) + available = (qint64) nbytes; +#if defined (QPROCESS_DEBUG) + qDebug("QProcessPrivate::bytesAvailableFromStdout() == %lld", available); +#endif + return available; +#endif /* Q_OS_GENODE */ +} + +qint64 QProcessPrivate::bytesAvailableFromStderr() const +{ +#ifdef Q_OS_GENODE +#if defined QPROCESS_DEBUG + qDebug() << "QProcessPrivate::bytesAvailableFromStderr()"; +#endif + return 0; +#else + int nbytes = 0; + qint64 available = 0; + if (::ioctl(stderrChannel.pipe[0], FIONREAD, (char *) &nbytes) >= 0) + available = (qint64) nbytes; +#if defined (QPROCESS_DEBUG) + qDebug("QProcessPrivate::bytesAvailableFromStderr() == %lld", available); +#endif + return available; +#endif /* Q_OS_GENODE */ +} + +qint64 QProcessPrivate::readFromStdout(char *data, qint64 maxlen) +{ +#ifdef Q_OS_GENODE +#if defined QPROCESS_DEBUG + qDebug() << "QProcessPrivate::readFromStdout()"; +#endif + return 0; +#else + qint64 bytesRead = qt_safe_read(stdoutChannel.pipe[0], data, maxlen); +#if defined QPROCESS_DEBUG + qDebug("QProcessPrivate::readFromStdout(%p \"%s\", %lld) == %lld", + data, qt_prettyDebug(data, bytesRead, 16).constData(), maxlen, bytesRead); +#endif + return bytesRead; +#endif /* Q_OS_GENODE */ +} + +qint64 QProcessPrivate::readFromStderr(char *data, qint64 maxlen) +{ +#ifdef Q_OS_GENODE +#if defined QPROCESS_DEBUG + qDebug() << "QProcessPrivate::readFromStderr()"; +#endif + return 0; +#else + qint64 bytesRead = qt_safe_read(stderrChannel.pipe[0], data, maxlen); +#if defined QPROCESS_DEBUG + qDebug("QProcessPrivate::readFromStderr(%p \"%s\", %lld) == %lld", + data, qt_prettyDebug(data, bytesRead, 16).constData(), maxlen, bytesRead); +#endif + return bytesRead; +#endif /* Q_OS_GENODE */ +} + +qint64 QProcessPrivate::writeToStdin(const char *data, qint64 maxlen) +{ +#ifdef Q_OS_GENODE +#if defined QPROCESS_DEBUG + qDebug() << "writeToStdin()"; +#endif + return 0; +#else + qint64 written = qt_safe_write_nosignal(stdinChannel.pipe[1], data, maxlen); +#if defined QPROCESS_DEBUG + qDebug("QProcessPrivate::writeToStdin(%p \"%s\", %lld) == %lld", + data, qt_prettyDebug(data, maxlen, 16).constData(), maxlen, written); + if (written == -1) + qDebug("QProcessPrivate::writeToStdin(), failed to write (%s)", qPrintable(qt_error_string(errno))); +#endif + // If the O_NONBLOCK flag is set and If some data can be written without blocking + // the process, write() will transfer what it can and return the number of bytes written. + // Otherwise, it will return -1 and set errno to EAGAIN + if (written == -1 && errno == EAGAIN) + written = 0; + return written; +#endif /* Q_OS_GENODE */ +} + +void QProcessPrivate::terminateProcess() +{ +#if defined (QPROCESS_DEBUG) + qDebug("QProcessPrivate::terminateProcess()"); +#endif +#ifndef Q_OS_GENODE + if (pid) + ::kill(pid_t(pid), SIGTERM); +#endif /* Q_OS_GENODE */ +} + +void QProcessPrivate::killProcess() +{ +#if defined (QPROCESS_DEBUG) + qDebug("QProcessPrivate::killProcess()"); +#endif + +#ifdef Q_OS_GENODE + if (launchpad_child) { + launchpad()->exit_child(launchpad_child); + } +#else + if (pid) + ::kill(pid_t(pid), SIGKILL); +#endif /* Q_OS_GENODE */ +} + +#ifndef Q_OS_GENODE +static int select_msecs(int nfds, fd_set *fdread, fd_set *fdwrite, int timeout) +{ + if (timeout < 0) + return qt_safe_select(nfds, fdread, fdwrite, 0, 0); + + struct timeval tv; + tv.tv_sec = timeout / 1000; + tv.tv_usec = (timeout % 1000) * 1000; + return qt_safe_select(nfds, fdread, fdwrite, 0, &tv); +} + +/* + Returns the difference between msecs and elapsed. If msecs is -1, + however, -1 is returned. +*/ +static int qt_timeout_value(int msecs, int elapsed) +{ + if (msecs == -1) + return -1; + + int timeout = msecs - elapsed; + return timeout < 0 ? 0 : timeout; +} +#endif /* Q_OS_GENODE */ + +bool QProcessPrivate::waitForStarted(int msecs) +{ + Q_Q(QProcess); + +#if defined (QPROCESS_DEBUG) + qDebug("QProcessPrivate::waitForStarted(%d) waiting for child to start (fd = %d)", msecs, + childStartedPipe[0]); +#endif + +#ifdef Q_OS_GENODE + return false; +#else + fd_set fds; + FD_ZERO(&fds); + FD_SET(childStartedPipe[0], &fds); + if (select_msecs(childStartedPipe[0] + 1, &fds, 0, msecs) == 0) { + processError = QProcess::Timedout; + q->setErrorString(QProcess::tr("Process operation timed out")); +#if defined (QPROCESS_DEBUG) + qDebug("QProcessPrivate::waitForStarted(%d) == false (timed out)", msecs); +#endif + return false; + } + + bool startedEmitted = _q_startupNotification(); +#if defined (QPROCESS_DEBUG) + qDebug("QProcessPrivate::waitForStarted() == %s", startedEmitted ? "true" : "false"); +#endif + return startedEmitted; +#endif /* Q_OS_GENODE */ +} + +bool QProcessPrivate::waitForReadyRead(int msecs) +{ + Q_Q(QProcess); +#if defined (QPROCESS_DEBUG) + qDebug("QProcessPrivate::waitForReadyRead(%d)", msecs); +#endif + +#ifdef Q_OS_GENODE + return false; +#else + QElapsedTimer stopWatch; + stopWatch.start(); + + forever { + fd_set fdread; + fd_set fdwrite; + + FD_ZERO(&fdread); + FD_ZERO(&fdwrite); + + int nfds = deathPipe[0]; + FD_SET(deathPipe[0], &fdread); + + if (processState == QProcess::Starting) + add_fd(nfds, childStartedPipe[0], &fdread); + + if (stdoutChannel.pipe[0] != -1) + add_fd(nfds, stdoutChannel.pipe[0], &fdread); + if (stderrChannel.pipe[0] != -1) + add_fd(nfds, stderrChannel.pipe[0], &fdread); + + if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1) + add_fd(nfds, stdinChannel.pipe[1], &fdwrite); + + int timeout = qt_timeout_value(msecs, stopWatch.elapsed()); + int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout); + if (ret < 0) { + break; + } + if (ret == 0) { + processError = QProcess::Timedout; + q->setErrorString(QProcess::tr("Process operation timed out")); + return false; + } + + if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) { + if (!_q_startupNotification()) + return false; + } + + bool readyReadEmitted = false; + if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread)) { + bool canRead = _q_canReadStandardOutput(); + if (processChannel == QProcess::StandardOutput && canRead) + readyReadEmitted = true; + } + if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread)) { + bool canRead = _q_canReadStandardError(); + if (processChannel == QProcess::StandardError && canRead) + readyReadEmitted = true; + } + if (readyReadEmitted) + return true; + + if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite)) + _q_canWrite(); + + if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) { + if (_q_processDied()) + return false; + } + } + return false; +#endif /* Q_OS_GENODE */ +} + +bool QProcessPrivate::waitForBytesWritten(int msecs) +{ + Q_Q(QProcess); +#if defined (QPROCESS_DEBUG) + qDebug("QProcessPrivate::waitForBytesWritten(%d)", msecs); +#endif + +#ifdef Q_OS_GENODE + return false; +#else + QElapsedTimer stopWatch; + stopWatch.start(); + + while (!writeBuffer.isEmpty()) { + fd_set fdread; + fd_set fdwrite; + + FD_ZERO(&fdread); + FD_ZERO(&fdwrite); + + int nfds = deathPipe[0]; + FD_SET(deathPipe[0], &fdread); + + if (processState == QProcess::Starting) + add_fd(nfds, childStartedPipe[0], &fdread); + + if (stdoutChannel.pipe[0] != -1) + add_fd(nfds, stdoutChannel.pipe[0], &fdread); + if (stderrChannel.pipe[0] != -1) + add_fd(nfds, stderrChannel.pipe[0], &fdread); + + + if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1) + add_fd(nfds, stdinChannel.pipe[1], &fdwrite); + + int timeout = qt_timeout_value(msecs, stopWatch.elapsed()); + int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout); + if (ret < 0) { + break; + } + + if (ret == 0) { + processError = QProcess::Timedout; + q->setErrorString(QProcess::tr("Process operation timed out")); + return false; + } + + if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) { + if (!_q_startupNotification()) + return false; + } + + if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite)) + return _q_canWrite(); + + if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread)) + _q_canReadStandardOutput(); + + if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread)) + _q_canReadStandardError(); + + if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) { + if (_q_processDied()) + return false; + } + } + + return false; +#endif /* Q_OS_GENODE */ +} + +bool QProcessPrivate::waitForFinished(int msecs) +{ + Q_Q(QProcess); +#if defined (QPROCESS_DEBUG) + qDebug("QProcessPrivate::waitForFinished(%d)", msecs); +#endif + +#ifdef Q_OS_GENODE + return false; +#else + QElapsedTimer stopWatch; + stopWatch.start(); + + forever { + fd_set fdread; + fd_set fdwrite; + int nfds = -1; + + FD_ZERO(&fdread); + FD_ZERO(&fdwrite); + + if (processState == QProcess::Starting) + add_fd(nfds, childStartedPipe[0], &fdread); + + if (stdoutChannel.pipe[0] != -1) + add_fd(nfds, stdoutChannel.pipe[0], &fdread); + if (stderrChannel.pipe[0] != -1) + add_fd(nfds, stderrChannel.pipe[0], &fdread); + + if (processState == QProcess::Running) + add_fd(nfds, deathPipe[0], &fdread); + + if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1) + add_fd(nfds, stdinChannel.pipe[1], &fdwrite); + + int timeout = qt_timeout_value(msecs, stopWatch.elapsed()); + int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout); + if (ret < 0) { + break; + } + if (ret == 0) { + processError = QProcess::Timedout; + q->setErrorString(QProcess::tr("Process operation timed out")); + return false; + } + + if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) { + if (!_q_startupNotification()) + return false; + } + if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite)) + _q_canWrite(); + + if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread)) + _q_canReadStandardOutput(); + + if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread)) + _q_canReadStandardError(); + + if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) { + if (_q_processDied()) + return true; + } + } + return false; +#endif /* Q_OS_GENODE */ +} + +#ifndef Q_OS_GENODE +bool QProcessPrivate::waitForWrite(int msecs) +{ + fd_set fdwrite; + FD_ZERO(&fdwrite); + FD_SET(stdinChannel.pipe[1], &fdwrite); + return select_msecs(stdinChannel.pipe[1] + 1, 0, &fdwrite, msecs < 0 ? 0 : msecs) == 1; +} +#endif /* Q_OS_GENODE */ + +void QProcessPrivate::findExitCode() +{ +#ifdef Q_OS_GENODE +#ifdef QPROCESS_DEBUG + qDebug() << "QProcessPrivate::findExitCode()"; +#endif +#else + Q_Q(QProcess); + processManager()->remove(q); +#endif +} + +bool QProcessPrivate::waitForDeadChild() +{ +#ifdef Q_OS_GENODE +#ifdef QPROCESS_DEBUG + qDebug() << QProcessPrivate::waitForDeadChild(); +#endif + + return false; +#else + Q_Q(QProcess); + + // read a byte from the death pipe + char c; + qt_safe_read(deathPipe[0], &c, 1); + + // check if our process is dead + int exitStatus; + if (qt_safe_waitpid(pid_t(pid), &exitStatus, WNOHANG) > 0) { + processManager()->remove(q); + crashed = !WIFEXITED(exitStatus); + exitCode = WEXITSTATUS(exitStatus); +#if defined QPROCESS_DEBUG + qDebug() << "QProcessPrivate::waitForDeadChild() dead with exitCode" + << exitCode << ", crashed?" << crashed; +#endif + return true; + } +#if defined QPROCESS_DEBUG + qDebug() << "QProcessPrivate::waitForDeadChild() not dead!"; +#endif + return false; +#endif /* Q_OS_GENODE */ +} + +void QProcessPrivate::_q_notified() +{ +} + +#if defined(Q_OS_QNX) +bool QProcessPrivate::startDetached(const QString &program, const QStringList &arguments, const QString &workingDirectory, qint64 *pid) +{ + const int fd_count = 3; + int fd_map[fd_count] = { QT_FILENO(stdin), QT_FILENO(stdout), QT_FILENO(stderr) }; + + QList enc_args; + enc_args.append(QFile::encodeName(program)); + for (int i = 0; i < arguments.size(); ++i) + enc_args.append(arguments.at(i).toLocal8Bit()); + + const int argc = enc_args.size(); + QScopedArrayPointer raw_argv(new char*[argc + 1]); + for (int i = 0; i < argc; ++i) + raw_argv[i] = const_cast(enc_args.at(i).data()); + raw_argv[argc] = 0; + + char **envp = 0; // inherit environment + + // Encode the working directory if it's non-empty, otherwise just pass 0. + const char *workingDirPtr = 0; + QByteArray encodedWorkingDirectory; + if (!workingDirectory.isEmpty()) { + encodedWorkingDirectory = QFile::encodeName(workingDirectory); + workingDirPtr = encodedWorkingDirectory.constData(); + } + + pid_t childPid = doSpawn(fd_count, fd_map, raw_argv.data(), envp, workingDirPtr, true); + if (pid && childPid != -1) + *pid = childPid; + + return childPid != -1; +} + +#else + +bool QProcessPrivate::startDetached(const QString &program, const QStringList &arguments, const QString &workingDirectory, qint64 *pid) +{ +#ifdef Q_OS_GENODE +#ifdef QPROCESS_DEBUG + qDebug() << "QProcessPrivate::startDetached()"; +#endif + + return false; +#else + processManager()->start(); + + QByteArray encodedWorkingDirectory = QFile::encodeName(workingDirectory); + + // To catch the startup of the child + int startedPipe[2]; + qt_safe_pipe(startedPipe); + // To communicate the pid of the child + int pidPipe[2]; + qt_safe_pipe(pidPipe); + + pid_t childPid = fork(); + if (childPid == 0) { + struct sigaction noaction; + memset(&noaction, 0, sizeof(noaction)); + noaction.sa_handler = SIG_IGN; + ::sigaction(SIGPIPE, &noaction, 0); + + ::setsid(); + + qt_safe_close(startedPipe[0]); + qt_safe_close(pidPipe[0]); + + pid_t doubleForkPid = fork(); + if (doubleForkPid == 0) { + qt_safe_close(pidPipe[1]); + + if (!encodedWorkingDirectory.isEmpty()) { + if (QT_CHDIR(encodedWorkingDirectory.constData()) == -1) + qWarning("QProcessPrivate::startDetached: failed to chdir to %s", encodedWorkingDirectory.constData()); + } + + char **argv = new char *[arguments.size() + 2]; + for (int i = 0; i < arguments.size(); ++i) + argv[i + 1] = ::strdup(QFile::encodeName(arguments.at(i)).constData()); + argv[arguments.size() + 1] = 0; + + if (!program.contains(QLatin1Char('/'))) { + const QString path = QString::fromLocal8Bit(::getenv("PATH")); + if (!path.isEmpty()) { + QStringList pathEntries = path.split(QLatin1Char(':')); + for (int k = 0; k < pathEntries.size(); ++k) { + QByteArray tmp = QFile::encodeName(pathEntries.at(k)); + if (!tmp.endsWith('/')) tmp += '/'; + tmp += QFile::encodeName(program); + argv[0] = tmp.data(); + qt_safe_execv(argv[0], argv); + } + } + } else { + QByteArray tmp = QFile::encodeName(program); + argv[0] = tmp.data(); + qt_safe_execv(argv[0], argv); + } + + struct sigaction noaction; + memset(&noaction, 0, sizeof(noaction)); + noaction.sa_handler = SIG_IGN; + ::sigaction(SIGPIPE, &noaction, 0); + + // '\1' means execv failed + char c = '\1'; + qt_safe_write(startedPipe[1], &c, 1); + qt_safe_close(startedPipe[1]); + ::_exit(1); + } else if (doubleForkPid == -1) { + struct sigaction noaction; + memset(&noaction, 0, sizeof(noaction)); + noaction.sa_handler = SIG_IGN; + ::sigaction(SIGPIPE, &noaction, 0); + + // '\2' means internal error + char c = '\2'; + qt_safe_write(startedPipe[1], &c, 1); + } + + qt_safe_close(startedPipe[1]); + qt_safe_write(pidPipe[1], (const char *)&doubleForkPid, sizeof(pid_t)); + if (QT_CHDIR("/") == -1) + qWarning("QProcessPrivate::startDetached: failed to chdir to /"); + ::_exit(1); + } + + qt_safe_close(startedPipe[1]); + qt_safe_close(pidPipe[1]); + + if (childPid == -1) { + qt_safe_close(startedPipe[0]); + qt_safe_close(pidPipe[0]); + return false; + } + + char reply = '\0'; + int startResult = qt_safe_read(startedPipe[0], &reply, 1); + int result; + qt_safe_close(startedPipe[0]); + qt_safe_waitpid(childPid, &result, 0); + bool success = (startResult != -1 && reply == '\0'); + if (success && pid) { + pid_t actualPid = 0; + if (qt_safe_read(pidPipe[0], (char *)&actualPid, sizeof(pid_t)) == sizeof(pid_t)) { + *pid = actualPid; + } else { + *pid = 0; + } + } + qt_safe_close(pidPipe[0]); + return success; +#endif /* Q_OS_GENODE */ +} +#endif + +void QProcessPrivate::initializeProcessManager() +{ +#ifdef Q_OS_GENODE +#ifdef QPROCESS_DEBUG + qDebug() << "QProcessPrivate::initializeProcessManager()"; +#endif +#else + (void) processManager(); +#endif /* Q_OS_GENODE */ +} + +QT_END_NAMESPACE + +#ifndef Q_OS_GENODE +#include "qprocess_unix.moc" +#endif /* Q_OS_GENODE */ + +#endif // QT_NO_PROCESS diff --git a/libports/src/lib/qt5/qtbase/src/corelib/thread/qmutex_genode.cpp b/libports/src/lib/qt5/qtbase/src/corelib/thread/qmutex_genode.cpp new file mode 100644 index 0000000000..9b814a131b --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/corelib/thread/qmutex_genode.cpp @@ -0,0 +1,150 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qplatformdefs.h" +#include "qmutex.h" +#include "qstring.h" + +#ifndef QT_NO_THREAD +#include "qatomic.h" +#include "qmutex_p.h" +#include + +#ifndef Q_OS_GENODE +#if defined(Q_OS_VXWORKS) && defined(wakeup) +#undef wakeup +#endif +#endif /* Q_OS_GENODE */ + +QT_BEGIN_NAMESPACE + +#ifndef Q_OS_GENODE +static void report_error(int code, const char *where, const char *what) +{ + if (code != 0) + qWarning("%s: %s failure: %s", where, what, qPrintable(qt_error_string(code))); +} +#endif /* Q_OS_GENODE */ + +QMutexPrivate::QMutexPrivate() +#ifndef Q_OS_GENODE + : wakeup(false) +#endif /* Q_OS_GENODE */ +{ +#ifndef Q_OS_GENODE + report_error(pthread_mutex_init(&mutex, NULL), "QMutex", "mutex init"); + report_error(pthread_cond_init(&cond, NULL), "QMutex", "cv init"); +#endif /* Q_OS_GENODE */ +} + +QMutexPrivate::~QMutexPrivate() +{ +#ifndef Q_OS_GENODE + report_error(pthread_cond_destroy(&cond), "QMutex", "cv destroy"); + report_error(pthread_mutex_destroy(&mutex), "QMutex", "mutex destroy"); +#endif /* Q_OS_GENODE */ +} + +bool QMutexPrivate::wait(int timeout) +{ +#ifdef Q_OS_GENODE + bool ret; + + if (timeout == 0) { + ret = false; /* timed out */ + } else if (timeout < 0) { + sem.down(); + ret = true; /* woken up */ + } else { + try { + sem.down(timeout); + ret = true; + } catch(Genode::Timeout_exception) { + ret = false; + } + } +#else + report_error(pthread_mutex_lock(&mutex), "QMutex::lock", "mutex lock"); + int errorCode = 0; + while (!wakeup) { + if (timeout < 0) { + errorCode = pthread_cond_wait(&cond, &mutex); + } else { + struct timeval tv; + gettimeofday(&tv, 0); + timespec ti; + ti.tv_nsec = (tv.tv_usec + (timeout % 1000) * 1000) * 1000; + ti.tv_sec = tv.tv_sec + (timeout / 1000) + (ti.tv_nsec / 1000000000); + ti.tv_nsec %= 1000000000; + errorCode = pthread_cond_timedwait(&cond, &mutex, &ti); + } + if (errorCode) { + if (errorCode == ETIMEDOUT) { + if (wakeup) + errorCode = 0; + break; + } + report_error(errorCode, "QMutex::lock()", "cv wait"); + } + } + bool ret = wakeup; + wakeup = false; + report_error(pthread_mutex_unlock(&mutex), "QMutex::lock", "mutex unlock"); +#endif /* Q_OS_GENODE */ + return ret; +} + +void QMutexPrivate::wakeUp() Q_DECL_NOTHROW +{ +#ifdef Q_OS_GENODE + sem.up(); +#else + report_error(pthread_mutex_lock(&mutex), "QMutex::unlock", "mutex lock"); + wakeup = true; + report_error(pthread_cond_signal(&cond), "QMutex::unlock", "cv signal"); + report_error(pthread_mutex_unlock(&mutex), "QMutex::unlock", "mutex unlock"); +#endif /* Q_OS_GENODE */ +} + + +QT_END_NAMESPACE + +#endif // QT_NO_THREAD diff --git a/libports/src/lib/qt5/qtbase/src/corelib/thread/qthread_genode.cpp b/libports/src/lib/qt5/qtbase/src/corelib/thread/qthread_genode.cpp new file mode 100644 index 0000000000..f9b67b915e --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/corelib/thread/qthread_genode.cpp @@ -0,0 +1,900 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qthread.h" + +#include "qplatformdefs.h" + +#include + +#if defined(Q_OS_BLACKBERRY) +# include +#else +# if !defined(QT_NO_GLIB) +# include "../kernel/qeventdispatcher_glib_p.h" +# endif +# include +#endif + +#include "qthreadstorage.h" + +#include "qthread_p.h" + +#include "qdebug.h" + +#ifndef Q_OS_GENODE +#include +#include + +#ifdef Q_OS_BSD4 +#include +#endif +#ifdef Q_OS_VXWORKS +# if (_WRS_VXWORKS_MAJOR > 6) || ((_WRS_VXWORKS_MAJOR == 6) && (_WRS_VXWORKS_MINOR >= 6)) +# include +# include +# define QT_VXWORKS_HAS_CPUSET +# endif +#endif + +#ifdef Q_OS_HPUX +#include +#endif + +#if defined(Q_OS_MAC) +# ifdef qDebug +# define old_qDebug qDebug +# undef qDebug +# endif +#ifndef Q_OS_IOS +# include +#endif //Q_OS_IOS + +# ifdef old_qDebug +# undef qDebug +# define qDebug QT_NO_QDEBUG_MACRO +# undef old_qDebug +# endif +#endif + +#if defined(Q_OS_LINUX) && !defined(QT_LINUXBASE) +#include +#endif + +#if defined(Q_OS_LINUX) && !defined(SCHED_IDLE) +// from linux/sched.h +# define SCHED_IDLE 5 +#endif + +#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0) +#define QT_HAS_THREAD_PRIORITY_SCHEDULING +#endif + +#endif /* Q_OS_GENODE */ + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_THREAD + +#ifdef Q_OS_GENODE + +#include +#include + +QHash QThreadPrivate::tls; + +#else + +enum { ThreadPriorityResetFlag = 0x80000000 }; + +#if defined(Q_OS_LINUX) && defined(__GLIBC__) && (defined(Q_CC_GNU) || defined(Q_CC_INTEL)) && !defined(QT_LINUXBASE) +/* LSB doesn't have __thread, https://lsbbugs.linuxfoundation.org/show_bug.cgi?id=993 */ +#define HAVE_TLS +#endif +#if defined(Q_CC_XLC) || defined (Q_CC_SUN) +#define HAVE_TLS +#endif + +#ifdef HAVE_TLS +static __thread QThreadData *currentThreadData = 0; +#endif + +static pthread_once_t current_thread_data_once = PTHREAD_ONCE_INIT; +static pthread_key_t current_thread_data_key; + +static void destroy_current_thread_data(void *p) +{ +#if defined(Q_OS_VXWORKS) + // Calling setspecific(..., 0) sets the value to 0 for ALL threads. + // The 'set to 1' workaround adds a bit of an overhead though, + // since this function is called twice now. + if (p == (void *)1) + return; +#endif + // POSIX says the value in our key is set to zero before calling + // this destructor function, so we need to set it back to the + // right value... + pthread_setspecific(current_thread_data_key, p); + QThreadData *data = static_cast(p); + if (data->isAdopted) { + QThread *thread = data->thread; + Q_ASSERT(thread); + QThreadPrivate *thread_p = static_cast(QObjectPrivate::get(thread)); + Q_ASSERT(!thread_p->finished); + thread_p->finish(thread); + } + data->deref(); + + // ... but we must reset it to zero before returning so we aren't + // called again (POSIX allows implementations to call destructor + // functions repeatedly until all values are zero) + pthread_setspecific(current_thread_data_key, +#if defined(Q_OS_VXWORKS) + (void *)1); +#else + 0); +#endif +} + +static void create_current_thread_data_key() +{ + pthread_key_create(¤t_thread_data_key, destroy_current_thread_data); +} + +static void destroy_current_thread_data_key() +{ + pthread_once(¤t_thread_data_once, create_current_thread_data_key); + pthread_key_delete(current_thread_data_key); +} +Q_DESTRUCTOR_FUNCTION(destroy_current_thread_data_key) + +#endif /* Q_OS_GENODE */ + +// Utility functions for getting, setting and clearing thread specific data. +static QThreadData *get_thread_data() +{ +#ifdef Q_OS_GENODE + if (!QThreadPrivate::tls.contains(QThread::currentThreadId())) { + // create an entry for the thread-specific data of the current thread + QThreadPrivate::tls.insert(QThread::currentThreadId(), + (struct QThreadPrivate::tls_struct){0, true}); + } + return QThreadPrivate::tls.value(QThread::currentThreadId()).data; +#else +#ifdef HAVE_TLS + return currentThreadData; +#else + pthread_once(¤t_thread_data_once, create_current_thread_data_key); + return reinterpret_cast(pthread_getspecific(current_thread_data_key)); +#endif +#endif /* Q_OS_GENODE */ +} + +static void set_thread_data(QThreadData *data) +{ +#ifdef Q_OS_GENODE + struct QThreadPrivate::tls_struct tls_elem = + QThreadPrivate::tls.value(QThread::currentThreadId()); + tls_elem.data = data; + QThreadPrivate::tls.insert(QThread::currentThreadId(), tls_elem); +#else +#ifdef HAVE_TLS + currentThreadData = data; +#endif + pthread_once(¤t_thread_data_once, create_current_thread_data_key); + pthread_setspecific(current_thread_data_key, data); +#endif /* Q_OS_GENODE */ +} + +static void clear_thread_data() +{ +#ifdef Q_OS_GENODE + QThreadPrivate::tls.remove(QThread::currentThreadId()); +#else +#ifdef HAVE_TLS + currentThreadData = 0; +#endif + pthread_setspecific(current_thread_data_key, 0); +#endif /* Q_OS_GENODE */ +} + +void QThreadData::clearCurrentThreadData() +{ + clear_thread_data(); +} + +QThreadData *QThreadData::current() +{ + QThreadData *data = get_thread_data(); + if (!data) { + data = new QThreadData; + QT_TRY { + set_thread_data(data); + data->thread = new QAdoptedThread(data); + } QT_CATCH(...) { + clear_thread_data(); + data->deref(); + data = 0; + QT_RETHROW; + } + data->deref(); + data->isAdopted = true; +#ifdef Q_OS_GENODE + data->threadId = QThread::currentThreadId(); +#else + data->threadId = (Qt::HANDLE)pthread_self(); +#endif /* Q_OS_GENODE */ + if (!QCoreApplicationPrivate::theMainThread) + QCoreApplicationPrivate::theMainThread = data->thread; + } + return data; +} + + +void QAdoptedThread::init() +{ +#ifdef Q_OS_GENODE + d_func()->thread_id = QThread::currentThreadId(); +#else + Q_D(QThread); + d->thread_id = pthread_self(); +#endif /* Q_OS_GENODE */ +} + +/* + QThreadPrivate +*/ + +#if defined(Q_C_CALLBACKS) +extern "C" { +#endif + +typedef void*(*QtThreadCallback)(void*); + +#if defined(Q_C_CALLBACKS) +} +#endif + +#endif // QT_NO_THREAD + +void QThreadPrivate::createEventDispatcher(QThreadData *data) +{ +#if defined(Q_OS_BLACKBERRY) + data->eventDispatcher.storeRelease(new QEventDispatcherBlackberry); +#else +#if !defined(QT_NO_GLIB) + if (qEnvironmentVariableIsEmpty("QT_NO_GLIB") + && qEnvironmentVariableIsEmpty("QT_NO_THREADED_GLIB") + && QEventDispatcherGlib::versionSupported()) + data->eventDispatcher.storeRelease(new QEventDispatcherGlib); + else +#endif + data->eventDispatcher.storeRelease(new QEventDispatcherUNIX); +#endif + + data->eventDispatcher.load()->startingUp(); +} + +#ifndef QT_NO_THREAD + +#ifndef Q_OS_GENODE +#if (defined(Q_OS_LINUX) || defined(Q_OS_MAC) || defined(Q_OS_QNX)) +static void setCurrentThreadName(pthread_t threadId, const char *name) +{ +# if defined(Q_OS_LINUX) && !defined(QT_LINUXBASE) + Q_UNUSED(threadId); + prctl(PR_SET_NAME, (unsigned long)name, 0, 0, 0); +# elif defined(Q_OS_MAC) + Q_UNUSED(threadId); + pthread_setname_np(name); +# elif defined(Q_OS_QNX) + pthread_setname_np(threadId, name); +# endif +} +#endif +#endif /* Q_OS_GENODE */ + +void *QThreadPrivate::start(void *arg) +{ +#ifndef Q_OS_GENODE +#if !defined(Q_OS_ANDROID) + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL); +#endif + pthread_cleanup_push(QThreadPrivate::finish, arg); +#endif /* Q_OS_GENODE */ + + QThread *thr = reinterpret_cast(arg); + QThreadData *data = QThreadData::get2(thr); + + { + QMutexLocker locker(&thr->d_func()->mutex); + +#ifdef Q_OS_GENODE + thr->d_func()->thread_id = QThread::currentThreadId(); + set_thread_data(data); + QThread::setTerminationEnabled(false); +#else + // do we need to reset the thread priority? + if (int(thr->d_func()->priority) & ThreadPriorityResetFlag) { + thr->d_func()->setPriority(QThread::Priority(thr->d_func()->priority & ~ThreadPriorityResetFlag)); + } + + data->threadId = (Qt::HANDLE)pthread_self(); + set_thread_data(data); +#endif /* Q_OS_GENODE */ + + data->ref(); + data->quitNow = thr->d_func()->exited; + } + + if (data->eventDispatcher.load()) // custom event dispatcher set? + data->eventDispatcher.load()->startingUp(); + else + createEventDispatcher(data); + +#ifdef Q_OS_GENODE + QThread::setTerminationEnabled(true); +#else +#if (defined(Q_OS_LINUX) || defined(Q_OS_MAC) || defined(Q_OS_QNX)) + // sets the name of the current thread. + QString objectName = thr->objectName(); + + if (Q_LIKELY(objectName.isEmpty())) + setCurrentThreadName(thr->d_func()->thread_id, thr->metaObject()->className()); + else + setCurrentThreadName(thr->d_func()->thread_id, objectName.toLocal8Bit()); + +#endif + + emit thr->started(QThread::QPrivateSignal()); +#if !defined(Q_OS_ANDROID) + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); + pthread_testcancel(); +#endif +#endif /* Q_OS_GENODE */ + thr->run(); + +#ifndef Q_OS_GENODE + pthread_cleanup_pop(1); +#endif /* Q_OS_GENODE */ + + return 0; +} + +void QThreadPrivate::finish(void *arg) +{ + QThread *thr = reinterpret_cast(arg); + QThreadPrivate *d = thr->d_func(); + + QMutexLocker locker(&d->mutex); + + d->isInFinish = true; + d->priority = QThread::InheritPriority; + void *data = &d->data->tls; + locker.unlock(); + emit thr->finished(QThread::QPrivateSignal()); + QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete); + QThreadStorageData::finish((void **)data); + locker.relock(); + + QAbstractEventDispatcher *eventDispatcher = d->data->eventDispatcher.load(); + if (eventDispatcher) { + d->data->eventDispatcher = 0; + locker.unlock(); + eventDispatcher->closingDown(); + delete eventDispatcher; + locker.relock(); + } + + d->thread_id = 0; + d->running = false; + d->finished = true; + +#ifdef Q_OS_GENODE + QThreadPrivate::tls.remove(QThread::currentThreadId()); +#endif /* Q_OS_GENODE */ + + d->isInFinish = false; + d->thread_done.wakeAll(); +} + + + + +/************************************************************************** + ** QThread + *************************************************************************/ + +Qt::HANDLE QThread::currentThreadId() Q_DECL_NOTHROW +{ +#ifdef Q_OS_GENODE + return (Qt::HANDLE)QThreadPrivate::Genode_thread::myself(); +#else + // requires a C cast here otherwise we run into trouble on AIX + return (Qt::HANDLE)pthread_self(); +#endif /* Q_OS_GENODE */ +} + +#ifndef Q_OS_GENODE +#if defined(QT_LINUXBASE) && !defined(_SC_NPROCESSORS_ONLN) +// LSB doesn't define _SC_NPROCESSORS_ONLN. +# define _SC_NPROCESSORS_ONLN 84 +#endif +#endif /* Q_OS_GENODE */ + +int QThread::idealThreadCount() Q_DECL_NOTHROW +{ + int cores = -1; + +#if defined(Q_OS_HPUX) + // HP-UX + struct pst_dynamic psd; + if (pstat_getdynamic(&psd, sizeof(psd), 1, 0) == -1) { + perror("pstat_getdynamic"); + cores = -1; + } else { + cores = (int)psd.psd_proc_cnt; + } +#elif defined(Q_OS_BSD4) + // FreeBSD, OpenBSD, NetBSD, BSD/OS, Mac OS X + size_t len = sizeof(cores); + int mib[2]; + mib[0] = CTL_HW; + mib[1] = HW_NCPU; + if (sysctl(mib, 2, &cores, &len, NULL, 0) != 0) { + perror("sysctl"); + cores = -1; + } +#elif defined(Q_OS_IRIX) + // IRIX + cores = (int)sysconf(_SC_NPROC_ONLN); +#elif defined(Q_OS_INTEGRITY) + // as of aug 2008 Integrity only supports one single core CPU + cores = 1; +#elif defined(Q_OS_VXWORKS) + // VxWorks +# if defined(QT_VXWORKS_HAS_CPUSET) + cpuset_t cpus = vxCpuEnabledGet(); + cores = 0; + + // 128 cores should be enough for everyone ;) + for (int i = 0; i < 128 && !CPUSET_ISZERO(cpus); ++i) { + if (CPUSET_ISSET(cpus, i)) { + CPUSET_CLR(cpus, i); + cores++; + } + } +# else + // as of aug 2008 VxWorks < 6.6 only supports one single core CPU + cores = 1; +# endif +#elif defined(Q_OS_GENODE) + cores = 1; +#else + // the rest: Linux, Solaris, AIX, Tru64 + cores = (int)sysconf(_SC_NPROCESSORS_ONLN); +#endif + + return cores; +} + +void QThread::yieldCurrentThread() +{ +#ifndef Q_OS_GENODE + sched_yield(); +#endif /* Q_OS_GENODE */ +} + +static timespec makeTimespec(time_t secs, long nsecs) +{ + struct timespec ts; + ts.tv_sec = secs; + ts.tv_nsec = nsecs; + return ts; +} + +void QThread::sleep(unsigned long secs) +{ +#ifdef Q_OS_GENODE + static Timer::Connection timer; + timer.msleep(secs * 1000); +#else + qt_nanosleep(makeTimespec(secs, 0)); +#endif /* Q_OS_GENODE */ +} + +void QThread::msleep(unsigned long msecs) +{ +#ifdef Q_OS_GENODE + static Timer::Connection timer; + timer.msleep(msecs); +#else + qt_nanosleep(makeTimespec(msecs / 1000, msecs % 1000 * 1000 * 1000)); +#endif /* Q_OS_GENODE */ +} + +void QThread::usleep(unsigned long usecs) +{ +#ifdef Q_OS_GENODE + static Timer::Connection timer; + timer.msleep(usecs / 1000); +#else + qt_nanosleep(makeTimespec(usecs / 1000 / 1000, usecs % (1000*1000) * 1000)); +#endif /* Q_OS_GENODE */ +} + +#ifndef Q_OS_GENODE +#ifdef QT_HAS_THREAD_PRIORITY_SCHEDULING +// Does some magic and calculate the Unix scheduler priorities +// sched_policy is IN/OUT: it must be set to a valid policy before calling this function +// sched_priority is OUT only +static bool calculateUnixPriority(int priority, int *sched_policy, int *sched_priority) +{ +#ifdef SCHED_IDLE + if (priority == QThread::IdlePriority) { + *sched_policy = SCHED_IDLE; + *sched_priority = 0; + return true; + } + const int lowestPriority = QThread::LowestPriority; +#else + const int lowestPriority = QThread::IdlePriority; +#endif + const int highestPriority = QThread::TimeCriticalPriority; + + int prio_min; + int prio_max; +#if defined(Q_OS_VXWORKS) && defined(VXWORKS_DKM) + // for other scheduling policies than SCHED_RR or SCHED_FIFO + prio_min = SCHED_FIFO_LOW_PRI; + prio_max = SCHED_FIFO_HIGH_PRI; + + if ((*sched_policy == SCHED_RR) || (*sched_policy == SCHED_FIFO)) +#endif + { + prio_min = sched_get_priority_min(*sched_policy); + prio_max = sched_get_priority_max(*sched_policy); + } + + if (prio_min == -1 || prio_max == -1) + return false; + + int prio; + // crudely scale our priority enum values to the prio_min/prio_max + prio = ((priority - lowestPriority) * (prio_max - prio_min) / highestPriority) + prio_min; + prio = qMax(prio_min, qMin(prio_max, prio)); + + *sched_priority = prio; + return true; +} +#endif +#endif /* Q_OS_GENODE */ + +void QThread::start(Priority priority) +{ + Q_D(QThread); + QMutexLocker locker(&d->mutex); + + if (d->isInFinish) + d->thread_done.wait(locker.mutex()); + + if (d->running) + return; + + d->running = true; + d->finished = false; + d->returnCode = 0; + d->exited = false; + +#ifndef Q_OS_GENODE + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); +#endif /* Q_OS_GENODE */ + + d->priority = priority; + +#ifdef Q_OS_GENODE + + d->genode_thread = new QThreadPrivate::Genode_thread(this); + + if (d->genode_thread) { + + if (d->stackSize > 0) { + if (!d->genode_thread->set_stack_size(d->stackSize)) { + qWarning("QThread::start: Thread stack size error"); + + // we failed to set the stacksize, and as the documentation states, + // the thread will fail to run... + d->running = false; + d->finished = false; + return; + } + } + + d->genode_thread->start(); + + } else { + qWarning("QThread::start: Thread creation error"); + + d->running = false; + d->finished = false; + d->thread_id = 0; + } + +#else + +#if defined(QT_HAS_THREAD_PRIORITY_SCHEDULING) + switch (priority) { + case InheritPriority: + { + pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED); + break; + } + + default: + { + int sched_policy; + if (pthread_attr_getschedpolicy(&attr, &sched_policy) != 0) { + // failed to get the scheduling policy, don't bother + // setting the priority + qWarning("QThread::start: Cannot determine default scheduler policy"); + break; + } + + int prio; + if (!calculateUnixPriority(priority, &sched_policy, &prio)) { + // failed to get the scheduling parameters, don't + // bother setting the priority + qWarning("QThread::start: Cannot determine scheduler priority range"); + break; + } + + sched_param sp; + sp.sched_priority = prio; + + if (pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED) != 0 + || pthread_attr_setschedpolicy(&attr, sched_policy) != 0 + || pthread_attr_setschedparam(&attr, &sp) != 0) { + // could not set scheduling hints, fallback to inheriting them + // we'll try again from inside the thread + pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED); + d->priority = Priority(priority | ThreadPriorityResetFlag); + } + break; + } + } +#endif // QT_HAS_THREAD_PRIORITY_SCHEDULING + + + if (d->stackSize > 0) { +#if defined(_POSIX_THREAD_ATTR_STACKSIZE) && (_POSIX_THREAD_ATTR_STACKSIZE-0 > 0) + int code = pthread_attr_setstacksize(&attr, d->stackSize); +#else + int code = ENOSYS; // stack size not supported, automatically fail +#endif // _POSIX_THREAD_ATTR_STACKSIZE + + if (code) { + qWarning("QThread::start: Thread stack size error: %s", + qPrintable(qt_error_string(code))); + + // we failed to set the stacksize, and as the documentation states, + // the thread will fail to run... + d->running = false; + d->finished = false; + return; + } + } + + int code = + pthread_create(&d->thread_id, &attr, QThreadPrivate::start, this); + if (code == EPERM) { + // caller does not have permission to set the scheduling + // parameters/policy +#if defined(QT_HAS_THREAD_PRIORITY_SCHEDULING) + pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED); +#endif + code = + pthread_create(&d->thread_id, &attr, QThreadPrivate::start, this); + } + + pthread_attr_destroy(&attr); + + if (code) { + qWarning("QThread::start: Thread creation error: %s", qPrintable(qt_error_string(code))); + + d->running = false; + d->finished = false; + d->thread_id = 0; + } + +#endif /* Q_OS_GENODE */ + +} + +void QThread::terminate() +{ +#if !defined(Q_OS_ANDROID) + Q_D(QThread); + QMutexLocker locker(&d->mutex); + +#ifdef Q_OS_GENODE + if (QThreadPrivate::tls.value(QThread::currentThreadId()).termination_enabled) { + + if (d->genode_thread) { + delete d->genode_thread; + d->genode_thread = 0; + } + + d->exited = true; + d->running = false; + } +#else + if (!d->thread_id) + return; + + int code = pthread_cancel(d->thread_id); + if (code) { + qWarning("QThread::start: Thread termination error: %s", + qPrintable(qt_error_string((code)))); + } +#endif +#endif /* Q_OS_GENODE */ +} + +#ifdef Q_OS_GENODE +static inline void join_and_delete_genode_thread(QThreadPrivate *d) +{ + if (d->genode_thread) { + d->genode_thread->join(); + delete d->genode_thread; + d->genode_thread = 0; + } +} +#endif /* Q_OS_GENODE */ + +bool QThread::wait(unsigned long time) +{ + Q_D(QThread); + QMutexLocker locker(&d->mutex); + +#ifdef Q_OS_GENODE + if (d->thread_id == QThread::currentThreadId()) { +#else + if (d->thread_id == pthread_self()) { +#endif /* Q_OS_GENODE */ + qWarning("QThread::wait: Thread tried to wait on itself"); + return false; + } + + if (d->finished || !d->running) { +#ifdef Q_OS_GENODE + join_and_delete_genode_thread(d); +#endif /* Q_OS_GENODE */ + return true; + } + + while (d->running) { + if (!d->thread_done.wait(locker.mutex(), time)) + return false; + } + +#ifdef Q_OS_GENODE + join_and_delete_genode_thread(d); +#endif /* Q_OS_GENODE */ + + return true; +} + +void QThread::setTerminationEnabled(bool enabled) +{ + QThread *thr = currentThread(); + Q_ASSERT_X(thr != 0, "QThread::setTerminationEnabled()", + "Current thread was not started with QThread."); + + Q_UNUSED(thr) +#ifdef Q_OS_GENODE + struct QThreadPrivate::tls_struct tls_elem = + QThreadPrivate::tls.value(QThread::currentThreadId()); + tls_elem.termination_enabled = enabled; + QThreadPrivate::tls.insert(QThread::currentThreadId(), tls_elem); +#else +#if defined(Q_OS_ANDROID) + Q_UNUSED(enabled); +#else + pthread_setcancelstate(enabled ? PTHREAD_CANCEL_ENABLE : PTHREAD_CANCEL_DISABLE, NULL); + if (enabled) + pthread_testcancel(); +#endif +#endif /* Q_OS_GENODE */ +} + +// Caller must lock the mutex +void QThreadPrivate::setPriority(QThread::Priority threadPriority) +{ + priority = threadPriority; + +#ifndef Q_OS_GENODE + + // copied from start() with a few modifications: + +#ifdef QT_HAS_THREAD_PRIORITY_SCHEDULING + int sched_policy; + sched_param param; + + if (pthread_getschedparam(thread_id, &sched_policy, ¶m) != 0) { + // failed to get the scheduling policy, don't bother setting + // the priority + qWarning("QThread::setPriority: Cannot get scheduler parameters"); + return; + } + + int prio; + if (!calculateUnixPriority(priority, &sched_policy, &prio)) { + // failed to get the scheduling parameters, don't + // bother setting the priority + qWarning("QThread::setPriority: Cannot determine scheduler priority range"); + return; + } + + param.sched_priority = prio; + int status = pthread_setschedparam(thread_id, sched_policy, ¶m); + +# ifdef SCHED_IDLE + // were we trying to set to idle priority and failed? + if (status == -1 && sched_policy == SCHED_IDLE && errno == EINVAL) { + // reset to lowest priority possible + pthread_getschedparam(thread_id, &sched_policy, ¶m); + param.sched_priority = sched_get_priority_min(sched_policy); + pthread_setschedparam(thread_id, sched_policy, ¶m); + } +# else + Q_UNUSED(status); +# endif // SCHED_IDLE +#endif + +#endif /* Q_OS_GENODE */ +} + +#endif // QT_NO_THREAD + +QT_END_NAMESPACE + diff --git a/libports/src/lib/qt5/qtbase/src/corelib/thread/qwaitcondition_genode.cpp b/libports/src/lib/qt5/qtbase/src/corelib/thread/qwaitcondition_genode.cpp new file mode 100644 index 0000000000..cdbc1bc3be --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/corelib/thread/qwaitcondition_genode.cpp @@ -0,0 +1,248 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qplatformdefs.h" +#include "qwaitcondition.h" +#include "qmutex.h" +#include "qreadwritelock.h" +#include "qatomic.h" +#include "qstring.h" + +#include "qmutex_p.h" +#include "qreadwritelock_p.h" + +#include + +#ifdef Q_OS_GENODE +#include +#endif /* Q_OS_GENODE */ + +#ifndef QT_NO_THREAD + +QT_BEGIN_NAMESPACE + +#ifndef Q_OS_GENODE +static void report_error(int code, const char *where, const char *what) +{ + if (code != 0) + qWarning("%s: %s failure: %s", where, what, qPrintable(qt_error_string(code))); +} +#endif /* Q_OS_GENODE */ + + + +class QWaitConditionPrivate { +public: +#ifdef Q_OS_GENODE + Genode::Lock mutex; + Genode::Timed_semaphore sem; +#else + pthread_mutex_t mutex; + pthread_cond_t cond; + int waiters; + int wakeups; + + bool wait(unsigned long time) + { + int code; + forever { + if (time != ULONG_MAX) { + struct timeval tv; + gettimeofday(&tv, 0); + + timespec ti; + ti.tv_nsec = (tv.tv_usec + (time % 1000) * 1000) * 1000; + ti.tv_sec = tv.tv_sec + (time / 1000) + (ti.tv_nsec / 1000000000); + ti.tv_nsec %= 1000000000; + + code = pthread_cond_timedwait(&cond, &mutex, &ti); + } else { + code = pthread_cond_wait(&cond, &mutex); + } + if (code == 0 && wakeups == 0) { + // many vendors warn of spurios wakeups from + // pthread_cond_wait(), especially after signal delivery, + // even though POSIX doesn't allow for it... sigh + continue; + } + break; + } + + Q_ASSERT_X(waiters > 0, "QWaitCondition::wait", "internal error (waiters)"); + --waiters; + if (code == 0) { + Q_ASSERT_X(wakeups > 0, "QWaitCondition::wait", "internal error (wakeups)"); + --wakeups; + } + report_error(pthread_mutex_unlock(&mutex), "QWaitCondition::wait()", "mutex unlock"); + + if (code && code != ETIMEDOUT) + report_error(code, "QWaitCondition::wait()", "cv wait"); + + return (code == 0); + } +#endif /* Q_OS_GENODE */ + +}; + + +QWaitCondition::QWaitCondition() +{ + d = new QWaitConditionPrivate; +#ifndef Q_OS_GENODE + report_error(pthread_mutex_init(&d->mutex, NULL), "QWaitCondition", "mutex init"); + report_error(pthread_cond_init(&d->cond, NULL), "QWaitCondition", "cv init"); + d->waiters = d->wakeups = 0; +#endif /* Q_OS_GENODE */ +} + + +QWaitCondition::~QWaitCondition() +{ +#ifndef Q_OS_GENODE + report_error(pthread_cond_destroy(&d->cond), "QWaitCondition", "cv destroy"); + report_error(pthread_mutex_destroy(&d->mutex), "QWaitCondition", "mutex destroy"); +#endif /* Q_OS_GENODE */ + delete d; +} + +void QWaitCondition::wakeOne() +{ +#ifdef Q_OS_GENODE + Genode::Lock::Guard lock_guard(d->mutex); + + if (d->sem.cnt() < 0) { + d->sem.up(); + } +#else + report_error(pthread_mutex_lock(&d->mutex), "QWaitCondition::wakeOne()", "mutex lock"); + d->wakeups = qMin(d->wakeups + 1, d->waiters); + report_error(pthread_cond_signal(&d->cond), "QWaitCondition::wakeOne()", "cv signal"); + report_error(pthread_mutex_unlock(&d->mutex), "QWaitCondition::wakeOne()", "mutex unlock"); +#endif /* Q_OS_GENODE */ +} + +void QWaitCondition::wakeAll() +{ +#ifdef Q_OS_GENODE + Genode::Lock::Guard lock_guard(d->mutex); + + while (d->sem.cnt() < 0) { + d->sem.up(); + } +#else + report_error(pthread_mutex_lock(&d->mutex), "QWaitCondition::wakeAll()", "mutex lock"); + d->wakeups = d->waiters; + report_error(pthread_cond_broadcast(&d->cond), "QWaitCondition::wakeAll()", "cv broadcast"); + report_error(pthread_mutex_unlock(&d->mutex), "QWaitCondition::wakeAll()", "mutex unlock"); +#endif /* Q_OS_GENODE */ +} + +bool QWaitCondition::wait(QMutex *mutex, unsigned long time) +{ + if (! mutex) + return false; + if (mutex->isRecursive()) { + qWarning("QWaitCondition: cannot wait on recursive mutexes"); + return false; + } + +#ifndef Q_OS_GENODE + report_error(pthread_mutex_lock(&d->mutex), "QWaitCondition::wait()", "mutex lock"); + ++d->waiters; +#endif /* Q_OS_GENODE */ + + mutex->unlock(); + +#ifdef Q_OS_GENODE + bool returnValue; + + if (time == ULONG_MAX) { + /* Timeout: never */ + d->sem.down(); + returnValue = true; + } else { + try { + d->sem.down((Genode::Alarm::Time) time); + returnValue = true; + } catch (Genode::Timeout_exception) { + returnValue = false; + } + } +#else + bool returnValue = d->wait(time); +#endif /* Q_OS_GENODE */ + + mutex->lock(); + + return returnValue; +} + +#ifndef Q_OS_GENODE +bool QWaitCondition::wait(QReadWriteLock *readWriteLock, unsigned long time) +{ + if (!readWriteLock || readWriteLock->d->accessCount == 0) + return false; + if (readWriteLock->d->accessCount < -1) { + qWarning("QWaitCondition: cannot wait on QReadWriteLocks with recursive lockForWrite()"); + return false; + } + + report_error(pthread_mutex_lock(&d->mutex), "QWaitCondition::wait()", "mutex lock"); + ++d->waiters; + + int previousAccessCount = readWriteLock->d->accessCount; + readWriteLock->unlock(); + + bool returnValue = d->wait(time); + + if (previousAccessCount < 0) + readWriteLock->lockForWrite(); + else + readWriteLock->lockForRead(); + + return returnValue; +} +#endif /* Q_OS_GENODE */ + +QT_END_NAMESPACE + +#endif // QT_NO_THREAD diff --git a/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/main.cpp b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/main.cpp new file mode 100644 index 0000000000..4221246f13 --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/main.cpp @@ -0,0 +1,36 @@ +/* + * \brief Nitpicker QPA plugin + * \author Christian Prochaska + * \date 2013-05-08 + */ + +/* + * Copyright (C) 2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#include "qnitpickerintegrationplugin.h" + +QT_BEGIN_NAMESPACE + +QStringList QNitpickerIntegrationPlugin::keys() const +{ + QStringList list; + list << "Nitpicker"; + return list; +} + +QPlatformIntegration *QNitpickerIntegrationPlugin::create(const QString& system, const QStringList& paramList) +{ + Q_UNUSED(paramList); + if (system.toLower() == "nitpicker") + return new QNitpickerIntegration; + + return 0; +} + +Q_IMPORT_PLUGIN(QNitpickerIntegrationPlugin) + +QT_END_NAMESPACE diff --git a/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/nitpicker.json b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/nitpicker.json new file mode 100644 index 0000000000..543688b74a --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/nitpicker.json @@ -0,0 +1,3 @@ +{ + "Keys": [ "nitpicker" ] +} diff --git a/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.cpp b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.cpp new file mode 100644 index 0000000000..999caffb5d --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.cpp @@ -0,0 +1,93 @@ +/* + * \brief QNitpickerIntegration + * \author Christian Prochaska + * \date 2013-05-08 + */ + +/* + * Copyright (C) 2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +/* Genode includes */ + +#include +#include + +/* Qt includes */ +#include +#include "qnitpickerintegration.h" +#include "qnitpickerplatformwindow.h" +#include "qnitpickerscreen.h" +#include "qnitpickerwindowsurface.h" +#include "qgenericunixeventdispatcher_p.h" +#include "qbasicfontdatabase_p.h" + +QT_BEGIN_NAMESPACE + +static const bool verbose = false; + +static Genode::Rpc_entrypoint &_entrypoint() +{ + enum { STACK_SIZE = 2*1024*sizeof(Genode::addr_t) }; + static Genode::Cap_connection cap; + static Genode::Rpc_entrypoint entrypoint(&cap, STACK_SIZE, "qt_window_ep"); + return entrypoint; +} + + +QNitpickerIntegration::QNitpickerIntegration() +: _nitpicker_screen(new QNitpickerScreen()), + _event_dispatcher(createUnixEventDispatcher()) +{ + QGuiApplicationPrivate::instance()->setEventDispatcher(_event_dispatcher); + screenAdded(_nitpicker_screen); +} + + +bool QNitpickerIntegration::hasCapability(QPlatformIntegration::Capability cap) const +{ + switch (cap) { + case ThreadedPixmaps: return true; + default: return QPlatformIntegration::hasCapability(cap); + } +} + + +QPlatformWindow *QNitpickerIntegration::createPlatformWindow(QWindow *window) const +{ + if (verbose) + qDebug() << "QNitpickerIntegration::createPlatformWindow(" << window << ")"; + + QRect screen_geometry = _nitpicker_screen->geometry(); + return new QNitpickerPlatformWindow(window, _entrypoint(), + screen_geometry.width(), + screen_geometry.height()); +} + + +QPlatformBackingStore *QNitpickerIntegration::createPlatformBackingStore(QWindow *window) const +{ + if (verbose) + qDebug() << "QNitpickerIntegration::createPlatformBackingStore(" << window << ")"; + return new QNitpickerWindowSurface(window); +} + + +QAbstractEventDispatcher *QNitpickerIntegration::guiThreadEventDispatcher() const +{ + if (verbose) + qDebug() << "QNitpickerIntegration::guiThreadEventDispatcher()"; + return _event_dispatcher; +} + + +QPlatformFontDatabase *QNitpickerIntegration::fontDatabase() const +{ + static QBasicFontDatabase db; + return &db; +} + +QT_END_NAMESPACE diff --git a/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.h b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.h new file mode 100644 index 0000000000..74928f970b --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.h @@ -0,0 +1,47 @@ +/* + * \brief QNitpickerIntegration + * \author Christian Prochaska + * \date 2013-05-08 + */ + +/* + * Copyright (C) 2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + + +#ifndef _QNITPICKERINTEGRATION_H_ +#define _QNITPICKERINTEGRATION_H_ + +#include +#include + +#include "qnitpickerscreen.h" + +QT_BEGIN_NAMESPACE + +class QNitpickerIntegration : public QPlatformIntegration +{ + private: + + QNitpickerScreen *_nitpicker_screen; + QAbstractEventDispatcher *_event_dispatcher; + + public: + + QNitpickerIntegration(); + + bool hasCapability(QPlatformIntegration::Capability cap) const; + + QPlatformWindow *createPlatformWindow(QWindow *window) const; + QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; + QAbstractEventDispatcher *guiThreadEventDispatcher() const; + + QPlatformFontDatabase *fontDatabase() const; +}; + +QT_END_NAMESPACE + +#endif /* _QNITPICKERINTEGRATION_H_ */ diff --git a/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegrationplugin.h b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegrationplugin.h new file mode 100644 index 0000000000..ae784ed428 --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegrationplugin.h @@ -0,0 +1,34 @@ +/* + * \brief Nitpicker QPA plugin + * \author Christian Prochaska + * \date 2013-05-08 + */ + +/* + * Copyright (C) 2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef _QNITPICKERINTEGRATIONPLUGIN_H_ +#define _QNITPICKERINTEGRATIONPLUGIN_H_ + +#include +#include +#include "qnitpickerintegration.h" + +QT_BEGIN_NAMESPACE + +class QNitpickerIntegrationPlugin : public QPlatformIntegrationPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.1" FILE "nitpicker.json") +public: + QStringList keys() const; + QPlatformIntegration *create(const QString&, const QStringList&); +}; + +QT_END_NAMESPACE + +#endif /* _QNITPICKERINTEGRATIONPLUGIN_H_ */ diff --git a/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.h b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.h new file mode 100644 index 0000000000..7adca6df9e --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.h @@ -0,0 +1,544 @@ +/* + * \brief QNitpickerPlatformWindow + * \author Christian Prochaska + * \date 2013-05-08 + */ + +/* + * Copyright (C) 2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + + +#ifndef _QNITPICKERPLATFORMWINDOW_H_ +#define _QNITPICKERPLATFORMWINDOW_H_ + +/* Genode includes */ +#include + +/* Qt includes */ +#include +#include +#include +#include +#include +#include + +/* Qoost includes */ +#include + +#include "window_slave_policy.h" + +QT_BEGIN_NAMESPACE + +static const bool qnpw_verbose = false; + +class QNitpickerPlatformWindow : public QObject, public QPlatformWindow +{ + Q_OBJECT + + private: + + Window_slave_policy _window_slave_policy; + Genode::Slave _window_slave; + QMember _timer; + Qt::MouseButtons _mouse_button_state; + QEvdevKeyboardHandler _keyboard_handler; + QByteArray _title; + bool _resize_handle; + bool _decoration; + + void _process_mouse_event(Input::Event *ev) + { + QPoint local_position(ev->ax(), ev->ay()); + QPoint global_position (geometry().x() + local_position.x(), + geometry().y() + local_position.y()); + + //qDebug() << "local_position =" << local_position; + //qDebug() << "global_position =" << global_position; + + switch (ev->type()) { + + case Input::Event::PRESS: + + if (qnpw_verbose) + PDBG("PRESS"); + + /* make this window the focused window */ + requestActivateWindow(); + + switch (ev->code()) { + case Input::BTN_LEFT: + _mouse_button_state |= Qt::LeftButton; + break; + case Input::BTN_RIGHT: + _mouse_button_state |= Qt::RightButton; + break; + case Input::BTN_MIDDLE: + _mouse_button_state |= Qt::MidButton; + break; + case Input::BTN_SIDE: + _mouse_button_state |= Qt::XButton1; + break; + case Input::BTN_EXTRA: + _mouse_button_state |= Qt::XButton2; + break; + } + break; + + case Input::Event::RELEASE: + + if (qnpw_verbose) + PDBG("RELEASE"); + + switch (ev->code()) { + case Input::BTN_LEFT: + _mouse_button_state &= ~Qt::LeftButton; + break; + case Input::BTN_RIGHT: + _mouse_button_state &= ~Qt::RightButton; + break; + case Input::BTN_MIDDLE: + _mouse_button_state &= ~Qt::MidButton; + break; + case Input::BTN_SIDE: + _mouse_button_state &= ~Qt::XButton1; + break; + case Input::BTN_EXTRA: + _mouse_button_state &= ~Qt::XButton2; + break; + } + break; + + case Input::Event::WHEEL: + + if (qnpw_verbose) + PDBG("WHEEL"); + + QWindowSystemInterface::handleWheelEvent(window(), + local_position, + local_position, + ev->ry() * 120, + Qt::Vertical); + return; + + default: + break; + } + + QWindowSystemInterface::handleMouseEvent(window(), + local_position, + global_position, + _mouse_button_state); + } + + void _process_key_event(Input::Event *ev) + { + const bool pressed = (ev->type() == Input::Event::PRESS); + const int keycode = ev->code(); + _keyboard_handler.processKeycode(keycode, pressed, false); + } + + public: + + QNitpickerPlatformWindow(QWindow *window, Genode::Rpc_entrypoint &ep, + int screen_width, int screen_height) + : QPlatformWindow(window), + _window_slave_policy(ep, screen_width, screen_height), + _window_slave(ep, _window_slave_policy, 9*1024*1024), + _timer(this), + _keyboard_handler("", -1, false, false, ""), + _resize_handle(!window->flags().testFlag(Qt::Popup)), + _decoration(!window->flags().testFlag(Qt::Popup)) + { + _window_slave_policy.wait_for_service_announcements(); + + connect(_timer, SIGNAL(timeout()), this, SLOT(handle_events())); + _timer->start(10); + } + + QWindow *window() const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::window()"; + return QPlatformWindow::window(); + } + + QPlatformWindow *parent() const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::parent()"; + return QPlatformWindow::parent(); + } + + QPlatformScreen *screen() const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::screen()"; + return QPlatformWindow::screen(); + } + + QSurfaceFormat format() const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::format()"; + return QPlatformWindow::format(); + } + + void setGeometry(const QRect &rect) + { + //if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setGeometry(" << rect << ")"; + + /* limit window size to screen size */ + QRect adjusted_rect(rect.intersected(screen()->geometry())); + + /* make invisible window invisible by moving it out of the screen */ + if (!window()->isVisible()) + adjusted_rect.moveRight(screen()->geometry().width()); + + _window_slave_policy.configure(adjusted_rect.x(), + adjusted_rect.y(), + adjusted_rect.width(), + adjusted_rect.height(), + _title.constData(), + _resize_handle, _decoration); + int final_width, final_height; + _window_slave_policy.size(final_width, final_height); + QRect final_geometry(rect.x(), rect.y(), final_width, final_height); + QPlatformWindow::setGeometry(final_geometry); + + emit framebuffer_changed(); + } + + QRect geometry() const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::geometry(): returning" << QPlatformWindow::geometry(); + return QPlatformWindow::geometry(); + } + + QMargins frameMargins() const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::frameMargins()"; + return QPlatformWindow::frameMargins(); + } + + void setVisible(bool visible) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setVisible(" << visible << ")"; + + QPlatformWindow::setVisible(visible); + QRect g = geometry(); + int x = g.x(); + if (!visible) + x += 100000; + _window_slave_policy.configure(x, g.y(), + g.width(), g.height(), + _title.constData(), + _resize_handle, _decoration); + + emit framebuffer_changed(); + } + + void setWindowFlags(Qt::WindowFlags flags) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setWindowFlags(" << flags << ")"; + + _resize_handle = true; + _decoration = true; + + if (flags.testFlag(Qt::Popup)) { + _resize_handle = false; + _decoration = false; + } + + QRect g = geometry(); + int x = g.x(); + if (!window()->isVisible()) + x += 100000; + _window_slave_policy.configure(x, g.y(), g.width(), g.height(), + _title.constData(), _resize_handle, + _decoration); + + QPlatformWindow::setWindowFlags(flags); + } + + void setWindowState(Qt::WindowState state) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setWindowState(" << state << ")"; + QPlatformWindow::setWindowState(state); + } + + WId winId() const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::winId()"; + return WId(this); + } + + void setParent(const QPlatformWindow *window) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setParent()"; + QPlatformWindow::setParent(window); + } + + void setWindowTitle(const QString &title) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setWindowTitle(" << title << ")"; + + QPlatformWindow::setWindowTitle(title); + _title = title.toUtf8(); + QRect g = geometry(); + int x = g.x(); + if (!window()->isVisible()) + x += 100000; + _window_slave_policy.configure(x, g.y(), + g.width(), g.height(), + _title.constData(), + _resize_handle, _decoration); + emit framebuffer_changed(); + } + + void setWindowFilePath(const QString &title) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setWindowFilePath(" << title << ")"; + QPlatformWindow::setWindowFilePath(title); + } + + void setWindowIcon(const QIcon &icon) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setWindowIcon()"; + QPlatformWindow::setWindowIcon(icon); + } + + void raise() + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::raise()"; + QPlatformWindow::raise(); + } + + void lower() + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::lower()"; + QPlatformWindow::lower(); + } + + bool isExposed() const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::isExposed()"; + return QPlatformWindow::isExposed(); + } + + bool isActive() const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::isActive()"; + return QPlatformWindow::isActive(); + } + + bool isEmbedded(const QPlatformWindow *parentWindow) const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::isEmbedded()"; + return QPlatformWindow::isEmbedded(parentWindow); + } + + QPoint mapToGlobal(const QPoint &pos) const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::mapToGlobal(" << pos << ")"; + return QPlatformWindow::mapToGlobal(pos); + } + + QPoint mapFromGlobal(const QPoint &pos) const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::mapFromGlobal(" << pos << ")"; + return QPlatformWindow::mapFromGlobal(pos); + } + + void propagateSizeHints() + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::propagateSizeHints()"; + QPlatformWindow::propagateSizeHints(); + } + + void setOpacity(qreal level) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setOpacity(" << level << ")"; + QPlatformWindow::setOpacity(level); + } + + void setMask(const QRegion ®ion) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setMask(" << region << ")"; + QPlatformWindow::setMask(region); + } + + void requestActivateWindow() + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::requestActivateWindow()"; + QPlatformWindow::requestActivateWindow(); + } + + void handleContentOrientationChange(Qt::ScreenOrientation orientation) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::handleContentOrientationChange()"; + QPlatformWindow::handleContentOrientationChange(orientation); + } + + qreal devicePixelRatio() const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::devicePixelRatio()"; + return QPlatformWindow::devicePixelRatio(); + } + + bool setKeyboardGrabEnabled(bool grab) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setKeyboardGrabEnabled()"; + return QPlatformWindow::setKeyboardGrabEnabled(grab); + } + + bool setMouseGrabEnabled(bool grab) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setMouseGrabEnabled()"; + return QPlatformWindow::setMouseGrabEnabled(grab); + } + + bool setWindowModified(bool modified) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setWindowModified()"; + return QPlatformWindow::setWindowModified(modified); + } + + void windowEvent(QEvent *event) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::windowEvent(" << event->type() << ")"; + QPlatformWindow::windowEvent(event); + } + + bool startSystemResize(const QPoint &pos, Qt::Corner corner) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::startSystemResize()"; + return QPlatformWindow::startSystemResize(pos, corner); + } + + void setFrameStrutEventsEnabled(bool enabled) + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::setFrameStrutEventsEnabled()"; + QPlatformWindow::setFrameStrutEventsEnabled(enabled); + } + + bool frameStrutEventsEnabled() const + { + if (qnpw_verbose) + qDebug() << "QNitpickerPlatformWindow::frameStrutEventsEnabled()"; + return QPlatformWindow::frameStrutEventsEnabled(); + } + + /* functions used by the window surface */ + + unsigned char *framebuffer() + { + return _window_slave_policy.framebuffer(); + } + + void refresh(int x, int y, int w, int h) + { + _window_slave_policy.refresh(x, y, w, h); + } + + signals: + + void framebuffer_changed(); + + private slots: + + void handle_events() + { + /* handle framebuffer mode change events */ + if (_window_slave_policy.mode_changed()) { + int new_width; + int new_height; + _window_slave_policy.size(new_width, new_height); + + if (qnpw_verbose) + PDBG("mode change detected: %d, %d", new_width, new_height); + + QRect geo = geometry(); + geo.setWidth(new_width); + geo.setHeight(new_height); + QPlatformWindow::setGeometry(geo); + + if (qnpw_verbose) + qDebug() << "calling QWindowSystemInterface::handleGeometryChange(" << geo << ")"; + + QWindowSystemInterface::handleGeometryChange(window(), geo); + emit framebuffer_changed(); + } + + /* handle input events */ + Input::Session_client input(_window_slave_policy.input_session()); + if (input.is_pending()) { + Input::Event *ev_buf = _window_slave_policy.ev_buf(); + for (int i = 0, num_ev = input.flush(); i < num_ev; i++) { + + Input::Event *ev = &ev_buf[i]; + + bool const is_key_event = ev->type() == Input::Event::PRESS || + ev->type() == Input::Event::RELEASE; + + bool const is_mouse_button_event = + is_key_event && (ev->code() == Input::BTN_LEFT || + ev->code() == Input::BTN_MIDDLE || + ev->code() == Input::BTN_RIGHT); + + if (ev->type() == Input::Event::MOTION || + ev->type() == Input::Event::WHEEL || + is_mouse_button_event) { + + _process_mouse_event(ev); + + } else if (is_key_event && (ev->code() < 128)) { + + _process_key_event(ev); + + } + } + + } + + + } + +}; + +QT_END_NAMESPACE + +#endif /* _QNITPICKERPLATFORMWINDOW_H_ */ diff --git a/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerscreen.h b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerscreen.h new file mode 100644 index 0000000000..f58011eb90 --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerscreen.h @@ -0,0 +1,59 @@ +/* + * \brief QNitpickerScreen + * \author Christian Prochaska + * \date 2013-05-08 + */ + +/* + * Copyright (C) 2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + + +#ifndef _QNITPICKERSCREEN_H_ +#define _QNITPICKERSCREEN_H_ + +#include + +#include + +/* Genode includes */ +#include +#include + +QT_BEGIN_NAMESPACE + +class QNitpickerScreen : public QPlatformScreen +{ + private: + + Nitpicker::Connection _nitpicker; + Framebuffer::Session_client _framebuffer; + QRect _geometry; + + public: + + QNitpickerScreen() + : _framebuffer(_nitpicker.framebuffer_session()) + { + Framebuffer::Mode const scr_mode = _framebuffer.mode(); + + if (scr_mode.format() != Framebuffer::Mode::RGB565) + qCritical() << "Nitpicker screen format is not RGB565"; + + _geometry.setRect(0, 0, scr_mode.width(), scr_mode.height()); + + Genode::env()->parent()->close(_nitpicker.cap()); + } + + QRect geometry() const { return _geometry; } + int depth() const { return 16; } + QImage::Format format() const { return QImage::Format_RGB16; } + QDpi logicalDpi() const { return QDpi(80, 80); }; +}; + +QT_END_NAMESPACE + +#endif /* _QNITPICKERSCREEN_H_ */ diff --git a/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerwindowsurface.cpp b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerwindowsurface.cpp new file mode 100644 index 0000000000..4ee63fd4e1 --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerwindowsurface.cpp @@ -0,0 +1,93 @@ +/* + * \brief QNitpickerWindowSurface + * \author Christian Prochaska + * \date 2013-05-08 + */ + +/* + * Copyright (C) 2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + + +#include + +#include + +#include "qnitpickerplatformwindow.h" + +#include "qnitpickerwindowsurface.h" + +static const bool verbose = false; + +QT_BEGIN_NAMESPACE + +QNitpickerWindowSurface::QNitpickerWindowSurface(QWindow *window) + : QPlatformBackingStore(window), _framebuffer_changed(true) +{ + //qDebug() << "QNitpickerWindowSurface::QNitpickerWindowSurface:" << (long)this; + + _platform_window = static_cast(window->handle()); + connect(_platform_window, SIGNAL(framebuffer_changed()), this, SLOT(framebuffer_changed())); +} + +QNitpickerWindowSurface::~QNitpickerWindowSurface() +{ +} + +QPaintDevice *QNitpickerWindowSurface::paintDevice() +{ + if (verbose) + qDebug() << "QNitpickerWindowSurface::paintDevice()"; + + if (_framebuffer_changed) { + + if (verbose) + PDBG("framebuffer changed"); + + _framebuffer_changed = false; + /* + * It can happen that 'resize()' was not called yet, so the size needs + * to be obtained from the window. + */ + QImage::Format format = QGuiApplication::primaryScreen()->handle()->format(); + QRect geo = _platform_window->geometry(); + _image = QImage(_platform_window->framebuffer(), geo.width(), geo.height(), 2*geo.width(), format); + + if (verbose) + qDebug() << "QNitpickerWindowSurface::paintDevice(): w =" << geo.width() << ", h =" << geo.height(); + } + + if (verbose) + qDebug() << "QNitpickerWindowSurface::paintDevice() finished"; + + return &_image; +} + +void QNitpickerWindowSurface::flush(QWindow *window, const QRegion ®ion, const QPoint &offset) +{ + Q_UNUSED(window); + Q_UNUSED(region); + Q_UNUSED(offset); + + if (verbose) + qDebug() << "QNitpickerWindowSurface::flush()"; + + QRect geo = _platform_window->geometry(); + _platform_window->refresh(0, 0, geo.width(), geo.height()); +} + +void QNitpickerWindowSurface::resize(const QSize &size, const QRegion &staticContents) +{ + if (verbose) + qDebug() << "QNitpickerWindowSurface::resize:" << this << size; +} + +void QNitpickerWindowSurface::framebuffer_changed() +{ + _framebuffer_changed = true; +} + +QT_END_NAMESPACE diff --git a/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerwindowsurface.h b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerwindowsurface.h new file mode 100644 index 0000000000..e90a8162fb --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerwindowsurface.h @@ -0,0 +1,50 @@ +/* + * \brief QNitpickerWindowSurface + * \author Christian Prochaska + * \date 2013-05-08 + */ + +/* + * Copyright (C) 2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + + +#ifndef _QNITPICKERWINDOWSURFACE_H_ +#define _QNITPICKERWINDOWSURFACE_H_ + +#include + +class QNitpickerPlatformWindow; + +QT_BEGIN_NAMESPACE + +class QNitpickerWindowSurface : public QObject, public QPlatformBackingStore +{ + Q_OBJECT + + private: + + QNitpickerPlatformWindow *_platform_window; + QImage _image; + bool _framebuffer_changed; + + public: + + QNitpickerWindowSurface(QWindow *window); + ~QNitpickerWindowSurface(); + + QPaintDevice *paintDevice(); + void flush(QWindow *window, const QRegion ®ion, const QPoint &offset); + void resize(const QSize &size, const QRegion &staticContents); + + public slots: + + void framebuffer_changed(); +}; + +QT_END_NAMESPACE + +#endif /* _QNITPICKERWINDOWSURFACE_H_ */ diff --git a/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/window_slave_policy.h b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/window_slave_policy.h new file mode 100644 index 0000000000..d0b6b531ae --- /dev/null +++ b/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/window_slave_policy.h @@ -0,0 +1,285 @@ +/* + * \brief Slave policy for an undecorated window + * \author Christian Prochaska + * \date 2013-05-08 + */ + +/* + * Copyright (C) 2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef _UNDECORATED_WINDOW_POLICY_H_ +#define _UNDECORATED_WINDOW_POLICY_H_ + +/* Qt4 includes */ +#include +#include +#include +#include + +/* Genode includes */ +#include +#include +#include +#include +#include + +using Genode::Root_capability; +using Genode::Allocator; +using Genode::Server; +using Genode::env; +using Genode::Lock_guard; +using Genode::Lock; +using Genode::Signal_context; +using Genode::Signal_receiver; +using Genode::Signal_context_capability; +using Genode::Dataspace_capability; + +static const bool wsp_verbose = false; + +class Window_slave_policy : public Genode::Slave_policy +{ + private: + + Framebuffer::Session_capability _framebuffer_session; + Genode::Lock _framebuffer_ready_lock; + unsigned char *_framebuffer; + Signal_context _mode_change_signal_context; + Signal_receiver _signal_receiver; + + Input::Session_capability _input_session; + Genode::Lock _input_ready_lock; + Input::Event *_ev_buf; + + QByteArray _config_byte_array; + + const char *_config(int xpos, int ypos, int width, int height, + const char *title, bool resize_handle = true, + bool decoration = true) + { + QDomDocument config_doc; + + QDomElement config_node = config_doc.createElement("config"); + config_doc.appendChild(config_node); + + config_node.setAttribute("xpos", QString::number(xpos)); + config_node.setAttribute("ypos", QString::number(ypos)); + config_node.setAttribute("width", QString::number(width)); + config_node.setAttribute("height", QString::number(height)); + + /* liquid_framebuffer options */ + config_node.setAttribute("title", title); + config_node.setAttribute("animate", "off"); + + if (resize_handle) + config_node.setAttribute("resize_handle", "on"); + else + config_node.setAttribute("resize_handle", "off"); + + if (decoration) + config_node.setAttribute("decoration", "on"); + else + config_node.setAttribute("decoration", "off"); + + _config_byte_array = config_doc.toByteArray(4); + + if (wsp_verbose) + qDebug() << _config_byte_array; + + return _config_byte_array.constData(); + } + + void _reattach_framebuffer() + { + Framebuffer::Session_client session_client(_framebuffer_session); + + if (_framebuffer) + Genode::env()->rm_session()->detach(_framebuffer); + + session_client.release(); + + Dataspace_capability framebuffer_ds = session_client.dataspace(); + if (framebuffer_ds.valid()) { + _framebuffer = Genode::env()->rm_session()->attach(framebuffer_ds); + Framebuffer::Mode const scr_mode = session_client.mode(); + if (wsp_verbose) + PDBG("_framebuffer = %p, width = %d, height = %d", _framebuffer, scr_mode.width(), scr_mode.height()); + } + else + _framebuffer = 0; + } + + protected: + + const char **_permitted_services() const + { + static const char *permitted_services[] = { + "CAP", "LOG", "RM", "ROM", "SIGNAL", + "Timer", "Nitpicker", 0 }; + + return permitted_services; + }; + + public: + + Window_slave_policy(Genode::Rpc_entrypoint &ep, + int screen_width, int screen_height) + : Genode::Slave_policy("liquid_fb", ep, env()->ram_session()), + _framebuffer_ready_lock(Genode::Lock::LOCKED), + _framebuffer(0), _ev_buf(0) + { + /* start with an invisible window by placing it outside of the screen area */ + Slave_policy::configure(_config(100000, 0, screen_width, screen_height, "Qt window")); + } + + + ~Window_slave_policy() + { + if (_framebuffer) + Genode::env()->rm_session()->detach(_framebuffer); + + if (_ev_buf) + Genode::env()->rm_session()->detach(_ev_buf); + } + + + bool announce_service(const char *name, + Root_capability root, + Allocator *alloc, + Server *server) + { + if (wsp_verbose) + PDBG("name = %s", name); + + if (Genode::strcmp(name, "Input") == 0) { + + Genode::Session_capability session_cap = + Genode::Root_client(root).session("ram_quota=8K", + Genode::Affinity()); + + _input_session = + Genode::static_cap_cast(session_cap); + + Input::Session_client session_client(_input_session); + + _ev_buf = static_cast + (env()->rm_session()->attach(session_client.dataspace())); + + _input_ready_lock.unlock(); + + return true; + } + + if (Genode::strcmp(name, "Framebuffer") == 0) { + + Genode::Session_capability session_cap = + Genode::Root_client(root).session("ram_quota=8K", + Genode::Affinity()); + + _framebuffer_session = + Genode::static_cap_cast(session_cap); + + Framebuffer::Session_client session_client(_framebuffer_session); + + _framebuffer = Genode::env()->rm_session()->attach(session_client.dataspace()); + + Signal_context_capability mode_change_signal_context_capability = + _signal_receiver.manage(&_mode_change_signal_context); + + session_client.mode_sigh(mode_change_signal_context_capability); + + Framebuffer::Mode const scr_mode = session_client.mode(); + + if (wsp_verbose) + PDBG("_framebuffer = %p, width = %d, height = %d", _framebuffer, scr_mode.width(), scr_mode.height()); + + _framebuffer_ready_lock.unlock(); + return true; + } + + return Slave_policy::announce_service(name, root, alloc, server); + } + + + void wait_for_service_announcements() + { + Lock_guard framebuffer_ready_lock_guard(_framebuffer_ready_lock); + Lock_guard input_ready_lock_guard(_input_ready_lock); + } + + + void configure(int x, int y, int width, int height, const char *title, + bool resize_handle, bool decoration) + { + Slave_policy::configure(_config(x, y, width, height, title, resize_handle, decoration)); + + if (wsp_verbose) + PDBG("waiting for mode change signal"); + + _signal_receiver.wait_for_signal(); + + if (wsp_verbose) + PDBG("received mode change signal"); + + _reattach_framebuffer(); + } + + + /* + * Return the current window size + */ + void size(int &width, int &height) + { + Framebuffer::Session_client session_client(_framebuffer_session); + Framebuffer::Mode const scr_mode = session_client.mode(); + width = scr_mode.width(); + height = scr_mode.height(); + } + + + unsigned char *framebuffer() + { + return _framebuffer; + } + + + void refresh(int x, int y, int w, int h) + { + Framebuffer::Session_client session_client(_framebuffer_session); + session_client.refresh(x, y, w, h); + } + + + bool mode_changed() + { + bool result = false; + + while (_signal_receiver.pending()) { + _signal_receiver.wait_for_signal(); + result = true; + } + + if (result == true) + _reattach_framebuffer(); + + return result; + } + + + Input::Session_capability input_session() + { + return _input_session; + } + + + Input::Event *ev_buf() + { + return _ev_buf; + } + +}; + +#endif /* _UNDECORATED_WINDOW_POLICY_H_ */ diff --git a/libports/src/lib/qt5/qtwebkit/Source/WebCore/idl_files b/libports/src/lib/qt5/qtwebkit/Source/WebCore/idl_files new file mode 100644 index 0000000000..dd7a68f5cb --- /dev/null +++ b/libports/src/lib/qt5/qtwebkit/Source/WebCore/idl_files @@ -0,0 +1,536 @@ +qtwebkit/Source/WebCore/Modules/filesystem/DOMFileSystem.idl +qtwebkit/Source/WebCore/Modules/filesystem/DOMFileSystemSync.idl +qtwebkit/Source/WebCore/Modules/filesystem/DOMWindowFileSystem.idl +qtwebkit/Source/WebCore/Modules/filesystem/DirectoryEntry.idl +qtwebkit/Source/WebCore/Modules/filesystem/DirectoryEntrySync.idl +qtwebkit/Source/WebCore/Modules/filesystem/DirectoryReader.idl +qtwebkit/Source/WebCore/Modules/filesystem/DirectoryReaderSync.idl +qtwebkit/Source/WebCore/Modules/filesystem/EntriesCallback.idl +qtwebkit/Source/WebCore/Modules/filesystem/Entry.idl +qtwebkit/Source/WebCore/Modules/filesystem/EntryArray.idl +qtwebkit/Source/WebCore/Modules/filesystem/EntryArraySync.idl +qtwebkit/Source/WebCore/Modules/filesystem/EntryCallback.idl +qtwebkit/Source/WebCore/Modules/filesystem/EntrySync.idl +qtwebkit/Source/WebCore/Modules/filesystem/ErrorCallback.idl +qtwebkit/Source/WebCore/Modules/filesystem/FileCallback.idl +qtwebkit/Source/WebCore/Modules/filesystem/FileEntry.idl +qtwebkit/Source/WebCore/Modules/filesystem/FileEntrySync.idl +qtwebkit/Source/WebCore/Modules/filesystem/FileSystemCallback.idl +qtwebkit/Source/WebCore/Modules/filesystem/FileWriter.idl +qtwebkit/Source/WebCore/Modules/filesystem/FileWriterCallback.idl +qtwebkit/Source/WebCore/Modules/filesystem/Metadata.idl +qtwebkit/Source/WebCore/Modules/filesystem/MetadataCallback.idl +qtwebkit/Source/WebCore/Modules/filesystem/WorkerContextFileSystem.idl +qtwebkit/Source/WebCore/Modules/geolocation/Geolocation.idl +qtwebkit/Source/WebCore/Modules/geolocation/Geoposition.idl +qtwebkit/Source/WebCore/Modules/geolocation/NavigatorGeolocation.idl +qtwebkit/Source/WebCore/Modules/geolocation/PositionCallback.idl +qtwebkit/Source/WebCore/Modules/geolocation/PositionError.idl +qtwebkit/Source/WebCore/Modules/geolocation/PositionErrorCallback.idl +qtwebkit/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.idl +qtwebkit/Source/WebCore/Modules/indexeddb/IDBAny.idl +qtwebkit/Source/WebCore/Modules/indexeddb/IDBCursor.idl +qtwebkit/Source/WebCore/Modules/indexeddb/IDBDatabaseException.idl +qtwebkit/Source/WebCore/Modules/indexeddb/IDBDatabase.idl +qtwebkit/Source/WebCore/Modules/indexeddb/IDBFactory.idl +qtwebkit/Source/WebCore/Modules/indexeddb/IDBIndex.idl +qtwebkit/Source/WebCore/Modules/indexeddb/IDBKey.idl +qtwebkit/Source/WebCore/Modules/indexeddb/IDBKeyRange.idl +qtwebkit/Source/WebCore/Modules/indexeddb/IDBObjectStore.idl +qtwebkit/Source/WebCore/Modules/indexeddb/IDBRequest.idl +qtwebkit/Source/WebCore/Modules/indexeddb/IDBTransaction.idl +qtwebkit/Source/WebCore/Modules/indexeddb/WorkerContextIndexedDatabase.idl +qtwebkit/Source/WebCore/Modules/notifications/DOMWindowNotifications.idl +qtwebkit/Source/WebCore/Modules/notifications/Notification.idl +qtwebkit/Source/WebCore/Modules/notifications/NotificationCenter.idl +qtwebkit/Source/WebCore/Modules/notifications/NotificationPermissionCallback.idl +qtwebkit/Source/WebCore/Modules/notifications/WorkerContextNotifications.idl +qtwebkit/Source/WebCore/Modules/quota/DOMWindowQuota.idl +qtwebkit/Source/WebCore/Modules/quota/StorageInfo.idl +qtwebkit/Source/WebCore/Modules/quota/StorageInfoErrorCallback.idl +qtwebkit/Source/WebCore/Modules/quota/StorageInfoQuotaCallback.idl +qtwebkit/Source/WebCore/Modules/quota/StorageInfoUsageCallback.idl +qtwebkit/Source/WebCore/Modules/webaudio/AudioBuffer.idl +qtwebkit/Source/WebCore/Modules/webaudio/AudioBufferCallback.idl +qtwebkit/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/ChannelMergerNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/ChannelSplitterNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/AudioContext.idl +qtwebkit/Source/WebCore/Modules/webaudio/AudioDestinationNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/AudioGain.idl +qtwebkit/Source/WebCore/Modules/webaudio/GainNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/AudioListener.idl +qtwebkit/Source/WebCore/Modules/webaudio/AudioNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/PannerNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/AudioParam.idl +qtwebkit/Source/WebCore/Modules/webaudio/AudioProcessingEvent.idl +qtwebkit/Source/WebCore/Modules/webaudio/AudioSourceNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/BiquadFilterNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/ConvolverNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/DelayNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/DOMWindowWebAudio.idl +qtwebkit/Source/WebCore/Modules/webaudio/DynamicsCompressorNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/ScriptProcessorNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/MediaElementAudioSourceNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/MediaStreamAudioSourceNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/OfflineAudioCompletionEvent.idl +qtwebkit/Source/WebCore/Modules/webaudio/OscillatorNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/AnalyserNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/WaveShaperNode.idl +qtwebkit/Source/WebCore/Modules/webaudio/WaveTable.idl +qtwebkit/Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.idl +qtwebkit/Source/WebCore/Modules/webdatabase/Database.idl +qtwebkit/Source/WebCore/Modules/webdatabase/DatabaseCallback.idl +qtwebkit/Source/WebCore/Modules/webdatabase/DatabaseSync.idl +qtwebkit/Source/WebCore/Modules/webdatabase/SQLError.idl +qtwebkit/Source/WebCore/Modules/webdatabase/SQLException.idl +qtwebkit/Source/WebCore/Modules/webdatabase/SQLResultSet.idl +qtwebkit/Source/WebCore/Modules/webdatabase/SQLResultSetRowList.idl +qtwebkit/Source/WebCore/Modules/webdatabase/SQLStatementCallback.idl +qtwebkit/Source/WebCore/Modules/webdatabase/SQLStatementErrorCallback.idl +qtwebkit/Source/WebCore/Modules/webdatabase/SQLTransaction.idl +qtwebkit/Source/WebCore/Modules/webdatabase/SQLTransactionCallback.idl +qtwebkit/Source/WebCore/Modules/webdatabase/SQLTransactionErrorCallback.idl +qtwebkit/Source/WebCore/Modules/webdatabase/SQLTransactionSync.idl +qtwebkit/Source/WebCore/Modules/webdatabase/SQLTransactionSyncCallback.idl +qtwebkit/Source/WebCore/Modules/webdatabase/WorkerContextWebDatabase.idl +qtwebkit/Source/WebCore/Modules/websockets/CloseEvent.idl +qtwebkit/Source/WebCore/Modules/websockets/DOMWindowWebSocket.idl +qtwebkit/Source/WebCore/Modules/websockets/WebSocket.idl +qtwebkit/Source/WebCore/Modules/websockets/WorkerContextWebSocket.idl +qtwebkit/Source/WebCore/css/Counter.idl +qtwebkit/Source/WebCore/css/CSSCharsetRule.idl +qtwebkit/Source/WebCore/css/CSSFontFaceRule.idl +qtwebkit/Source/WebCore/css/CSSImportRule.idl +qtwebkit/Source/WebCore/css/CSSMediaRule.idl +qtwebkit/Source/WebCore/css/CSSPageRule.idl +qtwebkit/Source/WebCore/css/CSSPrimitiveValue.idl +qtwebkit/Source/WebCore/css/CSSRule.idl +qtwebkit/Source/WebCore/css/CSSRuleList.idl +qtwebkit/Source/WebCore/css/CSSStyleDeclaration.idl +qtwebkit/Source/WebCore/css/CSSStyleRule.idl +qtwebkit/Source/WebCore/css/CSSStyleSheet.idl +qtwebkit/Source/WebCore/css/CSSValue.idl +qtwebkit/Source/WebCore/css/CSSValueList.idl +qtwebkit/Source/WebCore/css/MediaList.idl +qtwebkit/Source/WebCore/css/MediaQueryList.idl +qtwebkit/Source/WebCore/css/Rect.idl +qtwebkit/Source/WebCore/css/RGBColor.idl +qtwebkit/Source/WebCore/css/StyleMedia.idl +qtwebkit/Source/WebCore/css/StyleSheet.idl +qtwebkit/Source/WebCore/css/StyleSheetList.idl +qtwebkit/Source/WebCore/css/WebKitCSSFilterValue.idl +qtwebkit/Source/WebCore/css/WebKitCSSKeyframeRule.idl +qtwebkit/Source/WebCore/css/WebKitCSSKeyframesRule.idl +qtwebkit/Source/WebCore/css/WebKitCSSMatrix.idl +qtwebkit/Source/WebCore/css/WebKitCSSMixFunctionValue.idl +qtwebkit/Source/WebCore/css/WebKitCSSRegionRule.idl +qtwebkit/Source/WebCore/css/WebKitCSSTransformValue.idl +qtwebkit/Source/WebCore/css/WebKitCSSViewportRule.idl +qtwebkit/Source/WebCore/dom/Attr.idl +qtwebkit/Source/WebCore/dom/BeforeLoadEvent.idl +qtwebkit/Source/WebCore/dom/CharacterData.idl +qtwebkit/Source/WebCore/dom/ClientRect.idl +qtwebkit/Source/WebCore/dom/ClientRectList.idl +qtwebkit/Source/WebCore/dom/Clipboard.idl +qtwebkit/Source/WebCore/dom/CDATASection.idl +qtwebkit/Source/WebCore/dom/Comment.idl +qtwebkit/Source/WebCore/dom/CompositionEvent.idl +qtwebkit/Source/WebCore/dom/CustomEvent.idl +qtwebkit/Source/WebCore/dom/DataTransferItem.idl +qtwebkit/Source/WebCore/dom/DataTransferItemList.idl +qtwebkit/Source/WebCore/dom/DeviceMotionEvent.idl +qtwebkit/Source/WebCore/dom/DeviceOrientationEvent.idl +qtwebkit/Source/WebCore/dom/DocumentFragment.idl +qtwebkit/Source/WebCore/dom/Document.idl +qtwebkit/Source/WebCore/dom/DocumentType.idl +qtwebkit/Source/WebCore/dom/DOMCoreException.idl +qtwebkit/Source/WebCore/dom/DOMError.idl +qtwebkit/Source/WebCore/dom/DOMImplementation.idl +qtwebkit/Source/WebCore/dom/DOMStringList.idl +qtwebkit/Source/WebCore/dom/DOMStringMap.idl +qtwebkit/Source/WebCore/dom/Element.idl +qtwebkit/Source/WebCore/dom/Entity.idl +qtwebkit/Source/WebCore/dom/EntityReference.idl +qtwebkit/Source/WebCore/dom/ErrorEvent.idl +qtwebkit/Source/WebCore/dom/Event.idl +qtwebkit/Source/WebCore/dom/EventException.idl +qtwebkit/Source/WebCore/dom/EventTarget.idl +qtwebkit/Source/WebCore/dom/HashChangeEvent.idl +qtwebkit/Source/WebCore/dom/KeyboardEvent.idl +qtwebkit/Source/WebCore/dom/MouseEvent.idl +qtwebkit/Source/WebCore/dom/MessageChannel.idl +qtwebkit/Source/WebCore/dom/MessageEvent.idl +qtwebkit/Source/WebCore/dom/MessagePort.idl +qtwebkit/Source/WebCore/dom/MutationCallback.idl +qtwebkit/Source/WebCore/dom/MutationEvent.idl +qtwebkit/Source/WebCore/dom/MutationObserver.idl +qtwebkit/Source/WebCore/dom/MutationRecord.idl +qtwebkit/Source/WebCore/dom/NamedNodeMap.idl +qtwebkit/Source/WebCore/dom/Node.idl +qtwebkit/Source/WebCore/dom/NodeFilter.idl +qtwebkit/Source/WebCore/dom/NodeIterator.idl +qtwebkit/Source/WebCore/dom/NodeList.idl +qtwebkit/Source/WebCore/dom/Notation.idl +qtwebkit/Source/WebCore/dom/OverflowEvent.idl +qtwebkit/Source/WebCore/dom/PageTransitionEvent.idl +qtwebkit/Source/WebCore/dom/PopStateEvent.idl +qtwebkit/Source/WebCore/dom/ProcessingInstruction.idl +qtwebkit/Source/WebCore/dom/ProgressEvent.idl +qtwebkit/Source/WebCore/dom/PropertyNodeList.idl +qtwebkit/Source/WebCore/dom/RangeException.idl +qtwebkit/Source/WebCore/dom/Range.idl +qtwebkit/Source/WebCore/dom/RequestAnimationFrameCallback.idl +qtwebkit/Source/WebCore/dom/ShadowRoot.idl +qtwebkit/Source/WebCore/dom/StringCallback.idl +qtwebkit/Source/WebCore/dom/Text.idl +qtwebkit/Source/WebCore/dom/TextEvent.idl +qtwebkit/Source/WebCore/dom/Touch.idl +qtwebkit/Source/WebCore/dom/TouchEvent.idl +qtwebkit/Source/WebCore/dom/TouchList.idl +qtwebkit/Source/WebCore/dom/TreeWalker.idl +qtwebkit/Source/WebCore/dom/UIEvent.idl +qtwebkit/Source/WebCore/dom/WebKitAnimationEvent.idl +qtwebkit/Source/WebCore/dom/WebKitNamedFlow.idl +qtwebkit/Source/WebCore/dom/DOMNamedFlowCollection.idl +qtwebkit/Source/WebCore/dom/WebKitTransitionEvent.idl +qtwebkit/Source/WebCore/dom/WheelEvent.idl +qtwebkit/Source/WebCore/fileapi/Blob.idl +qtwebkit/Source/WebCore/fileapi/File.idl +qtwebkit/Source/WebCore/fileapi/FileError.idl +qtwebkit/Source/WebCore/fileapi/FileException.idl +qtwebkit/Source/WebCore/fileapi/FileList.idl +qtwebkit/Source/WebCore/fileapi/FileReader.idl +qtwebkit/Source/WebCore/fileapi/FileReaderSync.idl +qtwebkit/Source/WebCore/html/canvas/ArrayBufferView.idl +qtwebkit/Source/WebCore/html/canvas/ArrayBuffer.idl +qtwebkit/Source/WebCore/html/canvas/DataView.idl +qtwebkit/Source/WebCore/html/canvas/Int8Array.idl +qtwebkit/Source/WebCore/html/canvas/Float32Array.idl +qtwebkit/Source/WebCore/html/canvas/Float64Array.idl +qtwebkit/Source/WebCore/html/canvas/CanvasGradient.idl +qtwebkit/Source/WebCore/html/canvas/Int32Array.idl +qtwebkit/Source/WebCore/html/canvas/CanvasPattern.idl +qtwebkit/Source/WebCore/html/canvas/CanvasRenderingContext.idl +qtwebkit/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl +qtwebkit/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.idl +qtwebkit/Source/WebCore/html/canvas/OESStandardDerivatives.idl +qtwebkit/Source/WebCore/html/canvas/OESTextureFloat.idl +qtwebkit/Source/WebCore/html/canvas/OESVertexArrayObject.idl +qtwebkit/Source/WebCore/html/canvas/OESElementIndexUint.idl +qtwebkit/Source/WebCore/html/canvas/WebGLActiveInfo.idl +qtwebkit/Source/WebCore/html/canvas/WebGLBuffer.idl +qtwebkit/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.idl +qtwebkit/Source/WebCore/html/canvas/WebGLContextAttributes.idl +qtwebkit/Source/WebCore/html/canvas/WebGLContextEvent.idl +qtwebkit/Source/WebCore/html/canvas/WebGLDebugRendererInfo.idl +qtwebkit/Source/WebCore/html/canvas/WebGLDebugShaders.idl +qtwebkit/Source/WebCore/html/canvas/WebGLDepthTexture.idl +qtwebkit/Source/WebCore/html/canvas/WebGLFramebuffer.idl +qtwebkit/Source/WebCore/html/canvas/WebGLLoseContext.idl +qtwebkit/Source/WebCore/html/canvas/WebGLProgram.idl +qtwebkit/Source/WebCore/html/canvas/WebGLRenderbuffer.idl +qtwebkit/Source/WebCore/html/canvas/WebGLRenderingContext.idl +qtwebkit/Source/WebCore/html/canvas/WebGLShader.idl +qtwebkit/Source/WebCore/html/canvas/WebGLShaderPrecisionFormat.idl +qtwebkit/Source/WebCore/html/canvas/Int16Array.idl +qtwebkit/Source/WebCore/html/canvas/WebGLTexture.idl +qtwebkit/Source/WebCore/html/canvas/WebGLUniformLocation.idl +qtwebkit/Source/WebCore/html/canvas/WebGLVertexArrayObjectOES.idl +qtwebkit/Source/WebCore/html/canvas/Uint8Array.idl +qtwebkit/Source/WebCore/html/canvas/Uint8ClampedArray.idl +qtwebkit/Source/WebCore/html/canvas/Uint32Array.idl +qtwebkit/Source/WebCore/html/canvas/Uint16Array.idl +qtwebkit/Source/WebCore/html/DOMFormData.idl +qtwebkit/Source/WebCore/html/DOMSettableTokenList.idl +qtwebkit/Source/WebCore/html/DOMTokenList.idl +qtwebkit/Source/WebCore/html/DOMURL.idl +qtwebkit/Source/WebCore/html/HTMLAllCollection.idl +qtwebkit/Source/WebCore/html/HTMLAudioElement.idl +qtwebkit/Source/WebCore/html/HTMLAnchorElement.idl +qtwebkit/Source/WebCore/html/HTMLAppletElement.idl +qtwebkit/Source/WebCore/html/HTMLAreaElement.idl +qtwebkit/Source/WebCore/html/HTMLBaseElement.idl +qtwebkit/Source/WebCore/html/HTMLBaseFontElement.idl +qtwebkit/Source/WebCore/html/HTMLBodyElement.idl +qtwebkit/Source/WebCore/html/HTMLBRElement.idl +qtwebkit/Source/WebCore/html/HTMLButtonElement.idl +qtwebkit/Source/WebCore/html/HTMLCanvasElement.idl +qtwebkit/Source/WebCore/html/HTMLCollection.idl +qtwebkit/Source/WebCore/html/HTMLDataListElement.idl +qtwebkit/Source/WebCore/html/HTMLDetailsElement.idl +qtwebkit/Source/WebCore/html/HTMLDialogElement.idl +qtwebkit/Source/WebCore/html/HTMLDirectoryElement.idl +qtwebkit/Source/WebCore/html/HTMLDivElement.idl +qtwebkit/Source/WebCore/html/HTMLDListElement.idl +qtwebkit/Source/WebCore/html/HTMLDocument.idl +qtwebkit/Source/WebCore/html/HTMLElement.idl +qtwebkit/Source/WebCore/html/HTMLEmbedElement.idl +qtwebkit/Source/WebCore/html/HTMLFieldSetElement.idl +qtwebkit/Source/WebCore/html/HTMLFontElement.idl +qtwebkit/Source/WebCore/html/HTMLFormControlsCollection.idl +qtwebkit/Source/WebCore/html/HTMLFormElement.idl +qtwebkit/Source/WebCore/html/HTMLFrameElement.idl +qtwebkit/Source/WebCore/html/HTMLFrameSetElement.idl +qtwebkit/Source/WebCore/html/HTMLHeadElement.idl +qtwebkit/Source/WebCore/html/HTMLHeadingElement.idl +qtwebkit/Source/WebCore/html/HTMLHRElement.idl +qtwebkit/Source/WebCore/html/HTMLHtmlElement.idl +qtwebkit/Source/WebCore/html/HTMLIFrameElement.idl +qtwebkit/Source/WebCore/html/HTMLImageElement.idl +qtwebkit/Source/WebCore/html/HTMLInputElement.idl +qtwebkit/Source/WebCore/html/HTMLKeygenElement.idl +qtwebkit/Source/WebCore/html/HTMLLabelElement.idl +qtwebkit/Source/WebCore/html/HTMLLegendElement.idl +qtwebkit/Source/WebCore/html/HTMLLIElement.idl +qtwebkit/Source/WebCore/html/HTMLLinkElement.idl +qtwebkit/Source/WebCore/html/HTMLMapElement.idl +qtwebkit/Source/WebCore/html/HTMLMarqueeElement.idl +qtwebkit/Source/WebCore/html/HTMLMediaElement.idl +qtwebkit/Source/WebCore/html/HTMLMenuElement.idl +qtwebkit/Source/WebCore/html/HTMLMetaElement.idl +qtwebkit/Source/WebCore/html/HTMLMeterElement.idl +qtwebkit/Source/WebCore/html/HTMLModElement.idl +qtwebkit/Source/WebCore/html/HTMLObjectElement.idl +qtwebkit/Source/WebCore/html/HTMLOListElement.idl +qtwebkit/Source/WebCore/html/HTMLOptGroupElement.idl +qtwebkit/Source/WebCore/html/HTMLOptionElement.idl +qtwebkit/Source/WebCore/html/HTMLOptionsCollection.idl +qtwebkit/Source/WebCore/html/HTMLOutputElement.idl +qtwebkit/Source/WebCore/html/HTMLParagraphElement.idl +qtwebkit/Source/WebCore/html/HTMLParamElement.idl +qtwebkit/Source/WebCore/html/HTMLPreElement.idl +qtwebkit/Source/WebCore/html/HTMLProgressElement.idl +qtwebkit/Source/WebCore/html/HTMLPropertiesCollection.idl +qtwebkit/Source/WebCore/html/HTMLQuoteElement.idl +qtwebkit/Source/WebCore/html/HTMLScriptElement.idl +qtwebkit/Source/WebCore/html/HTMLSelectElement.idl +qtwebkit/Source/WebCore/html/HTMLSourceElement.idl +qtwebkit/Source/WebCore/html/HTMLSpanElement.idl +qtwebkit/Source/WebCore/html/HTMLStyleElement.idl +qtwebkit/Source/WebCore/html/HTMLTableCaptionElement.idl +qtwebkit/Source/WebCore/html/HTMLTableCellElement.idl +qtwebkit/Source/WebCore/html/HTMLTableColElement.idl +qtwebkit/Source/WebCore/html/HTMLTableElement.idl +qtwebkit/Source/WebCore/html/HTMLTableRowElement.idl +qtwebkit/Source/WebCore/html/HTMLTableSectionElement.idl +qtwebkit/Source/WebCore/html/HTMLTextAreaElement.idl +qtwebkit/Source/WebCore/html/HTMLTitleElement.idl +qtwebkit/Source/WebCore/html/HTMLTrackElement.idl +qtwebkit/Source/WebCore/html/HTMLUListElement.idl +qtwebkit/Source/WebCore/html/HTMLUnknownElement.idl +qtwebkit/Source/WebCore/html/HTMLVideoElement.idl +qtwebkit/Source/WebCore/html/ImageData.idl +qtwebkit/Source/WebCore/html/MediaController.idl +qtwebkit/Source/WebCore/html/MediaError.idl +qtwebkit/Source/WebCore/html/MicroDataItemValue.idl +qtwebkit/Source/WebCore/html/RadioNodeList.idl +qtwebkit/Source/WebCore/html/TextMetrics.idl +qtwebkit/Source/WebCore/html/TimeRanges.idl +qtwebkit/Source/WebCore/html/ValidityState.idl +qtwebkit/Source/WebCore/html/VoidCallback.idl +qtwebkit/Source/WebCore/html/shadow/HTMLContentElement.idl +qtwebkit/Source/WebCore/html/shadow/HTMLShadowElement.idl +qtwebkit/Source/WebCore/inspector/InjectedScriptHost.idl +qtwebkit/Source/WebCore/inspector/InspectorFrontendHost.idl +qtwebkit/Source/WebCore/inspector/JavaScriptCallFrame.idl +qtwebkit/Source/WebCore/inspector/ScriptProfile.idl +qtwebkit/Source/WebCore/inspector/ScriptProfileNode.idl +qtwebkit/Source/WebCore/loader/appcache/DOMApplicationCache.idl +qtwebkit/Source/WebCore/page/BarInfo.idl +qtwebkit/Source/WebCore/page/Console.idl +qtwebkit/Source/WebCore/page/Coordinates.idl +qtwebkit/Source/WebCore/page/Crypto.idl +qtwebkit/Source/WebCore/page/DOMSecurityPolicy.idl +qtwebkit/Source/WebCore/page/DOMSelection.idl +qtwebkit/Source/WebCore/page/DOMWindow.idl +qtwebkit/Source/WebCore/page/EventSource.idl +qtwebkit/Source/WebCore/page/History.idl +qtwebkit/Source/WebCore/page/Location.idl +qtwebkit/Source/WebCore/page/MemoryInfo.idl +qtwebkit/Source/WebCore/page/Navigator.idl +qtwebkit/Source/WebCore/page/Performance.idl +qtwebkit/Source/WebCore/page/PerformanceEntry.idl +qtwebkit/Source/WebCore/page/PerformanceEntryList.idl +qtwebkit/Source/WebCore/page/PerformanceNavigation.idl +qtwebkit/Source/WebCore/page/PerformanceResourceTiming.idl +qtwebkit/Source/WebCore/page/PerformanceTiming.idl +qtwebkit/Source/WebCore/page/Screen.idl +qtwebkit/Source/WebCore/page/SpeechInputEvent.idl +qtwebkit/Source/WebCore/page/SpeechInputResult.idl +qtwebkit/Source/WebCore/page/SpeechInputResultList.idl +qtwebkit/Source/WebCore/page/WebKitAnimation.idl +qtwebkit/Source/WebCore/page/WebKitAnimationList.idl +qtwebkit/Source/WebCore/page/WebKitPoint.idl +qtwebkit/Source/WebCore/page/WorkerNavigator.idl +qtwebkit/Source/WebCore/plugins/DOMPlugin.idl +qtwebkit/Source/WebCore/plugins/DOMMimeType.idl +qtwebkit/Source/WebCore/plugins/DOMPluginArray.idl +qtwebkit/Source/WebCore/plugins/DOMMimeTypeArray.idl +qtwebkit/Source/WebCore/storage/Storage.idl +qtwebkit/Source/WebCore/storage/StorageEvent.idl +qtwebkit/Source/WebCore/testing/Internals.idl +qtwebkit/Source/WebCore/testing/InternalSettings.idl +qtwebkit/Source/WebCore/testing/MallocStatistics.idl +qtwebkit/Source/WebCore/workers/AbstractWorker.idl +qtwebkit/Source/WebCore/workers/DedicatedWorkerContext.idl +qtwebkit/Source/WebCore/workers/SharedWorker.idl +qtwebkit/Source/WebCore/workers/SharedWorkerContext.idl +qtwebkit/Source/WebCore/workers/Worker.idl +qtwebkit/Source/WebCore/workers/WorkerContext.idl +qtwebkit/Source/WebCore/workers/WorkerLocation.idl +qtwebkit/Source/WebCore/xml/DOMParser.idl +qtwebkit/Source/WebCore/xml/XMLHttpRequest.idl +qtwebkit/Source/WebCore/xml/XMLHttpRequestException.idl +qtwebkit/Source/WebCore/xml/XMLHttpRequestProgressEvent.idl +qtwebkit/Source/WebCore/xml/XMLHttpRequestUpload.idl +qtwebkit/Source/WebCore/xml/XMLSerializer.idl +qtwebkit/Source/WebCore/xml/XPathNSResolver.idl +qtwebkit/Source/WebCore/xml/XPathException.idl +qtwebkit/Source/WebCore/xml/XPathExpression.idl +qtwebkit/Source/WebCore/xml/XPathResult.idl +qtwebkit/Source/WebCore/xml/XPathEvaluator.idl +qtwebkit/Source/WebCore/xml/XSLTProcessor.idl +qtwebkit/Source/WebCore/svg/SVGAElement.idl +qtwebkit/Source/WebCore/svg/SVGAltGlyphDefElement.idl +qtwebkit/Source/WebCore/svg/SVGAltGlyphElement.idl +qtwebkit/Source/WebCore/svg/SVGAltGlyphItemElement.idl +qtwebkit/Source/WebCore/svg/SVGAngle.idl +qtwebkit/Source/WebCore/svg/SVGAnimateColorElement.idl +qtwebkit/Source/WebCore/svg/SVGAnimateMotionElement.idl +qtwebkit/Source/WebCore/svg/SVGAnimatedAngle.idl +qtwebkit/Source/WebCore/svg/SVGAnimatedBoolean.idl +qtwebkit/Source/WebCore/svg/SVGAnimatedEnumeration.idl +qtwebkit/Source/WebCore/svg/SVGAnimatedInteger.idl +qtwebkit/Source/WebCore/svg/SVGAnimatedLength.idl +qtwebkit/Source/WebCore/svg/SVGAnimatedLengthList.idl +qtwebkit/Source/WebCore/svg/SVGAnimatedNumber.idl +qtwebkit/Source/WebCore/svg/SVGAnimatedNumberList.idl +qtwebkit/Source/WebCore/svg/SVGAnimatedPreserveAspectRatio.idl +qtwebkit/Source/WebCore/svg/SVGAnimatedRect.idl +qtwebkit/Source/WebCore/svg/SVGAnimatedString.idl +qtwebkit/Source/WebCore/svg/SVGAnimatedTransformList.idl +qtwebkit/Source/WebCore/svg/SVGAnimateElement.idl +qtwebkit/Source/WebCore/svg/SVGAnimateTransformElement.idl +qtwebkit/Source/WebCore/svg/SVGAnimationElement.idl +qtwebkit/Source/WebCore/svg/SVGCircleElement.idl +qtwebkit/Source/WebCore/svg/SVGClipPathElement.idl +qtwebkit/Source/WebCore/svg/SVGColor.idl +qtwebkit/Source/WebCore/svg/SVGComponentTransferFunctionElement.idl +qtwebkit/Source/WebCore/svg/SVGCursorElement.idl +qtwebkit/Source/WebCore/svg/SVGDefsElement.idl +qtwebkit/Source/WebCore/svg/SVGDescElement.idl +qtwebkit/Source/WebCore/svg/SVGDocument.idl +qtwebkit/Source/WebCore/svg/SVGElement.idl +qtwebkit/Source/WebCore/svg/SVGElementInstance.idl +qtwebkit/Source/WebCore/svg/SVGElementInstanceList.idl +qtwebkit/Source/WebCore/svg/SVGEllipseElement.idl +qtwebkit/Source/WebCore/svg/SVGException.idl +qtwebkit/Source/WebCore/svg/SVGFEBlendElement.idl +qtwebkit/Source/WebCore/svg/SVGFEColorMatrixElement.idl +qtwebkit/Source/WebCore/svg/SVGFEComponentTransferElement.idl +qtwebkit/Source/WebCore/svg/SVGFECompositeElement.idl +qtwebkit/Source/WebCore/svg/SVGFEConvolveMatrixElement.idl +qtwebkit/Source/WebCore/svg/SVGFEDiffuseLightingElement.idl +qtwebkit/Source/WebCore/svg/SVGFEDisplacementMapElement.idl +qtwebkit/Source/WebCore/svg/SVGFEDistantLightElement.idl +qtwebkit/Source/WebCore/svg/SVGFEDropShadowElement.idl +qtwebkit/Source/WebCore/svg/SVGFEFloodElement.idl +qtwebkit/Source/WebCore/svg/SVGFEFuncAElement.idl +qtwebkit/Source/WebCore/svg/SVGFEFuncBElement.idl +qtwebkit/Source/WebCore/svg/SVGFEFuncGElement.idl +qtwebkit/Source/WebCore/svg/SVGFEFuncRElement.idl +qtwebkit/Source/WebCore/svg/SVGFEGaussianBlurElement.idl +qtwebkit/Source/WebCore/svg/SVGFEImageElement.idl +qtwebkit/Source/WebCore/svg/SVGFEMergeElement.idl +qtwebkit/Source/WebCore/svg/SVGFEMergeNodeElement.idl +qtwebkit/Source/WebCore/svg/SVGFEMorphologyElement.idl +qtwebkit/Source/WebCore/svg/SVGFEOffsetElement.idl +qtwebkit/Source/WebCore/svg/SVGFEPointLightElement.idl +qtwebkit/Source/WebCore/svg/SVGFESpecularLightingElement.idl +qtwebkit/Source/WebCore/svg/SVGFESpotLightElement.idl +qtwebkit/Source/WebCore/svg/SVGFETileElement.idl +qtwebkit/Source/WebCore/svg/SVGFETurbulenceElement.idl +qtwebkit/Source/WebCore/svg/SVGFilterElement.idl +qtwebkit/Source/WebCore/svg/SVGFontElement.idl +qtwebkit/Source/WebCore/svg/SVGFontFaceElement.idl +qtwebkit/Source/WebCore/svg/SVGFontFaceFormatElement.idl +qtwebkit/Source/WebCore/svg/SVGFontFaceNameElement.idl +qtwebkit/Source/WebCore/svg/SVGFontFaceSrcElement.idl +qtwebkit/Source/WebCore/svg/SVGFontFaceUriElement.idl +qtwebkit/Source/WebCore/svg/SVGForeignObjectElement.idl +qtwebkit/Source/WebCore/svg/SVGGElement.idl +qtwebkit/Source/WebCore/svg/SVGGlyphElement.idl +qtwebkit/Source/WebCore/svg/SVGGlyphRefElement.idl +qtwebkit/Source/WebCore/svg/SVGGradientElement.idl +qtwebkit/Source/WebCore/svg/SVGHKernElement.idl +qtwebkit/Source/WebCore/svg/SVGImageElement.idl +qtwebkit/Source/WebCore/svg/SVGLength.idl +qtwebkit/Source/WebCore/svg/SVGLengthList.idl +qtwebkit/Source/WebCore/svg/SVGLinearGradientElement.idl +qtwebkit/Source/WebCore/svg/SVGLineElement.idl +qtwebkit/Source/WebCore/svg/SVGMarkerElement.idl +qtwebkit/Source/WebCore/svg/SVGMaskElement.idl +qtwebkit/Source/WebCore/svg/SVGMatrix.idl +qtwebkit/Source/WebCore/svg/SVGMetadataElement.idl +qtwebkit/Source/WebCore/svg/SVGMissingGlyphElement.idl +qtwebkit/Source/WebCore/svg/SVGMPathElement.idl +qtwebkit/Source/WebCore/svg/SVGNumber.idl +qtwebkit/Source/WebCore/svg/SVGNumberList.idl +qtwebkit/Source/WebCore/svg/SVGPaint.idl +qtwebkit/Source/WebCore/svg/SVGPathElement.idl +qtwebkit/Source/WebCore/svg/SVGPathSegArcAbs.idl +qtwebkit/Source/WebCore/svg/SVGPathSegArcRel.idl +qtwebkit/Source/WebCore/svg/SVGPathSegClosePath.idl +qtwebkit/Source/WebCore/svg/SVGPathSegCurvetoCubicAbs.idl +qtwebkit/Source/WebCore/svg/SVGPathSegCurvetoCubicRel.idl +qtwebkit/Source/WebCore/svg/SVGPathSegCurvetoCubicSmoothAbs.idl +qtwebkit/Source/WebCore/svg/SVGPathSegCurvetoCubicSmoothRel.idl +qtwebkit/Source/WebCore/svg/SVGPathSegCurvetoQuadraticAbs.idl +qtwebkit/Source/WebCore/svg/SVGPathSegCurvetoQuadraticRel.idl +qtwebkit/Source/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl +qtwebkit/Source/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothRel.idl +qtwebkit/Source/WebCore/svg/SVGPathSeg.idl +qtwebkit/Source/WebCore/svg/SVGPathSegLinetoAbs.idl +qtwebkit/Source/WebCore/svg/SVGPathSegLinetoHorizontalAbs.idl +qtwebkit/Source/WebCore/svg/SVGPathSegLinetoHorizontalRel.idl +qtwebkit/Source/WebCore/svg/SVGPathSegLinetoRel.idl +qtwebkit/Source/WebCore/svg/SVGPathSegLinetoVerticalAbs.idl +qtwebkit/Source/WebCore/svg/SVGPathSegLinetoVerticalRel.idl +qtwebkit/Source/WebCore/svg/SVGPathSegList.idl +qtwebkit/Source/WebCore/svg/SVGPathSegMovetoAbs.idl +qtwebkit/Source/WebCore/svg/SVGPathSegMovetoRel.idl +qtwebkit/Source/WebCore/svg/SVGPatternElement.idl +qtwebkit/Source/WebCore/svg/SVGPoint.idl +qtwebkit/Source/WebCore/svg/SVGPointList.idl +qtwebkit/Source/WebCore/svg/SVGPolygonElement.idl +qtwebkit/Source/WebCore/svg/SVGPolylineElement.idl +qtwebkit/Source/WebCore/svg/SVGPreserveAspectRatio.idl +qtwebkit/Source/WebCore/svg/SVGRadialGradientElement.idl +qtwebkit/Source/WebCore/svg/SVGRectElement.idl +qtwebkit/Source/WebCore/svg/SVGRect.idl +qtwebkit/Source/WebCore/svg/SVGRenderingIntent.idl +qtwebkit/Source/WebCore/svg/SVGScriptElement.idl +qtwebkit/Source/WebCore/svg/SVGSetElement.idl +qtwebkit/Source/WebCore/svg/SVGStopElement.idl +qtwebkit/Source/WebCore/svg/SVGStringList.idl +qtwebkit/Source/WebCore/svg/SVGStyleElement.idl +qtwebkit/Source/WebCore/svg/SVGSVGElement.idl +qtwebkit/Source/WebCore/svg/SVGSwitchElement.idl +qtwebkit/Source/WebCore/svg/SVGSymbolElement.idl +qtwebkit/Source/WebCore/svg/SVGTextContentElement.idl +qtwebkit/Source/WebCore/svg/SVGTextElement.idl +qtwebkit/Source/WebCore/svg/SVGTextPathElement.idl +qtwebkit/Source/WebCore/svg/SVGTextPositioningElement.idl +qtwebkit/Source/WebCore/svg/SVGTitleElement.idl +qtwebkit/Source/WebCore/svg/SVGTransform.idl +qtwebkit/Source/WebCore/svg/SVGTransformList.idl +qtwebkit/Source/WebCore/svg/SVGTRefElement.idl +qtwebkit/Source/WebCore/svg/SVGTSpanElement.idl +qtwebkit/Source/WebCore/svg/SVGUnitTypes.idl +qtwebkit/Source/WebCore/svg/SVGUseElement.idl +qtwebkit/Source/WebCore/svg/SVGViewElement.idl +qtwebkit/Source/WebCore/svg/SVGVKernElement.idl +qtwebkit/Source/WebCore/svg/SVGViewSpec.idl +qtwebkit/Source/WebCore/svg/SVGZoomAndPan.idl +qtwebkit/Source/WebCore/svg/SVGZoomEvent.idl diff --git a/libports/tool/qt5/Makefile b/libports/tool/qt5/Makefile new file mode 100644 index 0000000000..08873170b8 --- /dev/null +++ b/libports/tool/qt5/Makefile @@ -0,0 +1,96 @@ +# +# \brief Makefile for building the Qt4 tools +# \author Christian Prochaska +# \author Norman Feske +# \date 2009-05-15 +# + +REP_DIR := $(realpath ../..) + +include $(REP_DIR)/lib/mk/qt5_version.inc + +# +# Compound rule for building the tools in the right order +# +all: qmake/qmake moc/moc rcc/rcc uic/uic + +# +# Determine qmakespec to be passed to the sub makefiles +# +ifeq ($(shell uname -m),x86_64) +HOST_ARCH := 64 +else +HOST_ARCH := 32 +endif + +QMAKESPEC = $(REP_DIR)/contrib/$(QT5)/qtbase/mkspecs/linux-g++-$(HOST_ARCH) + +# +# Build qmake +# +qmake/qmake: + QMAKESPEC=$(QMAKESPEC) make -C qmake + +# +# Build the other tools using qmake +# +vpath bootstrap.pro $(REP_DIR)/contrib/$(QT5)/qtbase/src/tools/bootstrap +vpath moc.pro $(REP_DIR)/contrib/$(QT5)/qtbase/src/tools/moc +vpath rcc.pro $(REP_DIR)/contrib/$(QT5)/qtbase/src/tools/rcc +vpath uic.pro $(REP_DIR)/contrib/$(QT5)/qtbase/src/tools/uic + +# +# The Makefile needs to rebuild itself to get the correct source paths. +# This gets done by the 'qmake' target. +# + +bootstrap/libQtBootstrap.a: bootstrap/Makefile + QMAKESPEC=$(QMAKESPEC) make -C bootstrap qmake + QMAKESPEC=$(QMAKESPEC) make -C bootstrap + +moc/moc: bootstrap/libQtBootstrap.a moc/Makefile + QMAKESPEC=$(QMAKESPEC) make -C moc qmake + QMAKESPEC=$(QMAKESPEC) make -C moc + +rcc/rcc: rcc/Makefile bootstrap/libQtBootstrap.a + QMAKESPEC=$(QMAKESPEC) make -C rcc qmake + QMAKESPEC=$(QMAKESPEC) make -C rcc + +uic/uic: uic/Makefile bootstrap/libQtBootstrap.a + QMAKESPEC=$(QMAKESPEC) make -C uic qmake + QMAKESPEC=$(QMAKESPEC) make -C uic + +# +# Rule to generate tool Makefiles from the respective pro files via qmake +# +# The second include path is required to resolve the Genode-specific +# 'gconfig.cpp' file. Even though this is a 'cpp' file, it is used via +# '#include'. So we have to make its location known to the 'INCLUDEPATH'. +# +%/Makefile: %.pro + QMAKESPEC=$(QMAKESPEC) qmake/qmake -o $*/Makefile \ + QT_BUILD_TREE=$(REP_DIR)/contrib/$(QT5)/qtbase \ + QT_CONFIG+=zlib \ + INCLUDEPATH+=$(REP_DIR)/include/qt5 \ + INCLUDEPATH+=$(REP_DIR)/contrib/$(QT5)/qtbase/include \ + INCLUDEPATH+=$(REP_DIR)/include/qt5/qtbase \ + INCLUDEPATH+=$(REP_DIR)/contrib/$(QT5)/qtbase/include \ + INCLUDEPATH+=$(REP_DIR)/include/qt5/qtbase/QtCore \ + INCLUDEPATH+=$(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore \ + INCLUDEPATH+=$(REP_DIR)/src/lib/qt5/qtbase/src/corelib/global \ + INCLUDEPATH+=$(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/5.1.0 \ + INCLUDEPATH+=$(REP_DIR)/contrib/$(QT5)/qtbase/include/QtCore/5.1.0/QtCore \ + INCLUDEPATH+=$(REP_DIR)/include/qt5/qtbase/QtXml \ + INCLUDEPATH+=$(REP_DIR)/contrib/$(QT5)/qtbase/include/QtXml \ + -after DESTDIR= \ + -after "LIBS+=-lQtBootstrap -L../bootstrap" \ + $^ + +# +# Clean rule +# +clean: + make -C qmake clean + rm -rf bootstrap moc rcc uic + +distclean: clean diff --git a/libports/tool/qt5/lib_mk_file_generator/README b/libports/tool/qt5/lib_mk_file_generator/README new file mode 100644 index 0000000000..221a52d4fd --- /dev/null +++ b/libports/tool/qt5/lib_mk_file_generator/README @@ -0,0 +1,10 @@ +The scripts in this directory have been used to generate the +'lib/mk/qt5_*_generated.inc' files. + +Usage: + +- create a build directory in the 'contrib' directory +- copy the scripts into this build directory +- change into the build directory +- execute the 'create_generated_incs' script +- move the generated files into the 'lib/mk/' directory diff --git a/libports/tool/qt5/lib_mk_file_generator/create_generated_inc b/libports/tool/qt5/lib_mk_file_generator/create_generated_inc new file mode 100755 index 0000000000..fde36a3425 --- /dev/null +++ b/libports/tool/qt5/lib_mk_file_generator/create_generated_inc @@ -0,0 +1,124 @@ +#!/bin/bash + +function extract_defines() +{ + sed -e '/DEFINES =/!d' \ + -e 's/DEFINES = /QT_DEFINES += /' Makefile > defines.inc + + echo -e "" >> defines.inc +} + +function extract_incpath() +{ + sed -e '/INCPATH =/!d' \ + -e 's/INCPATH = //' \ + -e 's/ / \\\n/g' \ + Makefile | sort -u > incpath.inc.tmp + + echo -e "QT_INCPATH += \\" > incpath.inc + + sed -e '/\/qt-everywhere-opensource-src.*\//!d' \ + -e 's/.*\/qt-everywhere-opensource-src-[^\/]*\// /' \ + incpath.inc.tmp >> incpath.inc + + echo -e "" >> incpath.inc +} + + +function extract_sources() +{ + sed \ + -e ':a;N;$!ba;s/\n//g' \ + -e 's/OBJECTS .*//' \ + -e 's/.*SOURCES =/QT_SOURCES += \\/' \ + -e 's/\\/\\\n/g' \ + -e 's/\.cpp \.moc/\.cpp \\\n\.moc\t\t/' \ + -e 's/\.cpp \.rcc/\.cpp \\\n\.rcc\t\t/' \ + Makefile > sources.inc.tmp + + sed -e 's/.*\// /' \ + sources.inc.tmp > sources.inc + + echo -e "" >> sources.inc +} + + +function extract_vpath() +{ + sed \ + -e ':a;N;$!ba;s/\n//g' \ + -e 's/OBJECTS .*//' \ + -e 's/.*SOURCES =//' \ + -e 's/\\/\\\n/g' \ + -e 's/\.cpp \.moc/\.cpp \\\n\.moc\t\t/' \ + -e 's/\.cpp \.rcc/\.cpp \\\n\.rcc\t\t/' \ + Makefile > vpath.inc.tmp + + echo -e "QT_VPATH += \\" > vpath.inc + + sed -e '/\/qt-everywhere-opensource-src.*\//!d' \ + -e 's/.*\/qt-everywhere-opensource-src-[^\/]*\// /' \ + -e 's/\/[^\/]* [\\]*$/ \\/' \ + vpath.inc.tmp | sort -u >> vpath.inc + + echo -e "" >> vpath.inc +} + + +function extract_compiler_moc_header_make_all() +{ + sed -e '/compiler_moc_header_make_all:/!d' \ + -e 's/compiler_moc_header_make_all:/COMPILER_MOC_HEADER_MAKE_ALL_FILES = \\\n /' \ + -e 's/\.moc\/release-static-emb-x86_64\///g' \ + -e 's/\.cpp /\.cpp \\\n /g' \ + Makefile > compiler_moc_header_make_all.inc.tmp + + sed -e 's/.*\// /' \ + compiler_moc_header_make_all.inc.tmp > compiler_moc_header_make_all.inc + + echo -e "" >> compiler_moc_header_make_all.inc +} + + +function extract_compiler_moc_source_make_all() +{ + sed -e '/compiler_moc_source_make_all:/!d' \ + -e 's/compiler_moc_source_make_all:/COMPILER_MOC_SOURCE_MAKE_ALL_FILES = \\\n /' \ + -e 's/\.moc\/release-static-emb-x86_64\///g' \ + -e 's/\.moc /\.moc \\\n /g' \ + Makefile > compiler_moc_source_make_all.inc.tmp + + sed -e 's/.*\// /' \ + compiler_moc_source_make_all.inc.tmp > compiler_moc_source_make_all.inc + + echo -e "" >> compiler_moc_source_make_all.inc +} + + +extract_defines +extract_incpath +extract_sources +extract_vpath +extract_compiler_moc_header_make_all +extract_compiler_moc_source_make_all + +cat defines.inc > $1_generated.inc + +cat incpath.inc >> $1_generated.inc + +cat sources.inc >> $1_generated.inc + +cat vpath.inc >> $1_generated.inc + +echo -e "# some source files need to be generated by moc from other source/header files before" >> $1_generated.inc +echo -e "# they get #included again by the original source file in the compiling stage\n" >> $1_generated.inc + +echo -e "# source files generated from existing header files ('moc_%.cpp: %.h' rule in import-qt5.inc)" >> $1_generated.inc +echo -e "# extracted from 'compiler_moc_header_make_all' target\n" >> $1_generated.inc + +cat compiler_moc_header_make_all.inc >> $1_generated.inc + +echo -e "# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc)" >> $1_generated.inc +echo -e "# extracted from 'compiler_moc_source_make_all' rule\n" >> $1_generated.inc + +cat compiler_moc_source_make_all.inc >> $1_generated.inc diff --git a/libports/tool/qt5/lib_mk_file_generator/create_generated_incs b/libports/tool/qt5/lib_mk_file_generator/create_generated_incs new file mode 100755 index 0000000000..07b74af2c4 --- /dev/null +++ b/libports/tool/qt5/lib_mk_file_generator/create_generated_incs @@ -0,0 +1,45 @@ +#!/bin/sh + +./genode_qt5_configure + +# qtbase + +cd qtbase/src/corelib && ../../../create_generated_inc qt5_core && cp qt5_core_generated.inc ../../.. && cd ../../.. +cd qtbase/src/gui && ../../../create_generated_inc qt5_gui && cp qt5_gui_generated.inc ../../.. && cd ../../.. +cd qtbase/src/network && ../../../create_generated_inc qt5_network && cp qt5_network_generated.inc ../../.. && cd ../../.. +cd qtbase/src/printsupport && ../../../create_generated_inc qt5_printsupport && cp qt5_printsupport_generated.inc ../../.. && cd ../../.. +cd qtbase/src/sql && ../../../create_generated_inc qt5_sql && cp qt5_sql_generated.inc ../../.. && cd ../../.. +cd qtbase/src/widgets && ../../../create_generated_inc qt5_widgets && cp qt5_widgets_generated.inc ../../.. && cd ../../.. +cd qtbase/src/xml && ../../../create_generated_inc qt5_xml && cp qt5_xml_generated.inc ../../.. && cd ../../.. + +cd qtscript/src/script && ../../../create_generated_inc qt5_script && cp qt5_script_generated.inc ../../.. && cd ../../.. + +cd qttools/src/designer/src/uitools && ../../../../../create_generated_inc qt5_ui_tools && cp qt5_ui_tools_generated.inc ../../../../.. && cd ../../../../.. + +# qtwebkit + +make -C qtbase/src/tools/bootstrap +make -C qtbase/src/tools/moc + +make -C qtwebkit/Source/JavaScriptCore -f Makefile.JavaScriptCore sub-DerivedSources-pri +cd qtwebkit/Source/JavaScriptCore +../../../qtbase/bin/qmake ../../../../qt-everywhere-opensource-src-5.1.0/qtwebkit/Source/JavaScriptCore/Target.pri -o Makefile + ../../../create_generated_inc qt5_jscore && cp qt5_jscore_generated.inc ../../.. && cd ../../.. + +cd qtwebkit/Source/WTF +ln -sf Makefile.WTF Makefile && ../../../create_generated_inc qt5_wtf && cp qt5_wtf_generated.inc ../../.. && cd ../../.. + +make -C qtwebkit/Source/WebCore -f Makefile.WebCore sub-DerivedSources-pri +cd qtwebkit/Source/WebCore +../../../qtbase/bin/qmake ../../../../qt-everywhere-opensource-src-5.1.0/qtwebkit/Source/WebCore/Target.pri -o Makefile + ../../../create_generated_inc qt5_webcore && cp qt5_webcore_generated.inc ../../.. && cd ../../.. +cd qtwebkit/Source/WebKit +ln -sf Makefile.WebKit1 Makefile && ../../../create_generated_inc qt5_webkit && cp qt5_webkit_generated.inc ../../.. && cd ../../.. + +cd qtwebkit/Source +ln -sf Makefile.widgetsapi Makefile && ../../create_generated_inc qt5_webkitwidgets && cp qt5_webkitwidgets_generated.inc ../.. && cd ../.. + +#make -C qtwebkit/Source/WebKit2 -f Makefile.WebKit2 sub-DerivedSources-pri +#cd qtwebkit/Source/WebKit2 +#../../../qtbase/bin/qmake ../../../../qt-everywhere-opensource-src-5.1.0/qtwebkit/Source/WebKit2/Target.pri -o Makefile +# ../../../create_generated_inc qt5_webkit && cp qt5_webkit_generated.inc ../../.. && cd ../../.. diff --git a/libports/tool/qt5/lib_mk_file_generator/genode_qt5_configure b/libports/tool/qt5/lib_mk_file_generator/genode_qt5_configure new file mode 100755 index 0000000000..3a8faf5ff9 --- /dev/null +++ b/libports/tool/qt5/lib_mk_file_generator/genode_qt5_configure @@ -0,0 +1,38 @@ +#!/bin/sh + +../qt-everywhere-opensource-src-5.1.0/configure \ + -opensource \ + -confirm-license \ + -qconfig genode \ + -xplatform genode-g++ \ + -no-qpa-platform-guard \ + -qpa minimal \ + -no-separate-debug-info \ + -openssl-linked \ + -no-accessibility \ + -no-cups \ + -no-dbus \ + -no-iconv \ + -no-largefile \ + -no-nis \ + -no-opengl \ + -no-pkg-config \ + -no-xcb \ + -no-sse \ + -no-sse2 \ + -no-sse3 \ + -no-ssse3 \ + -no-sse4.1 \ + -no-sse4.2 \ + -no-avx \ + -no-neon \ + -make tools \ + -nomake examples \ + -nomake demos \ + +# +# notes +# +# - '-no-opengl' would prevent the generation of qtwebkit Makefiles +# +# diff --git a/libports/tool/qt5/qmake/Makefile b/libports/tool/qt5/qmake/Makefile new file mode 100644 index 0000000000..eff0a20a96 --- /dev/null +++ b/libports/tool/qt5/qmake/Makefile @@ -0,0 +1,173 @@ +# +# \brief Makefile for building QMake for Genode +# \author Christian Prochaska +# \author Norman Feske +# \date 2013-03-27 +# +# This file is based on the generated Makefile created by qt5's configure. +# + +######################################################################## +## This file was autogenerated by configure, all changes will be lost ## +######################################################################## +CC = gcc +CXX = g++ +QMAKE_CFLAGS = -pipe +QMAKE_CXXFLAGS = -pipe +QMAKE_LFLAGS = + +# Genode repository +REP_DIR := ../../.. + +include $(REP_DIR)/lib/mk/qt5_version.inc + +# root of Qt5 source tree +CONTRIB_DIR := $(REP_DIR)/contrib/$(QT5)/qtbase + +# tell make where to look for source codes +vpath %.h $(CONTRIB_DIR)/qmake +vpath %.cpp $(CONTRIB_DIR)/qmake +vpath %.cpp $(CONTRIB_DIR)/qmake/generators +vpath %.cpp $(CONTRIB_DIR)/qmake/generators/mac +vpath %.cpp $(CONTRIB_DIR)/qmake/generators/unix +vpath %.cpp $(CONTRIB_DIR)/qmake/generators/win32 +vpath %.cpp $(CONTRIB_DIR)/qmake/generators/symbian +vpath %.cpp $(CONTRIB_DIR)/qmake/generators/integrity +vpath %.cpp $(CONTRIB_DIR)/qmake/library +vpath %.cpp $(CONTRIB_DIR)/src/corelib/codecs +vpath %.cpp $(CONTRIB_DIR)/src/corelib/tools +vpath %.cpp $(CONTRIB_DIR)/src/corelib/global +vpath %.cpp $(CONTRIB_DIR)/src/corelib/kernel +vpath %.cpp $(CONTRIB_DIR)/src/corelib/plugin +vpath %.cpp $(CONTRIB_DIR)/src/corelib/io +vpath %.cpp $(CONTRIB_DIR)/src/corelib/xml +vpath %.cpp $(CONTRIB_DIR)/tools/shared/symbian +vpath %.cpp $(CONTRIB_DIR)/tools/shared/windows + +QCONFIG_CPP_PATH = ../../../../src/lib/qt5/qtbase/src/corelib/global +SOURCE_PATH = $(CONTRIB_DIR) +BUILD_PATH = . +QTOBJS = +QTSRCS = +QMAKESPEC = $(SOURCE_PATH)/mkspecs/linux-g++ +LFLAGS = $(QMAKE_LFLAGS) + +QMKSRC = $(SOURCE_PATH)/qmake +QMKLIBSRC = $(QMKSRC)/library +QMKGENSRC = $(QMKSRC)/generators + +#qmake code +OBJS=project.o option.o property.o main.o ioutils.o proitems.o \ + qmakeglobals.o qmakeparser.o qmakeevaluator.o qmakebuiltins.o \ + makefile.o unixmake2.o unixmake.o \ + mingw_make.o winmakefile.o projectgenerator.o \ + meta.o makefiledeps.o metamakefile.o xmloutput.o pbuilder_pbx.o \ + msvc_vcproj.o msvc_vcxproj.o msvc_nmake.o msvc_objectmodel.o msbuild_objectmodel.o \ + gbuild.o cesdkhandler.o + +#qt code +QOBJS=qtextcodec.o qutfcodec.o qstring.o qstringbuilder.o qtextstream.o qiodevice.o qmalloc.o qglobal.o \ + qarraydata.o qbytearray.o qbytearraymatcher.o qdatastream.o qbuffer.o qlist.o qfiledevice.o qfile.o \ + qfilesystementry.o qfilesystemengine_unix.o qfilesystemengine.o qfilesystemiterator_unix.o \ + qfsfileengine_unix.o qfsfileengine.o \ + qfsfileengine_iterator.o qregexp.o qvector.o qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o \ + qfileinfo.o qdatetime.o qstringlist.o qabstractfileengine.o qtemporaryfile.o \ + qmap.o qmetatype.o qsettings.o qsystemerror.o qlibraryinfo.o qvariant.o qvsnprintf.o \ + qlocale.o qlocale_tools.o qlocale_unix.o qlinkedlist.o qnumeric.o qcryptographichash.o \ + qxmlstream.o qxmlutils.o qlogging.o \ + $(QTOBJS) + + + + +#all sources, used for the depend target +DEPEND_SRC = \ + $(QMKSRC)/main.cpp $(QMKSRC)/project.cpp $(QMKSRC)/option.cpp $(QMKSRC)/property.cpp \ + $(QMKSRC)/meta.cpp \ + $(QMKLIBSRC)/ioutils.cpp $(QMKLIBSRC)/proitems.cpp $(QMKLIBSRC)/qmakeglobals.cpp \ + $(QMKLIBSRC)/qmakeparser.cpp $(QMKLIBSRC)/qmakeevaluator.cpp $(QMKLIBSRC)/qmakebuiltins.cpp \ + $(QMKGENSRC)/makefiledeps.cpp $(QMKGENSRC)/metamakefile.cpp \ + $(QMKGENSRC)/projectgenerator.cpp $(QMKGENSRC)/makefile.cpp \ + $(QMKGENSRC)/unix/unixmake.cpp $(QMKGENSRC)/unix/unixmake2.cpp \ + $(QMKGENSRC)/mac/pbuilder_pbx.cpp $(QMKGENSRC)/integrity/gbuild.cpp \ + $(QMKGENSRC)/win32/winmakefile.cpp \ + $(QMKGENSRC)/win32/mingw_make.cpp $(QMKGENSRC)/win32/msvc_nmake.cpp \ + $(QMKGENSRC)/win32/cesdkhandler.cpp $(QMKGENSRC)/mac/xmloutput.cpp \ + $(QMKGENSRC)/win32/msvc_vcproj.cpp $(QMKGENSRC)/win32/msvc_vcxproj.cpp \ + $(QMKGENSRC)/win32/msvc_objectmodel.cpp $(QMKGENSRC)/win32/msbuild_objectmodel.cpp \ + $(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qstring.cpp $(SOURCE_PATH)/src/corelib/io/qfile.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfiledevice.cpp \ + $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp \ + $(SOURCE_PATH)/src/corelib/global/qmalloc.cpp \ + $(SOURCE_PATH)/src/corelib/global/qglobal.cpp $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qarraydata.cpp $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp\ + $(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp \ + $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_unix.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_mac.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_unix.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfsfileengine_unix.cpp $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp $(SOURCE_PATH)/src/corelib/tools/qlist.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qvector.cpp $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp \ + $(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp \ + $(SOURCE_PATH)/src/corelib/io/qdir.cpp $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp \ + $(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp $(SOURCE_PATH)/src/corelib/tools/qmap.cpp \ + $(SOURCE_PATH)/src/corelib/global/qconfig.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qstringbuilder.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qlocale.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qlocale_unix.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qhash.cpp $(SOURCE_PATH)/src/corelib/kernel/qcore_mac.cpp \ + $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp \ + $(SOURCE_PATH)/src/corelib/io/qsettings.cpp $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp \ + $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp \ + $(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp \ + $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp \ + $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp \ + $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp \ + $(SOURCE_PATH)/src/corelib/global/qlogging.cpp \ + $(QTSRCS) + +CPPFLAGS = -g $(OPENSOURCE_CXXFLAGS) \ + -I$(QMKSRC) -I$(QMKLIBSRC) -I$(QMKSRC)/generators -I$(QMKSRC)/generators/unix -I$(QMKSRC)/generators/win32 \ + -I$(QMKSRC)/generators/mac -I$(QMKSRC)/generators/integrity \ + -I$(BUILD_PATH)/include -I$(BUILD_PATH)/include/QtCore \ + -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION) -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION)/QtCore \ + -I$(BUILD_PATH)/src/corelib/global -DHAVE_QCONFIG_CPP \ + -I$(QMAKESPEC) \ + -I$(SOURCE_PATH)/tools/shared \ + -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DPROEVALUATOR_FULL -DPROEVALUATOR_DEBUG \ + -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_COMPRESS \ + -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM + +# extensions of the CPPFLAGS needed for the out-of-tree build +CPPFLAGS += -I$(CONTRIB_DIR)/qmake +CPPFLAGS += $(addprefix -I$(CONTRIB_DIR)/qmake/, generators generators/symbian generators/unix generators/win32 generators/mac generators/integrity) +CPPFLAGS += -I$(REP_DIR)/src/lib/qt5/qtbase/src/corelib/global +CPPFLAGS += -I$(REP_DIR)/include/qt5 -I$(REP_DIR)/include/qt5/qtbase/QtCore +CPPFLAGS += -I$(CONTRIB_DIR)/include -I$(CONTRIB_DIR)/include/QtCore +CPPFLAGS += -I$(CONTRIB_DIR)/include/QtCore/$(QT_VERSION) -I$(CONTRIB_DIR)/include/QtCore/$(QT_VERSION)/QtCore +CPPFLAGS += -I$(QCONFIG_CPP_PATH) + +# enable automatic dependency generation +CPPFLAGS += -MMD + +CXXFLAGS = $(QMAKE_CXXFLAGS) -DQMAKE_OPENSOURCE_EDITION $(CPPFLAGS) + +first all: qmake + +qmake: $(OBJS) $(QOBJS) + $(CXX) -o "$@" $(OBJS) $(QOBJS) $(LFLAGS) + +clean:: + rm -f qmake $(OBJS) $(QOBJS) $(OBJS:.o=.d) $(QOBJS:.o=.d) + +distclean:: clean + +-include *.d + +# DO NOT DELETE THIS LINE -- make depend depends on it diff --git a/ports/ports/arora.mk b/ports/ports/arora.mk index 8046b36b1f..490c19a022 100644 --- a/ports/ports/arora.mk +++ b/ports/ports/arora.mk @@ -17,11 +17,13 @@ $(DOWNLOAD_DIR)/$(ARORA_TGZ): $(CONTRIB_DIR)/$(ARORA): $(DOWNLOAD_DIR)/$(ARORA_TGZ) $(VERBOSE)tar xfz $< -C $(CONTRIB_DIR) && touch $@ - $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/arora_genode.patch - $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/arora_nitpicker_plugin.patch - $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/arora_move_window.patch - $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/arora_disable_adblock.patch - $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/arora_bookmarks.patch - $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/arora_disable_program_exit.patch - $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/arora_startpage.patch - $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/arora_disable_log_messages.patch + $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/patches/arora_qt5_cpp.patch + $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/patches/arora_genode.patch + $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/patches/arora_nitpicker_plugin.patch + $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/patches/arora_move_window.patch + $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/patches/arora_disable_adblock.patch + $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/patches/arora_bookmarks.patch + $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/patches/arora_disable_program_exit.patch + $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/patches/arora_startpage.patch + $(VERBOSE)patch -d $@ -p1 -i ../../src/app/arora/patches/arora_disable_log_messages.patch + diff --git a/ports/run/arora.run b/ports/run/arora.run index d6f60ea08d..3c405592be 100644 --- a/ports/run/arora.run +++ b/ports/run/arora.run @@ -10,6 +10,13 @@ set build_components { app/arora } +# +# Qt5-specific components to build +# +append_if [expr ![have_spec qt4_deprecated]] build_components { + server/liquid_framebuffer +} + build $build_components create_boot_directory @@ -111,24 +118,57 @@ set boot_modules { ld.lib.so libc.lib.so libm.lib.so lwip.lib.so libc_log.lib.so zlib.lib.so libpng.lib.so jpeg.lib.so libssl.lib.so libcrypto.lib.so - dejavusans.lib.so freetype.lib.so libc_lock_pipe.lib.so stdcxx.lib.so - qt_core.lib.so - qt_gui.lib.so - qt_jscore.lib.so - qt_network.lib.so - qt_script.lib.so - qt_ui_tools.lib.so - qt_webcore.lib.so - qt_webkit.lib.so - qt_xml.lib.so - qnitpickerviewwidget.lib.so - qpluginwidget.lib.so nitpicker_plugin.tar } +if {[have_spec qt4_deprecated]} { + # + # Qt4-specific boot modules + # + append boot_modules { + dejavusans.lib.so + qt_core.lib.so + qt_gui.lib.so + qt_jscore.lib.so + qt_network.lib.so + qt_script.lib.so + qt_ui_tools.lib.so + qt_webcore.lib.so + qt_webkit.lib.so + qt_xml.lib.so + qnitpickerviewwidget.lib.so + qpluginwidget.lib.so + } +} else { + # + # Qt5-specific boot modules + # + append boot_modules { + liquid_fb + icu.lib.so + pthread.lib.so + qt5_core.lib.so + qt5_dejavusans.lib.so + qt5_gui.lib.so + qt5_jscore.lib.so + qt5_network.lib.so + qt5_qnitpickerviewwidget.lib.so + qt5_qpluginwidget.lib.so + qt5_ui_tools.lib.so + qt5_webcore.lib.so + qt5_webkit.lib.so + qt5_xml.lib.so + qt5_printsupport.lib.so + qt5_scriptclassic.lib.so + qt5_sql.lib.so + qt5_webkitwidgets.lib.so + qt5_widgets.lib.so + qt5_wtf.lib.so + } +} # platform-specific modules lappend_if [have_spec linux] boot_modules fb_sdl @@ -138,7 +178,7 @@ lappend_if [have_spec ps2] boot_modules ps2_drv build_boot_image $boot_modules -append qemu_args " -m 256 " +append qemu_args " -m 512 " append_if [have_spec x86] qemu_args " -net nic,model=pcnet " append_if [have_spec lan9118] qemu_args " -net nic,model=lan9118 " diff --git a/ports/src/app/arora/arora_bookmarks.patch b/ports/src/app/arora/patches/arora_bookmarks.patch similarity index 86% rename from ports/src/app/arora/arora_bookmarks.patch rename to ports/src/app/arora/patches/arora_bookmarks.patch index 37a14ae9cd..4c6f2aa1c2 100644 --- a/ports/src/app/arora/arora_bookmarks.patch +++ b/ports/src/app/arora/patches/arora_bookmarks.patch @@ -1,4 +1,14 @@ +arora_bookmarks.patch + +From: Christian Prochaska + + +--- + src/data/defaultbookmarks.xbel | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + diff --git a/src/data/defaultbookmarks.xbel b/src/data/defaultbookmarks.xbel +index 5869929..e31aa17 100644 --- a/src/data/defaultbookmarks.xbel +++ b/src/data/defaultbookmarks.xbel @@ -1,6 +1,25 @@ diff --git a/ports/src/app/arora/arora_disable_adblock.patch b/ports/src/app/arora/patches/arora_disable_adblock.patch similarity index 85% rename from ports/src/app/arora/arora_disable_adblock.patch rename to ports/src/app/arora/patches/arora_disable_adblock.patch index dd3f58a95b..1c28109e0c 100644 --- a/ports/src/app/arora/arora_disable_adblock.patch +++ b/ports/src/app/arora/patches/arora_disable_adblock.patch @@ -1,7 +1,17 @@ +arora_disable_adblock.patch + +From: Christian Prochaska + + +--- + src/adblock/adblockmanager.cpp | 26 ++++++++++++++------------ + 1 file changed, 14 insertions(+), 12 deletions(-) + diff --git a/src/adblock/adblockmanager.cpp b/src/adblock/adblockmanager.cpp +index 959f880..964e988 100644 --- a/src/adblock/adblockmanager.cpp +++ b/src/adblock/adblockmanager.cpp -@@ -48,7 +48,7 @@ +@@ -48,7 +48,7 @@ AdBlockManager *AdBlockManager::s_adBlockManager = 0; AdBlockManager::AdBlockManager(QObject *parent) : QObject(parent) , m_loaded(false) @@ -10,18 +20,14 @@ diff --git a/src/adblock/adblockmanager.cpp b/src/adblock/adblockmanager.cpp , m_saveTimer(new AutoSaver(this)) , m_adBlockDialog(0) , m_adBlockNetwork(0) -@@ -203,17 +203,19 @@ +@@ -203,17 +203,19 @@ void AdBlockManager::load() settings.beginGroup(QLatin1String("AdBlock")); m_enabled = settings.value(QLatin1String("enabled"), m_enabled).toBool(); - QStringList defaultSubscriptions; - defaultSubscriptions.append(QString::fromUtf8(customSubscriptionUrl().toEncoded())); - defaultSubscriptions.append(QLatin1String("abp:subscribe?location=http://adblockplus.mozdev.org/easylist/easylist.txt&title=EasyList")); -+ if (m_enabled) { -+ QStringList defaultSubscriptions; -+ defaultSubscriptions.append(QString::fromUtf8(customSubscriptionUrl().toEncoded())); -+ defaultSubscriptions.append(QLatin1String("abp:subscribe?location=http://adblockplus.mozdev.org/easylist/easylist.txt&title=EasyList")); - +- - QStringList subscriptions = settings.value(QLatin1String("subscriptions"), defaultSubscriptions).toStringList(); - foreach (const QString &subscription, subscriptions) { - QUrl url = QUrl::fromEncoded(subscription.toUtf8()); @@ -29,6 +35,11 @@ diff --git a/src/adblock/adblockmanager.cpp b/src/adblock/adblockmanager.cpp - connect(adBlockSubscription, SIGNAL(rulesChanged()), this, SIGNAL(rulesChanged())); - connect(adBlockSubscription, SIGNAL(changed()), this, SIGNAL(rulesChanged())); - m_subscriptions.append(adBlockSubscription); ++ if (m_enabled) { ++ QStringList defaultSubscriptions; ++ defaultSubscriptions.append(QString::fromUtf8(customSubscriptionUrl().toEncoded())); ++ defaultSubscriptions.append(QLatin1String("abp:subscribe?location=http://adblockplus.mozdev.org/easylist/easylist.txt&title=EasyList")); ++ + QStringList subscriptions = settings.value(QLatin1String("subscriptions"), defaultSubscriptions).toStringList(); + foreach (const QString &subscription, subscriptions) { + QUrl url = QUrl::fromEncoded(subscription.toUtf8()); diff --git a/ports/src/app/arora/arora_disable_log_messages.patch b/ports/src/app/arora/patches/arora_disable_log_messages.patch similarity index 59% rename from ports/src/app/arora/arora_disable_log_messages.patch rename to ports/src/app/arora/patches/arora_disable_log_messages.patch index 8cf83044c6..1443a6e359 100644 --- a/ports/src/app/arora/arora_disable_log_messages.patch +++ b/ports/src/app/arora/patches/arora_disable_log_messages.patch @@ -1,5 +1,14 @@ +arora_disable_log_messages.patch + +From: Christian Prochaska + + +--- + src/main.cpp | 3 +++ + 1 file changed, 3 insertions(+) + diff --git a/src/main.cpp b/src/main.cpp -index 94bece9..1be1bf7 100644 +index 1d4d531..a9771b0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -24,6 +24,9 @@ diff --git a/ports/src/app/arora/arora_disable_program_exit.patch b/ports/src/app/arora/patches/arora_disable_program_exit.patch similarity index 65% rename from ports/src/app/arora/arora_disable_program_exit.patch rename to ports/src/app/arora/patches/arora_disable_program_exit.patch index b85a0dc1b0..c866ba131e 100644 --- a/ports/src/app/arora/arora_disable_program_exit.patch +++ b/ports/src/app/arora/patches/arora_disable_program_exit.patch @@ -1,7 +1,17 @@ +arora_disable_program_exit.patch + +From: Christian Prochaska + + +--- + src/browsermainwindow.cpp | 2 ++ + 1 file changed, 2 insertions(+) + diff --git a/src/browsermainwindow.cpp b/src/browsermainwindow.cpp +index de787a6..a8f9798 100644 --- a/src/browsermainwindow.cpp +++ b/src/browsermainwindow.cpp -@@ -536,7 +536,9 @@ +@@ -536,7 +536,9 @@ void BrowserMainWindow::setupMenu() else connect(m_fileQuit, SIGNAL(triggered()), BrowserApplication::instance(), SLOT(quitBrowser())); m_fileQuit->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_Q)); diff --git a/ports/src/app/arora/patches/arora_disable_ssl_messageboxes.patch b/ports/src/app/arora/patches/arora_disable_ssl_messageboxes.patch new file mode 100644 index 0000000000..2dc889db97 --- /dev/null +++ b/ports/src/app/arora/patches/arora_disable_ssl_messageboxes.patch @@ -0,0 +1,47 @@ +arora_disable_ssl_message_boxes.patch + +From: Christian Prochaska + + +--- + src/network/networkaccessmanager.cpp | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/network/networkaccessmanager.cpp b/src/network/networkaccessmanager.cpp +index 9253a8e..45e9786 100644 +--- a/src/network/networkaccessmanager.cpp ++++ b/src/network/networkaccessmanager.cpp +@@ -316,6 +316,7 @@ void NetworkAccessManager::sslErrors(QNetworkReply *reply, const QList
  • ")); ++#if 0 + int ret = QMessageBox::warning(mainWindow, + QCoreApplication::applicationName() + tr(" - SSL Errors"), + tr("SSL Errors:" +@@ -324,18 +325,25 @@ void NetworkAccessManager::sslErrors(QNetworkReply *reply, const QList").arg(reply->url().toString()).arg(errors), + QMessageBox::Yes | QMessageBox::No, + QMessageBox::No); ++#else ++ int ret = QMessageBox::Yes; ++#endif + + if (ret == QMessageBox::Yes) { + if (ca_new.count() > 0) { + QStringList certinfos; + for (int i = 0; i < ca_new.count(); ++i) + certinfos += certToFormattedString(ca_new.at(i)); ++#if 0 + ret = QMessageBox::question(mainWindow, QCoreApplication::applicationName(), + tr("Certificates:
    " + "%1
    " + "Do you want to accept all these certificates?
    ") + .arg(certinfos.join(QString())), + QMessageBox::Yes | QMessageBox::No, QMessageBox::No); ++#else ++ ret = QMessageBox::Yes; ++#endif + if (ret == QMessageBox::Yes) { + ca_merge += ca_new; + diff --git a/ports/src/app/arora/arora_genode.patch b/ports/src/app/arora/patches/arora_genode.patch similarity index 81% rename from ports/src/app/arora/arora_genode.patch rename to ports/src/app/arora/patches/arora_genode.patch index 5d2a8cd481..f8f051daef 100644 --- a/ports/src/app/arora/arora_genode.patch +++ b/ports/src/app/arora/patches/arora_genode.patch @@ -1,4 +1,31 @@ +arora_genode.patch + +From: Christian Prochaska + + +--- + src/adblock/adblock.pri | 2 + + src/bookmarks/bookmarks.pri | 4 + + src/bookmarks/xbel/xbel.pri | 2 + + src/browserapplication.cpp | 2 + + src/browsermainwindow.cpp | 6 ++ + src/history/history.pri | 2 + + src/locationbar/locationbar.pri | 2 + + src/main.cpp | 3 + + src/network/cookiejar/cookiejar.pri | 5 + + .../networkcookiejar/networkcookiejar.pri | 2 + + src/network/network.pri | 4 + + src/opensearch/opensearch.pri | 4 + + src/qwebplugins/clicktoflash/clicktoflash.pri | 2 + + src/qwebplugins/qwebplugins.pri | 4 + + src/src.pri | 69 +++++--------------- + src/src.pro | 53 +-------------- + src/useragent/useragent.pri | 2 + + src/utils/utils.pri | 9 +-- + 18 files changed, 63 insertions(+), 114 deletions(-) + diff --git a/src/adblock/adblock.pri b/src/adblock/adblock.pri +index c373a68..ce18643 100644 --- a/src/adblock/adblock.pri +++ b/src/adblock/adblock.pri @@ -1,3 +1,5 @@ @@ -8,6 +35,7 @@ diff --git a/src/adblock/adblock.pri b/src/adblock/adblock.pri DEPENDPATH += $$PWD diff --git a/src/bookmarks/bookmarks.pri b/src/bookmarks/bookmarks.pri +index ee03def..0debe73 100644 --- a/src/bookmarks/bookmarks.pri +++ b/src/bookmarks/bookmarks.pri @@ -1,3 +1,5 @@ @@ -16,13 +44,14 @@ diff --git a/src/bookmarks/bookmarks.pri b/src/bookmarks/bookmarks.pri INCLUDEPATH += $$PWD DEPENDPATH += $$PWD -@@ -23,4 +25,4 @@ +@@ -23,4 +25,4 @@ FORMS += \ addbookmarkdialog.ui \ bookmarksdialog.ui -include(xbel/xbel.pri) +include $(REP_DIR)/contrib/$(ARORA)/src/bookmarks/xbel/xbel.pri diff --git a/src/bookmarks/xbel/xbel.pri b/src/bookmarks/xbel/xbel.pri +index 02b0258..ffd181d 100644 --- a/src/bookmarks/xbel/xbel.pri +++ b/src/bookmarks/xbel/xbel.pri @@ -1,3 +1,5 @@ @@ -32,9 +61,10 @@ diff --git a/src/bookmarks/xbel/xbel.pri b/src/bookmarks/xbel/xbel.pri DEPENDPATH += $$PWD diff --git a/src/browserapplication.cpp b/src/browserapplication.cpp +index 75e9954..08a8e65 100644 --- a/src/browserapplication.cpp +++ b/src/browserapplication.cpp -@@ -129,10 +129,12 @@ +@@ -129,10 +129,12 @@ BrowserApplication::BrowserApplication(int &argc, char **argv) qDebug() << "BrowserApplication::" << __FUNCTION__ << "I am the only arora"; #endif @@ -48,9 +78,10 @@ diff --git a/src/browserapplication.cpp b/src/browserapplication.cpp #if defined(Q_WS_MAC) QApplication::setQuitOnLastWindowClosed(false); diff --git a/src/browsermainwindow.cpp b/src/browsermainwindow.cpp +index ffcb8b8..de787a6 100644 --- a/src/browsermainwindow.cpp +++ b/src/browsermainwindow.cpp -@@ -1218,12 +1218,15 @@ +@@ -1218,12 +1218,15 @@ void BrowserMainWindow::fileOpen() void BrowserMainWindow::filePrintPreview() { @@ -66,7 +97,7 @@ diff --git a/src/browsermainwindow.cpp b/src/browsermainwindow.cpp } void BrowserMainWindow::filePrint() -@@ -1235,12 +1238,15 @@ +@@ -1235,12 +1238,15 @@ void BrowserMainWindow::filePrint() void BrowserMainWindow::printRequested(QWebFrame *frame) { @@ -83,6 +114,7 @@ diff --git a/src/browsermainwindow.cpp b/src/browsermainwindow.cpp void BrowserMainWindow::privateBrowsing() diff --git a/src/history/history.pri b/src/history/history.pri +index 6ee163d..a3616e2 100644 --- a/src/history/history.pri +++ b/src/history/history.pri @@ -1,3 +1,5 @@ @@ -92,6 +124,7 @@ diff --git a/src/history/history.pri b/src/history/history.pri DEPENDPATH += $$PWD diff --git a/src/locationbar/locationbar.pri b/src/locationbar/locationbar.pri +index ba33005..cace42b 100644 --- a/src/locationbar/locationbar.pri +++ b/src/locationbar/locationbar.pri @@ -1,3 +1,5 @@ @@ -101,6 +134,7 @@ diff --git a/src/locationbar/locationbar.pri b/src/locationbar/locationbar.pri DEPENDPATH += $$PWD diff --git a/src/main.cpp b/src/main.cpp +index a5405d5..1d4d531 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -17,6 +17,7 @@ @@ -111,13 +145,7 @@ diff --git a/src/main.cpp b/src/main.cpp #include "browserapplication.h" #ifdef Q_OS_WIN -@@ -27,12 +28,16 @@ - { - Q_INIT_RESOURCE(htmls); - Q_INIT_RESOURCE(data); -+ Q_IMPORT_PLUGIN(qgif); -+ Q_IMPORT_PLUGIN(qjpeg); - #ifdef Q_WS_X11 +@@ -31,8 +32,10 @@ int main(int argc, char **argv) QApplication::setGraphicsSystem(QString::fromLatin1("raster")); #endif BrowserApplication application(argc, argv); @@ -129,6 +157,7 @@ diff --git a/src/main.cpp b/src/main.cpp application.setStyle(new ExplorerStyle); #endif diff --git a/src/network/cookiejar/cookiejar.pri b/src/network/cookiejar/cookiejar.pri +index 8ecf533..4781160 100644 --- a/src/network/cookiejar/cookiejar.pri +++ b/src/network/cookiejar/cookiejar.pri @@ -1,3 +1,5 @@ @@ -137,15 +166,16 @@ diff --git a/src/network/cookiejar/cookiejar.pri b/src/network/cookiejar/cookiej INCLUDEPATH += $$PWD DEPENDPATH += $$PWD -@@ -19,5 +21,6 @@ +@@ -19,5 +21,6 @@ FORMS += \ cookies.ui \ cookiesexceptions.ui -include($$PWD/networkcookiejar/networkcookiejar.pri) +include $(REP_DIR)/contrib/$(ARORA)/src/network/cookiejar/networkcookiejar/networkcookiejar.pri - + + diff --git a/src/network/cookiejar/networkcookiejar/networkcookiejar.pri b/src/network/cookiejar/networkcookiejar/networkcookiejar.pri +index 78ac273..f6ae783 100644 --- a/src/network/cookiejar/networkcookiejar/networkcookiejar.pri +++ b/src/network/cookiejar/networkcookiejar/networkcookiejar.pri @@ -1,3 +1,5 @@ @@ -155,6 +185,7 @@ diff --git a/src/network/cookiejar/networkcookiejar/networkcookiejar.pri b/src/n DEPENDPATH += $$PWD diff --git a/src/network/network.pri b/src/network/network.pri +index 5c912f4..ca3bdbf 100644 --- a/src/network/network.pri +++ b/src/network/network.pri @@ -1,3 +1,5 @@ @@ -163,13 +194,14 @@ diff --git a/src/network/network.pri b/src/network/network.pri INCLUDEPATH += $$PWD DEPENDPATH += $$PWD -@@ -19,4 +21,4 @@ +@@ -19,4 +21,4 @@ SOURCES += \ networkproxyfactory.cpp \ schemeaccesshandler.cpp -include(cookiejar/cookiejar.pri) +include $(REP_DIR)/contrib/$(ARORA)/src/network/cookiejar/cookiejar.pri diff --git a/src/opensearch/opensearch.pri b/src/opensearch/opensearch.pri +index dbace74..427cf2a 100644 --- a/src/opensearch/opensearch.pri +++ b/src/opensearch/opensearch.pri @@ -1,3 +1,5 @@ @@ -178,7 +210,14 @@ diff --git a/src/opensearch/opensearch.pri b/src/opensearch/opensearch.pri INCLUDEPATH += $$PWD DEPENDPATH += $$PWD +@@ -23,4 +25,4 @@ SOURCES += \ + + FORMS += opensearchdialog.ui + +-QT += script ++QT += scriptclassic diff --git a/src/qwebplugins/clicktoflash/clicktoflash.pri b/src/qwebplugins/clicktoflash/clicktoflash.pri +index 2033e59..193cc82 100644 --- a/src/qwebplugins/clicktoflash/clicktoflash.pri +++ b/src/qwebplugins/clicktoflash/clicktoflash.pri @@ -1,3 +1,5 @@ @@ -188,6 +227,7 @@ diff --git a/src/qwebplugins/clicktoflash/clicktoflash.pri b/src/qwebplugins/cli DEPENDPATH += $$PWD diff --git a/src/qwebplugins/qwebplugins.pri b/src/qwebplugins/qwebplugins.pri +index d3d9cb7..26b19db 100644 --- a/src/qwebplugins/qwebplugins.pri +++ b/src/qwebplugins/qwebplugins.pri @@ -1,3 +1,5 @@ @@ -196,7 +236,7 @@ diff --git a/src/qwebplugins/qwebplugins.pri b/src/qwebplugins/qwebplugins.pri INCLUDEPATH += $$PWD DEPENDPATH += $$PWD -@@ -9,5 +11,5 @@ +@@ -9,5 +11,5 @@ SOURCES += \ arorawebplugin.cpp \ webpluginfactory.cpp @@ -204,23 +244,24 @@ diff --git a/src/qwebplugins/qwebplugins.pri b/src/qwebplugins/qwebplugins.pri +include $(REP_DIR)/contrib/$(ARORA)/src/qwebplugins/clicktoflash/clicktoflash.pri diff --git a/src/src.pri b/src/src.pri +index 7c1a0e3..5812c05 100644 --- a/src/src.pri +++ b/src/src.pri @@ -1,8 +1,9 @@ +-CONFIG += qt warn_on +-contains(QT_BUILD_PARTS, tools): CONFIG += uitools +-else : DEFINES += QT_NO_UITOOLS +INC_DIR += $(REP_DIR)/contrib/$(ARORA)/src + +CC_CXX_OPT += -DGITVERSION=\"\\\"0\\\"\" -DGITCHANGENUMBER=\"\\\"0\\\"\" -include qhash.h -include quiloader.h -+ - CONFIG += qt warn_on --contains(QT_BUILD_PARTS, tools): CONFIG += uitools --else : DEFINES += QT_NO_UITOOLS -- + -win32|os2 : Debug : CONFIG += console ++CONFIG += qt warn_on +CONFIG += uitools INCLUDEPATH += $$PWD DEPENDPATH += $$PWD -@@ -15,15 +16,6 @@ +@@ -15,15 +16,6 @@ UI_DIR = $$PWD/.ui MOC_DIR = $$PWD/.moc OBJECTS_DIR = $$PWD/.obj @@ -236,7 +277,7 @@ diff --git a/src/src.pri b/src/src.pri FORMS += \ aboutdialog.ui \ autofilldialog.ui \ -@@ -89,49 +81,24 @@ +@@ -89,49 +81,24 @@ SOURCES += \ webview.cpp \ webviewsearch.cpp @@ -300,6 +341,7 @@ diff --git a/src/src.pri b/src/src.pri - LIBS += -ladvapi32 -} diff --git a/src/src.pro b/src/src.pro +index dab73ff..8460fd4 100644 --- a/src/src.pro +++ b/src/src.pro @@ -1,65 +1,16 @@ @@ -371,6 +413,7 @@ diff --git a/src/src.pro b/src/src.pro -} +QT_PLUGIN += qgif qjpeg diff --git a/src/useragent/useragent.pri b/src/useragent/useragent.pri +index 78f1c48..50f6e1e 100644 --- a/src/useragent/useragent.pri +++ b/src/useragent/useragent.pri @@ -1,3 +1,5 @@ @@ -380,6 +423,7 @@ diff --git a/src/useragent/useragent.pri b/src/useragent/useragent.pri DEPENDPATH += $$PWD diff --git a/src/utils/utils.pri b/src/utils/utils.pri +index fb10c55..489a51d 100644 --- a/src/utils/utils.pri +++ b/src/utils/utils.pri @@ -1,3 +1,5 @@ @@ -388,7 +432,7 @@ diff --git a/src/utils/utils.pri b/src/utils/utils.pri INCLUDEPATH += $$PWD DEPENDPATH += $$PWD -@@ -26,10 +28,3 @@ +@@ -26,10 +28,3 @@ SOURCES += \ squeezelabel.cpp \ treesortfilterproxymodel.cpp \ webpageproxy.cpp diff --git a/ports/src/app/arora/arora_move_window.patch b/ports/src/app/arora/patches/arora_move_window.patch similarity index 63% rename from ports/src/app/arora/arora_move_window.patch rename to ports/src/app/arora/patches/arora_move_window.patch index 7cd29b2a22..4275c3e71f 100644 --- a/ports/src/app/arora/arora_move_window.patch +++ b/ports/src/app/arora/patches/arora_move_window.patch @@ -1,7 +1,17 @@ +arora_move_window.patch + +From: Christian Prochaska + + +--- + src/browserapplication.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + diff --git a/src/browserapplication.cpp b/src/browserapplication.cpp +index 08a8e65..cb3a872 100644 --- a/src/browserapplication.cpp +++ b/src/browserapplication.cpp -@@ -553,6 +553,10 @@ +@@ -559,6 +559,10 @@ BrowserMainWindow *BrowserApplication::newMainWindow() if (!m_mainWindows.isEmpty()) mainWindow()->m_autoSaver->saveIfNeccessary(); BrowserMainWindow *browser = new BrowserMainWindow(); diff --git a/ports/src/app/arora/arora_nitpicker_plugin.patch b/ports/src/app/arora/patches/arora_nitpicker_plugin.patch similarity index 72% rename from ports/src/app/arora/arora_nitpicker_plugin.patch rename to ports/src/app/arora/patches/arora_nitpicker_plugin.patch index 4c50099454..c8cfe3abf4 100644 --- a/ports/src/app/arora/arora_nitpicker_plugin.patch +++ b/ports/src/app/arora/patches/arora_nitpicker_plugin.patch @@ -1,13 +1,25 @@ +arora_nitpicker_plugin.patch + +From: Christian Prochaska + + +--- + src/qwebplugins/qwebplugins.pri | 2 +- + src/qwebplugins/webpluginfactory.cpp | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) + diff --git a/src/qwebplugins/qwebplugins.pri b/src/qwebplugins/qwebplugins.pri +index 26b19db..cc54090 100644 --- a/src/qwebplugins/qwebplugins.pri +++ b/src/qwebplugins/qwebplugins.pri -@@ -12,4 +12,4 @@ +@@ -12,4 +12,4 @@ SOURCES += \ webpluginfactory.cpp include $(REP_DIR)/contrib/$(ARORA)/src/qwebplugins/clicktoflash/clicktoflash.pri - +include $(REP_DIR)/src/app/arora/qwebplugins/nitpicker/nitpicker.pri diff --git a/src/qwebplugins/webpluginfactory.cpp b/src/qwebplugins/webpluginfactory.cpp +index c12fe72..2e09f69 100644 --- a/src/qwebplugins/webpluginfactory.cpp +++ b/src/qwebplugins/webpluginfactory.cpp @@ -20,6 +20,7 @@ @@ -18,7 +30,7 @@ diff --git a/src/qwebplugins/webpluginfactory.cpp b/src/qwebplugins/webpluginfac #include #include -@@ -88,6 +89,7 @@ +@@ -88,6 +89,7 @@ void WebPluginFactory::init() const qDeleteAll(m_plugins); m_plugins.clear(); m_plugins.append(new ClickToFlashPlugin); diff --git a/ports/src/app/arora/patches/arora_qt5_cpp.patch b/ports/src/app/arora/patches/arora_qt5_cpp.patch new file mode 100644 index 0000000000..b37455d999 --- /dev/null +++ b/ports/src/app/arora/patches/arora_qt5_cpp.patch @@ -0,0 +1,867 @@ +arora_qt5_cpp.patch + +From: Christian Prochaska + + +--- + src/aboutdialog.cpp | 4 +- + src/adblock/adblockmodel.cpp | 13 +++++ + src/adblock/adblocksubscription.cpp | 13 +++++ + src/autofilldialog.cpp | 5 ++ + src/autofillmanager.cpp | 14 ++++++ + src/bookmarks/bookmarksmanager.cpp | 8 +++ + src/bookmarks/bookmarksmodel.cpp | 2 + + src/browserapplication.cpp | 14 +++++- + src/downloadmanager.cpp | 4 ++ + src/history/history.cpp | 49 +++++++++++++++++++- + src/locationbar/locationbar.cpp | 2 + + src/locationbar/locationbarsiteicon.cpp | 3 + + src/modelmenu.cpp | 5 ++ + src/modeltoolbar.cpp | 3 + + src/network/cookiejar/cookieexceptionsmodel.cpp | 5 ++ + src/network/cookiejar/cookiejar.cpp | 2 + + src/network/cookiejar/cookiemodel.cpp | 5 ++ + .../cookiejar/networkcookiejar/networkcookiejar.h | 2 + + .../networkcookiejar/networkcookiejar_p.h | 2 + + src/network/networkaccessmanager.cpp | 16 +++++++ + src/network/networkdiskcache.cpp | 5 ++ + src/opensearch/opensearchengine.cpp | 8 +++ + src/opensearch/opensearchenginemodel.cpp | 5 ++ + src/opensearch/opensearchmanager.cpp | 4 ++ + src/settings.cpp | 8 ++- + src/tabbar.cpp | 3 + + src/tabwidget.cpp | 2 - + src/utils/networkaccessmanagerproxy_p.h | 2 + + src/webview.cpp | 14 ++++-- + tools/cacheinfo/main.cpp | 5 ++ + tools/htmlToXBel/main.cpp | 5 ++ + 31 files changed, 220 insertions(+), 12 deletions(-) + +diff --git a/src/aboutdialog.cpp b/src/aboutdialog.cpp +index 42e1c81..ce70df2 100644 +--- a/src/aboutdialog.cpp ++++ b/src/aboutdialog.cpp +@@ -27,7 +27,9 @@ + #include + #include + +-#if QT_VERSION >= 0x040600 || defined(WEBKIT_TRUNK) ++#if QT_VERSION >= 0x050000 || defined(WEBKIT_TRUNK) ++#include ++#elif QT_VERSION >= 0x040600 + #include + #endif + +diff --git a/src/adblock/adblockmodel.cpp b/src/adblock/adblockmodel.cpp +index 1b5ba2d..f17e2a0 100644 +--- a/src/adblock/adblockmodel.cpp ++++ b/src/adblock/adblockmodel.cpp +@@ -41,7 +41,12 @@ AdBlockModel::AdBlockModel(QObject *parent) + + void AdBlockModel::rulesChanged() + { ++#if QT_VERSION >= 0x050000 ++ beginResetModel(); ++ endResetModel(); ++#else + reset(); ++#endif + } + + const AdBlockRule AdBlockModel::rule(const QModelIndex &index) const +@@ -67,7 +72,11 @@ QModelIndex AdBlockModel::index(AdBlockSubscription *subscription) + int row = m_manager->subscriptions().indexOf(subscription); + if (row < 0 || row >= m_manager->subscriptions().count()) + return QModelIndex(); ++#if QT_VERSION >= 0x050000 ++ return createIndex(row, 0); ++#else + return createIndex(row, 0, 0); ++#endif + } + + QVariant AdBlockModel::headerData(int section, Qt::Orientation orientation, int role) const +@@ -159,7 +168,11 @@ QModelIndex AdBlockModel::parent(const QModelIndex &index) const + return QModelIndex(); + + int parentRow = m_manager->subscriptions().indexOf(parent); ++#if QT_VERSION >= 0x050000 ++ return createIndex(parentRow, 0); ++#else + return createIndex(parentRow, 0, 0); ++#endif + } + + Qt::ItemFlags AdBlockModel::flags(const QModelIndex &index) const +diff --git a/src/adblock/adblocksubscription.cpp b/src/adblock/adblocksubscription.cpp +index d28c590..539a9d2 100644 +--- a/src/adblock/adblocksubscription.cpp ++++ b/src/adblock/adblocksubscription.cpp +@@ -37,6 +37,10 @@ + #include + #include + ++#if QT_VERSION >= 0x050000 ++#include ++#endif ++ + // #define ADBLOCKSUBSCRIPTION_DEBUG + + AdBlockSubscription::AdBlockSubscription(const QUrl &url, QObject *parent) +@@ -58,10 +62,17 @@ void AdBlockSubscription::parseUrl(const QUrl &url) + if (url.path() != QLatin1String("subscribe")) + return; + ++#if QT_VERSION >= 0x050000 ++ m_title = QUrlQuery(url).queryItemValue(QLatin1String("title")); ++ m_enabled = QUrlQuery(url).queryItemValue(QLatin1String("enabled")) != QLatin1String("false"); ++ m_location = QUrlQuery(url).queryItemValue(QLatin1String("location")).toUtf8(); ++ QByteArray lastUpdateByteArray = QUrlQuery(url).queryItemValue(QLatin1String("lastUpdate")).toLatin1(); ++#else + m_title = QUrl::fromPercentEncoding(url.encodedQueryItemValue("title")); + m_enabled = QUrl::fromPercentEncoding(url.encodedQueryItemValue("enabled")) != QLatin1String("false"); + m_location = QUrl::fromPercentEncoding(url.encodedQueryItemValue("location")).toUtf8(); + QByteArray lastUpdateByteArray = url.encodedQueryItemValue("lastUpdate"); ++#endif + QString lastUpdateString = QUrl::fromPercentEncoding(lastUpdateByteArray); + m_lastUpdate = QDateTime::fromString(lastUpdateString, Qt::ISODate); + loadRules(); +@@ -82,7 +93,9 @@ QUrl AdBlockSubscription::url() const + queryItems.append(Query(QLatin1String("enabled"), QLatin1String("false"))); + if (m_lastUpdate.isValid()) + queryItems.append(Query(QLatin1String("lastUpdate"), m_lastUpdate.toString(Qt::ISODate))); ++#if !(QT_VERSION >= 0x050000) + url.setQueryItems(queryItems); ++#endif + return url; + } + +diff --git a/src/autofilldialog.cpp b/src/autofilldialog.cpp +index 7e1acd1..d3cb89c 100644 +--- a/src/autofilldialog.cpp ++++ b/src/autofilldialog.cpp +@@ -46,7 +46,12 @@ void AutoFillModel::autoFillChanged() + { + AutoFillManager *manager = BrowserApplication::instance()->autoFillManager(); + m_forms = manager->forms(); ++#if QT_VERSION >= 0x050000 ++ beginResetModel(); ++ endResetModel(); ++#else + reset(); ++#endif + } + + QVariant AutoFillModel::headerData(int section, Qt::Orientation orientation, int role) const +diff --git a/src/autofillmanager.cpp b/src/autofillmanager.cpp +index b39e747..42e9519 100644 +--- a/src/autofillmanager.cpp ++++ b/src/autofillmanager.cpp +@@ -43,6 +43,10 @@ + #include + #include + ++#if QT_VERSION >= 0x050000 ++#include ++#endif ++ + #include + + // #define AUTOFILL_DEBUG +@@ -90,7 +94,11 @@ void AutoFillManager::loadSettings() + + QString AutoFillManager::autoFillDataFile() + { ++#if QT_VERSION >= 0x050000 ++ QString fileName = QStandardPaths::writableLocation(QStandardPaths::DataLocation); ++#else + QString fileName = QDesktopServices::storageLocation(QDesktopServices::DataLocation); ++#endif + fileName += QLatin1String("/autofill.dat"); + return fileName; + } +@@ -225,7 +233,11 @@ AutoFillManager::Form AutoFillManager::findForm(QWebPage *webPage, const QByteAr + { + Form form; + QUrl argsUrl = QUrl::fromEncoded(QByteArray("foo://bar.com/?" + outgoingData)); ++#if QT_VERSION >= 0x050000 ++ QList > encodedArgs = QUrlQuery(argsUrl).queryItems(); ++#else + QList > encodedArgs = argsUrl.queryItems(); ++#endif + QSet > args; + // XXX Is there a Qt function to do this? (unencode '+' to ' ') + for (int i = 0; i < encodedArgs.count(); ++i) { +@@ -291,7 +303,9 @@ AutoFillManager::Form AutoFillManager::findForm(QWebPage *webPage, const QByteAr + QUrl AutoFillManager::stripUrl(const QUrl &url) + { + QUrl cleanUrl = url; ++#if !(QT_VERSION >= 0x050000) + cleanUrl.setQueryItems(QList >()); ++#endif + cleanUrl.setFragment(QString()); + cleanUrl.setUserInfo(QString()); + return cleanUrl; +diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp +index 8db5abf..d3a21e2 100644 +--- a/src/bookmarks/bookmarksmanager.cpp ++++ b/src/bookmarks/bookmarksmanager.cpp +@@ -123,7 +123,11 @@ void BookmarksManager::load() + return; + m_loaded = true; + ++#if QT_VERSION >= 0x050000 ++ QString dir = QStandardPaths::writableLocation(QStandardPaths::DataLocation); ++#else + QString dir = QDesktopServices::storageLocation(QDesktopServices::DataLocation); ++#endif + QString bookmarkFile = dir + QLatin1String("/bookmarks.xbel"); + if (!QFile::exists(bookmarkFile)) + bookmarkFile = QLatin1String(":defaultbookmarks.xbel"); +@@ -184,7 +188,11 @@ void BookmarksManager::save() const + return; + + XbelWriter writer; ++#if QT_VERSION >= 0x050000 ++ QString dir = QStandardPaths::writableLocation(QStandardPaths::DataLocation); ++#else + QString dir = QDesktopServices::storageLocation(QDesktopServices::DataLocation); ++#endif + QString bookmarkFile = dir + QLatin1String("/bookmarks.xbel"); + // Save root folder titles in English (i.e. not localized) + m_menu->title = QLatin1String(BOOKMARKMENU); +diff --git a/src/bookmarks/bookmarksmodel.cpp b/src/bookmarks/bookmarksmodel.cpp +index b6f2869..d137dc5 100644 +--- a/src/bookmarks/bookmarksmodel.cpp ++++ b/src/bookmarks/bookmarksmodel.cpp +@@ -72,6 +72,8 @@ + #include + #include + ++#include ++ + BookmarksModel::BookmarksModel(BookmarksManager *bookmarkManager, QObject *parent) + : QAbstractItemModel(parent) + , m_endMacro(false) +diff --git a/src/browserapplication.cpp b/src/browserapplication.cpp +index c7c0d4b..75e9954 100644 +--- a/src/browserapplication.cpp ++++ b/src/browserapplication.cpp +@@ -303,9 +303,15 @@ void BrowserApplication::quitBrowser() + */ + void BrowserApplication::postLaunch() + { ++#if QT_VERSION >= 0x050000 ++ QStandardPaths::StandardLocation location; ++ location = QStandardPaths::CacheLocation; ++ QString directory = QStandardPaths::writableLocation(location); ++#else + QDesktopServices::StandardLocation location; + location = QDesktopServices::CacheLocation; + QString directory = QDesktopServices::storageLocation(location); ++#endif + if (directory.isEmpty()) + directory = QDir::homePath() + QLatin1String("/.") + QCoreApplication::applicationName(); + QWebSettings::setIconDatabasePath(directory); +@@ -356,7 +362,7 @@ void BrowserApplication::loadSettings() + QString standardFontFamily = defaultSettings->fontFamily(QWebSettings::StandardFont); + int standardFontSize = defaultSettings->fontSize(QWebSettings::DefaultFontSize); + QFont standardFont = QFont(standardFontFamily, standardFontSize); +- standardFont = qVariantValue(settings.value(QLatin1String("standardFont"), standardFont)); ++ standardFont = qvariant_cast(settings.value(QLatin1String("standardFont"), standardFont)); + defaultSettings->setFontFamily(QWebSettings::StandardFont, standardFont.family()); + defaultSettings->setFontSize(QWebSettings::DefaultFontSize, standardFont.pointSize()); + int minimumFontSize = settings.value(QLatin1String("minimumFontSize"), +@@ -366,7 +372,7 @@ void BrowserApplication::loadSettings() + QString fixedFontFamily = defaultSettings->fontFamily(QWebSettings::FixedFont); + int fixedFontSize = defaultSettings->fontSize(QWebSettings::DefaultFixedFontSize); + QFont fixedFont = QFont(fixedFontFamily, fixedFontSize); +- fixedFont = qVariantValue(settings.value(QLatin1String("fixedFont"), fixedFont)); ++ fixedFont = qvariant_cast(settings.value(QLatin1String("fixedFont"), fixedFont)); + defaultSettings->setFontFamily(QWebSettings::FixedFont, fixedFont.family()); + defaultSettings->setFontSize(QWebSettings::DefaultFixedFontSize, fixedFont.pointSize()); + +@@ -657,7 +663,11 @@ QString BrowserApplication::installedDataDirectory() + + QString BrowserApplication::dataFilePath(const QString &fileName) + { ++#if QT_VERSION >= 0x050000 ++ QString directory = QStandardPaths::writableLocation(QStandardPaths::DataLocation); ++#else + QString directory = QDesktopServices::storageLocation(QDesktopServices::DataLocation); ++#endif + if (directory.isEmpty()) + directory = QDir::homePath() + QLatin1String("/.") + QCoreApplication::applicationName(); + if (!QFile::exists(directory)) { +diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp +index 84091f8..a5cfe06 100644 +--- a/src/downloadmanager.cpp ++++ b/src/downloadmanager.cpp +@@ -468,7 +468,11 @@ DownloadManager::DownloadManager(QWidget *parent) + + QSettings settings; + settings.beginGroup(QLatin1String("downloadmanager")); ++#if QT_VERSION >= 0x050000 ++ QString defaultLocation = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); ++#else + QString defaultLocation = QDesktopServices::storageLocation(QDesktopServices::DesktopLocation); ++#endif + setDownloadDirectory(settings.value(QLatin1String("downloadDirectory"), defaultLocation).toString()); + + downloadsView->setShowGrid(false); +diff --git a/src/history/history.cpp b/src/history/history.cpp +index 23e4119..2f5916c 100644 +--- a/src/history/history.cpp ++++ b/src/history/history.cpp +@@ -104,7 +104,12 @@ HistoryModel::HistoryModel(HistoryManager *history, QObject *parent) + + void HistoryModel::historyReset() + { ++#if QT_VERSION >= 0x050000 ++ beginResetModel(); ++ endResetModel(); ++#else + reset(); ++#endif + } + + void HistoryModel::entryAdded() +@@ -535,7 +540,12 @@ void HistoryFilterModel::recalculateFrecencies() + void HistoryFilterModel::sourceReset() + { + m_loaded = false; ++#if QT_VERSION >= 0x050000 ++ beginResetModel(); ++ endResetModel(); ++#else + reset(); ++#endif + } + + int HistoryFilterModel::rowCount(const QModelIndex &parent) const +@@ -671,7 +681,14 @@ bool HistoryFilterModel::removeRows(int row, int count, const QModelIndex &paren + this, SLOT(sourceRowsRemoved(const QModelIndex &, int, int))); + m_loaded = false; + if (oldCount - count != rowCount()) ++#if QT_VERSION >= 0x050000 ++ { ++ beginResetModel(); ++ endResetModel(); ++ } ++#else + reset(); ++#endif + return true; + } + +@@ -815,7 +832,11 @@ QModelIndex HistoryTreeModel::index(int row, int column, const QModelIndex &pare + return QModelIndex(); + + if (!parent.isValid()) ++#if QT_VERSION >= 0x050000 ++ return createIndex(row, column); ++#else + return createIndex(row, column, 0); ++#endif + return createIndex(row, column, parent.row() + 1); + } + +@@ -824,7 +845,11 @@ QModelIndex HistoryTreeModel::parent(const QModelIndex &index) const + int offset = index.internalId(); + if (offset == 0 || !index.isValid()) + return QModelIndex(); ++#if QT_VERSION >= 0x050000 ++ return createIndex(offset - 1, 0); ++#else + return createIndex(offset - 1, 0, 0); ++#endif + } + + bool HistoryTreeModel::hasChildren(const QModelIndex &parent) const +@@ -864,13 +889,23 @@ void HistoryTreeModel::setSourceModel(QAbstractItemModel *newSourceModel) + this, SLOT(sourceRowsRemoved(const QModelIndex &, int, int))); + } + ++#if QT_VERSION >= 0x050000 ++ beginResetModel(); ++ endResetModel(); ++#else + reset(); ++#endif + } + + void HistoryTreeModel::sourceReset() + { + m_sourceRowCache.clear(); ++#if QT_VERSION >= 0x050000 ++ beginResetModel(); ++ endResetModel(); ++#else + reset(); ++#endif + } + + void HistoryTreeModel::sourceRowsInserted(const QModelIndex &parent, int start, int end) +@@ -879,7 +914,12 @@ void HistoryTreeModel::sourceRowsInserted(const QModelIndex &parent, int start, + Q_ASSERT(!parent.isValid()); + if (start != 0 || start != end) { + m_sourceRowCache.clear(); +- reset(); ++#if QT_VERSION >= 0x050000 ++ beginResetModel(); ++ endResetModel(); ++#else ++ reset(); ++#endif + return; + } + +@@ -941,7 +981,12 @@ bool HistoryTreeModel::removeRows(int row, int count, const QModelIndex &parent) + void HistoryTreeModel::sourceRowsRemoved(const QModelIndex &parent, int start, int end) + { + if (!removingDown) { +- reset(); ++#if QT_VERSION >= 0x050000 ++ beginResetModel(); ++ endResetModel(); ++#else ++ reset(); ++#endif + m_sourceRowCache.clear(); + return; + } +diff --git a/src/locationbar/locationbar.cpp b/src/locationbar/locationbar.cpp +index c9f5335..3124797 100644 +--- a/src/locationbar/locationbar.cpp ++++ b/src/locationbar/locationbar.cpp +@@ -31,6 +31,8 @@ + #include + #include + ++#include ++ + #include + + LocationBar::LocationBar(QWidget *parent) +diff --git a/src/locationbar/locationbarsiteicon.cpp b/src/locationbar/locationbarsiteicon.cpp +index f594700..49b2f55 100644 +--- a/src/locationbar/locationbarsiteicon.cpp ++++ b/src/locationbar/locationbarsiteicon.cpp +@@ -22,6 +22,9 @@ + #include + #include + ++#include ++#include ++ + #include "browserapplication.h" + #include "webview.h" + +diff --git a/src/modelmenu.cpp b/src/modelmenu.cpp +index 4f95d09..0f052c3 100644 +--- a/src/modelmenu.cpp ++++ b/src/modelmenu.cpp +@@ -69,6 +69,9 @@ + #include + #include + ++#include ++#include ++ + #include + + ModelMenu::ModelMenu(QWidget *parent) +@@ -344,7 +347,7 @@ void ModelMenu::mouseMoveEvent(QMouseEvent *event) + if (drag->exec() == Qt::MoveAction) { + m_model->removeRow(idx.row(), m_root); + +- if (!this->isAncestorOf(drag->target())) ++ if (!this->isAncestorOf(qobject_cast(drag->target()))) + close(); + else + aboutToShow(); +diff --git a/src/modeltoolbar.cpp b/src/modeltoolbar.cpp +index 12b77b9..800cd75 100644 +--- a/src/modeltoolbar.cpp ++++ b/src/modeltoolbar.cpp +@@ -25,6 +25,9 @@ + #include + #include + ++#include ++#include ++ + ModelToolBar::ModelToolBar(QWidget *parent) + : QToolBar(parent) + , m_model(0) +diff --git a/src/network/cookiejar/cookieexceptionsmodel.cpp b/src/network/cookiejar/cookieexceptionsmodel.cpp +index 6e45d2a..93abbca 100644 +--- a/src/network/cookiejar/cookieexceptionsmodel.cpp ++++ b/src/network/cookiejar/cookieexceptionsmodel.cpp +@@ -217,6 +217,11 @@ void CookieExceptionsModel::addHost(QString host, QStringList &add, QStringList + add.removeOne(otherRule); + remove1.removeOne(otherRule); + remove2.removeOne(otherRule); ++#if QT_VERSION >= 0x050000 ++ beginResetModel(); ++ endResetModel(); ++#else + reset(); ++#endif + } + +diff --git a/src/network/cookiejar/cookiejar.cpp b/src/network/cookiejar/cookiejar.cpp +index 532600a..97b6b36 100644 +--- a/src/network/cookiejar/cookiejar.cpp ++++ b/src/network/cookiejar/cookiejar.cpp +@@ -71,6 +71,8 @@ + #include + #include + ++#include ++ + #include + + static const unsigned int JAR_VERSION = 23; +diff --git a/src/network/cookiejar/cookiemodel.cpp b/src/network/cookiejar/cookiemodel.cpp +index 391e2cc..318af47 100644 +--- a/src/network/cookiejar/cookiemodel.cpp ++++ b/src/network/cookiejar/cookiemodel.cpp +@@ -196,5 +196,10 @@ void CookieModel::cookiesChanged() + { + if (m_cookieJar) + m_cookies = m_cookieJar->cookies(); ++#if QT_VERSION >= 0x050000 ++ beginResetModel(); ++ endResetModel(); ++#else + reset(); ++#endif + } +diff --git a/src/network/cookiejar/networkcookiejar/networkcookiejar.h b/src/network/cookiejar/networkcookiejar/networkcookiejar.h +index 365b4a3..52d9c6e 100644 +--- a/src/network/cookiejar/networkcookiejar/networkcookiejar.h ++++ b/src/network/cookiejar/networkcookiejar/networkcookiejar.h +@@ -39,6 +39,8 @@ + + #include + ++#include ++ + class NetworkCookieJarPrivate; + class NetworkCookieJar : public QNetworkCookieJar { + Q_OBJECT +diff --git a/src/network/cookiejar/networkcookiejar/networkcookiejar_p.h b/src/network/cookiejar/networkcookiejar/networkcookiejar_p.h +index ea35737..bb19aa1 100644 +--- a/src/network/cookiejar/networkcookiejar/networkcookiejar_p.h ++++ b/src/network/cookiejar/networkcookiejar/networkcookiejar_p.h +@@ -37,6 +37,8 @@ + #ifndef NETWORKCOOKIEJARPRIVATE_H + #define NETWORKCOOKIEJARPRIVATE_H + ++#include ++ + #include "trie_p.h" + + QT_BEGIN_NAMESPACE +diff --git a/src/network/networkaccessmanager.cpp b/src/network/networkaccessmanager.cpp +index 7e99d46..9253a8e 100644 +--- a/src/network/networkaccessmanager.cpp ++++ b/src/network/networkaccessmanager.cpp +@@ -212,7 +212,11 @@ void NetworkAccessManager::authenticationRequired(QNetworkReply *reply, QAuthent + passwordDialog.iconLabel->setPixmap(mainWindow->style()->standardIcon(QStyle::SP_MessageBoxQuestion, 0, mainWindow).pixmap(32, 32)); + + QString introMessage = tr("Enter username and password for \"%1\" at %2"); ++#if QT_VERSION >= 0x050000 ++ introMessage = introMessage.arg(auth->realm().toHtmlEscaped()).arg(reply->url().toString().toHtmlEscaped()); ++#else + introMessage = introMessage.arg(Qt::escape(auth->realm())).arg(Qt::escape(reply->url().toString())); ++#endif + passwordDialog.introLabel->setText(introMessage); + passwordDialog.introLabel->setWordWrap(true); + +@@ -239,7 +243,11 @@ void NetworkAccessManager::proxyAuthenticationRequired(const QNetworkProxy &prox + proxyDialog.iconLabel->setPixmap(mainWindow->style()->standardIcon(QStyle::SP_MessageBoxQuestion, 0, mainWindow).pixmap(32, 32)); + + QString introMessage = tr("Connect to proxy \"%1\" using:"); ++#if QT_VERSION >= 0x050000 ++ introMessage = introMessage.arg(proxy.hostName().toHtmlEscaped()); ++#else + introMessage = introMessage.arg(Qt::escape(proxy.hostName())); ++#endif + proxyDialog.introLabel->setText(introMessage); + proxyDialog.introLabel->setWordWrap(true); + +@@ -254,11 +262,19 @@ QString NetworkAccessManager::certToFormattedString(QSslCertificate cert) + { + QStringList message; + message << cert.subjectInfo(QSslCertificate::CommonName); ++#if QT_VERSION >= 0x050000 ++ /* TODO */ ++#else + message << tr("Issuer: %1").arg(cert.issuerInfo(QSslCertificate::CommonName)); ++#endif + message << tr("Not valid before: %1").arg(cert.effectiveDate().toString()); + message << tr("Valid until: %1").arg(cert.expiryDate().toString()); + ++#if QT_VERSION >= 0x050000 ++ QMultiMap names = cert.subjectAlternativeNames(); ++#else + QMultiMap names = cert.alternateSubjectNames(); ++#endif + if (names.count() > 0) { + QString list; + list += QLatin1String("
    "); +diff --git a/src/network/networkdiskcache.cpp b/src/network/networkdiskcache.cpp +index cfd0d77..adb5d92 100644 +--- a/src/network/networkdiskcache.cpp ++++ b/src/network/networkdiskcache.cpp +@@ -37,8 +37,13 @@ NetworkDiskCache::NetworkDiskCache(QObject *parent) + : QNetworkDiskCache(parent) + , m_private(false) + { ++#if QT_VERSION >= 0x050000 ++ QString diskCacheDirectory = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) ++ + QLatin1String("/browser"); ++#else + QString diskCacheDirectory = QDesktopServices::storageLocation(QDesktopServices::CacheLocation) + + QLatin1String("/browser"); ++#endif + setCacheDirectory(diskCacheDirectory); + connect(BrowserApplication::instance(), SIGNAL(privacyChanged(bool)), + this, SLOT(privacyChanged(bool))); +diff --git a/src/opensearch/opensearchengine.cpp b/src/opensearch/opensearchengine.cpp +index 0332fc1..10058d1 100644 +--- a/src/opensearch/opensearchengine.cpp ++++ b/src/opensearch/opensearchengine.cpp +@@ -202,6 +202,9 @@ void OpenSearchEngine::setSearchUrlTemplate(const QString &searchUrlTemplate) + */ + QUrl OpenSearchEngine::searchUrl(const QString &searchTerm) const + { ++#if QT_VERSION >= 0x050000 ++ return QUrl(); ++#else + if (m_searchUrlTemplate.isEmpty()) + return QUrl(); + +@@ -215,6 +218,7 @@ QUrl OpenSearchEngine::searchUrl(const QString &searchTerm) const + } + + return retVal; ++#endif + } + + /*! +@@ -254,6 +258,9 @@ void OpenSearchEngine::setSuggestionsUrlTemplate(const QString &suggestionsUrlTe + */ + QUrl OpenSearchEngine::suggestionsUrl(const QString &searchTerm) const + { ++#if QT_VERSION >= 0x050000 ++ return QUrl(); ++#else + if (m_suggestionsUrlTemplate.isEmpty()) + return QUrl(); + +@@ -267,6 +274,7 @@ QUrl OpenSearchEngine::suggestionsUrl(const QString &searchTerm) const + } + + return retVal; ++#endif + } + + /*! +diff --git a/src/opensearch/opensearchenginemodel.cpp b/src/opensearch/opensearchenginemodel.cpp +index a35f1bb..8a2e2d6 100644 +--- a/src/opensearch/opensearchenginemodel.cpp ++++ b/src/opensearch/opensearchenginemodel.cpp +@@ -172,6 +172,11 @@ QVariant OpenSearchEngineModel::headerData(int section, Qt::Orientation orientat + + void OpenSearchEngineModel::enginesChanged() + { ++#if QT_VERSION >= 0x050000 ++ QAbstractTableModel::beginResetModel(); ++ QAbstractTableModel::endResetModel(); ++#else + QAbstractTableModel::reset(); ++#endif + } + +diff --git a/src/opensearch/opensearchmanager.cpp b/src/opensearch/opensearchmanager.cpp +index d9bb0a2..9641ac8 100644 +--- a/src/opensearch/opensearchmanager.cpp ++++ b/src/opensearch/opensearchmanager.cpp +@@ -297,7 +297,11 @@ void OpenSearchManager::restoreDefaults() + + QString OpenSearchManager::enginesDirectory() const + { ++#if QT_VERSION >= 0x050000 ++ QDir directory(QStandardPaths::writableLocation(QStandardPaths::DataLocation)); ++#else + QDir directory(QDesktopServices::storageLocation(QDesktopServices::DataLocation)); ++#endif + return directory.filePath(QLatin1String("searchengines")); + } + +diff --git a/src/settings.cpp b/src/settings.cpp +index 22b9e06..6082fd7 100644 +--- a/src/settings.cpp ++++ b/src/settings.cpp +@@ -123,7 +123,11 @@ void SettingsDialog::loadDefaults() + m_fixedFont = QFont(fixedFontFamily, fixedFontSize); + fixedLabel->setText(QString(QLatin1String("%1 %2")).arg(m_fixedFont.family()).arg(m_fixedFont.pointSize())); + ++#if QT_VERSION >= 0x050000 ++ downloadsLocation->setText(QStandardPaths::writableLocation(QStandardPaths::DesktopLocation)); ++#else + downloadsLocation->setText(QDesktopServices::storageLocation(QDesktopServices::DesktopLocation)); ++#endif + + blockPopupWindows->setChecked(!defaultSettings->testAttribute(QWebSettings::JavascriptCanOpenWindows)); + enableJavascript->setChecked(defaultSettings->testAttribute(QWebSettings::JavascriptEnabled)); +@@ -184,8 +188,8 @@ void SettingsDialog::loadFromSettings() + + // Appearance + settings.beginGroup(QLatin1String("websettings")); +- m_fixedFont = qVariantValue(settings.value(QLatin1String("fixedFont"), m_fixedFont)); +- m_standardFont = qVariantValue(settings.value(QLatin1String("standardFont"), m_standardFont)); ++ m_fixedFont = qvariant_cast(settings.value(QLatin1String("fixedFont"), m_fixedFont)); ++ m_standardFont = qvariant_cast(settings.value(QLatin1String("standardFont"), m_standardFont)); + + standardLabel->setText(QString(QLatin1String("%1 %2")).arg(m_standardFont.family()).arg(m_standardFont.pointSize())); + fixedLabel->setText(QString(QLatin1String("%1 %2")).arg(m_fixedFont.family()).arg(m_fixedFont.pointSize())); +diff --git a/src/tabbar.cpp b/src/tabbar.cpp +index b684be1..4e809cf 100644 +--- a/src/tabbar.cpp ++++ b/src/tabbar.cpp +@@ -72,6 +72,9 @@ + #include + #include + ++#include ++#include ++ + #include + + TabShortcut::TabShortcut(int tab, const QKeySequence &key, QWidget *parent) +diff --git a/src/tabwidget.cpp b/src/tabwidget.cpp +index 7e5b0bf..060f513 100644 +--- a/src/tabwidget.cpp ++++ b/src/tabwidget.cpp +@@ -389,7 +389,7 @@ WebView *TabWidget::makeNewTab(bool makeCurrent) + m_locationBars->setSizePolicy(locationBar->sizePolicy()); + + #ifndef AUTOTESTS +- QWidget::setTabOrder(locationBar, qFindChild(BrowserMainWindow::parentWindow(this))); ++ QWidget::setTabOrder(locationBar, BrowserMainWindow::parentWindow(this)->findChild()); + #endif + + // webview +diff --git a/src/utils/networkaccessmanagerproxy_p.h b/src/utils/networkaccessmanagerproxy_p.h +index 3779019..ad8e27e 100644 +--- a/src/utils/networkaccessmanagerproxy_p.h ++++ b/src/utils/networkaccessmanagerproxy_p.h +@@ -31,6 +31,8 @@ + + #include + ++#include ++ + #include "networkaccessmanagerproxy.h" + + class NetworkCookieJarProxy : public QNetworkCookieJar +diff --git a/src/webview.cpp b/src/webview.cpp +index 43eeeb9..ee45475 100644 +--- a/src/webview.cpp ++++ b/src/webview.cpp +@@ -87,7 +87,7 @@ + #include + + #if QT_VERSION >= 0x040600 || defined(WEBKIT_TRUNK) +-#if !defined(QTWEBKIT_VERSION) || QTWEBKIT_VERSION < 0x020000 ++#if (!defined(QTWEBKIT_VERSION) || QTWEBKIT_VERSION < 0x020000) && QT_VERSION < 0x050000 + Q_DECLARE_METATYPE(QWebElement) + #endif + #include +@@ -96,8 +96,12 @@ Q_DECLARE_METATYPE(QWebElement) + #include + #include + #include ++#if !(QT_VERSION >= 0x050000) + #include + #endif ++#endif ++ ++#include + + #include + +@@ -112,7 +116,7 @@ WebView::WebView(QWidget *parent) + #endif + { + setPage(m_page); +-#if QT_VERSION >= 0x040600 ++#if (QT_VERSION >= 0x040600) && (QT_VERSION < 0x050000) + QPalette p; + if (p.color(QPalette::Window) != Qt::white) { + QWindowsStyle s; +@@ -418,6 +422,9 @@ void WebView::searchRequested(QAction *action) + #if QT_VERSION >= 0x040600 || defined(WEBKIT_TRUNK) + void WebView::addSearchEngine() + { ++#if QT_VERSION >= 0x050000 ++ return; ++#else + QAction *action = qobject_cast(sender()); + if (!action) + return; +@@ -506,6 +513,7 @@ void WebView::addSearchEngine() + engine->setImage(icon().pixmap(16, 16).toImage()); + + ToolbarSearch::openSearchManager()->addEngine(engine); ++#endif + } + #endif + +@@ -580,7 +588,7 @@ void WebView::loadFinished() + void WebView::loadUrl(const QUrl &url, const QString &title) + { + if (url.scheme() == QLatin1String("javascript")) { +- QString scriptSource = QUrl::fromPercentEncoding(url.toString(Q_FLAGS(QUrl::TolerantMode|QUrl::RemoveScheme)).toAscii()); ++ QString scriptSource = QUrl::fromPercentEncoding(url.toString(Q_FLAGS(QUrl::TolerantMode|QUrl::RemoveScheme)).toLatin1()); + QVariant result = page()->mainFrame()->evaluateJavaScript(scriptSource); + return; + } +diff --git a/tools/cacheinfo/main.cpp b/tools/cacheinfo/main.cpp +index 5e88ebc..46bb048 100644 +--- a/tools/cacheinfo/main.cpp ++++ b/tools/cacheinfo/main.cpp +@@ -44,8 +44,13 @@ int main(int argc, char **argv) + } + + NetworkDiskCache diskCache; ++#if QT_VERSION >= 0x050000 ++ QString location = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) ++ + QLatin1String("/browser/"); ++#else + QString location = QDesktopServices::storageLocation(QDesktopServices::CacheLocation) + + QLatin1String("/browser/"); ++#endif + diskCache.setCacheDirectory(location); + + QNetworkCacheMetaData metaData; +diff --git a/tools/htmlToXBel/main.cpp b/tools/htmlToXBel/main.cpp +index 15c2ea5..40b6b00 100644 +--- a/tools/htmlToXBel/main.cpp ++++ b/tools/htmlToXBel/main.cpp +@@ -20,6 +20,11 @@ + #include + #include + ++#if QT_VERSION >= 0x050000 ++#include ++#include ++#endif ++ + /*! + A tool to convert html bookmark files into the xbel format. + diff --git a/ports/src/app/arora/arora_startpage.patch b/ports/src/app/arora/patches/arora_startpage.patch similarity index 69% rename from ports/src/app/arora/arora_startpage.patch rename to ports/src/app/arora/patches/arora_startpage.patch index 6253665f43..aa58d35631 100644 --- a/ports/src/app/arora/arora_startpage.patch +++ b/ports/src/app/arora/patches/arora_startpage.patch @@ -1,7 +1,18 @@ +arora_startpage.patch + +From: Christian Prochaska + + +--- + src/tabwidget.cpp | 2 +- + src/webpage.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + diff --git a/src/tabwidget.cpp b/src/tabwidget.cpp +index 060f513..2c6a82a 100644 --- a/src/tabwidget.cpp +++ b/src/tabwidget.cpp -@@ -829,7 +829,7 @@ +@@ -829,7 +829,7 @@ QUrl TabWidget::guessUrlFromString(const QString &string) if (url.scheme() == QLatin1String("about") && url.path() == QLatin1String("home")) @@ -11,9 +22,10 @@ diff --git a/src/tabwidget.cpp b/src/tabwidget.cpp // QUrl::isValid() is too much tolerant. // We actually want to check if the url conforms to the RFC, which QUrl::isValid() doesn't state. diff --git a/src/webpage.cpp b/src/webpage.cpp +index 42daf7a..e2e7265 100644 --- a/src/webpage.cpp +++ b/src/webpage.cpp -@@ -211,7 +211,7 @@ +@@ -211,7 +211,7 @@ void WebPage::addExternalBinding(QWebFrame *frame) frame = qobject_cast(sender()); if (frame->url().scheme() == QLatin1String("qrc") diff --git a/ports/src/app/arora/patches/series b/ports/src/app/arora/patches/series new file mode 100644 index 0000000000..36cbc69322 --- /dev/null +++ b/ports/src/app/arora/patches/series @@ -0,0 +1,10 @@ +arora_qt5_cpp.patch +arora_genode.patch +arora_nitpicker_plugin.patch +arora_move_window.patch +arora_disable_adblock.patch +arora_bookmarks.patch +arora_disable_program_exit.patch +arora_startpage.patch +arora_disable_log_messages.patch +arora_disable_ssl_messageboxes.patch diff --git a/ports/src/app/arora/target.mk b/ports/src/app/arora/target.mk index 37d3172b1f..893205445d 100644 --- a/ports/src/app/arora/target.mk +++ b/ports/src/app/arora/target.mk @@ -1,15 +1,28 @@ ARORA = arora-0.11.0 -# identify the qt4 repository by searching for a file that is unique for qt4 -QT4_REP_DIR := $(call select_from_repositories,lib/import/import-qt4.inc) - -ifeq ($(QT4_REP_DIR),) +ifeq ($(filter-out $(SPECS),qt4_deprecated),) +# identify the Qt repository by searching for a file that is unique for Qt4 +QT_REP_DIR := $(call select_from_repositories,lib/import/import-qt4.inc) +ifneq ($(QT_REP_DIR),) +QT_TMPL_DIR = $(QT_REP_DIR)/src/app/tmpl +LIBS += qpluginwidget qnitpickerviewwidget +else REQUIRES += qt4 endif +else +# identify the Qt repository by searching for a file that is unique for Qt5 +QT_REP_DIR := $(call select_from_repositories,lib/import/import-qt5.inc) +ifneq ($(QT_REP_DIR),) +QT_TMPL_DIR = $(QT_REP_DIR)/src/app/qt5/tmpl +LIBS += qt5_printsupport qt5_qpluginwidget qt5_qnitpickerviewwidget +else +REQUIRES += qt5 +endif +endif -QT4_REP_DIR := $(realpath $(dir $(QT4_REP_DIR))../..) +QT_REP_DIR := $(realpath $(dir $(QT_REP_DIR))../..) --include $(QT4_REP_DIR)/src/app/tmpl/target_defaults.inc +-include $(QT_TMPL_DIR)/target_defaults.inc HEADERS_FILTER_OUT = \ adblockschemeaccesshandler.h \ @@ -31,7 +44,7 @@ HEADERS_FILTER_OUT = \ QT_MAIN_STACK_SIZE = 768*1024 -LIBS += libm libc_lwip libc_lwip_nic_dhcp libc_log qpluginwidget qnitpickerviewwidget +LIBS += libm libc_lwip libc_lwip_nic_dhcp libc_log RESOURCES += demo_html.qrc @@ -80,4 +93,4 @@ vpath % $(REP_DIR)/contrib/$(ARORA)/src/qwebplugins/nitpicker vpath % $(REP_DIR)/contrib/$(ARORA)/src/useragent vpath % $(REP_DIR)/contrib/$(ARORA)/src/utils --include $(QT4_REP_DIR)/src/app/tmpl/target_final.inc +-include $(QT_TMPL_DIR)/target_final.inc