Skip to content

Commit acc3bcf

Browse files
authored
[luajit] Fix build failure that resulted in no output. (#26360)
1 parent 5f83f03 commit acc3bcf

6 files changed

Lines changed: 63 additions & 70 deletions

File tree

ports/luajit/002-fix-crt-linkage.patch

Lines changed: 0 additions & 44 deletions
This file was deleted.

ports/luajit/001-fix-build-path.patch renamed to ports/luajit/004-fix-build-path-and-crt-linkage.patch

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
diff --git a/src/msvcbuild.bat b/src/msvcbuild.bat
2-
index aab4ef1..ff9df57 100644
3-
--- a/src/msvcbuild.bat
4-
+++ b/src/msvcbuild.bat
5-
@@ -15,19 +15,20 @@
1+
diff --git a/src/msvcbuild.bat b/src/msvcbuild.bat
2+
index d323d8d..6e61150 100644
3+
--- a/src/msvcbuild.bat
4+
+++ b/src/msvcbuild.bat
5+
@@ -15,19 +15,20 @@
66
@setlocal
77
@rem Add more debug flags here, e.g. DEBUGCFLAGS=/DLUA_USE_APICHECK
88
@set DEBUGCFLAGS=
@@ -15,28 +15,45 @@ index aab4ef1..ff9df57 100644
1515
-@set DASMDIR=..\dynasm
1616
+@set DASMDIR=%SOURCEDIR%\..\dynasm
1717
@set DASM=%DASMDIR%\dynasm.lua
18-
@set DASC=vm_x64.dasc
18+
-@set DASC=vm_x64.dasc
19+
+@set DASC=%SOURCEDIR%\vm_x64.dasc
1920
@set LJDLLNAME=lua51.dll
2021
@set LJLIBNAME=lua51.lib
2122
@set BUILDTYPE=release
2223
-@set ALL_LIB=lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c lib_buffer.c
23-
+@set ALL_LIB=%SOURCEDIR%\lib_base.c %SOURCEDIR%\lib_math.c %SOURCEDIR%\lib_bit.c %SOURCEDIR%\lib_string.c %SOURCEDIR%\lib_table.c %SOURCEDIR%\lib_io.c %SOURCEDIR%\lib_os.c %SOURCEDIR%\lib_package.c %SOURCEDIR%\lib_debug.c %SOURCEDIR%\lib_jit.c %SOURCEDIR%\lib_ffi.c
24+
+@set ALL_LIB=%SOURCEDIR%\lib_base.c %SOURCEDIR%\lib_math.c %SOURCEDIR%\lib_bit.c %SOURCEDIR%\lib_string.c %SOURCEDIR%\lib_table.c %SOURCEDIR%\lib_io.c %SOURCEDIR%\lib_os.c %SOURCEDIR%\lib_package.c %SOURCEDIR%\lib_debug.c %SOURCEDIR%\lib_jit.c %SOURCEDIR%\lib_ffi.c %SOURCEDIR%\lib_buffer.c
2425

2526
-%LJCOMPILE% host\minilua.c
2627
+%LJCOMPILE% %SOURCEDIR%\host\minilua.c /Fdminilua.pdb
2728
@if errorlevel 1 goto :BAD
2829
%LJLINK% /out:minilua.exe minilua.obj
2930
@if errorlevel 1 goto :BAD
30-
@@ -51,7 +52,7 @@ if exist minilua.exe.manifest^
31-
minilua %DASM% -LN %DASMFLAGS% -o host\buildvm_arch.h %DASC%
31+
@@ -38,20 +39,20 @@ if exist minilua.exe.manifest^
32+
@set LJARCH=x64
33+
@minilua
34+
@if errorlevel 8 goto :X64
35+
-@set DASC=vm_x86.dasc
36+
+@set DASC=%SOURCEDIR%\vm_x86.dasc
37+
@set DASMFLAGS=-D WIN -D JIT -D FFI
38+
@set LJARCH=x86
39+
@set LJCOMPILE=%LJCOMPILE% /arch:SSE2
40+
:X64
41+
@if "%1" neq "nogc64" goto :GC64
42+
@shift
43+
-@set DASC=vm_x86.dasc
44+
+@set DASC=%SOURCEDIR%\vm_x86.dasc
45+
@set LJCOMPILE=%LJCOMPILE% /DLUAJIT_DISABLE_GC64
46+
:GC64
47+
-minilua %DASM% -LN %DASMFLAGS% -o host\buildvm_arch.h %DASC%
48+
+minilua %DASM% -LN %DASMFLAGS% -o %SOURCEDIR%\host\buildvm_arch.h %DASC%
3249
@if errorlevel 1 goto :BAD
3350

3451
-%LJCOMPILE% /I "." /I %DASMDIR% host\buildvm*.c
3552
+%LJCOMPILE% /I "." /I %DASMDIR% %SOURCEDIR%\host\buildvm*.c /Fdbuildvm.pdb
3653
@if errorlevel 1 goto :BAD
3754
%LJLINK% /out:buildvm.exe buildvm*.obj
3855
@if errorlevel 1 goto :BAD
39-
@@ -60,41 +61,41 @@ if exist buildvm.exe.manifest^
56+
@@ -60,41 +61,44 @@ if exist buildvm.exe.manifest^
4057

4158
buildvm -m peobj -o lj_vm.obj
4259
@if errorlevel 1 goto :BAD
@@ -60,27 +77,30 @@ index aab4ef1..ff9df57 100644
6077
@if errorlevel 1 goto :BAD
6178

6279
-@if "%1" neq "debug" goto :NODEBUG
80+
+@if "%2"=="static" set CRT_LINKAGE=/MT
81+
+@if "%2"=="dynamic" set CRT_LINKAGE=/MD
6382
+@set LJLINK=%LJLINK% /debug
64-
+@if "%2" neq "debug" goto :NODEBUG
83+
+@if "%3" neq "debug" goto :NODEBUG
6584
@shift
6685
@set BUILDTYPE=debug
6786
@set LJCOMPILE=%LJCOMPILE% /Zi %DEBUGCFLAGS%
6887
-@set LJLINK=%LJLINK% /opt:ref /opt:icf /incremental:no
88+
+@set CRT_LINKAGE=%CRT_LINKAGE%d
6989
:NODEBUG
7090
@set LJLINK=%LJLINK% /%BUILDTYPE%
7191
-@if "%1"=="amalg" goto :AMALGDLL
7292
-@if "%1"=="static" goto :STATIC
7393
-%LJCOMPILE% /MD /DLUA_BUILD_AS_DLL lj_*.c lib_*.c
74-
+@if "%2"=="amalg" goto :AMALGDLL
75-
+@if "%2"=="static" goto :STATIC
76-
+%LJCOMPILE% /MD /DLUA_BUILD_AS_DLL %SOURCEDIR%\lj_*.c %SOURCEDIR%\lib_*.c /Fdlua51.pdb
94+
+@if "%3"=="amalg" goto :AMALGDLL
95+
+@if "%3"=="static" goto :STATIC
96+
+%LJCOMPILE% %CRT_LINKAGE% /DLUA_BUILD_AS_DLL %SOURCEDIR%\lj_*.c %SOURCEDIR%\lib_*.c /Fdlua51.pdb
7797
@if errorlevel 1 goto :BAD
7898
%LJLINK% /DLL /out:%LJDLLNAME% lj_*.obj lib_*.obj
7999
@if errorlevel 1 goto :BAD
80100
@goto :MTDLL
81101
:STATIC
82102
-%LJCOMPILE% lj_*.c lib_*.c
83-
+%LJCOMPILE% %SOURCEDIR%\lj_*.c %SOURCEDIR%\lib_*.c /Fdlua51.pdb
103+
+%LJCOMPILE% %CRT_LINKAGE% %SOURCEDIR%\lj_*.c %SOURCEDIR%\lib_*.c /Fdlua51.pdb
84104
@if errorlevel 1 goto :BAD
85105
%LJLIB% /OUT:%LJLIBNAME% lj_*.obj lib_*.obj
86106
@if errorlevel 1 goto :BAD
@@ -91,16 +111,16 @@ index aab4ef1..ff9df57 100644
91111
@if errorlevel 1 goto :BAD
92112
%LJLINK% /DLL /out:%LJDLLNAME% ljamalg.obj lj_vm.obj
93113
@if errorlevel 1 goto :BAD
94-
@@ -102,7 +103,7 @@ buildvm -m folddef -o lj_folddef.h lj_opt_fold.c
114+
@@ -102,7 +106,7 @@ buildvm -m folddef -o lj_folddef.h lj_opt_fold.c
95115
if exist %LJDLLNAME%.manifest^
96116
%LJMT% -manifest %LJDLLNAME%.manifest -outputresource:%LJDLLNAME%;2
97117

98118
-%LJCOMPILE% luajit.c
99-
+%LJCOMPILE% %SOURCEDIR%\luajit.c /Fdluajit.pdb
119+
+%LJCOMPILE% %CRT_LINKAGE% %SOURCEDIR%\luajit.c /Fdluajit.pdb
100120
@if errorlevel 1 goto :BAD
101121
%LJLINK% /out:luajit.exe luajit.obj %LJLIBNAME%
102122
@if errorlevel 1 goto :BAD
103-
@@ -110,8 +111,8 @@ if exist luajit.exe.manifest^
123+
@@ -110,8 +114,8 @@ if exist luajit.exe.manifest^
104124
%LJMT% -manifest luajit.exe.manifest -outputresource:luajit.exe
105125

106126
@del *.obj *.manifest minilua.exe buildvm.exe
@@ -111,7 +131,7 @@ index aab4ef1..ff9df57 100644
111131
@echo.
112132
@echo === Successfully built LuaJIT for Windows/%LJARCH% ===
113133

114-
@@ -124,4 +125,5 @@ if exist luajit.exe.manifest^
134+
@@ -124,4 +128,5 @@ if exist luajit.exe.manifest^
115135
@goto :END
116136
:FAIL
117137
@echo You must open a "Visual Studio Command Prompt" to run this script

ports/luajit/portfile.cmake

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@ vcpkg_from_github(
55
SHA512 0a1d79ab7d2de6894bcff33309e015fdba0ea67cf0425d75b9301a30006039e81b527178dbb3485e1adea177ffe062e6fcef74307f8e725678e70562d57d1a5b
66
HEAD_REF master
77
PATCHES
8-
001-fix-build-path.patch
9-
002-fix-crt-linkage.patch
108
003-do-not-set-macosx-deployment-target.patch
9+
004-fix-build-path-and-crt-linkage.patch
1110
)
1211

1312
if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
@@ -29,9 +28,17 @@ if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL debug)
2928
LOGNAME build-${TARGET_TRIPLET}-dbg
3029
)
3130

