Commit 5bdc76ee authored by Francois Perrad's avatar Francois Perrad Committed by Peter Korsgaard
Browse files

lua: handles BR2_PREFER_STATIC_LIB

parent 179266d2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -362,7 +362,8 @@ source "package/jimtcl/Config.in"
source "package/lua/Config.in"
source "package/luainterpreter/Config.in"
source "package/luajit/Config.in"
if BR2_PACKAGE_HAS_LUA_INTERPRETER
if BR2_PACKAGE_HAS_LUA_INTERPRETER && !BR2_PREFER_STATIC_LIB
# lua modules are dynamically loaded, so not available on static builds
menu "Lua libraries/modules"
source "package/cgilua/Config.in"
source "package/copas/Config.in"
+14 −7
Original line number Diff line number Diff line
Add the compilation of a shared library.
Compile the lua binary with the shared library.
And install the shared library.
The variable BUILDMODE allows to switch between static and dynamic mode.

Signed-off-by: Francois Perrad <francois.perrad@gadz.org>

@@ -20,8 +21,8 @@ Index: b/Makefile
 install: dummy
 	cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD)
 	cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN)
+	cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB)
+	ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so
+	test -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || :
+	test -f src/$(TO_SOLIB) && ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so || :
 	cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC)
 	cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB)
 	cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN)
@@ -37,18 +38,21 @@ Index: b/src/Makefile
 CORE_O=	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
@@ -36,8 +37,9 @@
@@ -36,8 +37,13 @@
 LUAC_O=	luac.o print.o
 
 ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O)
-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
+ifneq (dynamic,$(BUILDMODE))
 ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
+else
+ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T)
+endif
 ALL_A= $(LUA_A)
+ALL_SO= $(LUA_SO)
 
 default: $(PLAT)
 
@@ -47,12 +49,18 @@
@@ -47,12 +53,23 @@
 
 a:	$(ALL_A)
 
@@ -58,14 +62,17 @@ Index: b/src/Makefile
 	$(AR) $@ $(CORE_O) $(LIB_O)	# DLL needs all object files
 	$(RANLIB) $@
 
-$(LUA_T): $(LUA_O) $(LUA_A)
-	$(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
+$(LUA_SO): $(CORE_O) $(LIB_O)
+	$(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $?
+	ln -fs $@.$(PKG_VERSION) $@
+
+ifneq (dynamic,$(BUILDMODE))
 $(LUA_T): $(LUA_O) $(LUA_A)
 	$(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
+else
+$(LUA_T): $(LUA_O) $(LUA_SO)
+	$(CC) -o $@ -L. $(MYLDFLAGS) $(LUA_O) -llua $(LIBS)
+endif
 
 $(LUAC_T): $(LUAC_O) $(LUA_A)
 	$(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)
+14 −7
Original line number Diff line number Diff line
Add the compilation of a shared library.
Compile the lua binary with the shared library.
And install the shared library.
The variable BUILDMODE allows to switch between static and dynamic mode.

Signed-off-by: Francois Perrad <francois.perrad@gadz.org>

@@ -20,8 +21,8 @@ Index: b/Makefile
 install: dummy
 	cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD)
 	cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN)
+	cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB)
+	ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so
+	test -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || :
+	test -f src/$(TO_SOLIB) && ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so || :
 	cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC)
 	cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB)
 	cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN)
@@ -37,18 +38,21 @@ Index: b/src/Makefile
 CORE_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
@@ -43,8 +44,9 @@
@@ -43,8 +44,13 @@
 LUAC_O=	luac.o
 
 ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)
-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
+ifneq (dynamic,$(BUILDMODE))
 ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
+else
+ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T)
+endif
 ALL_A= $(LUA_A)
+ALL_SO= $(LUA_SO)
 
 # Targets start here.
 default: $(PLAT)
@@ -55,12 +57,18 @@
@@ -55,12 +61,23 @@
 
 a:	$(ALL_A)
 
@@ -58,14 +62,17 @@ Index: b/src/Makefile
 	$(AR) $@ $(BASE_O)
 	$(RANLIB) $@
 
-$(LUA_T): $(LUA_O) $(LUA_A)
-	$(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
+$(LUA_SO): $(CORE_O) $(LIB_O)
+	$(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $?
+	ln -fs $@.$(PKG_VERSION) $@
+
+ifneq (dynamic,$(BUILDMODE))
 $(LUA_T): $(LUA_O) $(LUA_A)
 	$(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
+else
+$(LUA_T): $(LUA_O) $(LUA_SO)
+	$(CC) -o $@ -L. $(LDFLAGS) $(LUA_O) -llua $(LIBS)
+endif
 
 $(LUAC_T): $(LUAC_O) $(LUA_A)
 	$(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)
+13 −6
Original line number Diff line number Diff line
@@ -14,8 +14,7 @@ LUA_INSTALL_STAGING = YES
LUA_LICENSE = MIT
LUA_LICENSE_FILES = COPYRIGHT

LUA_CFLAGS = -Wall -fPIC
LUA_MYLIBS += -ldl
LUA_CFLAGS = -Wall -fPIC -DLUA_USE_POSIX

ifeq ($(BR2_PACKAGE_LUA_5_2),y)
LUA_CFLAGS += -DLUA_COMPAT_ALL
@@ -24,17 +23,23 @@ LUA_CFLAGS += -D_FILE_OFFSET_BITS=32
endif
endif

ifeq ($(BR2_PREFER_STATIC_LIB),y)
	LUA_BUILDMODE = static
else
	LUA_BUILDMODE = dynamic
	LUA_CFLAGS += -DLUA_USE_DLOPEN
	LUA_MYLIBS += -ldl
endif

ifeq ($(BR2_PACKAGE_LUA_INTERPRETER_READLINE),y)
	LUA_DEPENDENCIES = readline ncurses
	LUA_MYLIBS += -lreadline -lhistory -lncurses
	LUA_CFLAGS += -DLUA_USE_POSIX -DLUA_USE_DLOPEN -DLUA_USE_READLINE
	LUA_CFLAGS += -DLUA_USE_READLINE
else
ifeq ($(BR2_PACKAGE_LUA_INTERPRETER_LINENOISE),y)
	LUA_DEPENDENCIES = linenoise
	LUA_MYLIBS += -llinenoise
	LUA_CFLAGS += -DLUA_USE_POSIX -DLUA_USE_DLOPEN -DLUA_USE_LINENOISE
else
	LUA_CFLAGS += -DLUA_USE_POSIX -DLUA_USE_DLOPEN
	LUA_CFLAGS += -DLUA_USE_LINENOISE
endif
endif

@@ -53,6 +58,7 @@ define LUA_BUILD_CMDS
	CC="$(TARGET_CC)" RANLIB="$(TARGET_RANLIB)" \
	CFLAGS="$(TARGET_CFLAGS) $(LUA_CFLAGS)" \
	MYLIBS="$(LUA_MYLIBS)" AR="$(TARGET_CROSS)ar rcu" \
	BUILDMODE=$(LUA_BUILDMODE) \
	PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all
endef

@@ -61,6 +67,7 @@ define HOST_LUA_BUILD_CMDS
	CFLAGS="$(HOST_LUA_CFLAGS)" \
	MYLDFLAGS="$(HOST_LDFLAGS)" \
	MYLIBS="$(HOST_LUA_MYLIBS)" \
	BUILDMODE=static \
	PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all
endef