Skip to content

Commit b7c18df

Browse files
committed
arch linux way
1 parent 49e86f5 commit b7c18df

File tree

1 file changed

+52
-26
lines changed

1 file changed

+52
-26
lines changed

.github/workflows/build-lua.yml

Lines changed: 52 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
cd "$WORKDIR"
2727
2828
# Download with proper error checking
29-
curl -fsSL "https://www.lua.org/ftp/lua-5.4.6.tar.gz" --output lua.tar.gz
29+
curl -fsSL "https://www.lua.org/ftp/lua-5.4.7.tar.gz" --output lua.tar.gz
3030
3131
# Verify download
3232
if [ ! -s lua.tar.gz ]; then
@@ -43,36 +43,62 @@ jobs:
4343
4444
cd "lua-5.4.6"
4545
46-
# Create custom config
47-
cat > src/luaconf.h.new << 'EOF'
48-
#include "luaconf.h"
49-
#undef LUAI_FUNC
50-
#undef LUAI_DDEC
51-
#undef LUAI_DDEF
52-
#define LUAI_FUNC extern
53-
#define LUAI_DDEC(def) def
54-
#define LUAI_DDEF(def) def
55-
EOF
46+
# Create patches
47+
cat > lua-shared-lib.patch << 'EOF'
48+
--- a/src/Makefile
49+
+++ b/src/Makefile
50+
@@ -31,7 +31,7 @@
51+
PLATS= aix bsd c89 freebsd generic linux macosx mingw posix solaris
52+
53+
# What to install.
54+
-TO_BIN= lua luac
55+
+TO_BIN= lua luac liblua.so
56+
57+
# Lua version and release.
58+
V= 5.4
59+
@@ -51,7 +51,7 @@
60+
# -DLUA_COMPAT_5_2 controls other macros for compatibility with Lua 5.2.
61+
MYCFLAGS=
62+
MYLDFLAGS=
63+
-MYLIBS= -lm
64+
+MYLIBS= -lm -ldl
65+
66+
# == END OF USER SETTINGS. NO NEED TO CHANGE ANYTHING BELOW THIS LINE =========
67+
68+
@@ -64,7 +64,7 @@
69+
# Targets start here.
70+
all: $(PLAT)
71+
72+
-$(PLATS) clean:
73+
+$(PLATS) clean: liblua.so
74+
75+
$(PLATS):
76+
$(MAKE) -C src $@
5677
57-
# Backup original and replace with our version
58-
mv src/luaconf.h src/luaconf.h.orig
59-
mv src/luaconf.h.new src/luaconf.h
78+
@@ -78,6 +78,9 @@
79+
$(MAKE) -C src $@
6080
61-
# Modify Makefile for shared library
62-
sed -i 's/MYCFLAGS=/MYCFLAGS=-fPIC /' src/Makefile
63-
sed -i 's/MYLDFLAGS=/MYLDFLAGS=-shared /' src/Makefile
64-
sed -i 's/ALL_T=/ALL_T= $(LUA_SO)/' src/Makefile
65-
sed -i 's/TO_BIN= lua luac/TO_BIN= liblua5.4.so/' src/Makefile
81+
linux:
82+
+ $(CC) -shared -o liblua.so $(MYCFLAGS) $(MYLDFLAGS) $(LUA_A) $(MYLIBS)
83+
+ cp liblua.so ../
84+
+
85+
$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl"
6686
67-
# Build
68-
make linux
87+
macosx:
88+
EOF
89+
90+
patch -p1 < lua-shared-lib.patch
6991
70-
# Verify and copy
7192
cd src
72-
if [ ! -f liblua5.4.so ]; then
73-
echo "Build failed - library not found"
74-
exit 1
75-
fi
93+
94+
# Clean build first
95+
make clean
96+
97+
# Build all object files
98+
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_LINUX $(SYSCFLAGS) $(MYCFLAGS) -fPIC -c *.c
99+
100+
# Build shared library directly
101+
gcc -shared -o liblua5.4.so *.o -lm -ldl -o liblua5.4.so
76102
77103
# Test the library
78104
nm -D liblua5.4.so | grep ' T ' || echo "No exported symbols found!"

0 commit comments

Comments
 (0)