Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,11 @@ xmake run <target> --gtest_brief=1
`--with_tests=y`)。

外部依赖只有 luiox-repo 中心包仓直连包(libca / libmcp / libjstr /
libjbytecode / libjzip / libgarena / libjclassfile / libjstd / libjdk_finder /
libjzip / libgarena / libjclassfile / libjstd / libjdk_finder /
libjhasm + xrepo 的 gtest / libarchive / zlib / nlohmann_json;
libjbc 走项目内联包定义,git 直连 + commit 锁),不引入仓内副本、不做 phony
垫片;各包嵌套的 libca 必须用 `add_requireconfs` 钉回同一 `LUIOX_LIBCA_VERSION`。
libjbytecode 仅剩链接闭包兜底(mjbase.lib 的 relaxed_verifier 消费,
RFC 0002 B8 收口后随 mjbase 一并摘除);libjblw 已全退役(B7)。
libjbytecode / libjblw 已全退役(B7 摘 libjblw,B8 8.7 摘 libjbytecode)。

## 约定

Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,7 @@ xmake build mjt-mcp

Dependencies are pulled directly from
[luiox-repo](https://github.com/luiox/luiox-repo): libca, libmcp, libjstr,
libjbytecode (link-closure only, consumed by mjbase's relaxed_verifier until
RFC 0002 B8), libjzip, libgarena, libjclassfile, libjstd, libjdk_finder,
libjzip, libgarena, libjclassfile, libjstd, libjdk_finder,
libjhasm; libarchive / zlib / nlohmann_json come from
[xrepo](https://xmake.io). libjbc is defined as an in-repo inline package
(git direct with a pinned commit, kept at the same version as mjbase). The
Expand Down
3 changes: 1 addition & 2 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ xmake build mjt-mcp
```

依赖经 [luiox-repo](https://github.com/luiox/luiox-repo) 直连拉取:libca、libmcp、
libjstr、libjbytecode(仅链接闭包兜底——mjbase 的 relaxed_verifier 消费,
RFC 0002 B8 收口后摘除)、libjzip、libgarena、libjclassfile、libjstd、
libjstr、libjzip、libgarena、libjclassfile、libjstd、
libjdk_finder、libjhasm;libarchive / zlib / nlohmann_json 走
[xrepo](https://xmake.io)。libjbc 走项目内联包定义(git 直连 + commit 锁,与
mjbase 同版本)。字节码基座本体是 mjbase,打包进 luiox-repo 前以兄弟目录源码级
Expand Down
8 changes: 2 additions & 6 deletions mjt-py/xmake.lua
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,7 @@ if has_config("with_pysdk") then
-- 「消费者在前、被依赖在后」排序(MSVC 对序不敏感,此序为 GNU ld 兼容
-- 口径;链面与 mjt-mcp binary 同款,mcp 编排专有件除外)。
mjt_binary_link_closure("mjbase", "libjhasm",
"libjbytecode_util", "libjbytecode_commons",
"libjbytecode_analysis", "libjbytecode_tree",
"libjbytecode_core", "libgarena", "libjclassfile",
"libjclassfile",
"libjstr", "libjbc", "libjzip")

-- util 层随 pyd 同目录部署(--script / 外部 import mjt 都从 pyd 旁加载)。
Expand Down Expand Up @@ -104,9 +102,7 @@ if has_config("with_pysdk") then
add_files(path.join(mjtSharedSrc, "shared", "decompiler.cpp"),
path.join(mjtSharedSrc, "shared", "jar_remapper.cpp"))
mjt_binary_link_closure("mjbase", "libjhasm",
"libjbytecode_util", "libjbytecode_commons",
"libjbytecode_analysis", "libjbytecode_tree",
"libjbytecode_core", "libgarena", "libjclassfile",
"libjclassfile",
"libjstr", "libjbc", "libjzip")
set_rundir("$(projectdir)")
add_defines('MJT_PYTHON_HOME_DEFAULT="' .. pyHome .. '"')
Expand Down
8 changes: 4 additions & 4 deletions mjt/src/shared/long_path.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,10 @@
#include <io.h>
#include <sys/stat.h>

//windows.h 的 VOID 宏(#define VOID void)会打坏后续 JVM 字节码头的类型
//常量(jbytecode::core::Type::VOID → "static constexpr int void")。本头的
//消费 TU(cmd_jar 等)在包含本头之后还要包含 mjbase/jbytecode 头,故在此
//恢复裸名;本头不再包含其它 Windows 头,无回漂风险。
//windows.h 的 VOID 宏(#define VOID void)会打坏后续 JVM 字节码头用到的
//裸名 VOID 槽位(libjbc 指令/类型建模同形)。本头的消费 TU(cmd_jar 等)
//在包含本头之后还要包含 mjbase 字节码头,故在此恢复裸名;本头不再包含
//其它 Windows 头,无回漂风险。
#ifdef VOID
#undef VOID
#endif
Expand Down
4 changes: 2 additions & 2 deletions mjt/xmake.lua
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ target("mjt-mcp")
-- 被依赖在后),否则 auto 排序把 libca 包归档排到 mjt_shared 前,链接期
-- 报 ca::process 等符号 undefined(Linux CI 实证)。闭包序与 unittest 同款。
mjt_binary_link_closure("mjt_mcp_core", "mjt_shared", "mjbase")
mjt_binary_link_closure("libjhasm", "libjbytecode_util", "libjbytecode_commons", "libjbytecode_analysis", "libjbytecode_tree", "libjbytecode_core", "libgarena", "libjclassfile", "libjstr", "libjbc", "libjzip")
mjt_binary_link_closure("libjhasm", "libjclassfile", "libjstr", "libjbc", "libjzip")
add_files("mcp/src/main.cpp")

set_rundir("$(projectdir)")
Expand All @@ -80,7 +80,7 @@ if has_config("with_tests") then
-- xmake 3.x 不把静态 target 依赖传进 binary 链接:显式给全闭包,按
-- 「消费者在前、被依赖在后」排序,另含 libmcp 及其 http/net/io 链。
mjt_binary_link_closure("mjt_mcp_core", "mjt_shared", "mjbase")
mjt_binary_link_closure("libjhasm", "libjbytecode_util", "libjbytecode_commons", "libjbytecode_analysis", "libjbytecode_tree", "libjbytecode_core", "libgarena", "libjclassfile", "libjstr", "libjbc", "libjzip", "test_helper", "libjdk_finder")
mjt_binary_link_closure("libjhasm", "libjclassfile", "libjstr", "libjbc", "libjzip", "test_helper", "libjdk_finder")
-- 注:libca_i18n 为 headeronly target(无 .lib 产物),只入 add_deps 不入 add_links。
add_includedirs("mcp/src")
add_files("mcp/test/*.cpp")
Expand Down
2 changes: 0 additions & 2 deletions test_helper/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,6 @@ and builds a `name → absolute_path` map:
| File location | Content (name) | Resolved path |
|---|---|---|
| `.project_root_file` | `mjt` | *project root* |
| `libs/libjbytecode/.project_root_file` | `libjbytecode` | `libs/libjbytecode/` |
| `libs/libjbytecode/core/.project_root_file` | `libjbytecode_core` | `libs/libjbytecode/core/` |
| ... | ... | ... |

Blacklist (directories skipped during scan): `.`-prefix, `build`-prefix, `node_modules`.
Expand Down
4 changes: 2 additions & 2 deletions test_helper/jdk_fixture.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -424,8 +424,8 @@ inline ExecResult runJavaMain(const JdkToolchain& tc, const fs::path& classpath,
//共享 JVM 行为等价 harness:写 class(es)+Runner.java → javac → java → 抓 stdout。
//
//收敛此前散在多处的同一份逻辑(mbase runJvmMainClasses、mjt runJvmMain)。
//层级放 test::jdk(只依赖 jdk_finder+filesystem,不碰
//libjbytecode/libjzip),供全线复用。JDK 不可用返回 nullopt,调用方 GTEST_SKIP。
//层级放 test::jdk(只依赖 jdk_finder+filesystem,不碰字节码/zip 库),
//供全线复用。JDK 不可用返回 nullopt,调用方 GTEST_SKIP。
//---------------------------------------------------------------------------

///把控制台捕获的 CRLF 归一化为 LF,使跨平台 stdout 比对一致。
Expand Down
4 changes: 2 additions & 2 deletions unittest/xmake.lua
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ target("libjhasm_unittest")
set_default(false)

add_deps("test_helper")
add_packages("libjhasm", "libjbc", "libgarena", "libjstr", "libca")
add_packages("libjhasm", "libjbc", "libjstr", "libca")
-- libjhasm 0.3.2 后端换 libjbc(B4):libjblw/libjbytecode 出链;套件的
-- 产物回读验证直连 libjbc readClass。libjhasm/libjbc/libjdk_finder 已
-- 包化,保留在闭包里维持 GNU ld 消费者在前。
mjt_binary_link_closure("libjhasm", "libjbc", "libgarena", "libjstr", "test_helper", "libjdk_finder")
mjt_binary_link_closure("libjhasm", "libjbc", "libjstr", "test_helper", "libjdk_finder")
add_packages("gtest")
add_files("jhasm/main.cpp", "jhasm/*_test.cpp")
add_includedirs("jhasm")
Expand Down
8 changes: 1 addition & 7 deletions xmake.lua
Original file line number Diff line number Diff line change
Expand Up @@ -131,26 +131,20 @@ add_requires("libca " .. LUIOX_LIBCA_VERSION, {configs = {modules = LUIOX_LIBCA_
-- luiox 家族直连包消费 0.0.2(libca 0.0.14 对齐版)。
add_requires("libmcp 0.1.0")
add_requires("libjstr 0.0.2")
add_requires("libjbytecode 0.0.2")
add_requires("libjzip 0.0.2")
add_requires("libgarena 0.0.2")
add_requires("libjclassfile 0.0.2")
-- libjbc 走项目内联包定义(git 直连 + commit 锁,与 mjbase 同版本):
-- luiox-repo 的发布版落后于 mjbase 需要的面,且内联定义不吃 requireconfs,
-- 其嵌套 libca 由定义内的 add_deps 钉到上面的单源版本。
includes("xmake/packages/libjbc.lua")
add_requires("libjbc 0.4.18")
add_requires("libjbc 0.4.19")
add_requires("libjstd 0.0.1")
add_requires("libjdk_finder 0.1.0")
add_requires("libjhasm 0.3.2")
-- 嵌套 libca 全路径钉定,缺一条就多一个实例。
add_requireconfs("libmcp.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}})
add_requireconfs("libjstr.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}})
add_requireconfs("libjbytecode.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}})
add_requireconfs("libjbytecode.libjstr.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}})
add_requireconfs("libjbytecode.libgarena.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}})
add_requireconfs("libjzip.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}})
add_requireconfs("libgarena.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}})
add_requireconfs("libjclassfile.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}})
add_requireconfs("libjclassfile.libjstr.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}})
add_requireconfs("libjstd.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}})
Expand Down
2 changes: 2 additions & 0 deletions xmake/packages/libjbc.lua
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ package("libjbc")
add_versions("0.4.17", "2a44a3749d4cbca04a6221c37b78a56d4620d254") -- v0.4.17 发版(tag 同 commit) 2026-10-20
-- 0.4.18 = MethodEditor(从零建方法门面,PR #9)+ MethodParameters 接收者行放行(PR #11,main 合入头)。
add_versions("0.4.18", "ada334a12ec875ca9769bd5d4cb1f7e8494d2ebd") -- PR #11 合入 main 头 2026-10-26
-- 0.4.19 = CodeDom/CodeEditor move-range 指令区间整体搬移原语(PR #12)+ self-version 对齐(PR #13,main 合入头)。
add_versions("0.4.19", "81173a0f724f9d0369fedc1d5f95ccd14fe984a4") -- PR #13 合入 main 头 2026-10-28

-- 嵌套 libca 直接钉到本仓单源版本:项目内联包定义不吃 deps.lua 的
-- **.libca / libjbc.libca requireconfs(实测),裸声明会解析到仓库最新版
Expand Down
Loading