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