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
8 changes: 5 additions & 3 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
# Artifact name
name: telecord-${{ matrix.arch }}-linux.build
name: yui-${{ matrix.arch }}-linux.build
path: tmp/build

build-windows:
Expand Down Expand Up @@ -108,7 +108,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
# Artifact name
name: telecord-${{ matrix.arch }}-win32.build
name: yui-${{ matrix.arch }}-win32.build
path: tmp/build

upload:
Expand Down Expand Up @@ -146,6 +146,7 @@ jobs:
chmod +x pyuploadtool-x86_64.AppImage
./pyuploadtool-x86_64.AppImage \
**build/*.node
**build/*.dll

- name: Release
uses: softprops/action-gh-release@v1
Expand All @@ -156,4 +157,5 @@ jobs:
name: ${{ steps.tag.outputs.name }}
tag_name: ${{ steps.tag.outputs.tag }}
files: |
**build/*.node
**build/*.node
**build/*.dll
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"cmake.sourceDirectory": "${workspaceFolder}",
"clangd.path": "clangd-19",
"clangd.path": "clangd",
"clangd.arguments": [
// 让 Clangd 生成更详细的日志
// "--log=verbose",
Expand Down
53 changes: 23 additions & 30 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ message("LD_LIBRARY_PATH:" ${LD_LIBRARY_PATH})

find_package(Protobuf CONFIG REQUIRED)
find_package(spdlog CONFIG REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GNUTLS REQUIRED IMPORTED_TARGET gnutls)

find_program(PNPM_EXECUTABLE pnpm)
if(NOT PNPM_EXECUTABLE)
Expand Down Expand Up @@ -67,7 +65,24 @@ execute_process(COMMAND
OUTPUT_VARIABLE CMAKE_JS_INC
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# string(REPLACE ";" "\;" CMAKE_JS_INC "${CMAKE_JS_INC}")
execute_process(COMMAND
${PNPM_EXECUTABLE} cmake-js print-cmakejs-lib --silent -l error
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE CMAKE_JS_LIB
OUTPUT_STRIP_TRAILING_WHITESPACE
)

if(NOT EXISTS ${CMAKE_JS_LIB})
execute_process(COMMAND
node tools/windows/download_lib.js
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE ret
)
if(ret EQUAL "1")
message( FATAL_ERROR "Bad exit status")
endif()
endif()

message("CMAKE_JS_INC:" ${CMAKE_JS_INC})
foreach(item IN LISTS CMAKE_JS_INC)
message("include: ${item}")
Expand Down Expand Up @@ -113,21 +128,6 @@ add_library(${MODULE_NAME}
src/install/hook_msf.cc
${CMAKE_JS_SRC}
)
if (WIN32)
message("生成 QQ.lib")
execute_process(COMMAND
${CMAKE_AR} /def:QQ.def /out:QQ.lib /machine:x86 ${CMAKE_STATIC_LINKER_FLAGS}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/thirds/external
COMMAND_ERROR_IS_FATAL ANY
)
execute_process(COMMAND
${CMAKE_AR} /def:QQ64.def /out:QQ64.lib /machine:x64 ${CMAKE_STATIC_LINKER_FLAGS}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/thirds/external
COMMAND_ERROR_IS_FATAL ANY
)
target_link_libraries(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/thirds/external/QQ.lib)
target_link_libraries(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/thirds/external/QQ64.lib)
endif()

if (WIN32)
target_link_libraries(${MODULE_NAME} subhook)
Expand All @@ -143,18 +143,11 @@ target_link_libraries(${MODULE_NAME} ${CMAKE_JS_LIB})
target_compile_definitions(${MODULE_NAME} PRIVATE $<$<CONFIG:Debug>:NATIVE_DEBUG=1>)
set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "" SUFFIX ".node")

################preload###############

add_library(preload
SHARED
src/preload.cc
${CMAKE_JS_SRC}
)
target_link_libraries(preload PRIVATE spdlog::spdlog)
target_link_libraries(preload PRIVATE PkgConfig::GNUTLS)
target_include_directories(preload PRIVATE ${GNUTLS_INCLUDE_DIRS})
set_target_properties(preload PROPERTIES PREFIX "" SUFFIX ".node")

if (WIN32)
add_subdirectory(src/qqnt)
else()
add_subdirectory(src/preload)
endif()
################test##################


Expand Down
19 changes: 19 additions & 0 deletions src/preload/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@

################preload###############

find_package(PkgConfig REQUIRED)
pkg_check_modules(GNUTLS REQUIRED IMPORTED_TARGET gnutls)

add_library(preload
SHARED
./preload.cc
${CMAKE_JS_SRC}
)

target_link_libraries(preload PRIVATE spdlog::spdlog)
target_link_libraries(preload PRIVATE PkgConfig::GNUTLS)
target_include_directories(preload PRIVATE ${GNUTLS_INCLUDE_DIRS})
# Ensure we also link with cmake-js / node libs on non-Windows
target_link_libraries(preload PRIVATE ${CMAKE_JS_LIB})
set_target_properties(preload PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set_target_properties(preload PROPERTIES PREFIX "" SUFFIX ".node")
7 changes: 4 additions & 3 deletions src/preload.cc → src/preload/preload.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,20 @@
#include <dlfcn.h>
#include <gnutls/gnutls.h>

#if defined(__linux__) || defined(__APPLE__)
extern "C" {
// Keep the existing registration helper
void qq_magic_napi_register(napi_module *m) {
spdlog::info("call qq_magic_napi_register");
napi_module_register(m);
}

#if defined(__linux__) || defined(__APPLE__)
// Ensure gnutls_xxx is linked in
void * _force_gnutls_global_init __attribute__((used)) = (void *)gnutls_global_init;
}
#else

#endif

}

static Napi::Object Init(Napi::Env env, Napi::Object exports) {

Expand Down
25 changes: 25 additions & 0 deletions src/qqnt/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

################QQNT###############

add_library(QQNT
SHARED
./qqnt.cc
)

target_link_libraries(QQNT PRIVATE spdlog::spdlog)
# Also link the project's QQ64 import library which contains many Cr_z_* exports
# (generated earlier via ${CMAKE_AR}). If present, link it so QQNT resolves zlib wrappers.
target_link_libraries(QQNT PRIVATE ${CMAKE_JS_LIB})
set(QQNT_DEF ${PROJECT_SOURCE_DIR}/src/qqnt/qqnt.def)
if(EXISTS ${QQNT_DEF})
if(MSVC)
set_target_properties(QQNT PROPERTIES LINK_FLAGS "/DEF:${QQNT_DEF}")
else()
target_link_options(QQNT PRIVATE "-Wl,--input-def=${QQNT_DEF}")
endif()
else()
message(FATAL_ERROR "QQNT.def not found")
endif()
# set_target_properties(QQNT PROPERTIES RUNTIME_OUTPUT_DIRECTORY "D:/Program Files/Tencent/QQNT/versions/9.9.21-39038/resources/app")
set_target_properties(QQNT PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set_target_properties(QQNT PROPERTIES PREFIX "" SUFFIX ".dll")
Loading
Loading