32-
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/minilua.exe" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/tools")
33-
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/minilua.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib")
31+
# Note that luajit's build system responds to failure by producing no output; in particular a likely outcome is
32+
# only 'minilua.exe' being produced. This reuslted in:
33+
# https://github.com/microsoft/vcpkg/pull/25856#issuecomment-1214285736
34+
# Please ensure luajit.exe is actually produced when making future changes.
35+
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/luajit.exe" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/tools")
36+
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/lua51.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib")
3437

38+
if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
39+
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/lua51.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin")
40+
file(COPY "${CURRENT_PACKAGES_DIR}/debug/bin/lua51.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/tools")
41+
endif()
3542
vcpkg_copy_pdbs()
3643
else()
3744
vcpkg_execute_build_process(
@@ -64,9 +71,13 @@ if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL release)
6471
LOGNAME build-${TARGET_TRIPLET}-rel
6572
)
6673

67-
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/minilua.exe" DESTINATION "${CURRENT_PACKAGES_DIR}/tools")
68-
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/minilua.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib")
74+
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/luajit.exe" DESTINATION "${CURRENT_PACKAGES_DIR}/tools")
75+
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/lua51.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib")
6976

77+
if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
78+
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/lua51.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/bin")
79+
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools)
80+
endif()
7081
vcpkg_copy_pdbs()
7182
else()
7283
vcpkg_execute_build_process(

ports/luajit/vcpkg.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"name": "luajit",
33
"version-date": "2022-08-11",
4+
"port-version": 1,
45
"description": "LuaJIT is a Just-In-Time (JIT) compiler for the Lua programming language.",
56
"homepage": "https://github.com/LuaJIT/LuaJIT",
67
"license": "MIT",

versions/baseline.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4398,7 +4398,7 @@
43984398
},
43994399
"luajit": {
44004400
"baseline": "2022-08-11",
4401-
"port-version": 0
4401+
"port-version": 1
44024402
},
44034403
"luasec": {
44044404
"baseline": "1.1.0",

versions/l-/luajit.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
{
22
"versions": [
3+
{
4+
"git-tree": "bacc33ec723d7fc2b895a1351a2042c5c6fb6971",
5+
"version-date": "2022-08-11",
6+
"port-version": 1
7+
},
38
{
49
"git-tree": "4c2d21d9bf0e5cedc0f7540a7e473c2e86f2c5ef",
510
"version-date": "2022-08-11",

0 commit comments

Comments
 (0)