Skip to content

Commit

Permalink
Merge branch 'Tencent:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
ArnoChenFx authored Jul 3, 2024
2 parents cbae9fb + 7bd1d12 commit 0300971
Show file tree
Hide file tree
Showing 11 changed files with 59 additions and 78 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/unity_build_plugins.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ jobs:
backend: mult

ios:
runs-on: macos-11
runs-on: macos-12

steps:
- uses: actions/checkout@v3
Expand Down Expand Up @@ -122,7 +122,7 @@ jobs:
backend: mult

osx:
runs-on: macos-11
runs-on: macos-12

steps:
- uses: actions/checkout@v3
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/unity_build_plugins_custom.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
backend: ${{ github.event.inputs.backend }}
config: ${{ github.event.inputs.config }}
ios:
runs-on: macos-11
runs-on: macos-12

steps:
- uses: actions/checkout@v3
Expand All @@ -40,7 +40,7 @@ jobs:
backend: ${{ github.event.inputs.backend }}
config: ${{ github.event.inputs.config }}
osx:
runs-on: macos-11
runs-on: macos-12

steps:
- uses: actions/checkout@v3
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/unity_publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ jobs:
backend: mult

ios:
runs-on: macos-11
runs-on: macos-12

steps:
- uses: actions/checkout@v3
Expand Down Expand Up @@ -171,7 +171,7 @@ jobs:
backend: mult

osx:
runs-on: macos-11
runs-on: macos-12

steps:
- uses: actions/checkout@v3
Expand Down
58 changes: 29 additions & 29 deletions .github/workflows/unreal_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,32 +97,32 @@ jobs:
run: |
Engine\Build\BatchFiles\RunUAT.bat BuildPlugin -Plugin="unreal\Puerts\Puerts.uplugin" -Package="output" -Rocket -TargetPlatforms=Android -VS2019
mac_ios_ci:
needs: urls
name: Mac and IOS
runs-on: macos-11
strategy:
matrix:
cmdinfo:
- jslib_path: ${{ needs.urls.outputs.v8 }}
change_backend: ''
- jslib_path: ${{ needs.urls.outputs.qjs }}
change_backend: "sed -i '' 's/UseQuickjs = false/UseQuickjs = true/g' unreal/Puerts/Source/JsEnv/JsEnv.Build.cs"
- jslib_path: ${{ needs.urls.outputs.node }}
change_backend: "sed -i '' 's/UseNodejs = false/UseNodejs = true/g' unreal/Puerts/Source/JsEnv/JsEnv.Build.cs"
steps:
- uses: actions/checkout@v3
- name: Prepare
shell: bash
run: |
wget -O jslib.tgz -q ${{ matrix.cmdinfo['jslib_path'] }}
tar xvfz jslib.tgz -C unreal/Puerts/ThirdParty
${{ matrix.cmdinfo['change_backend'] }}
wget -O temp.tgz -q ${{env.Engine}}
tar xfz temp.tgz
mkdir output
sudo xcode-select -s /Applications/Xcode_12.5.1.app
- name: Build
shell: bash
run: |
Engine/Build/BatchFiles/RunUAT.sh BuildPlugin -Plugin=unreal/Puerts/Puerts.uplugin -Package=output -Rocket -TargetPlatforms=Mac+IOS
# mac_ios_ci:
# needs: urls
# name: Mac and IOS
# runs-on: macos-12
# strategy:
# matrix:
# cmdinfo:
# - jslib_path: ${{ needs.urls.outputs.v8 }}
# change_backend: ''
# - jslib_path: ${{ needs.urls.outputs.qjs }}
# change_backend: "sed -i '' 's/UseQuickjs = false/UseQuickjs = true/g' unreal/Puerts/Source/JsEnv/JsEnv.Build.cs"
# - jslib_path: ${{ needs.urls.outputs.node }}
# change_backend: "sed -i '' 's/UseNodejs = false/UseNodejs = true/g' unreal/Puerts/Source/JsEnv/JsEnv.Build.cs"
# steps:
# - uses: actions/checkout@v3
# - name: Prepare
# shell: bash
# run: |
# wget -O jslib.tgz -q ${{ matrix.cmdinfo['jslib_path'] }}
# tar xvfz jslib.tgz -C unreal/Puerts/ThirdParty
# ${{ matrix.cmdinfo['change_backend'] }}
# wget -O temp.tgz -q ${{env.Engine}}
# tar xfz temp.tgz
# mkdir output
# sudo xcode-select -s /Applications/Xcode_13.1.app
# - name: Build
# shell: bash
# run: |
# Engine/Build/BatchFiles/RunUAT.sh BuildPlugin -Plugin=unreal/Puerts/Puerts.uplugin -Package=output -Rocket -TargetPlatforms=Mac+IOS
2 changes: 1 addition & 1 deletion unity/cli/backend.mts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { fileURLToPath } from "url";
const download = createRequire(fileURLToPath(import.meta.url))('download');

