mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
build Lua from vendored source instead of the prebuilt lua51.lib
The tree carried two prebuilt Lua static libraries and a copy of the Lua public headers. lua51.lib is 5.1.2 and matched the headers; lua51.vc9.lib is 5.1.4 and was dead weight — it came second in Ja2_Libraries, so the linker resolved every Lua symbol out of lua51.lib and never pulled an object from it. Just as well, since it asks for /DEFAULTLIB:MSVCRT while we build /MT. ext/lua-5.1.5 is the upstream tarball unmodified, built as lua51 the way the other vendored libraries are, and its src directory replaces lua/ as the home of lua.h, luaconf.h, lauxlib.h and lualib.h. Those four headers were stock 5.1.2 retabbed, so 5.1.5 is bugfix-only against what the game compiled against; the bytecode format is unchanged across 5.1.x and every script under gamedir is plain source anyway. lua/lua.hpp had no includers and returns to etc/ where upstream keeps it. /SAFESEH:NO goes with it. Its two stated reasons were lua51.lib and the smackw32 import library, and both are now gone: every remaining prebuilt static library is SAFESEH-clean (libexpatMT.lib 5 of 5 members with @feat.00 = 0x1, RakNetLibStatic.lib 79 of 79), and lld-link emits a 3155-entry SEHandlerTable without it. The /MT comment blamed the wrong library. lua51.lib carried no linker directives at all; RakNetLibStatic.lib is what pins us to the static runtime, with /DEFAULTLIB:LIBCMT and /DEFAULTLIB:libcpmt. Verified by building all four applications in Debug and Release, and by linking the tarball's own lua.c against our lua51.lib with the build's clang-cl flags and running it under Wine: 5.1 stdlib, GC, coroutines and the x86 __asm fld/fistp lua_number2int fast path all behave. The game itself could not be launched here — this checkout's gamedir has loose Data directories but no SLF archives, so VFS aborts on Data\Ambient.slf long before any script runs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
committed by
majcosta
co-authored by
Claude Opus 5
parent
7f7cf34e26
commit
76eda883a5
@@ -0,0 +1,99 @@
|
||||
INSTALL for Lua 5.1
|
||||
|
||||
* Building Lua
|
||||
------------
|
||||
Lua is built in the src directory, but the build process can be
|
||||
controlled from the top-level Makefile.
|
||||
|
||||
Building Lua on Unix systems should be very easy. First do "make" and
|
||||
see if your platform is listed. If so, just do "make xxx", where xxx
|
||||
is your platform name. The platforms currently supported are:
|
||||
aix ansi bsd freebsd generic linux macosx mingw posix solaris
|
||||
|
||||
If your platform is not listed, try the closest one or posix, generic,
|
||||
ansi, in this order.
|
||||
|
||||
See below for customization instructions and for instructions on how
|
||||
to build with other Windows compilers.
|
||||
|
||||
If you want to check that Lua has been built correctly, do "make test"
|
||||
after building Lua. Also, have a look at the example programs in test.
|
||||
|
||||
* Installing Lua
|
||||
--------------
|
||||
Once you have built Lua, you may want to install it in an official
|
||||
place in your system. In this case, do "make install". The official
|
||||
place and the way to install files are defined in Makefile. You must
|
||||
have the right permissions to install files.
|
||||
|
||||
If you want to build and install Lua in one step, do "make xxx install",
|
||||
where xxx is your platform name.
|
||||
|
||||
If you want to install Lua locally, then do "make local". This will
|
||||
create directories bin, include, lib, man, and install Lua there as
|
||||
follows:
|
||||
|
||||
bin: lua luac
|
||||
include: lua.h luaconf.h lualib.h lauxlib.h lua.hpp
|
||||
lib: liblua.a
|
||||
man/man1: lua.1 luac.1
|
||||
|
||||
These are the only directories you need for development.
|
||||
|
||||
There are man pages for lua and luac, in both nroff and html, and a
|
||||
reference manual in html in doc, some sample code in test, and some
|
||||
useful stuff in etc. You don't need these directories for development.
|
||||
|
||||
If you want to install Lua locally, but in some other directory, do
|
||||
"make install INSTALL_TOP=xxx", where xxx is your chosen directory.
|
||||
|
||||
See below for instructions for Windows and other systems.
|
||||
|
||||
* Customization
|
||||
-------------
|
||||
Three things can be customized by editing a file:
|
||||
- Where and how to install Lua -- edit Makefile.
|
||||
- How to build Lua -- edit src/Makefile.
|
||||
- Lua features -- edit src/luaconf.h.
|
||||
|
||||
You don't actually need to edit the Makefiles because you may set the
|
||||
relevant variables when invoking make.
|
||||
|
||||
On the other hand, if you need to select some Lua features, you'll need
|
||||
to edit src/luaconf.h. The edited file will be the one installed, and
|
||||
it will be used by any Lua clients that you build, to ensure consistency.
|
||||
|
||||
We strongly recommend that you enable dynamic loading. This is done
|
||||
automatically for all platforms listed above that have this feature
|
||||
(and also Windows). See src/luaconf.h and also src/Makefile.
|
||||
|
||||
* Building Lua on Windows and other systems
|
||||
-----------------------------------------
|
||||
If you're not using the usual Unix tools, then the instructions for
|
||||
building Lua depend on the compiler you use. You'll need to create
|
||||
projects (or whatever your compiler uses) for building the library,
|
||||
the interpreter, and the compiler, as follows:
|
||||
|
||||
library: lapi.c lcode.c ldebug.c ldo.c ldump.c lfunc.c lgc.c llex.c
|
||||
lmem.c lobject.c lopcodes.c lparser.c lstate.c lstring.c
|
||||
ltable.c ltm.c lundump.c lvm.c lzio.c
|
||||
lauxlib.c lbaselib.c ldblib.c liolib.c lmathlib.c loslib.c
|
||||
ltablib.c lstrlib.c loadlib.c linit.c
|
||||
|
||||
interpreter: library, lua.c
|
||||
|
||||
compiler: library, luac.c print.c
|
||||
|
||||
If you use Visual Studio .NET, you can use etc/luavs.bat in its
|
||||
"Command Prompt".
|
||||
|
||||
If all you want is to build the Lua interpreter, you may put all .c files
|
||||
in a single project, except for luac.c and print.c. Or just use etc/all.c.
|
||||
|
||||
To use Lua as a library in your own programs, you'll need to know how to
|
||||
create and use libraries with your compiler.
|
||||
|
||||
As mentioned above, you may edit luaconf.h to select some features before
|
||||
building Lua.
|
||||
|
||||
(end of INSTALL)
|
||||
Reference in New Issue
Block a user