Compile Lua 5.1 and LuaJIT source code into standalone executables. This makes it easy to use them for general purpose scripting.
Requires: GNU Make, a compiler and binutils (or equivalent). Installing development tools e.g. the package build-essential should have everything you need. Does not require autotools.
Note: Linux 3.17+ (5 Oct 2014) and glibc 2.25+ only for getrandom().
-
Edit the following space delimited variables in the top-level Makefile
MAIN: The "main" script in thebin/
directory
SRC: Modules that are specific to your application. Copy these tosrc/lua
.
SRC_DIR: Directories containing modules that are specific to your application. Copy these tosrc/lua
.
VENDOR: 3rd party modules
VENDOR_DIR: directories containing 3rd party modules -
Copy the main source file into the
bin/
directory. -
Copy modules into
src/lua/
orvendor/lua/
.
The SRC, VENDOR split is just for organization. Underneath they are using the same Make routines.
- Run
make
- The executable will be located under the
bin/
directory
Adding plain modules is trivial. $(NAME) is the name of the module passed to VENDOR
.
- Copy the module to
vendor/lua/$(NAME).lua
example:cp ~/Downloads/dkjson.lua vendor/lua
- Add
$(NAME)
toVENDOR
example:VENDOR= re dkjson
For modules that are split into multile files, such as Penlight:
- Copy the directory of the Lua to
vendor/lua/$(NAME)
example:cp -R ~/Download/Penlight-1.3.1/lua/pl vendor/lua
- Add
$(NAME)
toVENDOR_DIR
example:VENDOR_DIR= pl
For modules with multiple levels of directories you will have to pass each directory. Example:
VENDOR_DIR= ldoc ldoc/builtin ldoc/html
Lua does not have facilities to traverse directories and I'd like to avoid shell out functions.
Project | Version | License |
---|---|---|
LuaJIT | v2.1-20201012-2 | MIT |
luastatic | 0.0.12 | CC0 |
Module | Version | License |
---|---|---|
LPegLJ[1] | 1.0.0 | MIT |
luafilesystem | 0.3 | MIT |
u-test | 113259f | MIT |
argparse | 20c1445 | MIT |
moonscript | 29d8ccc | MIT |
lunajson | 1dcf3fa | MIT |
base64 | 769e16d | APL2 |
sqlite3[3] | d742002 | MIT |
luassert[2] | 36fc3af | MIT |
list | 7f8ee88 | MIT |
yaml | d280b04 | MIT |
[1] Renamed to lpeg. require"lpeg"
to require it.
[2] Incomplete import. Some files, utility type code only.
[3] Patched.