Skip to content

Instantly share code, notes, and snippets.

@rfl890
Created July 31, 2023 17:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rfl890/82b381c67e84f98ba3125aaac5bf155f to your computer and use it in GitHub Desktop.
Save rfl890/82b381c67e84f98ba3125aaac5bf155f to your computer and use it in GitHub Desktop.
Build lua
local BASE_O = ("lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lcorolib.o ldblib.o liolib.o lmathlib.o loadlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o linit.o"):split(" ")
local LUA_AND_LUAC_O = ("lua.o luac.o"):split(" ")
local cc = "clang -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_BUILD_AS_DLL"
-- make .o
for _, object in pairs(BASE_O) do
local cFileName = object:sub(1, #object - 1) .. "c"
local command = cc .. " -c -o " .. object .. " " .. cFileName
print(command)
os.execute(command)
end
for _, object in pairs(LUA_AND_LUAC_O) do
local cFileName = object:sub(1, #object - 1) .. "c"
local command = cc .. " -c -o " .. object .. " " .. cFileName
print(command)
os.execute(command)
end
-- make liblua.a
local command_liblua_a = "lib.exe " .. table.concat(BASE_O, " ") .. " /OUT:liblua.a"
print(command_liblua_a)
os.execute(command_liblua_a)
-- make dll
local command_dll = cc .. " -shared -o lua54.dll " .. table.concat(BASE_O, " ")
print(command_dll)
os.execute(command_dll)
local command_lua = cc .. " -o lua.exe lua.o lua54.lib"
print(command_lua)
os.execute(command_lua)
local command_luac = cc .. " -o luac.exe luac.o liblua.a"
print(command_luac)
os.execute(command_luac)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment