Build for WebAssembly including building everything statically etc.
Resolves #372
This commit is contained in:
parent
4fdfbf0f43
commit
63cb58ef4a
@ -47,10 +47,16 @@ function(qsk_add_plugin target TYPE CLASS_NAME)
|
||||
# So for the moment better don't do:
|
||||
# qt6_add_plugin(${target} SHARED ${CLASS_NAME} )
|
||||
|
||||
if(QT_VERSION_MAJOR VERSION_GREATER_EQUAL 6)
|
||||
qt6_add_library(${target} SHARED )
|
||||
if(BUILD_QSKDLL)
|
||||
set(library_type SHARED)
|
||||
else()
|
||||
add_library(${target} SHARED )
|
||||
set(library_type STATIC)
|
||||
endif()
|
||||
|
||||
if(QT_VERSION_MAJOR VERSION_GREATER_EQUAL 6)
|
||||
qt6_add_library(${target} ${library_type})
|
||||
else()
|
||||
add_library(${target} ${library_type})
|
||||
endif()
|
||||
|
||||
set_target_properties(${target} PROPERTIES
|
||||
@ -118,4 +124,10 @@ function(qsk_add_shaders target)
|
||||
qt6_add_shaders( ${target} "qskshaders" BATCHABLE PRECOMPILE QUIET
|
||||
PREFIX "/qskinny/shaders" ${ARGV} OUTPUTS ${outfiles} )
|
||||
|
||||
# pass on OUTPUT_TARGETS to the caller of this function
|
||||
cmake_parse_arguments(PARSE_ARGV 1 arg "" "OUTPUT_TARGETS" "")
|
||||
if (arg_OUTPUT_TARGETS)
|
||||
set(${arg_OUTPUT_TARGETS} ${${arg_OUTPUT_TARGETS}} PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
endfunction()
|
||||
|
@ -17,7 +17,12 @@ set(SOURCES
|
||||
QskQml.cpp)
|
||||
|
||||
set(target qskqmlexport)
|
||||
qsk_add_library(${target} SHARED ${SOURCES} ${HEADERS})
|
||||
|
||||
if(BUILD_QSKDLL)
|
||||
qsk_add_library(${target} SHARED ${SOURCES} ${HEADERS})
|
||||
else()
|
||||
qsk_add_library(${target} STATIC ${SOURCES} ${HEADERS})
|
||||
endif()
|
||||
|
||||
target_link_libraries(${target} PRIVATE qskinny)
|
||||
target_include_directories(${target} PUBLIC
|
||||
|
@ -482,17 +482,14 @@ set(target qskinny)
|
||||
|
||||
if(BUILD_QSKDLL)
|
||||
qsk_add_library(${target} SHARED ${SOURCES} ${HEADERS} ${PRIVATE_HEADERS})
|
||||
target_compile_definitions(${target} PUBLIC QSK_DLL )
|
||||
set_target_properties(${target} PROPERTIES DEFINE_SYMBOL QSK_MAKEDLL)
|
||||
else()
|
||||
qsk_add_library(${target} STATIC ${SOURCES} ${HEADERS} ${PRIVATE_HEADERS})
|
||||
endif()
|
||||
|
||||
if(BUILD_QSKDLL)
|
||||
target_compile_definitions(${target} PUBLIC QSK_DLL )
|
||||
set_target_properties(${target} PROPERTIES DEFINE_SYMBOL QSK_MAKEDLL)
|
||||
endif()
|
||||
|
||||
if (QT_VERSION_MAJOR VERSION_GREATER_EQUAL 6)
|
||||
qsk_add_shaders( ${target} FILES ${SHADERS} )
|
||||
qsk_add_shaders( ${target} FILES ${SHADERS} OUTPUT_TARGETS shader_target)
|
||||
endif()
|
||||
|
||||
target_include_directories(${target} PUBLIC
|
||||
@ -542,8 +539,14 @@ set_target_properties(${target} PROPERTIES
|
||||
# packaging
|
||||
set(PACKAGE_NAME ${PROJECT_NAME})
|
||||
|
||||
set(exported_targets ${target})
|
||||
if(NOT BUILD_QSKDLL)
|
||||
list(APPEND exported_targets ${shader_target})
|
||||
endif()
|
||||
|
||||
|
||||
# setup destination file paths for qskinny target
|
||||
install(TARGETS ${target} EXPORT ${PACKAGE_NAME}Targets
|
||||
install(TARGETS ${exported_targets} EXPORT ${PACKAGE_NAME}Targets
|
||||
LIBRARY DESTINATION ${QSK_INSTALL_LIBS}
|
||||
ARCHIVE DESTINATION ${QSK_INSTALL_LIBS}
|
||||
RUNTIME DESTINATION ${QSK_INSTALL_LIBS}
|
||||
|
@ -7,7 +7,9 @@
|
||||
|
||||
#include <qcoreapplication.h>
|
||||
#include <qobject.h>
|
||||
#if QT_CONFIG(thread)
|
||||
#include <qsemaphore.h>
|
||||
#endif
|
||||
#include <qthread.h>
|
||||
|
||||
QSK_QT_PRIVATE_BEGIN
|
||||
@ -188,6 +190,8 @@ void QskMetaFunction::invoke( QObject* object,
|
||||
? Qt::QueuedConnection : Qt::DirectConnection;
|
||||
}
|
||||
|
||||
const auto argc = parameterCount() + 1; // return value + arguments
|
||||
|
||||
switch ( invokeType )
|
||||
{
|
||||
case Qt::DirectConnection:
|
||||
@ -206,10 +210,13 @@ void QskMetaFunction::invoke( QObject* object,
|
||||
|
||||
#if QT_CONFIG(thread)
|
||||
QSemaphore semaphore;
|
||||
#endif
|
||||
|
||||
auto event = new QMetaCallEvent(
|
||||
m_functionCall, nullptr, 0, argv, &semaphore );
|
||||
#else
|
||||
auto event = new QMetaCallEvent(
|
||||
m_functionCall, nullptr, 0, argc );
|
||||
#endif
|
||||
|
||||
QCoreApplication::postEvent( receiver, event );
|
||||
|
||||
@ -224,8 +231,6 @@ void QskMetaFunction::invoke( QObject* object,
|
||||
if ( receiver.isNull() )
|
||||
return;
|
||||
|
||||
const auto argc = parameterCount() + 1; // return value + arguments
|
||||
|
||||
auto event = new QMetaCallEvent( m_functionCall, nullptr, 0, argc );
|
||||
|
||||
auto types = event->types();
|
||||
|
@ -9,7 +9,9 @@
|
||||
#include <qmetaobject.h>
|
||||
#include <qobject.h>
|
||||
#include <qcoreapplication.h>
|
||||
#if QT_CONFIG(thread)
|
||||
#include <qsemaphore.h>
|
||||
#endif
|
||||
#include <qthread.h>
|
||||
|
||||
QSK_QT_PRIVATE_BEGIN
|
||||
@ -163,6 +165,12 @@ static void qskInvokeMetaCall(
|
||||
? Qt::QueuedConnection : Qt::DirectConnection;
|
||||
}
|
||||
|
||||
#if 1
|
||||
// should be doable without QMetaMethod. TODO ...
|
||||
const auto method = metaObject->method( offset + index );
|
||||
#endif
|
||||
const int argc = method.parameterCount() + 1;
|
||||
|
||||
switch ( invokeType )
|
||||
{
|
||||
case Qt::DirectConnection:
|
||||
@ -194,11 +202,15 @@ static void qskInvokeMetaCall(
|
||||
|
||||
#if QT_CONFIG(thread)
|
||||
QSemaphore semaphore;
|
||||
#endif
|
||||
|
||||
auto event = new MetaCallEvent( call, metaObject,
|
||||
offset, index, args, &semaphore );
|
||||
|
||||
#else
|
||||
auto event = new MetaCallEvent( call, metaObject,
|
||||
offset, index, argc );
|
||||
#endif
|
||||
|
||||
QCoreApplication::postEvent( receiver, event );
|
||||
|
||||
#if QT_CONFIG(thread)
|
||||
@ -216,12 +228,6 @@ static void qskInvokeMetaCall(
|
||||
|
||||
if ( call == QMetaObject::InvokeMetaMethod )
|
||||
{
|
||||
#if 1
|
||||
// should be doable without QMetaMethod. TODO ...
|
||||
const auto method = metaObject->method( offset + index );
|
||||
#endif
|
||||
const int argc = method.parameterCount() + 1;
|
||||
|
||||
event = new MetaCallEvent( call, metaObject, offset, index, argc );
|
||||
|
||||
/*
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
#include "QskTreeNode.h"
|
||||
|
||||
static constexpr auto extraFlag =
|
||||
static const auto extraFlag =
|
||||
static_cast< QSGNode::Flag >( QSGNode::IsVisitableNode << 1 );
|
||||
|
||||
static inline QSGNode* qskCheckedNode( const QSGNode* node, QSGNode::NodeType type )
|
||||
|
Loading…
x
Reference in New Issue
Block a user