Skip to content

Instantly share code, notes, and snippets.

@lopesivan
Created May 2, 2025 02:49
Show Gist options
  • Save lopesivan/0c4304da477026714cc1cf9ad807ac17 to your computer and use it in GitHub Desktop.
Save lopesivan/0c4304da477026714cc1cf9ad807ac17 to your computer and use it in GitHub Desktop.
locsl build lua, neovim
#!/usr/bin/env bash
PWD_LOCAL=$PWD
V=5.1.5
R=${V%.?}
_d=lua-${V}
test -d $_d && rm -rf $_d
_f=lua-${V}.tar.gz
if ! test -e $_f; then
wget https://www.lua.org/ftp/lua-${V}.tar.gz
fi
tar xvzf lua-${V}.tar.gz
cd ${PWD_LOCAL}/lua-${V}/src
# static
CFLAGS="-O2 -Wall -DLUA_USE_LINUX"
LDFLAGS="-lm -Wl,-E -ldl -lreadline -lhistory -lncurses"
gcc ${CFLAGS} -c -o lapi.o lapi.c
gcc ${CFLAGS} -c -o lcode.o lcode.c
gcc ${CFLAGS} -c -o ldebug.o ldebug.c
gcc ${CFLAGS} -c -o ldo.o ldo.c
gcc ${CFLAGS} -c -o ldump.o ldump.c
gcc ${CFLAGS} -c -o lfunc.o lfunc.c
gcc ${CFLAGS} -c -o lgc.o lgc.c
gcc ${CFLAGS} -c -o llex.o llex.c
gcc ${CFLAGS} -c -o lmem.o lmem.c
gcc ${CFLAGS} -c -o lobject.o lobject.c
gcc ${CFLAGS} -c -o lopcodes.o lopcodes.c
gcc ${CFLAGS} -c -o lparser.o lparser.c
gcc ${CFLAGS} -c -o lstate.o lstate.c
gcc ${CFLAGS} -c -o lstring.o lstring.c
gcc ${CFLAGS} -c -o ltable.o ltable.c
gcc ${CFLAGS} -c -o ltm.o ltm.c
gcc ${CFLAGS} -c -o lundump.o lundump.c
gcc ${CFLAGS} -c -o lvm.o lvm.c
gcc ${CFLAGS} -c -o lzio.o lzio.c
gcc ${CFLAGS} -c -o lauxlib.o lauxlib.c
gcc ${CFLAGS} -c -o lbaselib.o lbaselib.c
gcc ${CFLAGS} -c -o ldblib.o ldblib.c
gcc ${CFLAGS} -c -o liolib.o liolib.c
gcc ${CFLAGS} -c -o lmathlib.o lmathlib.c
gcc ${CFLAGS} -c -o loslib.o loslib.c
gcc ${CFLAGS} -c -o ltablib.o ltablib.c
gcc ${CFLAGS} -c -o lstrlib.o lstrlib.c
gcc ${CFLAGS} -c -o loadlib.o loadlib.c
gcc ${CFLAGS} -c -o linit.o linit.c
OBJ_FILES="lapi.o lcode.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 ldblib.o liolib.o lmathlib.o loslib.o ltablib.o lstrlib.o loadlib.o linit.o"
ar rcu liblua.a ${OBJ_FILES} # DLL needs all object files
ranlib liblua.a
gcc ${CFLAGS} -c -o lua.o lua.c
gcc -o lua lua.o liblua.a ${LDFLAGS}
gcc ${CFLAGS} -c -o luac.o luac.c
gcc ${CFLAGS} -c -o print.o print.c
gcc -o luac luac.o print.o liblua.a ${LDFLAGS}
_d=${HOME}/.luaenv/versions/${V}
test -d $_d && rm -rf $_d
mkdir -p \
${HOME}/.luaenv/versions/${V}/bin \
${HOME}/.luaenv/versions/${V}/include \
${HOME}/.luaenv/versions/${V}/lib \
${HOME}/.luaenv/versions/${V}/man/man1 \
${HOME}/.luaenv/versions/${V}/share/lua/${R} \
${HOME}/.luaenv/versions/${V}/lib/lua/${R}
cd ${PWD_LOCAL}/lua-${V}/src &&
install -p -m 0755 lua luac ${HOME}/.luaenv/versions/$V/bin
cd ${PWD_LOCAL}/lua-${V}/src &&
install -p -m 0644 lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp ${HOME}/.luaenv/versions/$V/include
cd ${PWD_LOCAL}/lua-${V}/src &&
install -p -m 0644 liblua.a ${HOME}/.luaenv/versions/$V/lib
cd ${PWD_LOCAL}/lua-${V}/doc &&
install -p -m 0644 lua.1 luac.1 ${HOME}/.luaenv/versions/$V/man/man1
# shared
CFLAGS="-fPIC -O2 -Wall -DLUA_USE_LINUX"
LDFLAGS="-lm -Wl,-E -ldl -lreadline -lhistory -lncurses"
cd ${PWD_LOCAL}/lua-${V}/src
# compila todos os .c como posição-independente
gcc ${CFLAGS} -c -o lapi.o lapi.c
gcc ${CFLAGS} -c -o lcode.o lcode.c
gcc ${CFLAGS} -c -o ldebug.o ldebug.c
gcc ${CFLAGS} -c -o ldo.o ldo.c
gcc ${CFLAGS} -c -o ldump.o ldump.c
gcc ${CFLAGS} -c -o lfunc.o lfunc.c
gcc ${CFLAGS} -c -o lgc.o lgc.c
gcc ${CFLAGS} -c -o llex.o llex.c
gcc ${CFLAGS} -c -o lmem.o lmem.c
gcc ${CFLAGS} -c -o lobject.o lobject.c
gcc ${CFLAGS} -c -o lopcodes.o lopcodes.c
gcc ${CFLAGS} -c -o lparser.o lparser.c
gcc ${CFLAGS} -c -o lstate.o lstate.c
gcc ${CFLAGS} -c -o lstring.o lstring.c
gcc ${CFLAGS} -c -o ltable.o ltable.c
gcc ${CFLAGS} -c -o ltm.o ltm.c
gcc ${CFLAGS} -c -o lundump.o lundump.c
gcc ${CFLAGS} -c -o lvm.o lvm.c
gcc ${CFLAGS} -c -o lzio.o lzio.c
gcc ${CFLAGS} -c -o lauxlib.o lauxlib.c
gcc ${CFLAGS} -c -o lbaselib.o lbaselib.c
gcc ${CFLAGS} -c -o ldblib.o ldblib.c
gcc ${CFLAGS} -c -o liolib.o liolib.c
gcc ${CFLAGS} -c -o lmathlib.o lmathlib.c
gcc ${CFLAGS} -c -o loslib.o loslib.c
gcc ${CFLAGS} -c -o ltablib.o ltablib.c
gcc ${CFLAGS} -c -o lstrlib.o lstrlib.c
gcc ${CFLAGS} -c -o loadlib.o loadlib.c
gcc ${CFLAGS} -c -o linit.o linit.c
OBJ_FILES="lapi.o lcode.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 ldblib.o liolib.o lmathlib.o loslib.o ltablib.o lstrlib.o loadlib.o linit.o"
gcc -shared -o liblua.so.${V} ${OBJ_FILES} ${LDFLAGS} # gera a shared lib
cd ${PWD_LOCAL}/lua-${V}/src &&
install -p -m 0644 liblua.so.${V} ${HOME}/.luaenv/versions/$V/lib
cd ${HOME}/.luaenv/versions/$V/lib
ln -s liblua.so.${V} liblua.so
ln -s liblua.so.${V} liblua.so.${R}
exit 0
#!/usr/bin/env bash
PWD_LOCAL=$PWD
V=5.4.6
R=${V%.?}
_d=lua-${V}
test -d $_d && rm -rf $_d
_f=lua-${V}.tar.gz
if ! test -e $_f; then
wget https://www.lua.org/ftp/lua-${V}.tar.gz
fi
# tar xvzf lua-${V}.tar.gz
# cd lua-${V}
# make linux CC="gcc"
# _d=${HOME}/.luaenv/versions/${V}
# test -d $_d && rm -rf $_d
# #make INSTALL_TOP=${HOME}/.luaenv/versions/${V} install
tar xvzf lua-${V}.tar.gz
cd ${PWD_LOCAL}/lua-${V}/src
# static
CFLAGS="-O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_LINUX"
LDFLAGS="-lm -Wl,-E -ldl"
#LDFLAGS="-lm -Wl,-E -ldl -lreadline -lhistory -lncurses"
gcc ${CFLAGS} -c -o lapi.o lapi.c
gcc ${CFLAGS} -c lcode.c
gcc ${CFLAGS} -c -o lctype.o lctype.c
gcc ${CFLAGS} -c -o ldebug.o ldebug.c
gcc ${CFLAGS} -c -o ldo.o ldo.c
gcc ${CFLAGS} -c -o ldump.o ldump.c
gcc ${CFLAGS} -c -o lfunc.o lfunc.c
gcc ${CFLAGS} -c -o lgc.o lgc.c
gcc ${CFLAGS} -c llex.c
gcc ${CFLAGS} -c -o lmem.o lmem.c
gcc ${CFLAGS} -c -o lobject.o lobject.c
gcc ${CFLAGS} -c -o lopcodes.o lopcodes.c
gcc ${CFLAGS} -c lparser.c
gcc ${CFLAGS} -c -o lstate.o lstate.c
gcc ${CFLAGS} -c -o lstring.o lstring.c
gcc ${CFLAGS} -c -o ltable.o ltable.c
gcc ${CFLAGS} -c -o ltm.o ltm.c
gcc ${CFLAGS} -c -o lundump.o lundump.c
gcc ${CFLAGS} -c -o lvm.o lvm.c
gcc ${CFLAGS} -c -o lzio.o lzio.c
gcc ${CFLAGS} -c -o lauxlib.o lauxlib.c
gcc ${CFLAGS} -c -o lbaselib.o lbaselib.c
gcc ${CFLAGS} -c -o lcorolib.o lcorolib.c
gcc ${CFLAGS} -c -o ldblib.o ldblib.c
gcc ${CFLAGS} -c -o liolib.o liolib.c
gcc ${CFLAGS} -c -o lmathlib.o lmathlib.c
gcc ${CFLAGS} -c -o loadlib.o loadlib.c
gcc ${CFLAGS} -c -o loslib.o loslib.c
gcc ${CFLAGS} -c -o lstrlib.o lstrlib.c
gcc ${CFLAGS} -c -o ltablib.o ltablib.c
gcc ${CFLAGS} -c -o lutf8lib.o lutf8lib.c
gcc ${CFLAGS} -c -o linit.o linit.c
OBJ_FILES="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"
ar rcu liblua.a ${OBJ_FILES} # DLL needs all object files
ranlib liblua.a
gcc ${CFLAGS} -c -o lua.o lua.c
gcc -o lua lua.o liblua.a ${LDFLAGS}
gcc ${CFLAGS} -c -o luac.o luac.c
gcc -o luac luac.o liblua.a ${LDFLAGS}
_d=${HOME}/.luaenv/versions/${V}
test -d $_d && rm -rf $_d
mkdir -p \
${HOME}/.luaenv/versions/${V}/bin \
${HOME}/.luaenv/versions/${V}/include \
${HOME}/.luaenv/versions/${V}/lib \
${HOME}/.luaenv/versions/${V}/man/man1 \
${HOME}/.luaenv/versions/${V}/share/lua/${R} \
${HOME}/.luaenv/versions/${V}/lib/lua/${R}
cd ${PWD_LOCAL}/lua-${V}/src &&
install -p -m 0755 lua luac ${HOME}/.luaenv/versions/${V}/bin
cd ${PWD_LOCAL}/lua-${V}/src &&
install -p -m 0644 lua.h luaconf.h lualib.h lauxlib.h lua.hpp ${HOME}/.luaenv/versions/${V}/include
cd ${PWD_LOCAL}/lua-${V}/src &&
install -p -m 0644 liblua.a ${HOME}/.luaenv/versions/${V}/lib
cd ${PWD_LOCAL}/lua-${V}/doc &&
install -p -m 0644 lua.1 luac.1 ${HOME}/.luaenv/versions/${V}/man/man1
# shared
CFLAGS="-fPIC -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_LINUX"
LDFLAGS="-lm -Wl,-E -ldl"
cd ${PWD_LOCAL}/lua-${V}/src
# compila todos os .c como posição-independente
gcc ${CFLAGS} -c -o lapi.o lapi.c
gcc ${CFLAGS} -c lcode.c
gcc ${CFLAGS} -c -o lctype.o lctype.c
gcc ${CFLAGS} -c -o ldebug.o ldebug.c
gcc ${CFLAGS} -c -o ldo.o ldo.c
gcc ${CFLAGS} -c -o ldump.o ldump.c
gcc ${CFLAGS} -c -o lfunc.o lfunc.c
gcc ${CFLAGS} -c -o lgc.o lgc.c
gcc ${CFLAGS} -c llex.c
gcc ${CFLAGS} -c -o lmem.o lmem.c
gcc ${CFLAGS} -c -o lobject.o lobject.c
gcc ${CFLAGS} -c -o lopcodes.o lopcodes.c
gcc ${CFLAGS} -c lparser.c
gcc ${CFLAGS} -c -o lstate.o lstate.c
gcc ${CFLAGS} -c -o lstring.o lstring.c
gcc ${CFLAGS} -c -o ltable.o ltable.c
gcc ${CFLAGS} -c -o ltm.o ltm.c
gcc ${CFLAGS} -c -o lundump.o lundump.c
gcc ${CFLAGS} -c -o lvm.o lvm.c
gcc ${CFLAGS} -c -o lzio.o lzio.c
gcc ${CFLAGS} -c -o lauxlib.o lauxlib.c
gcc ${CFLAGS} -c -o lbaselib.o lbaselib.c
gcc ${CFLAGS} -c -o lcorolib.o lcorolib.c
gcc ${CFLAGS} -c -o ldblib.o ldblib.c
gcc ${CFLAGS} -c -o liolib.o liolib.c
gcc ${CFLAGS} -c -o lmathlib.o lmathlib.c
gcc ${CFLAGS} -c -o loadlib.o loadlib.c
gcc ${CFLAGS} -c -o loslib.o loslib.c
gcc ${CFLAGS} -c -o lstrlib.o lstrlib.c
gcc ${CFLAGS} -c -o ltablib.o ltablib.c
gcc ${CFLAGS} -c -o lutf8lib.o lutf8lib.c
gcc ${CFLAGS} -c -o linit.o linit.c
OBJ_FILES="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"
gcc -shared -o liblua.so.${V} ${OBJ_FILES} ${LDFLAGS} # gera a shared lib
cd ${PWD_LOCAL}/lua-${V}/src &&
install -p -m 0644 liblua.so.${V} ${HOME}/.luaenv/versions/$V/lib
cd ${HOME}/.luaenv/versions/$V/lib
ln -s liblua.so.${V} liblua.so
ln -s liblua.so.${V} liblua.so.${R}
exit 0
#!/usr/bin/env bash
V=luajit-2.1-dev
_d=LuaJIT
test -d $_d && rm -rf $_d
_f=luajit-2.1-dev.tgz
if ! test -e $_f; then
git clone https://github.com/LuaJIT/LuaJIT.git
tar czvf ${V}.tgz LuaJIT
fi
tar xvzf ${V}.tgz
cd LuaJIT
make MYCFLAGS="-fPIC" linux
_d=${HOME}/.luaenv/versions/$V
test -d $_d && rm -rf $_d
make INSTALL_TOP=${HOME}/.luaenv/versions/$V install
exit 0
./configure --with-lua-include=$(luaenv prefix)/include --prefix=/home/ivan/.config/luarock/$(luaenv version-name)
#!/usr/bin/env bash
test -d neovim && rm -rf neovim
# if exist path `/home/linuxbrew/.linuxbrew/Cellar/ivan/neovim.1' then remove.
_d=/home/linuxbrew/.linuxbrew/Cellar/ivan/neovim
test -d ${_d}.1 && rm -rf ${_d}.1
mv $_d $_d.1
git clone https://github.com/neovim/neovim
cd neovim
make CMAKE_BUILD_TYPE=Release CMAKE_INSTALL_PREFIX=$(brew --prefix)/Cellar/ivan/neovim
make install
exit 0
lua:
./build-lua-5.1.5.sh
./build-lua-5.4.6.sh
neovim:
./build-nvim.sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment