Merge commit 'a051bdeeb0687d07851c0034fe9dc7e14dbf541f' into puvvadar/gitflow_211118_o3de

This commit is contained in:
puvvadar
2021-11-18 09:37:17 -08:00
13 changed files with 142 additions and 6 deletions
+5 -1
View File
@@ -21,7 +21,8 @@ ly_add_target(
NAME QtForPython.Editor.Static STATIC
NAMESPACE Gem
FILES_CMAKE
qtforpython_editor_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
qtforpython_editor_files.cmake
${CMAKE_CURRENT_SOURCE_DIR}/Source/Platform/${PAL_PLATFORM_NAME}/qtforpython_editor_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
PLATFORM_INCLUDE_FILES
${common_source_dir}/${PAL_TRAIT_COMPILER_ID}/qtforpython_${PAL_TRAIT_COMPILER_ID_LOWERCASE}.cmake
INCLUDE_DIRECTORIES
@@ -45,6 +46,9 @@ ly_add_target(
NAMESPACE Gem
FILES_CMAKE
qtforpython_shared_files.cmake
INCLUDE_DIRECTORIES
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/Source/Platform/${PAL_PLATFORM_NAME}
BUILD_DEPENDENCIES
PRIVATE
Gem::QtForPython.Editor.Static
@@ -0,0 +1,60 @@
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#pragma once
#include <AzCore/Debug/Trace.h>
#include <dlfcn.h>
namespace QtForPython
{
const char* s_libPythonLibraryFile = "libpython3.7m.so.1.0";
const char* s_libPyside2LibraryFile = "libpyside2.abi3.so.5.14";
const char* s_libShibokenLibraryFile = "libshiboken2.abi3.so.5.14";
class InitializeEmbeddedPyside2
{
public:
InitializeEmbeddedPyside2()
{
m_libPythonLibraryFile = InitializeEmbeddedPyside2::LoadModule(s_libPythonLibraryFile);
m_libPyside2LibraryFile = InitializeEmbeddedPyside2::LoadModule(s_libPyside2LibraryFile);
m_libShibokenLibraryFile = InitializeEmbeddedPyside2::LoadModule(s_libShibokenLibraryFile);
}
virtual ~InitializeEmbeddedPyside2()
{
InitializeEmbeddedPyside2::UnloadModule(m_libShibokenLibraryFile);
InitializeEmbeddedPyside2::UnloadModule(m_libPyside2LibraryFile);
InitializeEmbeddedPyside2::UnloadModule(m_libPythonLibraryFile);
}
private:
static void* LoadModule(const char* moduleToLoad)
{
void* moduleHandle = dlopen(moduleToLoad, RTLD_NOW | RTLD_GLOBAL);
if (!moduleHandle)
{
const char* loadError = dlerror();
AZ_Error("QtForPython", false, "Unable to load python library %s for Pyside2: %s", moduleToLoad,
loadError ? loadError : "Unknown Error");
}
return moduleHandle;
}
static void UnloadModule(void* moduleHandle)
{
if (moduleHandle)
{
dlclose(moduleHandle);
}
}
void* m_libPythonLibraryFile;
void* m_libPyside2LibraryFile;
void* m_libShibokenLibraryFile;
};
} // namespace QtForPython
@@ -6,4 +6,4 @@
#
#
set(PAL_TRAIT_BUILD_QTFORPYTHON_SUPPORTED FALSE)
set(PAL_TRAIT_BUILD_QTFORPYTHON_SUPPORTED TRUE)
@@ -0,0 +1,11 @@
#
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
#
set(FILES
InitializeEmbeddedPyside2.h
)
@@ -0,0 +1,18 @@
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#pragma once
namespace QtForPython
{
class InitializeEmbeddedPyside2
{
public:
InitializeEmbeddedPyside2() = default;
virtual ~InitializeEmbeddedPyside2() = default;
};
} // namespace QtForPython
@@ -0,0 +1,11 @@
#
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
#
set(FILES
InitializeEmbeddedPyside2.h
)
@@ -0,0 +1,18 @@
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#pragma once
namespace QtForPython
{
class InitializeEmbeddedPyside2
{
public:
InitializeEmbeddedPyside2() = default;
virtual ~InitializeEmbeddedPyside2() = default;
};
} // namespace QtForPython
@@ -0,0 +1,11 @@
#
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
#
set(FILES
InitializeEmbeddedPyside2.h
)
@@ -8,13 +8,17 @@
#include <AzCore/Memory/SystemAllocator.h>
#include <AzCore/Module/Module.h>
#include <AzCore/Debug/Trace.h>
#include <QtForPythonSystemComponent.h>
#include "InitializeEmbeddedPyside2.h"
namespace QtForPython
{
class QtForPythonModule
: public AZ::Module
, private InitializeEmbeddedPyside2
{
public:
AZ_RTTI(QtForPythonModule, "{81545CD5-79FA-47CE-96F2-1A9C5D59B4B9}", AZ::Module);
@@ -22,11 +26,13 @@ namespace QtForPython
QtForPythonModule()
: AZ::Module()
, InitializeEmbeddedPyside2()
{
m_descriptors.insert(m_descriptors.end(), {
QtForPythonSystemComponent::CreateDescriptor(),
});
}
~QtForPythonModule() override = default;
/**
* Add required SystemComponents to the SystemEntity.
@@ -203,10 +203,6 @@ namespace QtForPython
{
QtBootstrapParameters params;
#if !defined(Q_OS_WIN)
#error Unsupported OS platform for this QtForPython gem
#endif
params.m_mainWindowId = 0;
using namespace AzToolsFramework;
QWidget* activeWindow = nullptr;
@@ -46,3 +46,4 @@ ly_associate_package(PACKAGE_NAME squish-ccr-deb557d-rev1-linux
ly_associate_package(PACKAGE_NAME astc-encoder-3.2-rev2-linux TARGETS astc-encoder PACKAGE_HASH 71549d1ca9e4d48391b92a89ea23656d3393810e6777879f6f8a9def2db1610c)
ly_associate_package(PACKAGE_NAME ISPCTexComp-36b80aa-rev1-linux TARGETS ISPCTexComp PACKAGE_HASH 065fd12abe4247dde247330313763cf816c3375c221da030bdec35024947f259)
ly_associate_package(PACKAGE_NAME lz4-1.9.3-vcpkg-rev4-linux TARGETS lz4 PACKAGE_HASH 5de3dbd3e2a3537c6555d759b3c5bb98e5456cf85c74ff6d046f809b7087290d)
ly_associate_package(PACKAGE_NAME pyside2-5.15.2-rev1-linux TARGETS pyside2 PACKAGE_HASH ec04291f3940e76ac817bc0c825f7a47f18d8760f0bdb8da4530732f2a69405e)