export default async function downloadBackend(cwd: string, name: string, url: string = "") {
if (!existsSync(join(cwd, "CMakeLists.txt")) || !existsSync(join(cwd, "cmake"))) {
if (!existsSync(join(cwd, "CMakeLists.txt"))) {
throw new Error("invalid puerts native_src directory: " + cwd);
}
const backendDir = join(cwd, '../native_src/.backends');
Expand Down
12 changes: 11 additions & 1 deletion unity/cli/make.mts
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,16 @@ async function runPuertsMake(cwd: string, options: BuildOptions) {
console.error("[Puer] Cannot find CMakeLists.txt");
process.exit();
}
const cmakeAddedLibraryName = readFileSync(`${cwd}/CMakeLists.txt`, 'utf-8').match(/add_library\((\w*)/)[1];
const cmakeListFile = readFileSync(`${cwd}/CMakeLists.txt`, 'utf-8');
let cmakeAddedLibraryName: string;
let match = cmakeListFile.match(/add_library\((\w*)/);
let isExecutable = false;
if (match) {
cmakeAddedLibraryName = match[1];
} else {
cmakeAddedLibraryName = cmakeListFile.match(/add_executable\((\w*)/)[1];
isExecutable = true;
}

const checkCMake = exec("cmake --version", { silent: true });
if (checkCMake.stderr && !checkCMake.stdout) {
Expand Down Expand Up @@ -264,6 +273,7 @@ async function runPuertsMake(cwd: string, options: BuildOptions) {
cmakeAddedLibraryName,
[definitionD, linkD, incD].map((r, index) => r ? DArgsName[index] + '"' + r + '"' : null).filter(t => t).join(' ')
);
if (isExecutable) return {};
if (!(outputFile instanceof Array)) outputFile = [outputFile];
const copyConfig = (BackendConfig['copy-libraries'][options.platform]?.[options.arch] || [])
.map((pathToBackend: string) => join(cwd, '../native_src/.backends', options.backend, pathToBackend))
Expand Down
3 changes: 0 additions & 3 deletions unreal/Puerts/Content/JavaScript/puerts/hot_reload.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,6 @@ var global = global || (function () { return this; }());
return;
}
let m = puerts.getModuleByUrl(url);
if (contextInfo) {
await sendCommand("Runtime.compileScript", {expression:source, sourceURL:"", persistScript:false, executionContextId:contextInfo.id});
}
puerts.emit('HMR.prepare', moduleName, m, url);
let res = await sendCommand("Debugger.setScriptSource", {scriptId:"" + scriptId,scriptSource:source});
puerts.emit('HMR.finish', moduleName, m, url);
Expand Down
4 changes: 2 additions & 2 deletions unreal/Puerts/Source/JsEnv/Private/JsEnv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ FJsEnv::FJsEnv(std::shared_ptr<IJSModuleLoader> InModuleLoader, std::shared_ptr<
std::move(InModuleLoader), InLogger, InDebugPort, InOnSourceLoadedCallback, InFlags, InExternalRuntime, InExternalContext);
}

void FJsEnv::Start(const FString& ModuleName, const TArray<TPair<FString, UObject*>>& Arguments, bool IsScript)
void FJsEnv::Start(const FString& ModuleName, const TArray<TPair<FString, UObject*>>& Arguments)
{
GameScript->Start(ModuleName, Arguments, IsScript);
GameScript->Start(ModuleName, Arguments);
}

bool FJsEnv::IdleNotificationDeadline(double DeadlineInSeconds)
Expand Down
38 changes: 7 additions & 31 deletions unreal/Puerts/Source/JsEnv/Private/JsEnvImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3412,7 +3412,7 @@ void FJsEnvImpl::NewContainer(const v8::FunctionCallbackInfo<v8::Value>& Info)
}
}

void FJsEnvImpl::Start(const FString& ModuleNameOrScript, const TArray<TPair<FString, UObject*>>& Arguments, bool IsScript)
void FJsEnvImpl::Start(const FString& ModuleNameOrScript, const TArray<TPair<FString, UObject*>>& Arguments)
{
#ifdef SINGLE_THREAD_VERIFY
ensureMsgf(BoundThreadId == FPlatformTLS::GetCurrentThreadId(), TEXT("Access by illegal thread!"));
Expand Down Expand Up @@ -3470,38 +3470,14 @@ void FJsEnvImpl::Start(const FString& ModuleNameOrScript, const TArray<TPair<FSt
(void) (ArgvAdd->Call(Context, Argv, 2, Args));
}

if (IsScript)
{
#if V8_MAJOR_VERSION > 8
v8::ScriptOrigin Origin(Isolate, FV8Utils::ToV8String(Isolate, "chunk"));
#else
v8::ScriptOrigin Origin(FV8Utils::ToV8String(Isolate, "chunk"));
#endif
v8::Local<v8::String> Source = FV8Utils::ToV8String(Isolate, ModuleNameOrScript);
v8::TryCatch TryCatch(Isolate);

auto CompiledScript = v8::Script::Compile(Context, Source, &Origin);
if (CompiledScript.IsEmpty())
{
Logger->Error(FV8Utils::TryCatchToString(Isolate, &TryCatch));
return;
}
(void) (CompiledScript.ToLocalChecked()->Run(Context));
if (TryCatch.HasCaught())
{
Logger->Error(FV8Utils::TryCatchToString(Isolate, &TryCatch));
}
}
else
v8::TryCatch TryCatch(Isolate);
v8::Local<v8::Value> Args[] = {FV8Utils::ToV8String(Isolate, ModuleNameOrScript)};
__USE(Require.Get(Isolate)->Call(Context, v8::Undefined(Isolate), 1, Args));
if (TryCatch.HasCaught())
{
v8::TryCatch TryCatch(Isolate);
v8::Local<v8::Value> Args[] = {FV8Utils::ToV8String(Isolate, ModuleNameOrScript)};
__USE(Require.Get(Isolate)->Call(Context, v8::Undefined(Isolate), 1, Args));
if (TryCatch.HasCaught())
{
Logger->Error(FV8Utils::TryCatchToString(Isolate, &TryCatch));
}
Logger->Error(FV8Utils::TryCatchToString(Isolate, &TryCatch));
}

Started = true;
}

Expand Down
3 changes: 1 addition & 2 deletions unreal/Puerts/Source/JsEnv/Private/JsEnvImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,7 @@ class FJsEnvImpl : public IJsEnv, IObjectMapper, public FUObjectArray::FUObjectD

virtual ~FJsEnvImpl() override;

virtual void Start(
const FString& ModuleNameOrScript, const TArray<TPair<FString, UObject*>>& Arguments, bool IsScript) override;
virtual void Start(const FString& ModuleNameOrScript, const TArray<TPair<FString, UObject*>>& Arguments) override;

virtual bool IdleNotificationDeadline(double DeadlineInSeconds) override;

Expand Down
5 changes: 2 additions & 3 deletions unreal/Puerts/Source/JsEnv/Public/JsEnv.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ namespace PUERTS_NAMESPACE
class JSENV_API IJsEnv
{
public:
virtual void Start(const FString& ModuleName, const TArray<TPair<FString, UObject*>>& Arguments, bool IsScript) = 0;
virtual void Start(const FString& ModuleName, const TArray<TPair<FString, UObject*>>& Arguments) = 0;

virtual bool IdleNotificationDeadline(double DeadlineInSeconds) = 0;

Expand Down Expand Up @@ -66,8 +66,7 @@ class JSENV_API FJsEnv // : public TSharedFromThis<FJsEnv> // only a wrapper
std::function<void(const FString&)> InOnSourceLoadedCallback = nullptr, const FString InFlags = FString(),
void* InExternalRuntime = nullptr, void* InExternalContext = nullptr);

void Start(const FString& ModuleName, const TArray<TPair<FString, UObject*>>& Arguments = TArray<TPair<FString, UObject*>>(),
bool IsScript = false);
void Start(const FString& ModuleName, const TArray<TPair<FString, UObject*>>& Arguments = TArray<TPair<FString, UObject*>>());

bool IdleNotificationDeadline(double DeadlineInSeconds);

Expand Down

0 comments on commit 0300971

Please sign in to comment.