diff --git a/vcpkg-configuration.json b/vcpkg-configuration.json index 195455c..ac9da55 100644 --- a/vcpkg-configuration.json +++ b/vcpkg-configuration.json @@ -7,8 +7,8 @@ { "kind": "filesystem", "path": "vcpkg-ports", - "baseline": "2025-01-19", + "baseline": "2025-10-07", "packages": ["glfw3", "gli", "luajit"] } ] -} \ No newline at end of file +} diff --git a/vcpkg-ports/ports/luajit/2025-07-24_1/003-do-not-set-macosx-deployment-target.patch b/vcpkg-ports/ports/luajit/2025-07-24_1/003-do-not-set-macosx-deployment-target.patch new file mode 100644 index 0000000..52f53c7 --- /dev/null +++ b/vcpkg-ports/ports/luajit/2025-07-24_1/003-do-not-set-macosx-deployment-target.patch @@ -0,0 +1,14 @@ +diff --git a/src/Makefile b/src/Makefile +index c4d0b14d..2c9769b9 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -318,9 +318,6 @@ ifeq (,$(shell $(TARGET_CC) -o /dev/null -c -x c /dev/null -fno-stack-protector + TARGET_XCFLAGS+= -fno-stack-protector + endif + ifeq (Darwin,$(TARGET_SYS)) +- ifeq (,$(MACOSX_DEPLOYMENT_TARGET)) +- $(error missing: export MACOSX_DEPLOYMENT_TARGET=XX.YY) +- endif + TARGET_STRIP+= -x + TARGET_XCFLAGS+= -DLUAJIT_UNWIND_EXTERNAL + TARGET_XSHLDFLAGS= -dynamiclib -undefined dynamic_lookup -fPIC diff --git a/vcpkg-ports/ports/luajit/2025-07-24_1/005-do-not-pass-ld-e-macosx.patch b/vcpkg-ports/ports/luajit/2025-07-24_1/005-do-not-pass-ld-e-macosx.patch new file mode 100644 index 0000000..8f2f615 --- /dev/null +++ b/vcpkg-ports/ports/luajit/2025-07-24_1/005-do-not-pass-ld-e-macosx.patch @@ -0,0 +1,11 @@ +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} diff --git a/vcpkg-ports/ports/luajit/2025-07-24_1/Makefile.nmake b/vcpkg-ports/ports/luajit/2025-07-24_1/Makefile.nmake new file mode 100644 index 0000000..5dadd97 --- /dev/null +++ b/vcpkg-ports/ports/luajit/2025-07-24_1/Makefile.nmake @@ -0,0 +1,20 @@ +all: + @echo _CL_ = $(_CL_) + @echo _LINK_ = $(_LINK_) + cd src && .\msvcbuild.bat $(MSVCBUILD_OPTIONS) + +install: src/luajit.exe + -mkdir "$(INSTALLDIR)" + -mkdir "$(INSTALLDIR)\bin" + copy src\luajit.exe "$(INSTALLDIR)\bin\" + if exist src\lua51.dll copy src\lua51.dll "$(INSTALLDIR)\bin\" + -mkdir "$(INSTALLDIR)\lib" + copy src\lua51.lib "$(INSTALLDIR)\lib\" + -mkdir "$(INSTALLDIR)\include" + -mkdir "$(INSTALLDIR)\include\luajit" + copy src/lua.h "$(INSTALLDIR)\include\luajit\" + copy src/luajit.h "$(INSTALLDIR)\include\luajit\" + copy src/luaconf.h "$(INSTALLDIR)\include\luajit\" + copy src/lualib.h "$(INSTALLDIR)\include\luajit\" + copy src/lauxlib.h "$(INSTALLDIR)\include\luajit\" + copy src/lua.hpp "$(INSTALLDIR)\include\luajit\" diff --git a/vcpkg-ports/ports/luajit/2025-07-24_1/configure b/vcpkg-ports/ports/luajit/2025-07-24_1/configure new file mode 100644 index 0000000..0384100 --- /dev/null +++ b/vcpkg-ports/ports/luajit/2025-07-24_1/configure @@ -0,0 +1,86 @@ +#!/bin/sh + +set -e + +LJARCH= +LUAJIT_BUILDMODE= +LUAJIT_BUILDVM_X= +LUAJIT_DASM_ARCHS= +LUAJIT_PREFIX= +for OPTION; do + case "${OPTION}" in + --prefix=*) + LUAJIT_PREFIX="${OPTION#--prefix=}" + ;; + BUILDMODE=*) + LUAJIT_BUILDMODE="${OPTION#BUILDMODE=}" + ;; + BUILDVM_X=*) + LUAJIT_BUILDVM_X="${OPTION#BUILDVM_X=}" + ;; + DASM_ARCHS=*) + LUAJIT_DASM_ARCHS="${OPTION#DASM_ARCHS=}" + ;; + LJARCH=*) + LJARCH="${OPTION#LJARCH=}" + ;; + esac +done + +cat > Makefile.vcpkg < [-m32] -E src/lj_arch.h -dM' +TARGET_TESTARCH_COMMON += 'LJ_LE 1' 'LJ_HASJIT 1' 'LJ_HASFFI 1' 'LJ_ARCH_HASFPU 1' 'LJ_ABI_SOFTFP 0' +TARGET_TESTARCH_COMMON_32 += \$(TARGET_TESTARCH_COMMON) 'LJ_ARCH_BITS 32' +TARGET_TESTARCH_COMMON_64 += \$(TARGET_TESTARCH_COMMON) 'LJ_ARCH_BITS 64' 'LJ_TARGET_GC64 1' +TARGET_TESTARCH_arm = \$(TARGET_TESTARCH_COMMON_32) LJ_TARGET_ARM +TARGET_TESTARCH_arm64 = \$(TARGET_TESTARCH_COMMON_64) LJ_TARGET_ARM64 'LJ_ARCH_VERSION 80' +TARGET_TESTARCH_x86 = \$(TARGET_TESTARCH_COMMON_32) LJ_TARGET_X86 +TARGET_TESTARCH_x64 = \$(TARGET_TESTARCH_COMMON_64) LJ_TARGET_X64 'LJ_FR2 1' + +all: + \$(MAKE) clean \$(COMMON_OPTIONS) \$(BUILD_OPTIONS) + \$(MAKE) all \$(COMMON_OPTIONS) \$(BUILD_OPTIONS) + for DA in \$(DASM_ARCHS); do \\ + rm -f src/host/buildvm_arch.h src/host/*.o; \\ + case "\$\$DA" in \\ + arm) TARGET_TESTARCH="\$(TARGET_TESTARCH_arm)" ;; \\ + arm64) TARGET_TESTARCH="\$(TARGET_TESTARCH_arm64)" ;; \\ + x86) TARGET_TESTARCH="\$(TARGET_TESTARCH_x86)" ;; \\ + x64) TARGET_TESTARCH="\$(TARGET_TESTARCH_x64)" ;; \\ + esac ; \\ + \$(MAKE) -C src host/buildvm-\$\$DA\$(EXECUTABLE_SUFFIX) \$(COMMON_OPTIONS) \$(BUILD_OPTIONS) \\ + BUILDVM_T=host/buildvm-\$\$DA\$(EXECUTABLE_SUFFIX) "TARGET_TESTARCH=\$\${TARGET_TESTARCH}" \\ + || exit 1; \\ + done + +install: + \$(MAKE) install \$(COMMON_OPTIONS) + 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 + +END_MAKEFILE diff --git a/vcpkg-ports/ports/luajit/2025-07-24_1/luajit.pc.win.in b/vcpkg-ports/ports/luajit/2025-07-24_1/luajit.pc.win.in new file mode 100644 index 0000000..6eef921 --- /dev/null +++ b/vcpkg-ports/ports/luajit/2025-07-24_1/luajit.pc.win.in @@ -0,0 +1,24 @@ +# Package information for LuaJIT to be used by pkg-config. +majver=2 +minver=1 +relver=0 +version=${majver}.${minver} +abiver=51 + +prefix=@PREFIX@ +multilib=lib +exec_prefix=${prefix} +libdir=${exec_prefix}/${multilib} +libname=lua${abiver} +includedir=${prefix}/include/luajit + +INSTALL_LMOD=${prefix}/share/lua/${abiver} +INSTALL_CMOD=${prefix}/${multilib}/lua/${abiver} + +Name: LuaJIT +Description: Just-in-time compiler for Lua +URL: https://luajit.org +Version: ${version} +Requires: +Libs: -L${libdir} -l${libname} +Cflags: -I${includedir} @LJIT_MSVC_PC_CFLAGS@ diff --git a/vcpkg-ports/ports/luajit/2025-07-24_1/msvcbuild.patch b/vcpkg-ports/ports/luajit/2025-07-24_1/msvcbuild.patch new file mode 100644 index 0000000..0b07b62 --- /dev/null +++ b/vcpkg-ports/ports/luajit/2025-07-24_1/msvcbuild.patch @@ -0,0 +1,51 @@ +diff --git a/src/msvcbuild.bat b/src/msvcbuild.bat +index 69c0c61a..a5bcde7b 100644 +--- a/src/msvcbuild.bat ++++ b/src/msvcbuild.bat +@@ -15,15 +15,15 @@ + + @setlocal + @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 DEBUGCFLAGS=/Od ++@set LJCOMPILE=cl /nologo /c /O2 /W3 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_STDIO_INLINE=__declspec(dllexport)__inline /Z7 /GL + @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 +-@set LJLINK=link /nologo ++@set LJLINK=link /nologo /LTCG + @set LJMT=mt /nologo + @set LJLIB=lib /nologo /nodefaultlib + @set DASMDIR=..\dynasm +@@ -105,10 +105,10 @@ buildvm -m folddef -o lj_folddef.h lj_opt_fold.c + @set LJLINK=%LJLINK% %LJLINKTYPE% %LJLINKTARGET% + @if "%1"=="amalg" goto :AMALGDLL + @if "%1"=="static" goto :STATIC +-%LJCOMPILE% %LJDYNBUILD% lj_*.c lib_*.c ++%LJCOMPILE% %LJDYNBUILD% lj_*.c lib_*.c /Fdlua51.pdb + @if errorlevel 1 goto :BAD + @if "%1"=="mixed" goto :STATICLIB +-%LJLINK% /DLL /OUT:%LJDLLNAME% lj_*.obj lib_*.obj ++%LJLINK% /DLL /OUT:%LJDLLNAME% lj_*.obj lib_*.obj /DEBUG /OPT:ICF /OPT:REF + @if errorlevel 1 goto :BAD + @goto :MTDLL + :STATIC +@@ -136,7 +136,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% + @if errorlevel 1 goto :BAD +@@ -164,4 +164,5 @@ if exist luajit.exe.manifest^ + @goto :END + :FAIL + @echo You must open a "Visual Studio Command Prompt" to run this script ++exit 1 + :END diff --git a/vcpkg-ports/ports/luajit/2025-07-24_1/pob-wide-crt.patch b/vcpkg-ports/ports/luajit/2025-07-24_1/pob-wide-crt.patch new file mode 100644 index 0000000..9a1392a --- /dev/null +++ b/vcpkg-ports/ports/luajit/2025-07-24_1/pob-wide-crt.patch @@ -0,0 +1,457 @@ +diff --git a/src/Makefile b/src/Makefile +index 4a56d1e8..26081d74 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -514,7 +514,7 @@ LJCORE_O= lj_assert.o lj_gc.o lj_err.o lj_char.o lj_bc.o lj_obj.o lj_buf.o \ + lj_mcode.o lj_snap.o lj_record.o lj_crecord.o lj_ffrecord.o \ + lj_asm.o lj_trace.o lj_gdbjit.o \ + lj_ctype.o lj_cdata.o lj_cconv.o lj_ccall.o lj_ccallback.o \ +- lj_carith.o lj_clib.o lj_cparse.o \ ++ lj_carith.o lj_clib.o lj_cparse.o lj_utf8win.o \ + lj_lib.o lj_alloc.o lib_aux.o \ + $(LJLIB_O) lib_init.o + +diff --git a/src/lib_io.c b/src/lib_io.c +index 5659ff51..66e3196e 100644 +--- a/src/lib_io.c ++++ b/src/lib_io.c +@@ -26,6 +26,7 @@ + #include "lj_ff.h" + #include "lj_lib.h" + #include "lj_strscan.h" ++#include "lj_utf8win.h" + + /* Userdata payload for I/O file. */ + typedef struct IOFileUD { +@@ -85,7 +86,7 @@ static IOFileUD *io_file_open(lua_State *L, const char *mode) + { + const char *fname = strdata(lj_lib_checkstr(L, 1)); + IOFileUD *iof = io_file_new(L); +- iof->fp = fopen(fname, mode); ++ iof->fp = _lua_fopen(fname, mode); + if (iof->fp == NULL) + luaL_argerror(L, 1, lj_strfmt_pushf(L, "%s: %s", fname, strerror(errno))); + return iof; +@@ -414,7 +415,7 @@ LJLIB_CF(io_open) + GCstr *s = lj_lib_optstr(L, 2); + const char *mode = s ? strdata(s) : "r"; + IOFileUD *iof = io_file_new(L); +- iof->fp = fopen(fname, mode); ++ iof->fp = _lua_fopen(fname, mode); + return iof->fp != NULL ? 1 : luaL_fileresult(L, 0, fname); + } + +diff --git a/src/lib_os.c b/src/lib_os.c +index ae3fc857..ae48b6ff 100644 +--- a/src/lib_os.c ++++ b/src/lib_os.c +@@ -22,6 +22,7 @@ + #include "lj_buf.h" + #include "lj_str.h" + #include "lj_lib.h" ++#include "lj_utf8win.h" + + #if LJ_TARGET_POSIX + #include +@@ -49,7 +50,7 @@ LJLIB_CF(os_execute) + #endif + #else + const char *cmd = luaL_optstring(L, 1, NULL); +- int stat = system(cmd); ++ int stat = _lua_system(cmd); + #if LJ_52 + if (cmd) + return luaL_execresult(L, stat); +@@ -64,14 +65,14 @@ LJLIB_CF(os_execute) + LJLIB_CF(os_remove) + { + const char *filename = luaL_checkstring(L, 1); +- return luaL_fileresult(L, remove(filename) == 0, filename); ++ return luaL_fileresult(L, _lua_remove(filename) == 0, filename); + } + + LJLIB_CF(os_rename) + { + const char *fromname = luaL_checkstring(L, 1); + const char *toname = luaL_checkstring(L, 2); +- return luaL_fileresult(L, rename(fromname, toname) == 0, fromname); ++ return luaL_fileresult(L, _lua_rename(fromname, toname) == 0, fromname); + } + + LJLIB_CF(os_tmpname) +@@ -91,7 +92,7 @@ LJLIB_CF(os_tmpname) + lj_err_caller(L, LJ_ERR_OSUNIQF); + #else + char buf[L_tmpnam]; +- if (tmpnam(buf) == NULL) ++ if (_lua_tmpnam(buf) == NULL) + lj_err_caller(L, LJ_ERR_OSUNIQF); + #endif + lua_pushstring(L, buf); +@@ -104,7 +105,9 @@ LJLIB_CF(os_getenv) + #if LJ_TARGET_CONSOLE + lua_pushnil(L); + #else +- lua_pushstring(L, getenv(luaL_checkstring(L, 1))); /* if NULL push nil */ ++ char const* val = _lua_getenvcopy(luaL_checkstring(L, 1)); ++ lua_pushstring(L, val); /* if NULL push nil */ ++ _lua_getenvfree(val); + #endif + return 1; + } +diff --git a/src/lib_package.c b/src/lib_package.c +index 88218c2e..88d9b780 100644 +--- a/src/lib_package.c ++++ b/src/lib_package.c +@@ -16,6 +16,7 @@ + #include "lj_obj.h" + #include "lj_err.h" + #include "lj_lib.h" ++#include "lj_utf8win.h" + + /* ------------------------------------------------------------------------ */ + +@@ -94,15 +95,18 @@ void *LJ_WIN_LOADLIBA(const char *path) + + static void setprogdir(lua_State *L) + { +- char buff[MAX_PATH + 1]; +- char *lb; +- DWORD nsize = sizeof(buff); +- DWORD n = GetModuleFileNameA(NULL, buff, nsize); +- if (n == 0 || n == nsize || (lb = strrchr(buff, '\\')) == NULL) { ++ enum { N = 1<<16 }; ++ wchar_t buff[N]; ++ wchar_t *lb; ++ DWORD nsize = N; ++ DWORD n = GetModuleFileNameW(NULL, buff, nsize); ++ if (n == 0 || n == nsize || (lb = wcsrchr(buff, L'\\')) == NULL) { + luaL_error(L, "unable to get ModuleFileName"); + } else { +- *lb = '\0'; +- luaL_gsub(L, lua_tostring(L, -1), LUA_EXECDIR, buff); ++ *lb = L'\0'; ++ char nbuff[N]; ++ _lua_narrowtobuffer(buff, nbuff, N); ++ luaL_gsub(L, lua_tostring(L, -1), LUA_EXECDIR, nbuff); + lua_remove(L, -2); /* remove original string */ + } + } +@@ -133,7 +137,9 @@ static void ll_unloadlib(void *lib) + + static void *ll_load(lua_State *L, const char *path, int gl) + { +- HINSTANCE lib = LJ_WIN_LOADLIBA(path); ++ wchar_t pathBuf[1<<16]; ++ _lua_widentobuffer(path, pathBuf, _countof(pathBuf)); ++ HINSTANCE lib = LoadLibraryW(pathBuf); + if (lib == NULL) pusherror(L); + UNUSED(gl); + return lib; +@@ -296,7 +302,7 @@ static int lj_cf_package_unloadlib(lua_State *L) + + static int readable(const char *filename) + { +- FILE *f = fopen(filename, "r"); /* try to open file */ ++ FILE *f = _lua_fopen(filename, "r"); /* try to open file */ + if (f == NULL) return 0; /* open failed */ + fclose(f); + return 1; +@@ -554,16 +560,17 @@ static void setpath(lua_State *L, const char *fieldname, const char *envname, + const char *path = NULL; + UNUSED(envname); + #else +- const char *path = getenv(envname); ++ char const *path = _lua_getenvcopy(envname); + #endif + if (path == NULL || noenv) { + lua_pushstring(L, def); + } else { +- path = luaL_gsub(L, path, LUA_PATHSEP LUA_PATHSEP, ++ char const* lpath = luaL_gsub(L, path, LUA_PATHSEP LUA_PATHSEP, + LUA_PATHSEP AUXMARK LUA_PATHSEP); +- luaL_gsub(L, path, AUXMARK, def); ++ luaL_gsub(L, lpath, AUXMARK, def); + lua_remove(L, -2); + } ++ _lua_getenvfree(path); + setprogdir(L); + lua_setfield(L, -2, fieldname); + } +diff --git a/src/lj_clib.c b/src/lj_clib.c +index 218e9c08..4bfc71bf 100644 +--- a/src/lj_clib.c ++++ b/src/lj_clib.c +@@ -17,6 +17,7 @@ + #include "lj_cdata.h" + #include "lj_clib.h" + #include "lj_strfmt.h" ++#include "lj_utf8win.h" + + /* -- OS-specific functions ----------------------------------------------- */ + +@@ -211,7 +212,12 @@ static const char *clib_extname(lua_State *L, const char *name) + static void *clib_loadlib(lua_State *L, const char *name, int global) + { + DWORD oldwerr = GetLastError(); +- void *h = LJ_WIN_LOADLIBA(clib_extname(L, name)); ++ enum {NameSize = 1<<16}; ++ wchar_t namebuf[NameSize]; ++ void *h = NULL; ++ if (_lua_widentobuffer(clib_extname(L, name), namebuf, NameSize)) { ++ h = (void *)LoadLibraryW(namebuf); ++ } + if (!h) clib_error(L, "cannot load module " LUA_QS ": %s", name); + SetLastError(oldwerr); + UNUSED(global); +diff --git a/src/lj_load.c b/src/lj_load.c +index 24b660a8..332baa0b 100644 +--- a/src/lj_load.c ++++ b/src/lj_load.c +@@ -22,6 +22,7 @@ + #include "lj_lex.h" + #include "lj_bcdump.h" + #include "lj_parse.h" ++#include "lj_utf8win.h" + + /* -- Load Lua source code and bytecode ----------------------------------- */ + +@@ -104,7 +105,7 @@ LUALIB_API int luaL_loadfilex(lua_State *L, const char *filename, + int err = 0; + if (filename) { + chunkname = lua_pushfstring(L, "@%s", filename); +- ctx.fp = fopen(filename, "rb"); ++ ctx.fp = _lua_fopen(filename, "rb"); + if (ctx.fp == NULL) { + L->top--; + lua_pushfstring(L, "cannot open %s: %s", filename, strerror(errno)); +diff --git a/src/lj_utf8win.c b/src/lj_utf8win.c +new file mode 100644 +index 00000000..96ee913a +--- /dev/null ++++ b/src/lj_utf8win.c +@@ -0,0 +1,137 @@ ++#include "lj_utf8win.h" ++ ++#ifdef _WIN32 ++#include ++#include ++#include ++#include ++ ++enum { PathBufSize = 1<<16, ModeBufSize = 5 }; ++ ++bool _lua_narrowtobuffer(wchar_t const* srcPtr, char* dstBuf, int dstSize) ++{ ++ int cchSrc = (int)wcslen(srcPtr); ++ if (!cchSrc) { ++ dstBuf[0] = '\0'; ++ return true; ++ } ++ int cbDst = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, srcPtr, cchSrc, dstBuf, dstSize - 1, NULL, NULL); ++ if (!cbDst || cbDst >= dstSize) { ++ return false; ++ } ++ dstBuf[cbDst] = '\0'; ++ return true; ++} ++ ++bool _lua_widentobuffer(char const* srcPtr, wchar_t* dstBuf, int dstSize) ++{ ++ int cbSrc = (int)strlen(srcPtr); ++ if (!cbSrc) { ++ dstBuf[0] = L'\0'; ++ return true; ++ } ++ int cchDst = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, srcPtr, cbSrc, dstBuf, dstSize - 1); ++ if (!cchDst || cchDst >= dstSize ) { ++ return false; ++ } ++ dstBuf[cchDst] = L'\0'; ++ return true; ++} ++ ++FILE* _lua_fopen(char const* path, char const* mode) ++{ ++ if (!path || !mode) { ++ return NULL; ++ } ++ wchar_t pathBuf[PathBufSize]; ++ wchar_t modeBuf[ModeBufSize]; ++ if (!_lua_widentobuffer(path, pathBuf, PathBufSize) || ++ !_lua_widentobuffer(mode, modeBuf, ModeBufSize)) ++ { ++ return NULL; ++ } ++ FILE* fp = _wfopen(pathBuf, modeBuf); ++ return fp; ++} ++ ++char const* _lua_getenvcopy(char const* name) ++{ ++ if (!name) { ++ return NULL; ++ } ++ wchar_t nameBuf[PathBufSize]; ++ if (!_lua_widentobuffer(name, nameBuf, PathBufSize)) { ++ return NULL; ++ } ++ wchar_t* var = _wgetenv(nameBuf); ++ if (!var) { ++ return NULL; ++ } ++ char varBuf[PathBufSize]; ++ if (!_lua_narrowtobuffer(var, varBuf, PathBufSize)) { ++ return NULL; ++ } ++ size_t cbVar = strlen(varBuf) + 1; ++ char* ret = calloc(1, cbVar); ++ memcpy(ret, varBuf, cbVar); ++ return ret; ++} ++ ++void _lua_getenvfree(char const* var) ++{ ++ if (var) { ++ free((char*)var); ++ } ++} ++ ++int _lua_remove(char const* path) ++{ ++ if (!path) { ++ return -1; ++ } ++ wchar_t pathBuf[PathBufSize]; ++ if (!_lua_widentobuffer(path, pathBuf, PathBufSize)) { ++ return -1; ++ } ++ return _wremove(pathBuf); ++} ++ ++int _lua_rename(char const* oldpath, char const* newpath) ++{ ++ if (!oldpath || !newpath) { ++ return -1; ++ } ++ wchar_t oldBuf[PathBufSize]; ++ wchar_t newBuf[PathBufSize]; ++ if (!_lua_widentobuffer(oldpath, oldBuf, PathBufSize) || ++ !_lua_widentobuffer(newpath, newBuf, PathBufSize)) ++ { ++ return -1; ++ } ++ return _wrename(oldBuf, newBuf); ++} ++ ++int _lua_system(char const* cmd) ++{ ++ if (!cmd) { ++ return -1; ++ } ++ wchar_t cmdBuf[PathBufSize]; ++ if (!_lua_widentobuffer(cmd, cmdBuf, PathBufSize)) { ++ return -1; ++ } ++ return _wsystem(cmdBuf); ++} ++ ++char* _lua_tmpnam(char* s) ++{ ++ wchar_t tmpBuf[L_tmpnam]; ++ _wtmpnam(tmpBuf); ++ ++ if (!_lua_narrowtobuffer(tmpBuf, s, L_tmpnam)) { ++ return NULL; ++ } ++ return s; ++} ++ ++#endif +diff --git a/src/lj_utf8win.h b/src/lj_utf8win.h +new file mode 100644 +index 00000000..72e9ccae +--- /dev/null ++++ b/src/lj_utf8win.h +@@ -0,0 +1,28 @@ ++#ifndef LJ_UTF8_WIN_H ++#define LJ_UTF8_WIN_H ++ ++#include ++#include ++#include ++ ++#ifdef _WIN32 ++bool _lua_narrowtobuffer(wchar_t const* srcPtr, char* dstBuf, int dstSize); ++bool _lua_widentobuffer(char const* srcPtr, wchar_t* dstBuf, int dstSize); ++FILE* _lua_fopen(char const* path, char const* mode); ++char const* _lua_getenvcopy(char const* name); ++void _lua_getenvfree(char const* name); ++int _lua_remove(char const* path); ++int _lua_rename(char const* oldpath, char const* newpath); ++int _lua_system(char const* cmd); ++char* _lua_tmpnam(); ++#else ++#define _lua_fopen(path, mode) fopen(path, mode) ++#define _lua_getenvcopy(name) strdup(getenv(name)) ++#define _lua_getenvfree(name) free(name) ++#define _lua_remove(path) remove(path) ++#define _lua_rename(oldpath, newpath) rename(oldpath, newpath) ++#define _lua_system(cmd) system(cmd) ++#define _lua_tmpnam(s) tmpnam(s) ++#endif ++ ++#endif +diff --git a/src/msvcbuild.bat.rej b/src/msvcbuild.bat.rej +new file mode 100644 +index 00000000..4263730b +--- /dev/null ++++ b/src/msvcbuild.bat.rej +@@ -0,0 +1,47 @@ ++diff a/src/msvcbuild.bat b/src/msvcbuild.bat (rejected hunks) ++@@ -13,9 +13,9 @@ ++ ++ @setlocal ++ @rem Add more debug flags here, e.g. DEBUGCFLAGS=/DLUA_USE_APICHECK ++-@set DEBUGCFLAGS= ++-@set LJCOMPILE=cl /nologo /c /O2 /W3 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_STDIO_INLINE=__declspec(dllexport)__inline ++-@set LJLINK=link /nologo +++@set DEBUGCFLAGS=/Od +++@set LJCOMPILE=cl /nologo /c /O2 /W3 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_STDIO_INLINE=__declspec(dllexport)__inline /Z7 /GL +++@set LJLINK=link /nologo /LTCG ++ @set LJMT=mt /nologo ++ @set LJLIB=lib /nologo /nodefaultlib ++ @set DASMDIR=..\dynasm ++@@ -67,14 +67,13 @@ buildvm -m folddef -o lj_folddef.h lj_opt_fold.c ++ @if "%1" neq "debug" goto :NODEBUG ++ @shift ++ @set BUILDTYPE=debug ++-@set LJCOMPILE=%LJCOMPILE% /Zi %DEBUGCFLAGS% +++@set LJCOMPILE=%LJCOMPILE% /Z7 %DEBUGCFLAGS% ++ :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% /MD /DLUA_BUILD_AS_DLL lj_*.c lib_*.c /Fdlua51.pdb ++ @if errorlevel 1 goto :BAD ++-%LJLINK% /DLL /out:%LJDLLNAME% lj_*.obj lib_*.obj +++%LJLINK% /DLL /out:%LJDLLNAME% lj_*.obj lib_*.obj /DEBUG /OPT:ICF /OPT:REF ++ @if errorlevel 1 goto :BAD ++ @goto :MTDLL ++ :STATIC ++@@ -92,7 +91,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% ++ @if errorlevel 1 goto :BAD ++@@ -114,4 +113,5 @@ if exist luajit.exe.manifest^ ++ @goto :END ++ :FAIL ++ @echo You must open a "Visual Studio Command Prompt" to run this script +++exit 1 ++ :END diff --git a/vcpkg-ports/ports/luajit/2025-07-24_1/portfile.cmake b/vcpkg-ports/ports/luajit/2025-07-24_1/portfile.cmake new file mode 100644 index 0000000..c03b461 --- /dev/null +++ b/vcpkg-ports/ports/luajit/2025-07-24_1/portfile.cmake @@ -0,0 +1,109 @@ +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 871db2c84ecefd70a850e03a6c340214a81739f0 #2025-07-24 + SHA512 5e74d4343a52fba3c8846e34e31cd7f590935fdfb4ba97bb49902ffc58e6eda55f1c17ece85f7eaf0c5753055ad2c5182b93c58d7176a9d65bdca92e76bad1d9 + HEAD_REF v2.1 + PATCHES + msvcbuild.patch + 003-do-not-set-macosx-deployment-target.patch + pob-wide-crt.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.) + vcpkg_list(SET options) + set(PKGCONFIG_CFLAGS "") + if (VCPKG_LIBRARY_LINKAGE STREQUAL "static") + list(APPEND options "MSVCBUILD_OPTIONS=static") + else() + set(PKGCONFIG_CFLAGS "/DLUA_BUILD_AS_DLL=1") + endif() + + vcpkg_install_nmake(SOURCE_PATH "${SOURCE_PATH}" + PROJECT_NAME "${CMAKE_CURRENT_LIST_DIR}/Makefile.nmake" + OPTIONS + ${options} + ) + + configure_file("${CMAKE_CURRENT_LIST_DIR}/luajit.pc.win.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/luajit.pc" @ONLY) + if(NOT VCPKG_BUILD_TYPE) + configure_file("${CMAKE_CURRENT_LIST_DIR}/luajit.pc.win.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/luajit.pc" @ONLY) + endif() + + vcpkg_copy_pdbs() +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}" + ) + endif() + + vcpkg_list(SET make_options "EXECUTABLE_SUFFIX=${VCPKG_TARGET_EXECUTABLE_SUFFIX}") + set(strip_options "") # cf. src/Makefile + if(VCPKG_TARGET_IS_OSX) + vcpkg_list(APPEND make_options "TARGET_SYS=Darwin") + set(strip_options " -x") + elseif(VCPKG_TARGET_IS_IOS) + vcpkg_list(APPEND make_options "TARGET_SYS=iOS") + set(strip_options " -x") + elseif(VCPKG_TARGET_IS_LINUX) + vcpkg_list(APPEND make_options "TARGET_SYS=Linux") + elseif(VCPKG_TARGET_IS_WINDOWS) + vcpkg_list(APPEND make_options "TARGET_SYS=Windows") + set(strip_options " --strip-unneeded") + endif() + + set(dasm_archs "") + if("buildvm-32" IN_LIST FEATURES) + string(APPEND dasm_archs " arm x86") + endif() + if("buildvm-64" IN_LIST FEATURES) + string(APPEND dasm_archs " arm64 x64") + endif() + + file(COPY "${CMAKE_CURRENT_LIST_DIR}/configure" DESTINATION "${SOURCE_PATH}") + vcpkg_configure_make(SOURCE_PATH "${SOURCE_PATH}" + COPY_SOURCE + OPTIONS + "BUILDMODE=${VCPKG_LIBRARY_LINKAGE}" + ${options} + OPTIONS_RELEASE + "DASM_ARCHS=${dasm_archs}" + ) + vcpkg_install_make( + MAKEFILE "Makefile.vcpkg" + OPTIONS + ${make_options} + "TARGET_AR=${VCPKG_DETECTED_CMAKE_AR} rcus" + "TARGET_STRIP=${VCPKG_DETECTED_CMAKE_STRIP}${strip_options}" + ) +endif() + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/debug/lib/lua" + "${CURRENT_PACKAGES_DIR}/debug/share" + "${CURRENT_PACKAGES_DIR}/lib/lua" + "${CURRENT_PACKAGES_DIR}/share/lua" + "${CURRENT_PACKAGES_DIR}/share/man" +) + +vcpkg_copy_tools(TOOL_NAMES luajit AUTO_CLEAN) + +vcpkg_fixup_pkgconfig() + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYRIGHT") diff --git a/vcpkg-ports/ports/luajit/2025-07-24_1/vcpkg.json b/vcpkg-ports/ports/luajit/2025-07-24_1/vcpkg.json new file mode 100644 index 0000000..ea922b1 --- /dev/null +++ b/vcpkg-ports/ports/luajit/2025-07-24_1/vcpkg.json @@ -0,0 +1,49 @@ +{ + "name": "luajit", + "version-date": "2025-07-24", + "port-version": 1, + "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)", + "dependencies": [ + { + "name": "luajit", + "host": true, + "features": [ + "buildvm-64" + ], + "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 + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + { + "name": "vcpkg-cmake-get-vars", + "host": true + } + ], + "features": { + "buildvm-32": { + "description": "Install host tools for 32 bit targets", + "supports": "native & ((arm & !arm64) | x86) & (!windows | mingw)" + }, + "buildvm-64": { + "description": "Install host tools for 64 bit targets", + "supports": "native & (arm64 | x64) & (!windows | mingw)" + } + } +} diff --git a/vcpkg-ports/versions/baseline.json b/vcpkg-ports/versions/baseline.json index 4a9aef0..4a6f04d 100644 --- a/vcpkg-ports/versions/baseline.json +++ b/vcpkg-ports/versions/baseline.json @@ -6,5 +6,10 @@ "glfw3": { "baseline": "3.4", "port-version": 1 }, "gli": { "baseline": "2021-07-06", "port-version": 3 }, "luajit": { "baseline": "2023-04-16", "port-version": 1 } + }, + "2025-10-07": { + "glfw3": { "baseline": "3.4", "port-version": 1 }, + "gli": { "baseline": "2021-07-06", "port-version": 3 }, + "luajit": { "baseline": "2025-07-24", "port-version": 1 } } } \ No newline at end of file diff --git a/vcpkg-ports/versions/l-/luajit.json b/vcpkg-ports/versions/l-/luajit.json index 1f587eb..158fee9 100644 --- a/vcpkg-ports/versions/l-/luajit.json +++ b/vcpkg-ports/versions/l-/luajit.json @@ -1,5 +1,10 @@ { "versions": [ + { + "version-date": "2025-07-24", + "port-version": 1, + "path": "$/ports/luajit/2025-07-24_1" + }, { "version-date": "2023-04-16", "port-version": 1,