Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Partially revert Shiboken generation in QMake for Python bindings #830

Merged
merged 1 commit into from Jul 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
95 changes: 53 additions & 42 deletions Engine/Engine.pro
Expand Up @@ -210,6 +210,7 @@ SOURCES += \
../Global/PythonUtils.cpp \
../Global/StrUtils.cpp \
../libs/SequenceParsing/SequenceParsing.cpp \
$${ENGINE_WRAPPER_DIR}/natronengine_module_wrapper.cpp \

HEADERS += \
AbortableRenderInfo.h \
Expand Down Expand Up @@ -426,9 +427,7 @@ HEADERS += \
../libs/OpenFX/include/nuke/fnPublicOfxExtensions.h \
../libs/OpenFX/include/tuttle/ofxReadWrite.h \
../libs/OpenFX_extensions/ofxhParametricParam.h \

GENERATED_SOURCES += $${ENGINE_WRAPPER_DIR}/natronengine_module_wrapper.cpp
GENERATED_HEADERS += $${ENGINE_WRAPPER_DIR}/natronengine_python.h
$${ENGINE_WRAPPER_DIR}/natronengine_python.h \

ENGINE_GENERATED_SOURCES = \
animatedparam_wrapper \
Expand Down Expand Up @@ -481,55 +480,67 @@ ENGINE_GENERATED_SOURCES = \
userparamholder_wrapper \

for(name, ENGINE_GENERATED_SOURCES) {
GENERATED_SOURCES += $${ENGINE_WRAPPER_DIR}/$${name}.cpp
GENERATED_HEADERS += $${ENGINE_WRAPPER_DIR}/$${name}.h
SOURCES += $${ENGINE_WRAPPER_DIR}/$${name}.cpp
HEADERS += $${ENGINE_WRAPPER_DIR}/$${name}.h
}


OTHER_FILES += \
typesystem_engine.xml

defineReplace(shibokenEngine) {
SOURCES += $$GENERATED_SOURCES
HEADERS += $$GENERATED_HEADERS
return("%_wrapper.cpp")
}
# GENERATED_SOURCES = \
# NatronEngine/animatedparam_wrapper.cpp \
# NatronEngine/app_wrapper.cpp \
# NatronEngine/beziercurve_wrapper.cpp \
# NatronEngine/booleanparam_wrapper.cpp \
# NatronEngine/buttonparam_wrapper.cpp \
# NatronEngine/choiceparam_wrapper.cpp \
# NatronEngine/colorparam_wrapper.cpp \
# NatronEngine/colortuple_wrapper.cpp \
# NatronEngine/double2dparam_wrapper.cpp \
# NatronEngine/double2dtuple_wrapper.cpp \
# NatronEngine/double3dparam_wrapper.cpp \
# NatronEngine/double3dtuple_wrapper.cpp \
# NatronEngine/doubleparam_wrapper.cpp \
# NatronEngine/effect_wrapper.cpp \
# NatronEngine/fileparam_wrapper.cpp \
# NatronEngine/group_wrapper.cpp \
# NatronEngine/groupparam_wrapper.cpp \
# NatronEngine/int2dparam_wrapper.cpp \
# NatronEngine/int2dtuple_wrapper.cpp \
# NatronEngine/int3dparam_wrapper.cpp \
# NatronEngine/int3dtuple_wrapper.cpp \
# NatronEngine/intparam_wrapper.cpp \
# NatronEngine/itembase_wrapper.cpp \
# NatronEngine/layer_wrapper.cpp \
# NatronEngine/natron_wrapper.cpp \
# NatronEngine/natronengine_module_wrapper.cpp \
# NatronEngine/outputfileparam_wrapper.cpp \
# NatronEngine/pageparam_wrapper.cpp \
# NatronEngine/param_wrapper.cpp \
# NatronEngine/parametricparam_wrapper.cpp \
# NatronEngine/pathparam_wrapper.cpp \
# NatronEngine/roto_wrapper.cpp \
# NatronEngine/stringparam_wrapper.cpp \
# NatronEngine/stringparambase_wrapper.cpp

