mirror of https://github.com/microsoft/vcpkg.git
[luajit] Update, arm64-windows, test port (#49565)
This commit is contained in:
parent
36d042a7e6
commit
884cae8dd3
|
|
@ -1,14 +1,13 @@
|
|||
diff --git a/src/Makefile b/src/Makefile
|
||||
index 30d64be..b753ea1 100644
|
||||
index bac0341e..b867326f 100644
|
||||
--- a/src/Makefile
|
||||
+++ b/src/Makefile
|
||||
@@ -316,9 +316,6 @@ ifeq (,$(shell $(TARGET_CC) -o /dev/null -c -x c /dev/null -fno-stack-protector
|
||||
TARGET_XCFLAGS+= -fno-stack-protector
|
||||
@@ -319,7 +319,7 @@ ifeq (,$(shell $(TARGET_CC) -o /dev/null -c -x c /dev/null -fno-stack-protector
|
||||
endif
|
||||
ifeq (Darwin,$(TARGET_SYS))
|
||||
- ifeq (,$(MACOSX_DEPLOYMENT_TARGET))
|
||||
ifeq (,$(MACOSX_DEPLOYMENT_TARGET))
|
||||
- $(error missing: export MACOSX_DEPLOYMENT_TARGET=XX.YY)
|
||||
- endif
|
||||
+ # relying on vcpkg toolchain flags
|
||||
endif
|
||||
TARGET_STRIP+= -x
|
||||
TARGET_XCFLAGS+= -DLUAJIT_UNWIND_EXTERNAL
|
||||
TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup -fPIC
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
diff --git a/etc/luajit.pc b/etc/luajit.pc
|
||||
index 39e1e57..3837d3b 100644
|
||||
--- a/etc/luajit.pc
|
||||
+++ b/etc/luajit.pc
|
||||
@@ -21,5 +21,5 @@ URL: https://luajit.org
|
||||
Version: ${version}
|
||||
Requires:
|
||||
Libs: -L${libdir} -l${libname}
|
||||
-Libs.private: -Wl,-E -lm -ldl
|
||||
+Libs.private: -lm -ldl
|
||||
Cflags: -I${includedir}
|
||||
|
|
@ -7,6 +7,7 @@ LUAJIT_BUILDMODE=
|
|||
LUAJIT_BUILDVM_X=
|
||||
LUAJIT_DASM_ARCHS=
|
||||
LUAJIT_PREFIX=
|
||||
LUAJIT_HOST_LUA=
|
||||
for OPTION; do
|
||||
case "${OPTION}" in
|
||||
--prefix=*)
|
||||
|
|
@ -21,6 +22,9 @@ for OPTION; do
|
|||
DASM_ARCHS=*)
|
||||
LUAJIT_DASM_ARCHS="${OPTION#DASM_ARCHS=}"
|
||||
;;
|
||||
HOST_LUA=*)
|
||||
LUAJIT_HOST_LUA="${OPTION#HOST_LUA=}"
|
||||
;;
|
||||
LJARCH=*)
|
||||
LJARCH="${OPTION#LJARCH=}"
|
||||
;;
|
||||
|
|
@ -33,6 +37,7 @@ COMMON_OPTIONS += 'E=@:' 'Q='
|
|||
COMMON_OPTIONS += 'BUILDMODE=${LUAJIT_BUILDMODE}'
|
||||
COMMON_OPTIONS += 'PREFIX=${LUAJIT_PREFIX}'
|
||||
COMMON_OPTIONS += 'INSTALL_TNAME=luajit'
|
||||
COMMON_OPTIONS += 'INSTALL_TSYMNAME=luajit-symlink'
|
||||
|
||||
BUILD_OPTIONS += 'CC=${CC}'
|
||||
BUILD_OPTIONS += 'CCDEBUG='
|
||||
|
|
@ -49,6 +54,7 @@ else
|
|||
BUILD_OPTIONS += 'HOST_CC=:'
|
||||
BUILD_OPTIONS += 'BUILDVM_T='
|
||||
BUILD_OPTIONS += 'BUILDVM_X=${LUAJIT_BUILDVM_X}'
|
||||
BUILD_OPTIONS += 'HOST_LUA=${LUAJIT_HOST_LUA}'
|
||||
endif
|
||||
|
||||
# used by src/Makefile, best effort from manual '<CC> [-m32] -E src/lj_arch.h -dM'
|
||||
|
|
@ -78,9 +84,12 @@ all:
|
|||
|
||||
install:
|
||||
\$(MAKE) install \$(COMMON_OPTIONS)
|
||||
ifeq (${LJARCH},)
|
||||
mkdir -p "\$\${DESTDIR}\$(BUILDVM_PREFIX)"
|
||||
install -m 0755 "src/host/minilua\$(EXECUTABLE_SUFFIX)" "\$\${DESTDIR}\$(BUILDVM_PREFIX)/minilua\$(EXECUTABLE_SUFFIX)"
|
||||
for DA in \$(DASM_ARCHS); do \\
|
||||
mkdir -p "\$\${DESTDIR}\$(BUILDVM_PREFIX)"; \\
|
||||
install -m 0755 "src/host/buildvm-\$\$DA\$(EXECUTABLE_SUFFIX)" "\$\${DESTDIR}\$(BUILDVM_PREFIX)/buildvm-\$\$DA\$(EXECUTABLE_SUFFIX)" || exit 1 ; \\
|
||||
done
|
||||
endif
|
||||
|
||||
END_MAKEFILE
|
||||
|
|
|
|||
|
|
@ -1,29 +1,48 @@
|
|||
diff --git a/src/msvcbuild.bat b/src/msvcbuild.bat
|
||||
index aab4ef1..e92c486 100644
|
||||
index e0df88bc..0ccf4d04 100644
|
||||
--- a/src/msvcbuild.bat
|
||||
+++ b/src/msvcbuild.bat
|
||||
@@ -79,10 +79,9 @@ buildvm -m folddef -o lj_folddef.h lj_opt_fold.c
|
||||
@set LJCOMPILE=%LJCOMPILE% /Zi %DEBUGCFLAGS%
|
||||
@set LJLINK=%LJLINK% /opt:ref /opt:icf /incremental:no
|
||||
:NODEBUG
|
||||
-@set LJLINK=%LJLINK% /%BUILDTYPE%
|
||||
@if "%1"=="amalg" goto :AMALGDLL
|
||||
@if "%1"=="static" goto :STATIC
|
||||
-%LJCOMPILE% /MD /DLUA_BUILD_AS_DLL lj_*.c lib_*.c
|
||||
+%LJCOMPILE% /DLUA_BUILD_AS_DLL lj_*.c lib_*.c /Fdlua51.pdb
|
||||
@if errorlevel 1 goto :BAD
|
||||
%LJLINK% /DLL /out:%LJDLLNAME% lj_*.obj lib_*.obj
|
||||
@if errorlevel 1 goto :BAD
|
||||
@@ -102,7 +101,7 @@ buildvm -m folddef -o lj_folddef.h lj_opt_fold.c
|
||||
@@ -18,12 +18,14 @@
|
||||
@rem Add more debug flags here, e.g. DEBUGCFLAGS=/DLUA_USE_ASSERT
|
||||
@set DEBUGCFLAGS=
|
||||
@set LJCOMPILE=cl /nologo /c /O2 /W3 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_STDIO_INLINE=__declspec(dllexport)__inline
|
||||
-@set LJDYNBUILD=/DLUA_BUILD_AS_DLL /MD
|
||||
-@set LJDYNBUILD_DEBUG=/DLUA_BUILD_AS_DLL /MDd
|
||||
-@set LJCOMPILETARGET=/Zi
|
||||
-@set LJLINKTYPE=/DEBUG /RELEASE
|
||||
-@set LJLINKTYPE_DEBUG=/DEBUG
|
||||
-@set LJLINKTARGET=/OPT:REF /OPT:ICF /INCREMENTAL:NO
|
||||
+@rem vvv vcpkg flags via env
|
||||
+@set LJDYNBUILD=/DLUA_BUILD_AS_DLL
|
||||
+@set LJDYNBUILD_DEBUG=/DLUA_BUILD_AS_DLL
|
||||
+@set LJCOMPILETARGET=
|
||||
+@set LJLINKTYPE=
|
||||
+@set LJLINKTYPE_DEBUG=
|
||||
+@set LJLINKTARGET=
|
||||
+@rem ^^^ vcpkg flags via env
|
||||
@set LJLINK=link /nologo
|
||||
@set LJMT=mt /nologo
|
||||
@set LJLIB=lib /nologo /nodefaultlib
|
||||
@@ -141,7 +143,7 @@ buildvm -m folddef -o lj_folddef.h lj_opt_fold.c
|
||||
if exist %LJDLLNAME%.manifest^
|
||||
%LJMT% -manifest %LJDLLNAME%.manifest -outputresource:%LJDLLNAME%;2
|
||||
|
||||
-%LJCOMPILE% luajit.c
|
||||
+%LJCOMPILE% luajit.c /Fdluajit.pdb
|
||||
@if errorlevel 1 goto :BAD
|
||||
%LJLINK% /out:luajit.exe luajit.obj %LJLIBNAME%
|
||||
%LJLINK% /OUT:luajit.exe luajit.obj %LJLIBNAME%
|
||||
@if errorlevel 1 goto :BAD
|
||||
@@ -124,4 +123,5 @@ if exist luajit.exe.manifest^
|
||||
@@ -157,6 +159,9 @@ if exist luajit.exe.manifest^
|
||||
@goto :END
|
||||
:SETHOSTVARS
|
||||
@if "%VSCMD_ARG_HOST_ARCH%_%VSCMD_ARG_TGT_ARCH%" equ "x64_arm64" (
|
||||
+ @echo Temporarily configuring MSVC for x64 host tools while building for arm64
|
||||
+ set _CL_=
|
||||
+ set _LINK_=
|
||||
call "%VSINSTALLDIR%Common7\Tools\VsDevCmd.bat" -arch=%VSCMD_ARG_HOST_ARCH% -no_logo
|
||||
echo on
|
||||
)
|
||||
@@ -169,4 +174,5 @@ if exist luajit.exe.manifest^
|
||||
@goto :END
|
||||
:FAIL
|
||||
@echo You must open a "Visual Studio Command Prompt" to run this script
|
||||
|
|
|
|||
|
|
@ -1,27 +1,30 @@
|
|||
set(extra_patches "")
|
||||
if (VCPKG_TARGET_IS_OSX)
|
||||
list(APPEND extra_patches 005-do-not-pass-ld-e-macosx.patch)
|
||||
endif()
|
||||
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH SOURCE_PATH
|
||||
REPO LuaJIT/LuaJIT
|
||||
REF d0e88930ddde28ff662503f9f20facf34f7265aa #2023-01-04
|
||||
SHA512 e4111b2d7eeb05676c62d69da13a380a51d98f082c0be575a414c09ee27ff17d101b5b4a95e1b8a1bad14d55a4d2b305718a11878fbf36e0d3d48e62ba03407f
|
||||
REF 707c12bf00dafdfd3899b1a6c36435dbbf6c7022 # 2026-01-09
|
||||
SHA512 c02b3600577936b9de04358fe03b3d995ee68e3416174c287022100aa0862b4e138c88e459b18a590dda7c08c1b6aded440bebfc80bbead2ae6b54cc4c82a2e9
|
||||
HEAD_REF master
|
||||
PATCHES
|
||||
msvcbuild.patch
|
||||
003-do-not-set-macosx-deployment-target.patch
|
||||
${extra_patches}
|
||||
)
|
||||
|
||||
vcpkg_cmake_get_vars(cmake_vars_file)
|
||||
include("${cmake_vars_file}")
|
||||
|
||||
if(VCPKG_DETECTED_MSVC)
|
||||
# Due to lack of better MSVC cross-build support, just always build the host
|
||||
# minilua tool with the target toolchain. This will work for native builds and
|
||||
# for targeting x86 from x64 hosts. (UWP and ARM64 is unsupported.)
|
||||
set(VSCMD_ARG_TGT_ARCH "${VCPKG_TARGET_ARCHITECTURE}")
|
||||
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
|
||||
if(DEFINED ENV{PROCESSOR_ARCHITEW6432})
|
||||
set(host_arch $ENV{PROCESSOR_ARCHITEW6432})
|
||||
else()
|
||||
set(host_arch $ENV{PROCESSOR_ARCHITECTURE})
|
||||
endif()
|
||||
if(host_arch MATCHES "(amd|AMD)64")
|
||||
set(ENV{VSCMD_ARG_HOST_ARCH} "x64")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
vcpkg_list(SET options)
|
||||
if (VCPKG_LIBRARY_LINKAGE STREQUAL "static")
|
||||
list(APPEND options "MSVCBUILD_OPTIONS=static")
|
||||
|
|
@ -43,12 +46,17 @@ if(VCPKG_DETECTED_MSVC)
|
|||
endif()
|
||||
|
||||
vcpkg_copy_pdbs()
|
||||
|
||||
# jit including the specific vmdef.lua generated during the build
|
||||
file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/src/jit" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/luajit/lua")
|
||||
|
||||
else()
|
||||
vcpkg_list(SET options)
|
||||
if(VCPKG_CROSSCOMPILING)
|
||||
list(APPEND options
|
||||
"LJARCH=${VCPKG_TARGET_ARCHITECTURE}"
|
||||
"BUILDVM_X=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/buildvm-${VCPKG_TARGET_ARCHITECTURE}${VCPKG_HOST_EXECUTABLE_SUFFIX}"
|
||||
"HOST_LUA=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/minilua${VCPKG_HOST_EXECUTABLE_SUFFIX}"
|
||||
)
|
||||
endif()
|
||||
|
||||
|
|
@ -102,10 +110,9 @@ file(REMOVE_RECURSE
|
|||
"${CURRENT_PACKAGES_DIR}/share/man"
|
||||
)
|
||||
|
||||
file(REMOVE "${CURRENT_PACKAGES_DIR}/bin/luajit-symlink" "${CURRENT_PACKAGES_DIR}/debug/bin/luajit-symlink")
|
||||
vcpkg_copy_tools(TOOL_NAMES luajit AUTO_CLEAN)
|
||||
|
||||
vcpkg_fixup_pkgconfig()
|
||||
|
||||
file(COPY "${SOURCE_PATH}/src/jit/" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/luajit/jit")
|
||||
|
||||
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYRIGHT")
|
||||
|
|
|
|||
|
|
@ -1,12 +1,19 @@
|
|||
{
|
||||
"name": "luajit",
|
||||
"version-date": "2023-01-04",
|
||||
"port-version": 7,
|
||||
"version-date": "2026-01-09",
|
||||
"description": "LuaJIT is a Just-In-Time (JIT) compiler for the Lua programming language.",
|
||||
"homepage": "https://github.com/LuaJIT/LuaJIT",
|
||||
"license": "MIT",
|
||||
"supports": "!uwp & !(arm64 & windows)",
|
||||
"supports": "!uwp",
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "luajit",
|
||||
"host": true,
|
||||
"features": [
|
||||
"buildvm-32"
|
||||
],
|
||||
"platform": "!native & (arm32 | x86) & (!windows | mingw)"
|
||||
},
|
||||
{
|
||||
"name": "luajit",
|
||||
"host": true,
|
||||
|
|
@ -15,14 +22,6 @@
|
|||
],
|
||||
"platform": "!native & (arm64 | x64) & (!windows | mingw)"
|
||||
},
|
||||
{
|
||||
"name": "luajit",
|
||||
"host": true,
|
||||
"features": [
|
||||
"buildvm-32"
|
||||
],
|
||||
"platform": "!native & ((arm & !arm64) | x86) & (!windows | mingw)"
|
||||
},
|
||||
{
|
||||
"name": "vcpkg-cmake",
|
||||
"host": true
|
||||
|
|
@ -39,7 +38,7 @@
|
|||
"features": {
|
||||
"buildvm-32": {
|
||||
"description": "Install host tools for 32 bit targets",
|
||||
"supports": "native & ((arm & !arm64) | x86) & (!windows | mingw)"
|
||||
"supports": "native & (arm32 | x86) & (!windows | mingw)"
|
||||
},
|
||||
"buildvm-64": {
|
||||
"description": "Install host tools for 64 bit targets",
|
||||
|
|
|
|||
|
|
@ -152,7 +152,6 @@ libxt:x64-windows=fail
|
|||
live555(uwp)=fail
|
||||
llgl(uwp)=fail # fails due to an outdated gcc version
|
||||
log4cplus(uwp)=fail
|
||||
luajit:arm64-windows=fail
|
||||
luasec:x64-windows-static=fail
|
||||
mesa:x64-linux=fail # Missing dependent libraries.
|
||||
mesa:x64-windows-static=fail # Due to static crt.
|
||||
|
|
@ -807,7 +806,7 @@ llgl:arm64-android=fail
|
|||
llgl:x64-android=fail
|
||||
llgl[vulkan]:x64-linux=feature-fails
|
||||
llgl[vulkan](osx) = cascade # no vulkan sdk installed
|
||||
luajit:arm-neon-android = cascade
|
||||
luajit:arm-neon-android = cascade # needs same pointer size for host
|
||||
luasec:x64-linux = cascade
|
||||
luv:arm64-windows = cascade
|
||||
magma(uwp | osx) = cascade
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
|
||||
|
||||
vcpkg_find_acquire_program(PKGCONFIG)
|
||||
set(ENV{PKG_CONFIG} "${PKGCONFIG}")
|
||||
|
||||
vcpkg_cmake_configure(
|
||||
SOURCE_PATH "${CURRENT_PORT_DIR}/project"
|
||||
)
|
||||
vcpkg_cmake_install()
|
||||
|
||||
if("run-programs" IN_LIST FEATURES)
|
||||
# luajit executable"
|
||||
message(STATUS "Running luajit")
|
||||
vcpkg_execute_required_process(
|
||||
COMMAND "${CURRENT_INSTALLED_DIR}/tools/luajit/luajit" -e "print(package.path)"
|
||||
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
|
||||
LOGNAME execute-luajit-${TARGET_TRIPLET}
|
||||
)
|
||||
# luajit executable and "${CURRENT_INSTALLED_DIR}/tools/luajit/jit/v.lua"
|
||||
message(STATUS "Running luajit with v.lua")
|
||||
vcpkg_execute_required_process(
|
||||
COMMAND "${CURRENT_INSTALLED_DIR}/tools/luajit/luajit" -jv -e "for i=1,1000 do for j=1,1000 do end end"
|
||||
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
|
||||
LOGNAME execute-luajit-v.lua-${TARGET_TRIPLET}
|
||||
)
|
||||
# user executable (this port)
|
||||
if(CMAKE_HOST_WIN32)
|
||||
vcpkg_host_path_list(PREPEND ENV{PATH} "${CURRENT_INSTALLED_DIR}/bin")
|
||||
elseif(CMAKE_HOST_APPLE)
|
||||
vcpkg_host_path_list(PREPEND ENV{DYLD_LIBRARY_PATH} "${CURRENT_INSTALLED_DIR}/lib")
|
||||
else()
|
||||
vcpkg_host_path_list(PREPEND ENV{LD_LIBRARY_PATH} "${CURRENT_INSTALLED_DIR}/lib")
|
||||
endif()
|
||||
message(STATUS "Running main")
|
||||
vcpkg_execute_required_process(
|
||||
COMMAND "${CURRENT_PACKAGES_DIR}/bin/${PORT}/main"
|
||||
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
|
||||
LOGNAME execute-main-${TARGET_TRIPLET}
|
||||
)
|
||||
endif()
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
cmake_minimum_required(VERSION 3.16)
|
||||
project(luajit-test C)
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(LUAJIT luajit IMPORTED_TARGET REQUIRED)
|
||||
|
||||
add_executable(main main.c)
|
||||
target_link_libraries(main PRIVATE PkgConfig::LUAJIT)
|
||||
install(TARGETS main RUNTIME DESTINATION bin/vcpkg-ci-luajit)
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#include <lua.h>
|
||||
#include <lualib.h>
|
||||
#include <lauxlib.h>
|
||||
#include <luajit.h>
|
||||
|
||||
static const int LUAJIT_SETMODE_SUCCESS = 1;
|
||||
|
||||
#
|
||||
|
||||
int main()
|
||||
{
|
||||
/* FAQ, https://luajit.org/faq.html
|
||||
* "Make sure you use luaL_newstate. Avoid using lua_newstate ..."
|
||||
* "Make sure you use luaL_openlibs and not ... luaopen_base etc. directly."
|
||||
*/
|
||||
lua_State* L = luaL_newstate();
|
||||
if (L == NULL) {
|
||||
printf("luaL_newstate failed\n");
|
||||
return 2;
|
||||
}
|
||||
|
||||
luaL_openlibs(L);
|
||||
|
||||
/* API Extensions, https://luajit.org/ext_c_api.html */
|
||||
int result = luaJIT_setmode(L, 0, LUAJIT_MODE_ENGINE | LUAJIT_MODE_FLUSH);
|
||||
if (result != LUAJIT_SETMODE_SUCCESS) {
|
||||
printf("luaJIT_setmode failed\n");
|
||||
}
|
||||
else if (luaL_dostring(L, "print('luaJIT_setmode succeeded')\nprint(package.path)") == LUA_OK) {
|
||||
lua_pop(L, lua_gettop(L));
|
||||
}
|
||||
|
||||
lua_close(L);
|
||||
|
||||
return result == LUAJIT_SETMODE_SUCCESS ? 0 : 1;
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"name": "vcpkg-ci-luajit",
|
||||
"version-string": "ci",
|
||||
"description": "Validate port luajit",
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "luajit",
|
||||
"default-features": false
|
||||
},
|
||||
{
|
||||
"name": "vcpkg-cmake",
|
||||
"host": true
|
||||
}
|
||||
],
|
||||
"default-features": [
|
||||
{
|
||||
"$comment": "The platform expression is tuned for vcpkg CI.",
|
||||
"name": "run-programs",
|
||||
"platform": "native | (!android & !arm64)"
|
||||
}
|
||||
],
|
||||
"features": {
|
||||
"run-programs": {
|
||||
"description": "Run luajit and user program"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -6093,8 +6093,8 @@
|
|||
"port-version": 0
|
||||
},
|
||||
"luajit": {
|
||||
"baseline": "2023-01-04",
|
||||
"port-version": 7
|
||||
"baseline": "2026-01-09",
|
||||
"port-version": 0
|
||||
},
|
||||
"luasec": {
|
||||
"baseline": "1.3.2",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"git-tree": "7e5caa094d98315f5c7febfb40faf2d430d91d3e",
|
||||
"version-date": "2026-01-09",
|
||||
"port-version": 0
|
||||
},
|
||||
{
|
||||
"git-tree": "8d6aa0d4fd0ef4005685e468090f35e3a9a00802",
|
||||
"version-date": "2023-01-04",
|
||||
|
|
|
|||
Loading…
Reference in New Issue