mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-23 23:42:32 +00:00
Qt5: enable QML support
This patch enables experimental QML support in Qt5. Only the QtQuick plugin is available yet. Currently runs best on Linux and has some problems on NOVA and Fiasco.OC. Fixes #979.
This commit is contained in:
parent
c6ed7f13bf
commit
6a395d9a29
1
.gitignore
vendored
1
.gitignore
vendored
@ -129,6 +129,7 @@
|
||||
/libports/src/lib/ncurses/make_keys
|
||||
/libports/src/lib/ncurses/names.c
|
||||
/libports/src/lib/ncurses/unctrl.c
|
||||
/libports/src/lib/qt5/qtjsbackend
|
||||
/libports/src/lib/qt5/qtwebkit/Source/JavaScriptCore
|
||||
/libports/src/lib/qt5/qtwebkit/Source/WebCore/generated
|
||||
/libports/tool/mesa/glsl
|
||||
|
7
libports/lib/import/import-qt5_qml.mk
Normal file
7
libports/lib/import/import-qt5_qml.mk
Normal file
@ -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/$(QT5)/qtdeclarative/include
|
||||
QT5_INC_DIR += $(QT5_REP_DIR)/contrib/$(QT5)/qtdeclarative/include/QtQml
|
||||
|
7
libports/lib/import/import-qt5_qtquick2plugin.mk
Normal file
7
libports/lib/import/import-qt5_qtquick2plugin.mk
Normal file
@ -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/$(QT5)/qtdeclarative/include
|
||||
#QT5_INC_DIR += $(QT5_REP_DIR)/contrib/$(QT5)/qtdeclarative/include/QtQuick
|
||||
|
7
libports/lib/import/import-qt5_quick.mk
Normal file
7
libports/lib/import/import-qt5_quick.mk
Normal file
@ -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/$(QT5)/qtdeclarative/include
|
||||
QT5_INC_DIR += $(QT5_REP_DIR)/contrib/$(QT5)/qtdeclarative/include/QtQuick
|
||||
|
5
libports/lib/import/import-qt5_v8.mk
Normal file
5
libports/lib/import/import-qt5_v8.mk
Normal file
@ -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)/qtjsbackend/include/QtV8
|
12
libports/lib/mk/qt5_qml.mk
Normal file
12
libports/lib/mk/qt5_qml.mk
Normal file
@ -0,0 +1,12 @@
|
||||
include $(REP_DIR)/lib/import/import-qt5_qml.mk
|
||||
|
||||
SHARED_LIB = yes
|
||||
|
||||
include $(REP_DIR)/lib/mk/qt5_qml_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_v8 qt5_core libc
|
239
libports/lib/mk/qt5_qml_generated.inc
Normal file
239
libports/lib/mk/qt5_qml_generated.inc
Normal file
@ -0,0 +1,239 @@
|
||||
QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_NO_URL_CAST_FROM_STRING -DQT_NO_INTEGER_EVENT_COORDINATES -DQT_BUILD_QML_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_NETWORK_LIB -DQT_CORE_LIB -DQT_V8_LIB -DV8_SHARED -DUSING_V8_SHARED
|
||||
|
||||
QT_INCPATH += \
|
||||
qtbase/include \
|
||||
qtbase/include/QtCore \
|
||||
qtbase/include/QtCore/5.1.0 \
|
||||
qtbase/include/QtCore/5.1.0/QtCore \
|
||||
qtbase/include/QtNetwork \
|
||||
qtbase/mkspecs/genode-g++ \
|
||||
qtdeclarative/include \
|
||||
qtdeclarative/include/QtQml \
|
||||
qtdeclarative/include/QtQml/5.1.0 \
|
||||
qtdeclarative/include/QtQml/5.1.0/QtQml \
|
||||
qtdeclarative/src/qml \
|
||||
qtdeclarative/src/qml/animations \
|
||||
qtjsbackend/include \
|
||||
qtjsbackend/include/QtV8 \
|
||||
qtjsbackend/include/QtV8/5.1.0 \
|
||||
qtjsbackend/include/QtV8/5.1.0/QtV8 \
|
||||
|
||||
QT_SOURCES += \
|
||||
qqmlchangeset.cpp \
|
||||
qqmllistaccessor.cpp \
|
||||
qqmllistcompositor.cpp \
|
||||
qqmladaptormodel.cpp \
|
||||
qqmlpropertymap.cpp \
|
||||
qqmlinstruction.cpp \
|
||||
qqmlopenmetaobject.cpp \
|
||||
qqmlvmemetaobject.cpp \
|
||||
qqmlengine.cpp \
|
||||
qqmlexpression.cpp \
|
||||
qqmlproperty.cpp \
|
||||
qqmlcomponent.cpp \
|
||||
qqmlincubator.cpp \
|
||||
qqmlcontext.cpp \
|
||||
qqmlcustomparser.cpp \
|
||||
qqmlpropertyvaluesource.cpp \
|
||||
qqmlpropertyvalueinterceptor.cpp \
|
||||
qqmlproxymetaobject.cpp \
|
||||
qqmlvme.cpp \
|
||||
qqmlcompiler.cpp \
|
||||
qqmlcompileddata.cpp \
|
||||
qqmlboundsignal.cpp \
|
||||
qqmlmetatype.cpp \
|
||||
qqmlstringconverters.cpp \
|
||||
qqmlparserstatus.cpp \
|
||||
qqmltypeloader.cpp \
|
||||
qqmlinfo.cpp \
|
||||
qqmlerror.cpp \
|
||||
qqmlscript.cpp \
|
||||
qqmlrewrite.cpp \
|
||||
qqmlvaluetype.cpp \
|
||||
qqmlaccessors.cpp \
|
||||
qqmlxmlhttprequest.cpp \
|
||||
qqmlwatcher.cpp \
|
||||
qqmlcleanup.cpp \
|
||||
qqmlpropertycache.cpp \
|
||||
qqmlnotifier.cpp \
|
||||
qqmlintegercache.cpp \
|
||||
qqmltypenotavailable.cpp \
|
||||
qqmltypenamecache.cpp \
|
||||
qqmlscriptstring.cpp \
|
||||
qqmlnetworkaccessmanagerfactory.cpp \
|
||||
qqmldirparser.cpp \
|
||||
qqmlextensionplugin.cpp \
|
||||
qqmlimport.cpp \
|
||||
qqmllist.cpp \
|
||||
qqmllocale.cpp \
|
||||
qqmlabstractexpression.cpp \
|
||||
qqmljavascriptexpression.cpp \
|
||||
qqmlabstractbinding.cpp \
|
||||
qqmlvaluetypeproxybinding.cpp \
|
||||
qqmlglobal.cpp \
|
||||
qqmlfile.cpp \
|
||||
qqmlbundle.cpp \
|
||||
qqmlmemoryprofiler.cpp \
|
||||
qqmlplatform.cpp \
|
||||
qqmlbinding.cpp \
|
||||
qqmlabstracturlinterceptor.cpp \
|
||||
qqmlapplicationengine.cpp \
|
||||
qqmljsast.cpp \
|
||||
qqmljsastvisitor.cpp \
|
||||
qqmljsengine_p.cpp \
|
||||
qqmljsgrammar.cpp \
|
||||
qqmljslexer.cpp \
|
||||
qqmljsparser.cpp \
|
||||
textwriter.cpp \
|
||||
qintrusivelist.cpp \
|
||||
qhashedstring.cpp \
|
||||
qqmlpool.cpp \
|
||||
qqmlthread.cpp \
|
||||
qqmltrace.cpp \
|
||||
qv4compiler.cpp \
|
||||
qv4ir.cpp \
|
||||
qv4irbuilder.cpp \
|
||||
qv4instruction.cpp \
|
||||
qv4bindings.cpp \
|
||||
qjsengine.cpp \
|
||||
qjsvalue.cpp \
|
||||
qjsvalueiterator.cpp \
|
||||
qv8stringwrapper.cpp \
|
||||
qv8engine.cpp \
|
||||
qv8sequencewrapper.cpp \
|
||||
qv8contextwrapper.cpp \
|
||||
qv8qobjectwrapper.cpp \
|
||||
qv8typewrapper.cpp \
|
||||
qv8listwrapper.cpp \
|
||||
qv8variantwrapper.cpp \
|
||||
qv8valuetypewrapper.cpp \
|
||||
qv8jsonwrapper.cpp \
|
||||
qv8include.cpp \
|
||||
qv8worker.cpp \
|
||||
qv8bindings.cpp \
|
||||
qv8domerrors.cpp \
|
||||
qv8sqlerrors.cpp \
|
||||
qqmlbuiltinfunctions.cpp \
|
||||
qqmldebugservice.cpp \
|
||||
qqmlprofilerservice.cpp \
|
||||
qqmldebugserver.cpp \
|
||||
qqmlinspectorservice.cpp \
|
||||
qv8debugservice.cpp \
|
||||
qv8profilerservice.cpp \
|
||||
qqmlenginedebugservice.cpp \
|
||||
qdebugmessageservice.cpp \
|
||||
qabstractanimationjob.cpp \
|
||||
qanimationgroupjob.cpp \
|
||||
qsequentialanimationgroupjob.cpp \
|
||||
qparallelanimationgroupjob.cpp \
|
||||
qpauseanimationjob.cpp \
|
||||
qqmlbind.cpp \
|
||||
qqmlconnections.cpp \
|
||||
qqmldelegatemodel.cpp \
|
||||
qqmllistmodel.cpp \
|
||||
qqmllistmodelworkeragent.cpp \
|
||||
qqmlmodelsmodule.cpp \
|
||||
qqmlobjectmodel.cpp \
|
||||
qqmltimer.cpp \
|
||||
qquickpackage.cpp \
|
||||
qquickworkerscript.cpp \
|
||||
qqmlinstantiator.cpp \
|
||||
moc_qqmlpropertymap.cpp \
|
||||
moc_qqmlglobal_p.cpp \
|
||||
moc_qqmlcomponent.cpp \
|
||||
moc_qqmlengine.cpp \
|
||||
moc_qqmlcontext.cpp \
|
||||
moc_qqmlvaluetype_p.cpp \
|
||||
moc_qqmlwatcher_p.cpp \
|
||||
moc_qqmltypenotavailable_p.cpp \
|
||||
moc_qqmlextensionplugin.cpp \
|
||||
moc_qqmllocale_p.cpp \
|
||||
moc_qqmlcomponentattached_p.cpp \
|
||||
moc_qqmlplatform_p.cpp \
|
||||
moc_qv8include_p.cpp \
|
||||
moc_qqmldebugservice_p.cpp \
|
||||
moc_qqmlinspectorservice_p.cpp \
|
||||
moc_qv8debugservice_p.cpp \
|
||||
moc_qv8profilerservice_p.cpp \
|
||||
moc_qqmlenginedebugservice_p.cpp \
|
||||
moc_qdebugmessageservice_p.cpp \
|
||||
moc_qabstractanimationjob_p.cpp \
|
||||
moc_qqmlbind_p.cpp \
|
||||
moc_qqmlconnections_p.cpp \
|
||||
moc_qqmldelegatemodel_p.cpp \
|
||||
moc_qqmldelegatemodel_p_p.cpp \
|
||||
moc_qqmllistmodel_p.cpp \
|
||||
moc_qqmllistmodel_p_p.cpp \
|
||||
moc_qqmllistmodelworkeragent_p.cpp \
|
||||
moc_qqmlobjectmodel_p.cpp \
|
||||
moc_qqmltimer_p.cpp \
|
||||
moc_qquickpackage_p.cpp \
|
||||
moc_qquickworkerscript_p.cpp
|
||||
|
||||
QT_VPATH += \
|
||||
qtdeclarative/src/qml/animations \
|
||||
qtdeclarative/src/qml/debugger \
|
||||
qtdeclarative/src/qml/qml \
|
||||
qtdeclarative/src/qml/qml/ftw \
|
||||
qtdeclarative/src/qml/qml/parser \
|
||||
qtdeclarative/src/qml/qml/rewriter \
|
||||
qtdeclarative/src/qml/qml/v4 \
|
||||
qtdeclarative/src/qml/qml/v8 \
|
||||
qtdeclarative/src/qml/types \
|
||||
qtdeclarative/src/qml/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_qqmlpropertymap.cpp \
|
||||
moc_qqmlglobal_p.cpp \
|
||||
moc_qqmlcomponent.cpp \
|
||||
moc_qqmlengine.cpp \
|
||||
moc_qqmlcontext.cpp \
|
||||
moc_qqmlexpression.cpp \
|
||||
moc_qqmlvaluetype_p.cpp \
|
||||
moc_qqmlwatcher_p.cpp \
|
||||
moc_qqmltypenotavailable_p.cpp \
|
||||
moc_qqmlextensionplugin.cpp \
|
||||
moc_qqmllocale_p.cpp \
|
||||
moc_qqmlcomponentattached_p.cpp \
|
||||
moc_qqmlplatform_p.cpp \
|
||||
moc_qqmlapplicationengine.cpp \
|
||||
moc_qjsengine.cpp \
|
||||
moc_qv8include_p.cpp \
|
||||
moc_qqmldebugservice_p.cpp \
|
||||
moc_qqmldebugserver_p.cpp \
|
||||
moc_qqmlinspectorservice_p.cpp \
|
||||
moc_qv8debugservice_p.cpp \
|
||||
moc_qv8profilerservice_p.cpp \
|
||||
moc_qqmlenginedebugservice_p.cpp \
|
||||
moc_qdebugmessageservice_p.cpp \
|
||||
moc_qabstractanimationjob_p.cpp \
|
||||
moc_qqmlbind_p.cpp \
|
||||
moc_qqmlconnections_p.cpp \
|
||||
moc_qqmldelegatemodel_p.cpp \
|
||||
moc_qqmldelegatemodel_p_p.cpp \
|
||||
moc_qqmllistmodel_p.cpp \
|
||||
moc_qqmllistmodel_p_p.cpp \
|
||||
moc_qqmllistmodelworkeragent_p.cpp \
|
||||
moc_qqmlobjectmodel_p.cpp \
|
||||
moc_qqmltimer_p.cpp \
|
||||
moc_qquickpackage_p.cpp \
|
||||
moc_qquickworkerscript_p.cpp \
|
||||
moc_qqmlinstantiator_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 = \
|
||||
qqmladaptormodel.moc \
|
||||
qqmltypeloader.moc \
|
||||
qqmlxmlhttprequest.moc \
|
||||
qqmlwatcher.moc \
|
||||
qqmlfile.moc \
|
||||
qquickworkerscript.moc
|
||||
|
39
libports/lib/mk/qt5_qtquick2plugin.mk
Normal file
39
libports/lib/mk/qt5_qtquick2plugin.mk
Normal file
@ -0,0 +1,39 @@
|
||||
include $(REP_DIR)/lib/import/import-qt5_qtquick2plugin.mk
|
||||
|
||||
SHARED_LIB = yes
|
||||
|
||||
include $(REP_DIR)/lib/mk/qt5_qtquick2plugin_generated.inc
|
||||
|
||||
QT_DEFINES += -UQT_STATICPLUGIN
|
||||
|
||||
include $(REP_DIR)/lib/mk/qt5.inc
|
||||
|
||||
LIBS += qt5_qml
|
||||
|
||||
# install the QtQuick QML plugin
|
||||
|
||||
QTQUICK_INSTALL_DIR := $(BUILD_BASE_DIR)/bin/qt5_fs/qt5/qml/QtQuick.2
|
||||
QTQUICK_QMLDIR := $(QTQUICK_INSTALL_DIR)/qmldir
|
||||
QTQUICK_PLUGIN_NAME := qt5_qtquick2plugin.lib.so
|
||||
QTQUICK_PLUGIN := $(QTQUICK_INSTALL_DIR)/$(QTQUICK_PLUGIN_NAME)
|
||||
|
||||
$(QTQUICK_INSTALL_DIR):
|
||||
$(VERBOSE)mkdir -p $@
|
||||
|
||||
$(QTQUICK_QMLDIR): $(QTQUICK_INSTALL_DIR)
|
||||
$(VERBOSE)cp $(REP_DIR)/contrib/$(QT5)/qtdeclarative/src/imports/qtquick2/qmldir $(QTQUICK_INSTALL_DIR)
|
||||
|
||||
$(QTQUICK_PLUGIN): $(QTQUICK_INSTALL_DIR)
|
||||
$(VERBOSE)ln -sf $(BUILD_BASE_DIR)/bin/$(QTQUICK_PLUGIN_NAME) $(QTQUICK_INSTALL_DIR)/$(QTQUICK_PLUGIN_NAME)
|
||||
|
||||
all: $(QTQUICK_QMLDIR) $(QTQUICK_PLUGIN)
|
||||
|
||||
#
|
||||
# unfortunately, these clean rules don't trigger
|
||||
#
|
||||
|
||||
clean-qtquick_install_dir:
|
||||
rm -rf $(QTQUICK_INSTALL_DIR)
|
||||
|
||||
clean: clean-qtquick_install_dir
|
||||
|
38
libports/lib/mk/qt5_qtquick2plugin_generated.inc
Normal file
38
libports/lib/mk/qt5_qtquick2plugin_generated.inc
Normal file
@ -0,0 +1,38 @@
|
||||
QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_QUICK_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB
|
||||
|
||||
QT_INCPATH += \
|
||||
qtbase/include \
|
||||
qtbase/include/QtCore \
|
||||
qtbase/include/QtGui \
|
||||
qtbase/include/QtNetwork \
|
||||
qtbase/mkspecs/genode-g++ \
|
||||
qtdeclarative/include \
|
||||
qtdeclarative/include/QtQml \
|
||||
qtdeclarative/include/QtQml/5.1.0 \
|
||||
qtdeclarative/include/QtQml/5.1.0/QtQml \
|
||||
qtdeclarative/include/QtQuick \
|
||||
qtdeclarative/include/QtQuick/5.1.0 \
|
||||
qtdeclarative/include/QtQuick/5.1.0/QtQuick \
|
||||
qtdeclarative/src/imports/qtquick2 \
|
||||
|
||||
QT_SOURCES += \
|
||||
plugin.cpp
|
||||
|
||||
QT_VPATH += \
|
||||
qtdeclarative/src/imports/qtquick2 \
|
||||
|
||||
# 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 = \
|
||||
plugin.moc
|
||||
|
11
libports/lib/mk/qt5_quick.mk
Normal file
11
libports/lib/mk/qt5_quick.mk
Normal file
@ -0,0 +1,11 @@
|
||||
include $(REP_DIR)/lib/import/import-qt5_quick.mk
|
||||
|
||||
SHARED_LIB = yes
|
||||
|
||||
include $(REP_DIR)/lib/mk/qt5_quick_generated.inc
|
||||
|
||||
QT_INCPATH += qtdeclarative/src/quick/items
|
||||
|
||||
include $(REP_DIR)/lib/mk/qt5.inc
|
||||
|
||||
LIBS += qt5_qml
|
344
libports/lib/mk/qt5_quick_generated.inc
Normal file
344
libports/lib/mk/qt5_quick_generated.inc
Normal file
@ -0,0 +1,344 @@
|
||||
QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_NO_URL_CAST_FROM_STRING -DQT_NO_INTEGER_EVENT_COORDINATES -DQT_BUILD_QUICK_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_QML_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_V8_LIB -DV8_SHARED -DUSING_V8_SHARED
|
||||
|
||||
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/mkspecs/genode-g++ \
|
||||
qtdeclarative/include \
|
||||
qtdeclarative/include/QtQml \
|
||||
qtdeclarative/include/QtQml/5.1.0 \
|
||||
qtdeclarative/include/QtQml/5.1.0/QtQml \
|
||||
qtdeclarative/include/QtQuick \
|
||||
qtdeclarative/include/QtQuick/5.1.0 \
|
||||
qtdeclarative/include/QtQuick/5.1.0/QtQuick \
|
||||
qtdeclarative/src/quick \
|
||||
qtjsbackend/include \
|
||||
qtjsbackend/include/QtV8 \
|
||||
qtjsbackend/include/QtV8/5.1.0 \
|
||||
qtjsbackend/include/QtV8/5.1.0/QtV8 \
|
||||
|
||||
QT_SOURCES += \
|
||||
qquickapplication.cpp \
|
||||
qquickutilmodule.cpp \
|
||||
qquickanimation.cpp \
|
||||
qquicksystempalette.cpp \
|
||||
qquickspringanimation.cpp \
|
||||
qquicksmoothedanimation.cpp \
|
||||
qquickanimationcontroller.cpp \
|
||||
qquickstate.cpp \
|
||||
qquicktransitionmanager.cpp \
|
||||
qquickstatechangescript.cpp \
|
||||
qquickpropertychanges.cpp \
|
||||
qquickstategroup.cpp \
|
||||
qquicktransition.cpp \
|
||||
qquicktimeline.cpp \
|
||||
qquickpixmapcache.cpp \
|
||||
qquickbehavior.cpp \
|
||||
qquickfontloader.cpp \
|
||||
qquickstyledtext.cpp \
|
||||
qquickpath.cpp \
|
||||
qquickpathinterpolator.cpp \
|
||||
qquickimageprovider.cpp \
|
||||
qquicksvgparser.cpp \
|
||||
qquickvaluetypes.cpp \
|
||||
qquickglobal.cpp \
|
||||
qsgdefaultrenderer.cpp \
|
||||
qsggeometry.cpp \
|
||||
qsgmaterial.cpp \
|
||||
qsgnode.cpp \
|
||||
qsgnodeupdater.cpp \
|
||||
qsgrenderer.cpp \
|
||||
qsgrendernode.cpp \
|
||||
qsgsimplematerial.cpp \
|
||||
qsgareaallocator.cpp \
|
||||
qsgdepthstencilbuffer.cpp \
|
||||
qsgflatcolormaterial.cpp \
|
||||
qsgsimplerectnode.cpp \
|
||||
qsgsimpletexturenode.cpp \
|
||||
qsgtexturematerial.cpp \
|
||||
qsgvertexcolormaterial.cpp \
|
||||
qsgtexture.cpp \
|
||||
qsgtextureprovider.cpp \
|
||||
qsgpainternode.cpp \
|
||||
qsgdistancefieldutil.cpp \
|
||||
qsgadaptationlayer.cpp \
|
||||
qsgcontext.cpp \
|
||||
qsgcontextplugin.cpp \
|
||||
qsgdefaultglyphnode.cpp \
|
||||
qsgdefaultglyphnode_p.cpp \
|
||||
qsgdefaultdistancefieldglyphcache.cpp \
|
||||
qsgdistancefieldglyphnode.cpp \
|
||||
qsgdistancefieldglyphnode_p.cpp \
|
||||
qsgdefaultimagenode.cpp \
|
||||
qsgdefaultrectanglenode.cpp \
|
||||
qsgflashnode.cpp \
|
||||
qsgshareddistancefieldglyphcache.cpp \
|
||||
qsgrenderloop.cpp \
|
||||
qsgthreadedrenderloop.cpp \
|
||||
qsgwindowsrenderloop.cpp \
|
||||
qquickevents.cpp \
|
||||
qquickanchors.cpp \
|
||||
qquickitem.cpp \
|
||||
qquickrectangle.cpp \
|
||||
qquickwindow.cpp \
|
||||
qquickfocusscope.cpp \
|
||||
qquickitemsmodule.cpp \
|
||||
qquickpainteditem.cpp \
|
||||
qquicktext.cpp \
|
||||
qquicktextnode.cpp \
|
||||
qquicktextnodeengine.cpp \
|
||||
qquicktextinput.cpp \
|
||||
qquicktextcontrol.cpp \
|
||||
qquicktextdocument.cpp \
|
||||
qquicktextedit.cpp \
|
||||
qquicktextutil.cpp \
|
||||
qquickimagebase.cpp \
|
||||
qquickimage.cpp \
|
||||
qquickborderimage.cpp \
|
||||
qquickscalegrid.cpp \
|
||||
qquickmousearea.cpp \
|
||||
qquickpincharea.cpp \
|
||||
qquickflickable.cpp \
|
||||
qquicklistview.cpp \
|
||||
qquickrepeater.cpp \
|
||||
qquickgridview.cpp \
|
||||
qquickpathview.cpp \
|
||||
qquickpositioners.cpp \
|
||||
qquickloader.cpp \
|
||||
qquickanimatedimage.cpp \
|
||||
qquickflipable.cpp \
|
||||
qquicktranslate.cpp \
|
||||
qquickclipnode.cpp \
|
||||
qquickview.cpp \
|
||||
qquickitemanimation.cpp \
|
||||
qquickstateoperations.cpp \
|
||||
qquickimplicitsizeitem.cpp \
|
||||
qquickspriteengine.cpp \
|
||||
qquicksprite.cpp \
|
||||
qquickspritesequence.cpp \
|
||||
qquickanimatedsprite.cpp \
|
||||
qquickaccessibleattached.cpp \
|
||||
qquickdrag.cpp \
|
||||
qquickdroparea.cpp \
|
||||
qquickmultipointtoucharea.cpp \
|
||||
qquickitemview.cpp \
|
||||
qquickitemviewtransition.cpp \
|
||||
qquickwindowmodule.cpp \
|
||||
qquickscreen.cpp \
|
||||
qquickshadereffect.cpp \
|
||||
qquickshadereffectmesh.cpp \
|
||||
qquickshadereffectnode.cpp \
|
||||
qquickshadereffectsource.cpp \
|
||||
qquickcanvasitem.cpp \
|
||||
qquickcanvascontext.cpp \
|
||||
qquickcontext2d.cpp \
|
||||
qquickcontext2dtile.cpp \
|
||||
qquickcontext2dtexture.cpp \
|
||||
qquickcontext2dcommandbuffer.cpp \
|
||||
designersupport.cpp \
|
||||
designerwindowmanager.cpp \
|
||||
qtquick2.cpp \
|
||||
moc_qquickapplication_p.cpp \
|
||||
moc_qquickanimation_p.cpp \
|
||||
moc_qquicksystempalette_p.cpp \
|
||||
moc_qquickspringanimation_p.cpp \
|
||||
moc_qquickanimationcontroller_p.cpp \
|
||||
moc_qquicksmoothedanimation_p.cpp \
|
||||
moc_qquicksmoothedanimation_p_p.cpp \
|
||||
moc_qquickstate_p.cpp \
|
||||
moc_qquickpropertychanges_p.cpp \
|
||||
moc_qquickstategroup_p.cpp \
|
||||
moc_qquicktransition_p.cpp \
|
||||
moc_qquicktimeline_p_p.cpp \
|
||||
moc_qquickpixmapcache_p.cpp \
|
||||
moc_qquickbehavior_p.cpp \
|
||||
moc_qquickfontloader_p.cpp \
|
||||
moc_qquickpath_p.cpp \
|
||||
moc_qquickpathinterpolator_p.cpp \
|
||||
moc_qquickvaluetypes_p.cpp \
|
||||
moc_qsgdefaultrenderer_p.cpp \
|
||||
moc_qsgrenderer_p.cpp \
|
||||
moc_qsgtexture.cpp \
|
||||
moc_qsgtexture_p.cpp \
|
||||
moc_qsgtextureprovider.cpp \
|
||||
moc_qsgcontext_p.cpp \
|
||||
moc_qsgcontextplugin_p.cpp \
|
||||
moc_qsgshareddistancefieldglyphcache_p.cpp \
|
||||
moc_qsgrenderloop_p.cpp \
|
||||
moc_qsgthreadedrenderloop_p.cpp \
|
||||
moc_qsgwindowsrenderloop_p.cpp \
|
||||
moc_qquickevents_p_p.cpp \
|
||||
moc_qquickaccessibleattached_p.cpp \
|
||||
moc_qquickitem_p.cpp \
|
||||
moc_qquickrectangle_p.cpp \
|
||||
moc_qquickwindow_p.cpp \
|
||||
moc_qquickfocusscope_p.cpp \
|
||||
moc_qquickpainteditem.cpp \
|
||||
moc_qquicktext_p.cpp \
|
||||
moc_qquicktext_p_p.cpp \
|
||||
moc_qquicktextinput_p.cpp \
|
||||
moc_qquicktextdocument.cpp \
|
||||
moc_qquicktextedit_p.cpp \
|
||||
moc_qquicktextutil_p.cpp \
|
||||
moc_qquickimagebase_p.cpp \
|
||||
moc_qquickimage_p.cpp \
|
||||
moc_qquickborderimage_p.cpp \
|
||||
moc_qquickscalegrid_p_p.cpp \
|
||||
moc_qquickmousearea_p.cpp \
|
||||
moc_qquickpincharea_p.cpp \
|
||||
moc_qquickflickable_p.cpp \
|
||||
moc_qquickflickable_p_p.cpp \
|
||||
moc_qquicklistview_p.cpp \
|
||||
moc_qquickrepeater_p.cpp \
|
||||
moc_qquickgridview_p.cpp \
|
||||
moc_qquickpathview_p.cpp \
|
||||
moc_qquickpositioners_p.cpp \
|
||||
moc_qquickanimatedimage_p.cpp \
|
||||
moc_qquickflipable_p.cpp \
|
||||
moc_qquicktranslate_p.cpp \
|
||||
moc_qquickview.cpp \
|
||||
moc_qquickitemanimation_p.cpp \
|
||||
moc_qquickimplicitsizeitem_p.cpp \
|
||||
moc_qquickspriteengine_p.cpp \
|
||||
moc_qquicksprite_p.cpp \
|
||||
moc_qquickspritesequence_p.cpp \
|
||||
moc_qquickanimatedsprite_p.cpp \
|
||||
moc_qquickdrag_p.cpp \
|
||||
moc_qquickdroparea_p.cpp \
|
||||
moc_qquickmultipointtoucharea_p.cpp \
|
||||
moc_qquickitemview_p.cpp \
|
||||
moc_qquickitemviewtransition_p.cpp \
|
||||
moc_qquickscreen_p.cpp \
|
||||
moc_qquickshadereffect_p.cpp \
|
||||
moc_qquickshadereffectmesh_p.cpp \
|
||||
moc_qquickshadereffectnode_p.cpp \
|
||||
moc_qquickshadereffectsource_p.cpp \
|
||||
moc_qquickcanvasitem_p.cpp \
|
||||
moc_qquickcanvascontext_p.cpp \
|
||||
moc_qquickcontext2dtexture_p.cpp \
|
||||
moc_designerwindowmanager_p.cpp
|
||||
|
||||
QT_VPATH += \
|
||||
qtdeclarative/src/quick \
|
||||
qtdeclarative/src/quick/designer \
|
||||
qtdeclarative/src/quick/items \
|
||||
qtdeclarative/src/quick/items/context2d \
|
||||
qtdeclarative/src/quick/scenegraph \
|
||||
qtdeclarative/src/quick/scenegraph/coreapi \
|
||||
qtdeclarative/src/quick/scenegraph/util \
|
||||
qtdeclarative/src/quick/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_qquickapplication_p.cpp \
|
||||
moc_qquickanimation_p.cpp \
|
||||
moc_qquicksystempalette_p.cpp \
|
||||
moc_qquickspringanimation_p.cpp \
|
||||
moc_qquickanimationcontroller_p.cpp \
|
||||
moc_qquicksmoothedanimation_p.cpp \
|
||||
moc_qquicksmoothedanimation_p_p.cpp \
|
||||
moc_qquickstate_p.cpp \
|
||||
moc_qquickstatechangescript_p.cpp \
|
||||
moc_qquickpropertychanges_p.cpp \
|
||||
moc_qquickstategroup_p.cpp \
|
||||
moc_qquicktransition_p.cpp \
|
||||
moc_qquicktimeline_p_p.cpp \
|
||||
moc_qquickpixmapcache_p.cpp \
|
||||
moc_qquickbehavior_p.cpp \
|
||||
moc_qquickfontloader_p.cpp \
|
||||
moc_qquickpath_p.cpp \
|
||||
moc_qquickpathinterpolator_p.cpp \
|
||||
moc_qquickvaluetypes_p.cpp \
|
||||
moc_qsgdefaultrenderer_p.cpp \
|
||||
moc_qsgrenderer_p.cpp \
|
||||
moc_qsgtexture.cpp \
|
||||
moc_qsgtexture_p.cpp \
|
||||
moc_qsgtextureprovider.cpp \
|
||||
moc_qsgcontext_p.cpp \
|
||||
moc_qsgcontextplugin_p.cpp \
|
||||
moc_qsgshareddistancefieldglyphcache_p.cpp \
|
||||
moc_qsgrenderloop_p.cpp \
|
||||
moc_qsgthreadedrenderloop_p.cpp \
|
||||
moc_qsgwindowsrenderloop_p.cpp \
|
||||
moc_qquickevents_p_p.cpp \
|
||||
moc_qquickanchors_p.cpp \
|
||||
moc_qquickaccessibleattached_p.cpp \
|
||||
moc_qquickitem.cpp \
|
||||
moc_qquickitem_p.cpp \
|
||||
moc_qquickrectangle_p.cpp \
|
||||
moc_qquickwindow.cpp \
|
||||
moc_qquickwindow_p.cpp \
|
||||
moc_qquickfocusscope_p.cpp \
|
||||
moc_qquickpainteditem.cpp \
|
||||
moc_qquicktext_p.cpp \
|
||||
moc_qquicktext_p_p.cpp \
|
||||
moc_qquicktextinput_p.cpp \
|
||||
moc_qquicktextcontrol_p.cpp \
|
||||
moc_qquicktextdocument.cpp \
|
||||
moc_qquicktextedit_p.cpp \
|
||||
moc_qquicktextutil_p.cpp \
|
||||
moc_qquickimagebase_p.cpp \
|
||||
moc_qquickimage_p.cpp \
|
||||
moc_qquickborderimage_p.cpp \
|
||||
moc_qquickscalegrid_p_p.cpp \
|
||||
moc_qquickmousearea_p.cpp \
|
||||
moc_qquickpincharea_p.cpp \
|
||||
moc_qquickflickable_p.cpp \
|
||||
moc_qquickflickable_p_p.cpp \
|
||||
moc_qquicklistview_p.cpp \
|
||||
moc_qquickrepeater_p.cpp \
|
||||
moc_qquickgridview_p.cpp \
|
||||
moc_qquickpathview_p.cpp \
|
||||
moc_qquickpositioners_p.cpp \
|
||||
moc_qquickloader_p.cpp \
|
||||
moc_qquickanimatedimage_p.cpp \
|
||||
moc_qquickflipable_p.cpp \
|
||||
moc_qquicktranslate_p.cpp \
|
||||
moc_qquickview.cpp \
|
||||
moc_qquickitemanimation_p.cpp \
|
||||
moc_qquickstateoperations_p.cpp \
|
||||
moc_qquickimplicitsizeitem_p.cpp \
|
||||
moc_qquickspriteengine_p.cpp \
|
||||
moc_qquicksprite_p.cpp \
|
||||
moc_qquickspritesequence_p.cpp \
|
||||
moc_qquickanimatedsprite_p.cpp \
|
||||
moc_qquickdrag_p.cpp \
|
||||
moc_qquickdroparea_p.cpp \
|
||||
moc_qquickmultipointtoucharea_p.cpp \
|
||||
moc_qquickitemview_p.cpp \
|
||||
moc_qquickitemviewtransition_p.cpp \
|
||||
moc_qquickscreen_p.cpp \
|
||||
moc_qquickshadereffect_p.cpp \
|
||||
moc_qquickshadereffectmesh_p.cpp \
|
||||
moc_qquickshadereffectnode_p.cpp \
|
||||
moc_qquickshadereffectsource_p.cpp \
|
||||
moc_qquickcanvasitem_p.cpp \
|
||||
moc_qquickcanvascontext_p.cpp \
|
||||
moc_qquickcontext2dtexture_p.cpp \
|
||||
moc_designerwindowmanager_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 = \
|
||||
qquickpixmapcache.moc \
|
||||
qquickfontloader.moc \
|
||||
qsgrenderloop.moc \
|
||||
qsgthreadedrenderloop.moc \
|
||||
qquickwindow.moc \
|
||||
qquickimage.moc \
|
||||
qquickflipable.moc \
|
||||
qquickwindowmodule.moc \
|
||||
qquickshadereffectsource.moc
|
||||
|
83
libports/lib/mk/qt5_v8.mk
Normal file
83
libports/lib/mk/qt5_v8.mk
Normal file
@ -0,0 +1,83 @@
|
||||
include $(REP_DIR)/lib/import/import-qt5_v8.mk
|
||||
|
||||
SHARED_LIB = yes
|
||||
|
||||
include $(REP_DIR)/lib/mk/qt5_v8_generated.inc
|
||||
|
||||
#
|
||||
# Qt was configured for x86_64.
|
||||
# If the Genode target architecture differs, the x86_64-files need to get removed first.
|
||||
#
|
||||
ifneq ($(filter-out $(SPECS),x86_64),)
|
||||
QT_DEFINES += -UV8_TARGET_ARCH_X64
|
||||
QT_SOURCES_FILTER_OUT = \
|
||||
assembler-x64.cc \
|
||||
builtins-x64.cc \
|
||||
code-stubs-x64.cc \
|
||||
codegen-x64.cc \
|
||||
cpu-x64.cc \
|
||||
debug-x64.cc \
|
||||
deoptimizer-x64.cc \
|
||||
disasm-x64.cc \
|
||||
frames-x64.cc \
|
||||
full-codegen-x64.cc \
|
||||
ic-x64.cc \
|
||||
lithium-codegen-x64.cc \
|
||||
lithium-gap-resolver-x64.cc \
|
||||
lithium-x64.cc \
|
||||
macro-assembler-x64.cc \
|
||||
regexp-macro-assembler-x64.cc \
|
||||
stub-cache-x64.cc
|
||||
ifeq ($(filter-out $(SPECS),x86_32),)
|
||||
QT_DEFINES += -DV8_TARGET_ARCH_IA32
|
||||
QT_SOURCES += \
|
||||
assembler-ia32.cc \
|
||||
builtins-ia32.cc \
|
||||
code-stubs-ia32.cc \
|
||||
codegen-ia32.cc \
|
||||
cpu-ia32.cc \
|
||||
debug-ia32.cc \
|
||||
deoptimizer-ia32.cc \
|
||||
disasm-ia32.cc \
|
||||
frames-ia32.cc \
|
||||
full-codegen-ia32.cc \
|
||||
ic-ia32.cc \
|
||||
lithium-codegen-ia32.cc \
|
||||
lithium-gap-resolver-ia32.cc \
|
||||
lithium-ia32.cc \
|
||||
macro-assembler-ia32.cc \
|
||||
regexp-macro-assembler-ia32.cc \
|
||||
stub-cache-ia32.cc
|
||||
QT_VPATH += qtjsbackend/src/3rdparty/v8/src/ia32
|
||||
else
|
||||
ifeq ($(filter-out $(SPECS),arm),)
|
||||
QT_DEFINES += -DV8_TARGET_ARCH_ARM
|
||||
QT_SOURCES += \
|
||||
assembler-arm.cc \
|
||||
builtins-arm.cc \
|
||||
code-stubs-arm.cc \
|
||||
codegen-arm.cc \
|
||||
cpu-arm.cc \
|
||||
debug-arm.cc \
|
||||
deoptimizer-arm.cc \
|
||||
disasm-arm.cc \
|
||||
frames-arm.cc \
|
||||
full-codegen-arm.cc \
|
||||
ic-arm.cc \
|
||||
lithium-codegen-arm.cc \
|
||||
lithium-gap-resolver-arm.cc \
|
||||
lithium-arm.cc \
|
||||
macro-assembler-arm.cc \
|
||||
regexp-macro-assembler-arm.cc \
|
||||
stub-cache-arm.cc
|
||||
QT_VPATH += qtjsbackend/src/3rdparty/v8/src/arm
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
QT_VPATH += qtjsbackend/generated
|
||||
|
||||
include $(REP_DIR)/lib/mk/qt5.inc
|
||||
|
||||
LIBS += qt5_network
|
||||
|
161
libports/lib/mk/qt5_v8_generated.inc
Normal file
161
libports/lib/mk/qt5_v8_generated.inc
Normal file
@ -0,0 +1,161 @@
|
||||
QT_DEFINES += -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_BUILD_V8_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 -DV8_SHARED -DBUILDING_V8_SHARED -DENABLE_DEBUGGER_SUPPORT -DENABLE_VMSTATE_TRACKING -DENABLE_LOGGING_AND_PROFILING -DNDEBUG -DV8_TARGET_ARCH_X64 -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG
|
||||
|
||||
QT_INCPATH += \
|
||||
qtbase/mkspecs/genode-g++ \
|
||||
qtjsbackend/include \
|
||||
qtjsbackend/include/QtV8 \
|
||||
qtjsbackend/include/QtV8/5.1.0 \
|
||||
qtjsbackend/include/QtV8/5.1.0/QtV8 \
|
||||
qtjsbackend/src/3rdparty/v8/src \
|
||||
qtjsbackend/src/v8 \
|
||||
|
||||
QT_SOURCES += \
|
||||
accessors.cc \
|
||||
allocation.cc \
|
||||
api.cc \
|
||||
assembler.cc \
|
||||
ast.cc \
|
||||
atomicops_internals_x86_gcc.cc \
|
||||
bignum.cc \
|
||||
bignum-dtoa.cc \
|
||||
bootstrapper.cc \
|
||||
builtins.cc \
|
||||
cached-powers.cc \
|
||||
checks.cc \
|
||||
circular-queue.cc \
|
||||
code-stubs.cc \
|
||||
codegen.cc \
|
||||
compilation-cache.cc \
|
||||
compiler.cc \
|
||||
contexts.cc \
|
||||
conversions.cc \
|
||||
counters.cc \
|
||||
cpu-profiler.cc \
|
||||
data-flow.cc \
|
||||
date.cc \
|
||||
dateparser.cc \
|
||||
debug-agent.cc \
|
||||
debug.cc \
|
||||
deoptimizer.cc \
|
||||
disassembler.cc \
|
||||
diy-fp.cc \
|
||||
dtoa.cc \
|
||||
elements.cc \
|
||||
elements-kind.cc \
|
||||
execution.cc \
|
||||
factory.cc \
|
||||
flags.cc \
|
||||
frames.cc \
|
||||
full-codegen.cc \
|
||||
func-name-inferrer.cc \
|
||||
gdb-jit.cc \
|
||||
global-handles.cc \
|
||||
fast-dtoa.cc \
|
||||
fixed-dtoa.cc \
|
||||
handles.cc \
|
||||
heap-profiler.cc \
|
||||
heap.cc \
|
||||
hydrogen.cc \
|
||||
hydrogen-instructions.cc \
|
||||
ic.cc \
|
||||
incremental-marking.cc \
|
||||
inspector.cc \
|
||||
interface.cc \
|
||||
interpreter-irregexp.cc \
|
||||
isolate.cc \
|
||||
jsregexp.cc \
|
||||
lithium-allocator.cc \
|
||||
lithium.cc \
|
||||
liveedit.cc \
|
||||
liveobjectlist.cc \
|
||||
log-utils.cc \
|
||||
log.cc \
|
||||
mark-compact.cc \
|
||||
messages.cc \
|
||||
objects.cc \
|
||||
objects-printer.cc \
|
||||
objects-visiting.cc \
|
||||
once.cc \
|
||||
optimizing-compiler-thread.cc \
|
||||
parser.cc \
|
||||
preparser.cc \
|
||||
preparse-data.cc \
|
||||
profile-generator.cc \
|
||||
property.cc \
|
||||
regexp-macro-assembler-irregexp.cc \
|
||||
regexp-macro-assembler.cc \
|
||||
regexp-stack.cc \
|
||||
rewriter.cc \
|
||||
runtime.cc \
|
||||
runtime-profiler.cc \
|
||||
safepoint-table.cc \
|
||||
scanner.cc \
|
||||
scanner-character-streams.cc \
|
||||
scopeinfo.cc \
|
||||
scopes.cc \
|
||||
serialize.cc \
|
||||
snapshot-common.cc \
|
||||
spaces.cc \
|
||||
string-search.cc \
|
||||
string-stream.cc \
|
||||
strtod.cc \
|
||||
stub-cache.cc \
|
||||
token.cc \
|
||||
transitions.cc \
|
||||
type-info.cc \
|
||||
unicode.cc \
|
||||
utils.cc \
|
||||
v8-counters.cc \
|
||||
v8.cc \
|
||||
v8conversions.cc \
|
||||
v8threads.cc \
|
||||
v8utils.cc \
|
||||
variables.cc \
|
||||
version.cc \
|
||||
store-buffer.cc \
|
||||
zone.cc \
|
||||
externalize-string-extension.cc \
|
||||
gc-extension.cc \
|
||||
statistics-extension.cc \
|
||||
assembler-x64.cc \
|
||||
builtins-x64.cc \
|
||||
code-stubs-x64.cc \
|
||||
codegen-x64.cc \
|
||||
cpu-x64.cc \
|
||||
debug-x64.cc \
|
||||
deoptimizer-x64.cc \
|
||||
disasm-x64.cc \
|
||||
frames-x64.cc \
|
||||
full-codegen-x64.cc \
|
||||
ic-x64.cc \
|
||||
lithium-codegen-x64.cc \
|
||||
lithium-gap-resolver-x64.cc \
|
||||
lithium-x64.cc \
|
||||
macro-assembler-x64.cc \
|
||||
regexp-macro-assembler-x64.cc \
|
||||
stub-cache-x64.cc \
|
||||
platform-genode.cc \
|
||||
platform-posix.cc \
|
||||
objects-debug.cc \
|
||||
prettyprinter.cc \
|
||||
regexp-macro-assembler-tracer.cc \
|
||||
snapshot-empty.cc \
|
||||
libraries.cpp \
|
||||
experimental-libraries.cpp
|
||||
|
||||
QT_VPATH += \
|
||||
qtjsbackend/src/3rdparty/v8/src \
|
||||
qtjsbackend/src/3rdparty/v8/src/extensions \
|
||||
qtjsbackend/src/3rdparty/v8/src/x64 \
|
||||
|
||||
# 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
|
||||
|
||||
|
||||
# source files generated from existing source files ('%.moc: %.cpp' rule in import-qt5.inc)
|
||||
# extracted from 'compiler_moc_source_make_all' rule
|
||||
|
||||
|
@ -25,6 +25,7 @@ PORTS += qt5
|
||||
prepare-qt5: $(CONTRIB_DIR)/$(QT5) \
|
||||
$(CONTRIB_DIR)/$(QTSCRIPTCLASSIC) \
|
||||
tools \
|
||||
$(REP_DIR)/src/lib/qt5/qtjsbackend/generated/generated.tag \
|
||||
$(REP_DIR)/src/lib/qt5/qtwebkit/Source/JavaScriptCore/generated/generated.tag \
|
||||
$(REP_DIR)/src/lib/qt5/qtwebkit/Source/WebCore/generated/generated.tag
|
||||
|
||||
@ -74,6 +75,17 @@ $(CONTRIB_DIR)/$(QTSCRIPTCLASSIC): $(DOWNLOAD_DIR)/$(QTSCRIPTCLASSIC_TGZ).verifi
|
||||
# some of the following lines have been extracted from Makefiles (and modified afterwards), that's why they can be quite long
|
||||
#
|
||||
|
||||
V8_DIR = $(CONTRIB_DIR)/$(QT5)/qtjsbackend/src/v8/../3rdparty/v8
|
||||
|
||||
$(REP_DIR)/src/lib/qt5/qtjsbackend/generated/generated.tag:
|
||||
|
||||
$(VERBOSE)mkdir -p $(dir $@)
|
||||
|
||||
$(VERBOSE)python $(V8_DIR)/tools/js2c.py $(dir $@)/experimental-libraries.cpp EXPERIMENTAL off $(V8_DIR)/src/macros.py $(V8_DIR)/src/proxy.js
|
||||
|
||||
$(VERBOSE)python $(V8_DIR)/tools/js2c.py $(dir $@)/libraries.cpp CORE off $(V8_DIR)/src/macros.py $(V8_DIR)/src/runtime.js $(V8_DIR)/src/v8natives.js $(V8_DIR)/src/array.js $(V8_DIR)/src/string.js $(V8_DIR)/src/uri.js $(V8_DIR)/src/math.js $(V8_DIR)/src/messages.js $(V8_DIR)/src/apinatives.js $(V8_DIR)/src/date.js $(V8_DIR)/src/regexp.js $(V8_DIR)/src/json.js $(V8_DIR)/src/liveedit-debugger.js $(V8_DIR)/src/mirror-debugger.js $(V8_DIR)/src/debug-debugger.js
|
||||
|
||||
|
||||
JAVASCRIPTCORE_DIR = $(CONTRIB_DIR)/$(QT5)/qtwebkit/Source/JavaScriptCore
|
||||
|
||||
$(REP_DIR)/src/lib/qt5/qtwebkit/Source/JavaScriptCore/generated/generated.tag:
|
||||
|
158
libports/run/qt5_quicktest.run
Normal file
158
libports/run/qt5_quicktest.run
Normal file
@ -0,0 +1,158 @@
|
||||
#
|
||||
# Build
|
||||
#
|
||||
|
||||
build {
|
||||
core
|
||||
init
|
||||
drivers/input/ps2
|
||||
drivers/pci
|
||||
drivers/framebuffer
|
||||
drivers/timer
|
||||
server/nitpicker
|
||||
server/liquid_framebuffer
|
||||
server/tar_fs
|
||||
app/qt5/qt_quicktest
|
||||
lib/qt5/qtdeclarative/src/imports/qtquick2
|
||||
}
|
||||
|
||||
create_boot_directory
|
||||
|
||||
#
|
||||
# Create Qt tar archive
|
||||
#
|
||||
|
||||
exec tar chf bin/qt5_fs.tar -C bin/qt5_fs .
|
||||
|
||||
#
|
||||
# Generate config
|
||||
#
|
||||
|
||||
set config {
|
||||
<config>
|
||||
<parent-provides>
|
||||
<service name="ROM"/>
|
||||
<service name="RAM"/>
|
||||
<service name="IRQ"/>
|
||||
<service name="IO_MEM"/>
|
||||
<service name="IO_PORT"/>
|
||||
<service name="CAP"/>
|
||||
<service name="PD"/>
|
||||
<service name="RM"/>
|
||||
<service name="CPU"/>
|
||||
<service name="LOG"/>
|
||||
<service name="SIGNAL"/>
|
||||
</parent-provides>
|
||||
<default-route>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</default-route> }
|
||||
|
||||
append_if [have_spec sdl] config {
|
||||
<start name="fb_sdl">
|
||||
<resource name="RAM" quantum="4M"/>
|
||||
<provides>
|
||||
<service name="Input"/>
|
||||
<service name="Framebuffer"/>
|
||||
</provides>
|
||||
</start>}
|
||||
|
||||
append_if [have_spec pci] config {
|
||||
<start name="pci_drv">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides><service name="PCI"/></provides>
|
||||
</start>}
|
||||
|
||||
append_if [have_spec framebuffer] config {
|
||||
<start name="fb_drv">
|
||||
<resource name="RAM" quantum="4M"/>
|
||||
<provides><service name="Framebuffer"/></provides>
|
||||
</start>}
|
||||
|
||||
append_if [have_spec ps2] config {
|
||||
<start name="ps2_drv">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides><service name="Input"/></provides>
|
||||
</start> }
|
||||
|
||||
append config {
|
||||
<start name="timer">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides><service name="Timer"/></provides>
|
||||
</start>
|
||||
<start name="nitpicker">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides><service name="Nitpicker"/></provides>
|
||||
</start>
|
||||
<start name="tar_fs">
|
||||
<resource name="RAM" quantum="4M"/>
|
||||
<provides> <service name="File_system"/> </provides>
|
||||
<config>
|
||||
<archive name="qt5_fs.tar" />
|
||||
<policy label="" root="/" />
|
||||
</config>
|
||||
</start>
|
||||
<start name="qt_quicktest">
|
||||
<resource name="RAM" quantum="80M"/>
|
||||
</start>
|
||||
</config>
|
||||
}
|
||||
|
||||
install_config $config
|
||||
|
||||
#
|
||||
# Boot modules
|
||||
#
|
||||
|
||||
# generic modules
|
||||
|
||||
# The QtQuick plugin currently needs to be provided both in the file system
|
||||
# (for Qt) and as ROM module (for 'dlopen()').
|
||||
|
||||
set boot_modules {
|
||||
core
|
||||
init
|
||||
timer
|
||||
nitpicker
|
||||
liquid_fb
|
||||
tar_fs
|
||||
qt_quicktest
|
||||
freetype.lib.so
|
||||
gallium.lib.so
|
||||
icu.lib.so
|
||||
ld.lib.so
|
||||
libc.lib.so
|
||||
libc_fs.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_network.lib.so
|
||||
qt5_qml.lib.so
|
||||
qt5_gui.lib.so
|
||||
qt5_quick.lib.so
|
||||
qt5_v8.lib.so
|
||||
qt5_widgets.lib.so
|
||||
qt5_xml.lib.so
|
||||
zlib.lib.so
|
||||
stdcxx.lib.so
|
||||
qt5_fs.tar
|
||||
qt5_qtquick2plugin.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
|
158
libports/run/qt5_samegame.run
Normal file
158
libports/run/qt5_samegame.run
Normal file
@ -0,0 +1,158 @@
|
||||
#
|
||||
# Build
|
||||
#
|
||||
|
||||
build {
|
||||
core
|
||||
init
|
||||
drivers/input/ps2
|
||||
drivers/pci
|
||||
drivers/framebuffer
|
||||
drivers/timer
|
||||
server/nitpicker
|
||||
server/liquid_framebuffer
|
||||
server/tar_fs
|
||||
app/qt5/examples/samegame
|
||||
lib/qt5/qtdeclarative/src/imports/qtquick2
|
||||
}
|
||||
|
||||
create_boot_directory
|
||||
|
||||
#
|
||||
# Create Qt tar archive
|
||||
#
|
||||
|
||||
exec tar chf bin/qt5_fs.tar -C bin/qt5_fs .
|
||||
|
||||
#
|
||||
# Generate config
|
||||
#
|
||||
|
||||
set config {
|
||||
<config>
|
||||
<parent-provides>
|
||||
<service name="ROM"/>
|
||||
<service name="RAM"/>
|
||||
<service name="IRQ"/>
|
||||
<service name="IO_MEM"/>
|
||||
<service name="IO_PORT"/>
|
||||
<service name="CAP"/>
|
||||
<service name="PD"/>
|
||||
<service name="RM"/>
|
||||
<service name="CPU"/>
|
||||
<service name="LOG"/>
|
||||
<service name="SIGNAL"/>
|
||||
</parent-provides>
|
||||
<default-route>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</default-route> }
|
||||
|
||||
append_if [have_spec sdl] config {
|
||||
<start name="fb_sdl">
|
||||
<resource name="RAM" quantum="4M"/>
|
||||
<provides>
|
||||
<service name="Input"/>
|
||||
<service name="Framebuffer"/>
|
||||
</provides>
|
||||
</start>}
|
||||
|
||||
append_if [have_spec pci] config {
|
||||
<start name="pci_drv">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides><service name="PCI"/></provides>
|
||||
</start>}
|
||||
|
||||
append_if [have_spec framebuffer] config {
|
||||
<start name="fb_drv">
|
||||
<resource name="RAM" quantum="4M"/>
|
||||
<provides><service name="Framebuffer"/></provides>
|
||||
</start>}
|
||||
|
||||
append_if [have_spec ps2] config {
|
||||
<start name="ps2_drv">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides><service name="Input"/></provides>
|
||||
</start> }
|
||||
|
||||
append config {
|
||||
<start name="timer">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides><service name="Timer"/></provides>
|
||||
</start>
|
||||
<start name="nitpicker">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides><service name="Nitpicker"/></provides>
|
||||
</start>
|
||||
<start name="tar_fs">
|
||||
<resource name="RAM" quantum="4M"/>
|
||||
<provides> <service name="File_system"/> </provides>
|
||||
<config>
|
||||
<archive name="qt5_fs.tar" />
|
||||
<policy label="" root="/" />
|
||||
</config>
|
||||
</start>
|
||||
<start name="samegame">
|
||||
<resource name="RAM" quantum="128M"/>
|
||||
</start>
|
||||
</config>
|
||||
}
|
||||
|
||||
install_config $config
|
||||
|
||||
#
|
||||
# Boot modules
|
||||
#
|
||||
|
||||
# generic modules
|
||||
|
||||
# The QtQuick plugin currently needs to be provided both in the file system
|
||||
# (for Qt) and as ROM module (for 'dlopen()').
|
||||
|
||||
set boot_modules {
|
||||
core
|
||||
init
|
||||
timer
|
||||
nitpicker
|
||||
liquid_fb
|
||||
tar_fs
|
||||
samegame
|
||||
freetype.lib.so
|
||||
gallium.lib.so
|
||||
icu.lib.so
|
||||
ld.lib.so
|
||||
libc.lib.so
|
||||
libc_fs.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_network.lib.so
|
||||
qt5_qml.lib.so
|
||||
qt5_gui.lib.so
|
||||
qt5_quick.lib.so
|
||||
qt5_v8.lib.so
|
||||
qt5_widgets.lib.so
|
||||
qt5_xml.lib.so
|
||||
zlib.lib.so
|
||||
stdcxx.lib.so
|
||||
qt5_fs.tar
|
||||
qt5_qtquick2plugin.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
|
19
libports/src/app/qt5/examples/samegame/main.cpp
Normal file
19
libports/src/app/qt5/examples/samegame/main.cpp
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* \brief QtQuick 'samegame' example
|
||||
* \author Christian Prochaska
|
||||
* \date 2013-11-26
|
||||
*/
|
||||
|
||||
#include <QGuiApplication>
|
||||
#include <QQuickView>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QGuiApplication app(argc, argv);
|
||||
|
||||
QQuickView view;
|
||||
view.setSource(QUrl("qrc:/samegame.qml"));
|
||||
view.show();
|
||||
|
||||
return app.exec();
|
||||
}
|
3
libports/src/app/qt5/examples/samegame/samegame.pro
Normal file
3
libports/src/app/qt5/examples/samegame/samegame.pro
Normal file
@ -0,0 +1,3 @@
|
||||
QT += quick
|
||||
SOURCES += main.cpp
|
||||
RESOURCES += samegame.qrc
|
17
libports/src/app/qt5/examples/samegame/samegame.qrc
Normal file
17
libports/src/app/qt5/examples/samegame/samegame.qrc
Normal file
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE RCC>
|
||||
<RCC version="1.0">
|
||||
<qresource prefix="/">
|
||||
<file alias="samegame.qml">../../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtdeclarative/examples/quick/tutorials/samegame/samegame3/samegame.qml</file>
|
||||
<file alias="Dialog.qml">../../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtdeclarative/examples/quick/tutorials/samegame/samegame3/Dialog.qml</file>
|
||||
<file alias="Button.qml">../../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtdeclarative/examples/quick/tutorials/samegame/samegame3/Button.qml</file>
|
||||
<file alias="Block.qml">../../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtdeclarative/examples/quick/tutorials/samegame/samegame3/Block.qml</file>
|
||||
<file alias="samegame.js">../../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtdeclarative/examples/quick/tutorials/samegame/samegame3/samegame.js</file>
|
||||
</qresource>
|
||||
<qresource prefix="shared/pics">
|
||||
<file alias="background.jpg">../../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtdeclarative/examples/quick/tutorials/samegame/shared/pics/background.jpg</file>
|
||||
<file alias="blueStone.png">../../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtdeclarative/examples/quick/tutorials/samegame/shared/pics/blueStone.png</file>
|
||||
<file alias="greenStone.png">../../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtdeclarative/examples/quick/tutorials/samegame/shared/pics/greenStone.png</file>
|
||||
<file alias="redStone.png">../../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtdeclarative/examples/quick/tutorials/samegame/shared/pics/redStone.png</file>
|
||||
<file alias="yellowStone.png">../../../../../contrib/qt-everywhere-opensource-src-5.1.0/qtdeclarative/examples/quick/tutorials/samegame/shared/pics/yellowStone.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
10
libports/src/app/qt5/examples/samegame/target.mk
Normal file
10
libports/src/app/qt5/examples/samegame/target.mk
Normal file
@ -0,0 +1,10 @@
|
||||
# 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
|
||||
|
||||
LIBS += libc_fs
|
||||
|
19
libports/src/app/qt5/qt_quicktest/main.cpp
Normal file
19
libports/src/app/qt5/qt_quicktest/main.cpp
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* \brief QtQuick test
|
||||
* \author Christian Prochaska
|
||||
* \date 2013-11-26
|
||||
*/
|
||||
|
||||
#include <QGuiApplication>
|
||||
#include <QQuickView>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QGuiApplication app(argc, argv);
|
||||
|
||||
QQuickView view;
|
||||
view.setSource(QUrl("qrc:/qt_quicktest.qml"));
|
||||
view.show();
|
||||
|
||||
return app.exec();
|
||||
}
|
5
libports/src/app/qt5/qt_quicktest/qt_quicktest.pro
Normal file
5
libports/src/app/qt5/qt_quicktest/qt_quicktest.pro
Normal file
@ -0,0 +1,5 @@
|
||||
TEMPLATE += app
|
||||
QT += quick
|
||||
SOURCES += main.cpp
|
||||
RESOURCES += qt_quicktest.qrc
|
||||
CONFIG += debug
|
32
libports/src/app/qt5/qt_quicktest/qt_quicktest.qml
Normal file
32
libports/src/app/qt5/qt_quicktest/qt_quicktest.qml
Normal file
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* QML example from the Qt5 Quick Start Guide
|
||||
*
|
||||
* http://qt-project.org/doc/qt-5.0/qtquick/qtquick-quickstart-essentials.html
|
||||
*/
|
||||
|
||||
import QtQuick 2.0
|
||||
|
||||
Rectangle {
|
||||
width: 200
|
||||
height: 100
|
||||
color: "red"
|
||||
|
||||
Text {
|
||||
anchors.centerIn: parent
|
||||
text: "Hello, World!"
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: parent.color = "blue"
|
||||
}
|
||||
|
||||
focus: true
|
||||
Keys.onPressed: {
|
||||
if (event.key == Qt.Key_Return) {
|
||||
color = "green";
|
||||
event.accepted = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
6
libports/src/app/qt5/qt_quicktest/qt_quicktest.qrc
Normal file
6
libports/src/app/qt5/qt_quicktest/qt_quicktest.qrc
Normal file
@ -0,0 +1,6 @@
|
||||
<!DOCTYPE RCC>
|
||||
<RCC version="1.0">
|
||||
<qresource prefix="/">
|
||||
<file>qt_quicktest.qml</file>
|
||||
</qresource>
|
||||
</RCC>
|
10
libports/src/app/qt5/qt_quicktest/target.mk
Normal file
10
libports/src/app/qt5/qt_quicktest/target.mk
Normal file
@ -0,0 +1,10 @@
|
||||
# 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
|
||||
|
||||
LIBS += libc_fs
|
||||
|
@ -30,6 +30,11 @@ ifeq ($(findstring network, $(QT)), network)
|
||||
LIBS += qt5_network
|
||||
endif
|
||||
|
||||
# QtQuick
|
||||
ifeq ($(findstring quick, $(QT)), quick)
|
||||
LIBS += qt5_quick
|
||||
endif
|
||||
|
||||
# QtScript
|
||||
ifeq ($(findstring scriptclassic, $(QT)), scriptclassic)
|
||||
LIBS += qt5_scriptclassic
|
||||
|
@ -6,7 +6,7 @@ From: Christian Prochaska <christian.prochaska@genode-labs.com>
|
||||
---
|
||||
configure | 2 -
|
||||
qt.pro | 42 ++++++++++----------
|
||||
qtbase/configure | 6 +--
|
||||
qtbase/configure | 8 ++--
|
||||
qtbase/mkspecs/genode-g++/qmake.conf | 1
|
||||
qtbase/mkspecs/genode-g++/qplatformdefs.h | 1
|
||||
qtbase/src/corelib/global/qconfig-genode.h | 1
|
||||
@ -15,7 +15,7 @@ From: Christian Prochaska <christian.prochaska@genode-labs.com>
|
||||
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(-)
|
||||
11 files changed, 40 insertions(+), 34 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
|
||||
@ -90,7 +90,7 @@ index 218701a..bb4c037 100644
|
||||
+#addModule(qtdoc, qtdeclarative)
|
||||
+#addModule(qtqa, qtbase)
|
||||
diff --git a/qtbase/configure b/qtbase/configure
|
||||
index d7c9674..f4198b8 100755
|
||||
index d7c9674..956c3e1 100755
|
||||
--- a/qtbase/configure
|
||||
+++ b/qtbase/configure
|
||||
@@ -857,10 +857,10 @@ CFG_XINERAMA=runtime
|
||||
@ -106,6 +106,15 @@ index d7c9674..f4198b8 100755
|
||||
CFG_LIBJPEG=auto
|
||||
CFG_XCURSOR=runtime
|
||||
CFG_XRANDR=runtime
|
||||
@@ -883,7 +883,7 @@ CFG_SKIP_MODULES=""
|
||||
CFG_COMPILE_EXAMPLES=auto
|
||||
CFG_RELEASE_QMAKE=no
|
||||
CFG_AUDIO_BACKEND=auto
|
||||
-CFG_V8SNAPSHOT=auto
|
||||
+CFG_V8SNAPSHOT=no
|
||||
CFG_QML_DEBUG=yes
|
||||
CFG_JAVASCRIPTCORE_JIT=auto
|
||||
CFG_PKGCONFIG=auto
|
||||
@@ -949,7 +949,7 @@ CFG_GETADDRINFO=auto
|
||||
CFG_IPV6IFNAME=auto
|
||||
CFG_GETIFADDRS=auto
|
||||
|
796
libports/src/lib/qt5/patches/qt5_qml.patch
Normal file
796
libports/src/lib/qt5/patches/qt5_qml.patch
Normal file
@ -0,0 +1,796 @@
|
||||
qt5_qml.patch
|
||||
|
||||
From: Christian Prochaska <christian.prochaska@genode-labs.com>
|
||||
|
||||
|
||||
---
|
||||
qtdeclarative/src/qml/qml/qqmlimport.cpp | 9
|
||||
qtdeclarative/src/qml/qml/v8/qv8qobjectwrapper.cpp | 4
|
||||
qtdeclarative/src/qml/types/qqmldelegatemodel_p.h | 2
|
||||
qtjsbackend/src/3rdparty/v8/src/platform-genode.cc | 701 ++++++++++++++++++++
|
||||
qtjsbackend/src/v8/v8.pri | 2
|
||||
5 files changed, 716 insertions(+), 2 deletions(-)
|
||||
create mode 100644 qtjsbackend/src/3rdparty/v8/src/platform-genode.cc
|
||||
|
||||
diff --git a/qtdeclarative/src/qml/qml/qqmlimport.cpp b/qtdeclarative/src/qml/qml/qqmlimport.cpp
|
||||
index 2fbb614..5816e9a 100644
|
||||
--- a/qtdeclarative/src/qml/qml/qqmlimport.cpp
|
||||
+++ b/qtdeclarative/src/qml/qml/qqmlimport.cpp
|
||||
@@ -1463,6 +1463,14 @@ QString QQmlImportDatabase::resolvePlugin(QQmlTypeLoader *typeLoader,
|
||||
const QString &qmldirPath, const QString &qmldirPluginPath,
|
||||
const QString &baseName)
|
||||
{
|
||||
+#if defined(Q_OS_GENODE)
|
||||
+
|
||||
+ return resolvePlugin(typeLoader, qmldirPath, qmldirPluginPath, baseName,
|
||||
+ QStringList() << QLatin1String(".lib.so"),
|
||||
+ QLatin1String("qt5_"));
|
||||
+
|
||||
+#else
|
||||
+
|
||||
#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
|
||||
return resolvePlugin(typeLoader, qmldirPath, qmldirPluginPath, baseName,
|
||||
QStringList()
|
||||
@@ -1512,6 +1520,7 @@ QString QQmlImportDatabase::resolvePlugin(QQmlTypeLoader *typeLoader,
|
||||
# endif
|
||||
|
||||
#endif
|
||||
+#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
diff --git a/qtdeclarative/src/qml/qml/v8/qv8qobjectwrapper.cpp b/qtdeclarative/src/qml/qml/v8/qv8qobjectwrapper.cpp
|
||||
index 53f70ad..0b31aa6 100644
|
||||
--- a/qtdeclarative/src/qml/qml/v8/qv8qobjectwrapper.cpp
|
||||
+++ b/qtdeclarative/src/qml/qml/v8/qv8qobjectwrapper.cpp
|
||||
@@ -973,6 +973,8 @@ v8::Local<v8::Object> QQmlPropertyCache::newQObject(QObject *object, QV8Engine *
|
||||
if (checkForDuplicates)
|
||||
uniqueHash.reserve(stringCache.count());
|
||||
|
||||
+/* disabling this code seems to avoid crashes on 32-bit Linux and NOVA */
|
||||
+#if 0
|
||||
// XXX TODO: Enables fast property accessors. These more than double the property access
|
||||
// performance, but the cost of setting up this structure hasn't been measured so
|
||||
// its not guaranteed that this is a win overall. We need to try and measure the cost.
|
||||
@@ -1032,7 +1034,7 @@ v8::Local<v8::Object> QQmlPropertyCache::newQObject(QObject *object, QV8Engine *
|
||||
v8::External::New(property));
|
||||
}
|
||||
}
|
||||
-
|
||||
+#endif
|
||||
if (ft.IsEmpty()) {
|
||||
constructor = qPersistentNew<v8::Function>(engine->qobjectWrapper()->m_constructor);
|
||||
} else {
|
||||
diff --git a/qtdeclarative/src/qml/types/qqmldelegatemodel_p.h b/qtdeclarative/src/qml/types/qqmldelegatemodel_p.h
|
||||
index 5702c59..3d616b5 100644
|
||||
--- a/qtdeclarative/src/qml/types/qqmldelegatemodel_p.h
|
||||
+++ b/qtdeclarative/src/qml/types/qqmldelegatemodel_p.h
|
||||
@@ -52,6 +52,8 @@
|
||||
#include <private/qv8engine_p.h>
|
||||
#include <private/qqmlglobal_p.h>
|
||||
|
||||
+#include <QtQml/QQmlParserStatus>
|
||||
+
|
||||
Q_DECLARE_METATYPE(QModelIndex)
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
diff --git a/qtjsbackend/src/3rdparty/v8/src/platform-genode.cc b/qtjsbackend/src/3rdparty/v8/src/platform-genode.cc
|
||||
new file mode 100644
|
||||
index 0000000..3a8cf90
|
||||
--- /dev/null
|
||||
+++ b/qtjsbackend/src/3rdparty/v8/src/platform-genode.cc
|
||||
@@ -0,0 +1,701 @@
|
||||
+// Copyright 2012 the V8 project authors. All rights reserved.
|
||||
+// Redistribution and use in source and binary forms, with or without
|
||||
+// modification, are permitted provided that the following conditions are
|
||||
+// met:
|
||||
+//
|
||||
+// * Redistributions of source code must retain the above copyright
|
||||
+// notice, this list of conditions and the following disclaimer.
|
||||
+// * Redistributions in binary form must reproduce the above
|
||||
+// copyright notice, this list of conditions and the following
|
||||
+// disclaimer in the documentation and/or other materials provided
|
||||
+// with the distribution.
|
||||
+// * Neither the name of Google Inc. nor the names of its
|
||||
+// contributors may be used to endorse or promote products derived
|
||||
+// from this software without specific prior written permission.
|
||||
+//
|
||||
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
+
|
||||
+// Platform specific code for Genode goes here
|
||||
+
|
||||
+// Minimal include to get access to abort, fprintf and friends for bootstrapping
|
||||
+// messages.
|
||||
+
|
||||
+#include <base/printf.h>
|
||||
+#include <rm_session/connection.h>
|
||||
+#include <util/avl_tree.h>
|
||||
+
|
||||
+#include <errno.h>
|
||||
+#include <pthread.h>
|
||||
+#include <semaphore.h>
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <sys/time.h>
|
||||
+
|
||||
+#include "v8.h"
|
||||
+
|
||||
+#include "platform-posix.h"
|
||||
+#include "platform.h"
|
||||
+#include "vm-state-inl.h"
|
||||
+
|
||||
+
|
||||
+namespace v8 {
|
||||
+namespace internal {
|
||||
+
|
||||
+static const bool verbose = false;
|
||||
+
|
||||
+static const pthread_t kNoThread = (pthread_t) 0;
|
||||
+
|
||||
+#undef UNIMPLEMENTED
|
||||
+#define UNIMPLEMENTED(...) PDBG("UNIMPLEMENTED")
|
||||
+
|
||||
+
|
||||
+double ceiling(double x) {
|
||||
+ return ceil(x);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+// Initialize OS class early in the V8 startup.
|
||||
+void OS::SetUp() {
|
||||
+ // Seed the random number generator.
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void OS::PostSetUp() {
|
||||
+ POSIXPostSetUp();
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void OS::TearDown() {
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+
|
||||
+int OS::ActivationFrameAlignment() {
|
||||
+#ifdef V8_TARGET_ARCH_ARM
|
||||
+ // On EABI ARM targets this is required for fp correctness in the
|
||||
+ // runtime system.
|
||||
+ return 8;
|
||||
+#elif V8_TARGET_ARCH_MIPS
|
||||
+ return 8;
|
||||
+#endif
|
||||
+ // With gcc 4.4 the tree vectorization optimizer can generate code
|
||||
+ // that requires 16 byte alignment such as movdqa on x86.
|
||||
+ return 16;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void OS::ReleaseStore(volatile AtomicWord* ptr, AtomicWord value) {
|
||||
+#if (defined(V8_TARGET_ARCH_ARM) && defined(__arm__)) || \
|
||||
+ (defined(V8_TARGET_ARCH_MIPS) && defined(__mips__))
|
||||
+ // Only use on ARM or MIPS hardware.
|
||||
+ MemoryBarrier();
|
||||
+#else
|
||||
+ __asm__ __volatile__("" : : : "memory");
|
||||
+ // An x86 store acts as a release barrier.
|
||||
+#endif
|
||||
+ *ptr = value;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+// Returns a string identifying the current timezone taking into
|
||||
+// account daylight saving.
|
||||
+const char* OS::LocalTimezone(double time) {
|
||||
+ UNIMPLEMENTED();
|
||||
+ return "<none>";
|
||||
+}
|
||||
+
|
||||
+
|
||||
+// Returns the local time offset in milliseconds east of UTC without
|
||||
+// taking daylight savings time into account.
|
||||
+double OS::LocalTimeOffset() {
|
||||
+ UNIMPLEMENTED();
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+uint64_t OS::CpuFeaturesImpliedByPlatform() {
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#if 0
|
||||
+CpuImplementer OS::GetCpuImplementer() {
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+
|
||||
+
|
||||
+bool OS::ArmCpuHasFeature(CpuFeature feature) {
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+
|
||||
+
|
||||
+bool OS::ArmUsingHardFloat() {
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+bool OS::IsOutsideAllocatedSpace(void* address) {
|
||||
+ UNIMPLEMENTED();
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+#if 0
|
||||
+size_t OS::AllocateAlignment() {
|
||||
+ UNIMPLEMENTED();
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+void* OS::Allocate(const size_t requested,
|
||||
+ size_t* allocated,
|
||||
+ bool executable) {
|
||||
+ //UNIMPLEMENTED();
|
||||
+ *allocated = requested;
|
||||
+ return malloc(requested);
|
||||
+}
|
||||
+
|
||||
+#if 0
|
||||
+void OS::Free(void* buf, const size_t length) {
|
||||
+ // TODO(1240712): potential system call return value which is ignored here.
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void OS::Guard(void* address, const size_t size) {
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+void OS::Sleep(int milliseconds) {
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void OS::Abort() {
|
||||
+ // Minimalistic implementation for bootstrapping.
|
||||
+ abort();
|
||||
+}
|
||||
+
|
||||
+#if 0
|
||||
+void OS::DebugBreak() {
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+OS::MemoryMappedFile* OS::MemoryMappedFile::open(const char* name) {
|
||||
+ UNIMPLEMENTED();
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+#if 0
|
||||
+OS::MemoryMappedFile* OS::MemoryMappedFile::create(const char* name, int size,
|
||||
+ void* initial) {
|
||||
+ UNIMPLEMENTED();
|
||||
+ return NULL;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+void OS::LogSharedLibraryAddresses() {
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void OS::SignalCodeMovingGC() {
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+
|
||||
+#if 0
|
||||
+int OS::StackWalk(Vector<OS::StackFrame> frames) {
|
||||
+ UNIMPLEMENTED();
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+/* --- */
|
||||
+
|
||||
+class Attached_rm_connection : public Genode::Rm_connection,
|
||||
+ public Genode::Avl_node<Attached_rm_connection>
|
||||
+{
|
||||
+
|
||||
+ private:
|
||||
+
|
||||
+ Genode::Dataspace_capability _ds_cap;
|
||||
+
|
||||
+ size_t _size;
|
||||
+ Genode::addr_t _base_addr;
|
||||
+
|
||||
+ public:
|
||||
+
|
||||
+ Attached_rm_connection(size_t size, size_t alignment = 0)
|
||||
+ : Genode::Rm_connection(0, size),
|
||||
+ _ds_cap(dataspace()),
|
||||
+ _size(size)
|
||||
+ {
|
||||
+ if (alignment == 0) {
|
||||
+ _base_addr = Genode::env()->rm_session()->attach(_ds_cap);
|
||||
+ } else {
|
||||
+ for (_base_addr = alignment;
|
||||
+ _base_addr != 0; /* wrap-around */
|
||||
+ _base_addr += alignment) {
|
||||
+ try {
|
||||
+ Genode::env()->rm_session()->attach_at(_ds_cap, _base_addr);
|
||||
+ return;
|
||||
+ } catch (Genode::Rm_connection::Region_conflict) {
|
||||
+ if (verbose)
|
||||
+ PDBG("could not attach at address 0x%lx", _base_addr);
|
||||
+ }
|
||||
+ }
|
||||
+ throw Rm_connection::Region_conflict();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ ~Attached_rm_connection()
|
||||
+ {
|
||||
+ Genode::env()->rm_session()->detach(_base_addr);
|
||||
+ }
|
||||
+
|
||||
+ size_t size() const { return _size; }
|
||||
+
|
||||
+ void *base_addr() const { return (void*)_base_addr; }
|
||||
+
|
||||
+ void attach(Genode::Dataspace_capability ds_cap, Genode::addr_t addr,
|
||||
+ bool executable)
|
||||
+ {
|
||||
+ Genode::Rm_connection::attach(ds_cap, 0, 0, true,
|
||||
+ (void*)(addr - _base_addr),
|
||||
+ executable);
|
||||
+ }
|
||||
+
|
||||
+ Attached_rm_connection *find_by_addr(Genode::addr_t addr)
|
||||
+ {
|
||||
+ if (verbose)
|
||||
+ PDBG("addr = 0x%lx, _base_addr = 0x%lx, _end_addr = 0x%lx",
|
||||
+ addr, _base_addr, _base_addr + _size);
|
||||
+ if ((addr >= _base_addr) && (addr < _base_addr + _size))
|
||||
+ return this;
|
||||
+
|
||||
+ Attached_rm_connection *next = child(addr > _base_addr);
|
||||
+ return next ? next->find_by_addr(addr) : 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Avl_node interface
|
||||
+ */
|
||||
+ bool higher(Attached_rm_connection *other)
|
||||
+ {
|
||||
+ return ((Genode::addr_t)other->base_addr() > _base_addr);
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+
|
||||
+static Genode::Avl_tree<Attached_rm_connection> &vm_registry()
|
||||
+{
|
||||
+ static Genode::Avl_tree<Attached_rm_connection> _vm_registry;
|
||||
+ return _vm_registry;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static void *reserve_region(size_t size, size_t alignment = 0)
|
||||
+{
|
||||
+ Attached_rm_connection *rm;
|
||||
+ try {
|
||||
+ rm = new Attached_rm_connection(size, alignment);
|
||||
+ } catch (Attached_rm_connection::Region_conflict) {
|
||||
+ PDBG("could not reserve region");
|
||||
+ return 0;
|
||||
+ }
|
||||
+ vm_registry().insert(rm);
|
||||
+ if (verbose)
|
||||
+ PDBG("base_addr = 0x%p", rm->base_addr());
|
||||
+ return rm->base_addr();
|
||||
+}
|
||||
+
|
||||
+/* --- */
|
||||
+
|
||||
+VirtualMemory::VirtualMemory() : address_(NULL), size_(0) { }
|
||||
+
|
||||
+
|
||||
+VirtualMemory::VirtualMemory(size_t size) {
|
||||
+ if (verbose)
|
||||
+ PDBG("size = 0x%zx", size);
|
||||
+ address_ = ReserveRegion(size);
|
||||
+ size_ = size;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+VirtualMemory::VirtualMemory(size_t size, size_t alignment) {
|
||||
+ if (verbose)
|
||||
+ PDBG("size = 0x%zx, alignment = 0x%zx", size, alignment);
|
||||
+ address_ = reserve_region(size, alignment);
|
||||
+ size_ = size;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+VirtualMemory::~VirtualMemory() {
|
||||
+ if (IsReserved()) {
|
||||
+ bool result = ReleaseRegion(address(), size());
|
||||
+ ASSERT(result);
|
||||
+ USE(result);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
+bool VirtualMemory::IsReserved() {
|
||||
+ return address_ != NULL;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void VirtualMemory::Reset() {
|
||||
+ address_ = NULL;
|
||||
+ size_ = 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+bool VirtualMemory::Commit(void* address, size_t size, bool is_executable) {
|
||||
+ return CommitRegion(address, size, is_executable);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+
|
||||
+bool VirtualMemory::Uncommit(void* address, size_t size) {
|
||||
+ return UncommitRegion(address, size);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+bool VirtualMemory::Guard(void* address) {
|
||||
+ UNIMPLEMENTED();
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void* VirtualMemory::ReserveRegion(size_t size) {
|
||||
+ return reserve_region(size);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+bool VirtualMemory::CommitRegion(void* base, size_t size, bool is_executable) {
|
||||
+ if (verbose)
|
||||
+ PDBG("base = 0x%p, size = 0x%zx", base, size);
|
||||
+ Attached_rm_connection *rm = vm_registry().first();
|
||||
+ rm = rm->find_by_addr((Genode::addr_t)base);
|
||||
+ if (!rm) {
|
||||
+ if (verbose)
|
||||
+ PDBG("could not find RM connection");
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ Genode::Ram_dataspace_capability ds_cap =
|
||||
+ Genode::env()->ram_session()->alloc(size);
|
||||
+
|
||||
+ try {
|
||||
+ rm->attach(ds_cap, (Genode::addr_t)base, is_executable);
|
||||
+ } catch (Genode::Rm_session::Region_conflict) {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+bool VirtualMemory::UncommitRegion(void* base, size_t size) {
|
||||
+ UNIMPLEMENTED();
|
||||
+ if (verbose)
|
||||
+ PDBG("base = 0x%p, size = 0x%zx", base, size);
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+bool VirtualMemory::ReleaseRegion(void* base, size_t size) {
|
||||
+
|
||||
+ UNIMPLEMENTED();
|
||||
+
|
||||
+#if 0
|
||||
+ /*
|
||||
+ * FIXME
|
||||
+ *
|
||||
+ * Unmapping of managed dataspaces is not supported on all platforms.
|
||||
+ * To make it still work, all dataspaces attached to the sub RM session must
|
||||
+ * be detached before detaching the sub RM session.
|
||||
+ */
|
||||
+
|
||||
+ if (verbose)
|
||||
+ PDBG("base = 0x%p, size = 0x%zx", base, size);
|
||||
+ Attached_rm_connection *rm = vm_registry().first();
|
||||
+ /* XXX: also pass the size for checking? */
|
||||
+ rm = rm->find_by_addr((Genode::addr_t)base);
|
||||
+ if (!rm)
|
||||
+ return false;
|
||||
+
|
||||
+ vm_registry().remove(rm);
|
||||
+
|
||||
+ delete rm;
|
||||
+#endif
|
||||
+
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+bool VirtualMemory::HasLazyCommits() {
|
||||
+ // TODO(alph): implement for the platform.
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+class Thread::PlatformData : public Malloced {
|
||||
+ public:
|
||||
+ PlatformData() : thread_(kNoThread) {}
|
||||
+
|
||||
+ pthread_t thread_; // Thread handle for pthread.
|
||||
+};
|
||||
+
|
||||
+
|
||||
+Thread::Thread(const Options& options)
|
||||
+ : data_(new PlatformData()),
|
||||
+ stack_size_(options.stack_size()) {
|
||||
+ set_name(options.name());
|
||||
+}
|
||||
+
|
||||
+
|
||||
+Thread::~Thread() {
|
||||
+ delete data_;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static void* ThreadEntry(void* arg) {
|
||||
+ Thread* thread = reinterpret_cast<Thread*>(arg);
|
||||
+ // This is also initialized by the first argument to pthread_create() but we
|
||||
+ // don't know which thread will run first (the original thread or the new
|
||||
+ // one) so we initialize it here too.
|
||||
+#ifdef PR_SET_NAME
|
||||
+ prctl(PR_SET_NAME,
|
||||
+ reinterpret_cast<unsigned long>(thread->name()), // NOLINT
|
||||
+ 0, 0, 0);
|
||||
+#endif
|
||||
+ thread->data()->thread_ = pthread_self();
|
||||
+ ASSERT(thread->data()->thread_ != kNoThread);
|
||||
+ thread->Run();
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void Thread::set_name(const char* name) {
|
||||
+ strncpy(name_, name, sizeof(name_));
|
||||
+ name_[sizeof(name_) - 1] = '\0';
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void Thread::Start() {
|
||||
+ pthread_attr_t* attr_ptr = NULL;
|
||||
+ pthread_attr_t attr;
|
||||
+ if (stack_size_ > 0) {
|
||||
+ pthread_attr_init(&attr);
|
||||
+ pthread_attr_setstacksize(&attr, static_cast<size_t>(stack_size_));
|
||||
+ attr_ptr = &attr;
|
||||
+ }
|
||||
+ int result = pthread_create(&data_->thread_, attr_ptr, ThreadEntry, this);
|
||||
+ CHECK_EQ(0, result);
|
||||
+ ASSERT(data_->thread_ != kNoThread);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void Thread::Join() {
|
||||
+ pthread_join(data_->thread_, NULL);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+Thread::LocalStorageKey Thread::CreateThreadLocalKey() {
|
||||
+ pthread_key_t key;
|
||||
+ int result = pthread_key_create(&key, NULL);
|
||||
+ USE(result);
|
||||
+ ASSERT(result == 0);
|
||||
+ return static_cast<LocalStorageKey>(key);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void Thread::DeleteThreadLocalKey(LocalStorageKey key) {
|
||||
+ pthread_key_t pthread_key = static_cast<pthread_key_t>(key);
|
||||
+ int result = pthread_key_delete(pthread_key);
|
||||
+ USE(result);
|
||||
+ ASSERT(result == 0);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void* Thread::GetThreadLocal(LocalStorageKey key) {
|
||||
+ pthread_key_t pthread_key = static_cast<pthread_key_t>(key);
|
||||
+ return pthread_getspecific(pthread_key);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void Thread::SetThreadLocal(LocalStorageKey key, void* value) {
|
||||
+ pthread_key_t pthread_key = static_cast<pthread_key_t>(key);
|
||||
+ pthread_setspecific(pthread_key, value);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void Thread::YieldCPU() {
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+
|
||||
+
|
||||
+class GenodeMutex : public Mutex {
|
||||
+ public:
|
||||
+ GenodeMutex() {
|
||||
+ pthread_mutexattr_t attrs;
|
||||
+ int result = pthread_mutexattr_init(&attrs);
|
||||
+ ASSERT(result == 0);
|
||||
+ result = pthread_mutexattr_settype(&attrs, PTHREAD_MUTEX_RECURSIVE);
|
||||
+ ASSERT(result == 0);
|
||||
+ result = pthread_mutex_init(&mutex_, &attrs);
|
||||
+ ASSERT(result == 0);
|
||||
+ USE(result);
|
||||
+ }
|
||||
+
|
||||
+ virtual ~GenodeMutex() { pthread_mutex_destroy(&mutex_); }
|
||||
+
|
||||
+ virtual int Lock() {
|
||||
+ int result = pthread_mutex_lock(&mutex_);
|
||||
+ return result;
|
||||
+ }
|
||||
+
|
||||
+ virtual int Unlock() {
|
||||
+ int result = pthread_mutex_unlock(&mutex_);
|
||||
+ return result;
|
||||
+ }
|
||||
+
|
||||
+ virtual bool TryLock() {
|
||||
+ int result = pthread_mutex_trylock(&mutex_);
|
||||
+ // Return false if the lock is busy and locking failed.
|
||||
+ if (result == EBUSY) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ ASSERT(result == 0); // Verify no other errors.
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ private:
|
||||
+ pthread_mutex_t mutex_; // Pthread mutex for POSIX platforms.
|
||||
+};
|
||||
+
|
||||
+
|
||||
+Mutex* OS::CreateMutex() {
|
||||
+ return new GenodeMutex();
|
||||
+}
|
||||
+
|
||||
+
|
||||
+class GenodeSemaphore : public Semaphore {
|
||||
+ public:
|
||||
+ explicit GenodeSemaphore(int count) { sem_init(&sem_, 0, count); }
|
||||
+ virtual ~GenodeSemaphore() { sem_destroy(&sem_); }
|
||||
+
|
||||
+ virtual void Wait();
|
||||
+ virtual bool Wait(int timeout);
|
||||
+ virtual void Signal() { sem_post(&sem_); }
|
||||
+ private:
|
||||
+ sem_t sem_;
|
||||
+};
|
||||
+
|
||||
+
|
||||
+void GenodeSemaphore::Wait() {
|
||||
+ while (true) {
|
||||
+ int result = sem_wait(&sem_);
|
||||
+ if (result == 0) return; // Successfully got semaphore.
|
||||
+ CHECK(result == -1 && errno == EINTR); // Signal caused spurious wakeup.
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
+#ifndef TIMEVAL_TO_TIMESPEC
|
||||
+#define TIMEVAL_TO_TIMESPEC(tv, ts) do { \
|
||||
+ (ts)->tv_sec = (tv)->tv_sec; \
|
||||
+ (ts)->tv_nsec = (tv)->tv_usec * 1000; \
|
||||
+} while (false)
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
+bool GenodeSemaphore::Wait(int timeout) {
|
||||
+ const long kOneSecondMicros = 1000000; // NOLINT
|
||||
+
|
||||
+ // Split timeout into second and nanosecond parts.
|
||||
+ struct timeval delta;
|
||||
+ delta.tv_usec = timeout % kOneSecondMicros;
|
||||
+ delta.tv_sec = timeout / kOneSecondMicros;
|
||||
+
|
||||
+ struct timeval current_time;
|
||||
+ // Get the current time.
|
||||
+ if (gettimeofday(¤t_time, NULL) == -1) {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ // Calculate time for end of timeout.
|
||||
+ struct timeval end_time;
|
||||
+ timeradd(¤t_time, &delta, &end_time);
|
||||
+
|
||||
+ struct timespec ts;
|
||||
+ TIMEVAL_TO_TIMESPEC(&end_time, &ts);
|
||||
+ // Wait for semaphore signalled or timeout.
|
||||
+ while (true) {
|
||||
+ int result = sem_timedwait(&sem_, &ts);
|
||||
+ if (result == 0) return true; // Successfully got semaphore.
|
||||
+ if (result > 0) {
|
||||
+ // For glibc prior to 2.3.4 sem_timedwait returns the error instead of -1.
|
||||
+ errno = result;
|
||||
+ result = -1;
|
||||
+ }
|
||||
+ if (result == -1 && errno == ETIMEDOUT) return false; // Timeout.
|
||||
+ CHECK(result == -1 && errno == EINTR); // Signal caused spurious wakeup.
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
+Semaphore* OS::CreateSemaphore(int count) {
|
||||
+ return new GenodeSemaphore(count);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+class Sampler::PlatformData : public Malloced {
|
||||
+ public:
|
||||
+ PlatformData() {
|
||||
+ UNIMPLEMENTED();
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+
|
||||
+Sampler::Sampler(Isolate *isolate, int interval)
|
||||
+ : isolate_(isolate),
|
||||
+ interval_(interval),
|
||||
+ profiling_(false),
|
||||
+ active_(false),
|
||||
+ samples_taken_(0) {
|
||||
+ UNIMPLEMENTED();
|
||||
+ // Shared setup follows.
|
||||
+ data_ = new PlatformData;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+Sampler::~Sampler() {
|
||||
+ UNIMPLEMENTED();
|
||||
+ // Shared tear down follows.
|
||||
+ delete data_;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void Sampler::Start() {
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void Sampler::Stop() {
|
||||
+ UNIMPLEMENTED();
|
||||
+}
|
||||
+
|
||||
+
|
||||
+} } // namespace v8::internal
|
||||
diff --git a/qtjsbackend/src/v8/v8.pri b/qtjsbackend/src/v8/v8.pri
|
||||
index 3a563ff..6a83034 100644
|
||||
--- a/qtjsbackend/src/v8/v8.pri
|
||||
+++ b/qtjsbackend/src/v8/v8.pri
|
||||
@@ -265,7 +265,7 @@ SOURCES += \
|
||||
LIBS += -lexecinfo
|
||||
} else:unix:!qnx {
|
||||
SOURCES += \
|
||||
- $$V8SRC/platform-linux.cc \
|
||||
+ $$V8SRC/platform-genode.cc \
|
||||
$$V8SRC/platform-posix.cc
|
||||
}
|
||||
|
@ -12,4 +12,5 @@ qt5_qtnetwork.patch
|
||||
qt5_qtwebkit.patch
|
||||
qt5_textedit_example.patch
|
||||
qt5_openglwindow_example.patch
|
||||
qt5_qml.patch
|
||||
qt5_tools.patch
|
||||
|
@ -15,7 +15,7 @@ static const char qt_configure_prefix_path_strs[][256 + 12] = {
|
||||
"qt_binspath=:/qt/bin",
|
||||
"qt_plugpath=:/qt/plugins",
|
||||
"qt_impspath=:/qt/imports",
|
||||
"qt_qml2path=:/qt/qml",
|
||||
"qt_qml2path=/qt5/qml",
|
||||
"qt_adatpath=:/qt",
|
||||
"qt_datapath=:/qt",
|
||||
"qt_trnspath=:/qt/translations",
|
||||
|
@ -0,0 +1,3 @@
|
||||
# the plugin gets loaded via 'dlopen()', therefore it is built separately
|
||||
|
||||
LIBS = qt5_qtquick2plugin
|
@ -16,6 +16,12 @@ cd qtscript/src/script && ../../../create_generated_inc qt
|
||||
|
||||
cd qttools/src/designer/src/uitools && ../../../../../create_generated_inc qt5_ui_tools && cp qt5_ui_tools_generated.inc ../../../../.. && cd ../../../../..
|
||||
|
||||
cd qtjsbackend/src/v8 && ../../../create_generated_inc qt5_v8 && cp qt5_v8_generated.inc ../../.. && cd ../../..
|
||||
|
||||
cd qtdeclarative/src/qml && ../../../create_generated_inc qt5_qml && cp qt5_qml_generated.inc ../../.. && cd ../../..
|
||||
cd qtdeclarative/src/quick && ../../../create_generated_inc qt5_quick && cp qt5_quick_generated.inc ../../.. && cd ../../..
|
||||
cd qtdeclarative/src/imports/qtquick2 && ../../../../create_generated_inc qt5_qtquick2plugin && cp qt5_qtquick2plugin_generated.inc ../../../.. && cd ../../../..
|
||||
|
||||
# qtwebkit
|
||||
|
||||
make -C qtbase/src/tools/bootstrap
|
||||
|
Loading…
Reference in New Issue
Block a user