QT_INCLUDEPATH = $$PYTHON_INCLUDEPATH $$PYSIDE_INCLUDEDIR
for(dep, QT) {
QT_INCLUDEPATH += $$eval(QT.$${dep}.includes)
QT_INCLUDEPATH += $$absolute_path($$eval(QT.$${dep}.name), $$PYSIDE_INCLUDEDIR)
}

equals(QT_MAJOR_VERSION, 5) {
PYENGINE_HEADER = PySide2_Engine_Python.h
POST_SHIBOKEN = bash $$shell_path(../tools/utils/runPostShiboken2.sh)
} else:equals(QT_MAJOR_VERSION, 4) {
PYENGINE_HEADER = Pyside_Engine_Python.h
POST_SHIBOKEN = bash $$shell_path(../tools/utils/runPostShiboken.sh)
}
# defineReplace(shibokenWorkaround) {
# SOURCES += $$GENERATED_SOURCES
# return("%_wrapper.cpp")
# }

SRC_PATH = $$relative_path($$PWD, $$OUT_PWD)/
DEP_GROUP = $$PYENGINE_HEADER typesystem_engine.xml $$HEADERS
enginesbk.input = $$PYENGINE_HEADER typesystem_engine.xml
enginesbk.depends = $$eval($$list($$join(DEP_GROUP, " "$$SRC_PATH, $$SRC_PATH)))
enginesbk.target = enginesbk
enginesbk.commands = cd $$PWD && $$SHIBOKEN \
--enable-parent-ctor-heuristic --use-isnull-as-nb_nonzero \
--avoid-protected-hack --enable-pyside-extensions \
-I.:..:../Global:../libs/OpenFX/include:$$PYTHON_SITE_PACKAGES/PySide2/include:$$[QT_INSTALL_PREFIX]/include \
$$join(INCLUDEPATH, ":", "-I") \
$$join(QT_INCLUDEPATH, ":", "-I") \
-T$$TYPESYSTEMPATH --output-directory=$$OUT_PWD/Qt$$QT_MAJOR_VERSION \
$$PYENGINE_HEADER typesystem_engine.xml && \
$$POST_SHIBOKEN $$OUT_PWD/Qt$$QT_MAJOR_VERSION/NatronEngine natronengine
pyengine.depends = enginesbk
pyengine.target = $$shell_path($$ENGINE_WRAPPER_DIR/%_wrapper.cpp)
pyengine.output_function = shibokenEngine
pyengine.commands = bash -c 'true'
# isEmpty(SHIBOKEN) {
# SHIBOKEN = shiboken
# }

QMAKE_EXTRA_TARGETS += enginesbk pyengine
# SHIBOKEN_FILE = . # Need to give some bogus input
# SHIBOKEN.input = SHIBOKEN_FILE
# SHIBOKEN.output_function = shibokenWorkaround
# SHIBOKEN.commands = $$SHIBOKEN --include-paths=..:$$system(pkg-config --variable=includedir pyside) --typesystem-paths=$$system(pkg-config --variable=typesystemdir pyside) Pyside_Engine_Python.h typesystem_engine.xml
# SHIBOKEN.CONFIG = no_link # don't add the .cpp target file to OBJECTS
# SHIBOKEN.clean = dummy # don't remove the %_wrapper.cpp file by "make clean"

# QMAKE_EXTRA_COMPILERS += SHIBOKEN
macx {

OBJECTIVE_SOURCES += \
Expand Down
51 changes: 4 additions & 47 deletions Gui/Gui.pro
Expand Up @@ -227,6 +227,7 @@ SOURCES += \
ViewerTabPrivate.cpp \
ViewerToolButton.cpp \
ticks.cpp \
$${GUI_WRAPPER_DIR}/natrongui_module_wrapper.cpp \

HEADERS += \
AboutWindow.h \
Expand Down Expand Up @@ -383,9 +384,7 @@ HEADERS += \
../libs/OpenFX/include/nuke/fnPublicOfxExtensions.h \
../libs/OpenFX/include/tuttle/ofxReadWrite.h \
../libs/OpenFX_extensions/ofxhParametricParam.h \

GENERATED_SOURCES += $${GUI_WRAPPER_DIR}/natrongui_module_wrapper.cpp
GENERATED_HEADERS += $${GUI_WRAPPER_DIR}/natrongui_python.h
$${GUI_WRAPPER_DIR}/natrongui_python.h \

GUI_GENERATED_SOURCES = \
guiapp_wrapper \
Expand All @@ -396,8 +395,8 @@ GUI_GENERATED_SOURCES = \
pyviewer_wrapper

for(name, GUI_GENERATED_SOURCES) {
GENERATED_SOURCES += $${GUI_WRAPPER_DIR}/$${name}.cpp
GENERATED_HEADERS += $${GUI_WRAPPER_DIR}/$${name}.h
SOURCES += $${GUI_WRAPPER_DIR}/$${name}.cpp
HEADERS += $${GUI_WRAPPER_DIR}/$${name}.h
}

RESOURCES += \
Expand All @@ -421,48 +420,6 @@ OTHER_FILES += \
Resources/Images/searchSize.png \
Resources/Images/splashscreen.svg

defineReplace(shibokenGui) {
SOURCES += $$GENERATED_SOURCES
HEADERS += $$GENERATED_HEADERS
return("%_wrapper.cpp")
}

QT_INCLUDEPATH = $$PYTHON_INCLUDEPATH $$PYSIDE_INCLUDEDIR
for(dep, QT) {
QT_INCLUDEPATH += $$eval(QT.$${dep}.includes)
QT_INCLUDEPATH += $$absolute_path($$eval(QT.$${dep}.name), $$PYSIDE_INCLUDEDIR)
}

equals(QT_MAJOR_VERSION, 5) {
PYGUI_HEADER = PySide2_Gui_Python.h
POST_SHIBOKEN = bash $$shell_path($$PWD/../tools/utils/runPostShiboken2.sh)
} else:equals(QT_MAJOR_VERSION, 4) {
PYGUI_HEADER = Pyside_Gui_Python.h
POST_SHIBOKEN = bash $$shell_path($$PWD/../tools/utils/runPostShiboken.sh)
}


SRC_PATH = $$relative_path($$PWD, $$OUT_PWD)/
DEP_GROUP = $$PYGUI_HEADER typesystem_natronGui.xml $$HEADERS
guisbk.input = $$PYGUI_HEADER typesystem_natronGui.xml
guisbk.depends = $$eval($$list($$join(DEP_GROUP, " "$$SRC_PATH, $$SRC_PATH)))
guisbk.target = guisbk
guisbk.commands = cd $$PWD && $$SHIBOKEN \
--enable-parent-ctor-heuristic --use-isnull-as-nb_nonzero \
--avoid-protected-hack --enable-pyside-extensions \
-I.:..:../Global:../Engine:../libs/OpenFX/include:$$PYTHON_SITE_PACKAGES/PySide2/include:$$[QT_INSTALL_PREFIX]/include \
$$join(INCLUDEPATH, ":", "-I") \
$$join(QT_INCLUDEPATH, ":", "-I") \
-T../Engine:$$TYPESYSTEMPATH --output-directory=$$OUT_PWD/Qt$$QT_MAJOR_VERSION \
$$PYGUI_HEADER typesystem_natronGui.xml && \
$$POST_SHIBOKEN $$OUT_PWD/Qt$$QT_MAJOR_VERSION/NatronGui natrongui
pygui.depends = guisbk
pygui.target = $$shell_path($$GUI_WRAPPER_DIR/%_wrapper.cpp)
pygui.output_function = shibokenGui
pygui.commands = bash -c 'true'

QMAKE_EXTRA_TARGETS += guisbk pygui

macx {
HEADERS += TaskBarMac.h
OBJECTIVE_SOURCES += \
Expand Down
10 changes: 0 additions & 10 deletions global.pri
Expand Up @@ -33,8 +33,6 @@ DEFINES += OFX_SUPPORTS_DIALOG
#for QString(const char*) assumes ASCII strings, we may run into troubles
DEFINES += QT_NO_CAST_FROM_ASCII

greaterThan(QT_MAJOR_VERSION, 4): CONFIG += python3

# To run Natron without Python functionnalities (for debug purposes)
run-without-python {
message("Natron will run (not build) without Python")
Expand Down Expand Up @@ -404,21 +402,17 @@ win32-g++ {
cairo: PKGCONFIG += cairo fontconfig
equals(QT_MAJOR_VERSION, 5) {
shiboken: INCLUDEPATH += $$PYTHON_SITE_PACKAGES/PySide2/include/shiboken2
shiboken: SHIBOKEN = $$system(pkg-config --variable=generator_location shiboken2)
pyside: INCLUDEPATH += $$PYTHON_SITE_PACKAGES/PySide2/include/PySide2
pyside: INCLUDEPATH += $$PYTHON_SITE_PACKAGES/PySide2/include/PySide2/QtCore
pyside: INCLUDEPATH += $$PYTHON_SITE_PACKAGES/PySide2/include/PySide2/QtGui
pyside: INCLUDEPATH += $$PYTHON_SITE_PACKAGES/PySide2/include/PySide2/QtWidgets
pyside: TYPESYSTEMPATH *= $$system(pkg-config --variable=typesystemdir pyside2)
}
equals(QT_MAJOR_VERSION, 4) {
shiboken: PKGCONFIG += shiboken-py$$PYV
shiboken: SHIBOKEN = $$system(pkg-config --variable=generator_location shiboken)
pyside: PKGCONFIG += pyside-py$$PYV
PYSIDE_INCLUDEDIR = $$system(pkg-config --variable=includedir pyside-py$$PYV)
pyside: INCLUDEPATH += $$PYSIDE_INCLUDEDIR/QtCore
pyside: INCLUDEPATH += $$PYSIDE_INCLUDEDIR/QtGui
pyside: TYPESYSTEMPATH *= $$system(pkg-config --variable=typesystemdir pyside)
}
python: PKGCONFIG += python-$$PYVER$$PY_PKG_SUFFIX
boost: LIBS += -lboost_serialization-mt
Expand Down Expand Up @@ -460,14 +454,12 @@ unix {
equals(QT_MAJOR_VERSION, 5) {
system(pkg-config --exists pyside2) {
shiboken: PKGCONFIG += shiboken2
shiboken: SHIBOKEN = $$system(pkg-config --variable=generator_location shiboken2)
pyside: PKGCONFIG += pyside2
# add QtCore to includes
PYSIDE_INCLUDEDIR = $$system(pkg-config --variable=includedir pyside2)
pyside: INCLUDEPATH += $$PYSIDE_INCLUDEDIR/QtCore
pyside: INCLUDEPATH += $$PYSIDE_INCLUDEDIR/QtGui
pyside: INCLUDEPATH += $$PYSIDE_INCLUDEDIR/QtWidgets
pyside: TYPESYSTEMPATH *= $$system(pkg-config --variable=typesystemdir pyside2)
}
}

Expand All @@ -477,9 +469,7 @@ unix {
# See for example tools/travis/install_dependencies.sh for a solution that works on Linux,
# using a custom config.pri
shiboken: PKGCONFIG += shiboken
shiboken: SHIBOKEN = $$system(pkg-config --variable=generator_location shiboken)
pyside: PKGCONFIG += pyside
pyside: TYPESYSTEMPATH *= $$system(pkg-config --variable=typesystemdir pyside)
# The following hack also works with Homebrew if pyside is installed with option --with-python3
macx {
QMAKE_LFLAGS += '-Wl,-rpath,\'@loader_path/../Frameworks\''
Expand Down