lua: handles BR2_PREFER_STATIC_LIB

fix compilation with Blackfin FLAT

see http://autobuild.buildroot.net/results/b41/b4146bf821d59f694546f6e3a341394cc8fa43ce/

Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Francois Perrad 2014-02-26 11:03:16 +01:00 committed by Peter Korsgaard
parent 179266d292
commit 5bdc76ee23
4 changed files with 43 additions and 21 deletions

View File

@ -362,7 +362,8 @@ source "package/jimtcl/Config.in"
source "package/lua/Config.in" source "package/lua/Config.in"
source "package/luainterpreter/Config.in" source "package/luainterpreter/Config.in"
source "package/luajit/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" menu "Lua libraries/modules"
source "package/cgilua/Config.in" source "package/cgilua/Config.in"
source "package/copas/Config.in" source "package/copas/Config.in"

View File

@ -1,6 +1,7 @@
Add the compilation of a shared library. Add the compilation of a shared library.
Compile the lua binary with the shared library. Compile the lua binary with the shared library.
And install 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> Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
@ -20,8 +21,8 @@ Index: b/Makefile
install: dummy install: dummy
cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD) 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_BIN) $(INSTALL_BIN)
+ cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) + test -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || :
+ ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so + 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_INC) $(INSTALL_INC)
cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB) cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB)
cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN) 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 \ 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 \ lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \
lundump.o lvm.o lzio.o lundump.o lvm.o lzio.o
@@ -36,8 +37,9 @@ @@ -36,8 +37,13 @@
LUAC_O= luac.o print.o LUAC_O= luac.o print.o
ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_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) +ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T)
+endif
ALL_A= $(LUA_A) ALL_A= $(LUA_A)
+ALL_SO= $(LUA_SO) +ALL_SO= $(LUA_SO)
default: $(PLAT) default: $(PLAT)
@@ -47,12 +49,18 @@ @@ -47,12 +53,23 @@
a: $(ALL_A) a: $(ALL_A)
@ -58,14 +62,17 @@ Index: b/src/Makefile
$(AR) $@ $(CORE_O) $(LIB_O) # DLL needs all object files $(AR) $@ $(CORE_O) $(LIB_O) # DLL needs all object files
$(RANLIB) $@ $(RANLIB) $@
-$(LUA_T): $(LUA_O) $(LUA_A)
- $(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
+$(LUA_SO): $(CORE_O) $(LIB_O) +$(LUA_SO): $(CORE_O) $(LIB_O)
+ $(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $? + $(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $?
+ ln -fs $@.$(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) +$(LUA_T): $(LUA_O) $(LUA_SO)
+ $(CC) -o $@ -L. $(MYLDFLAGS) $(LUA_O) -llua $(LIBS) + $(CC) -o $@ -L. $(MYLDFLAGS) $(LUA_O) -llua $(LIBS)
+endif
$(LUAC_T): $(LUAC_O) $(LUA_A) $(LUAC_T): $(LUAC_O) $(LUA_A)
$(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS) $(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)

View File

@ -1,6 +1,7 @@
Add the compilation of a shared library. Add the compilation of a shared library.
Compile the lua binary with the shared library. Compile the lua binary with the shared library.
And install 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> Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
@ -20,8 +21,8 @@ Index: b/Makefile
install: dummy install: dummy
cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD) 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_BIN) $(INSTALL_BIN)
+ cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) + test -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || :
+ ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so + 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_INC) $(INSTALL_INC)
cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB) cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB)
cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN) 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 \ 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 \ lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o \
ltm.o lundump.o lvm.o lzio.o ltm.o lundump.o lvm.o lzio.o
@@ -43,8 +44,9 @@ @@ -43,8 +44,13 @@
LUAC_O= luac.o LUAC_O= luac.o
ALL_O= $(BASE_O) $(LUA_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) +ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T)
+endif
ALL_A= $(LUA_A) ALL_A= $(LUA_A)
+ALL_SO= $(LUA_SO) +ALL_SO= $(LUA_SO)
# Targets start here. # Targets start here.
default: $(PLAT) default: $(PLAT)
@@ -55,12 +57,18 @@ @@ -55,12 +61,23 @@
a: $(ALL_A) a: $(ALL_A)
@ -58,14 +62,17 @@ Index: b/src/Makefile
$(AR) $@ $(BASE_O) $(AR) $@ $(BASE_O)
$(RANLIB) $@ $(RANLIB) $@
-$(LUA_T): $(LUA_O) $(LUA_A)
- $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
+$(LUA_SO): $(CORE_O) $(LIB_O) +$(LUA_SO): $(CORE_O) $(LIB_O)
+ $(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $? + $(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $?
+ ln -fs $@.$(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) +$(LUA_T): $(LUA_O) $(LUA_SO)
+ $(CC) -o $@ -L. $(LDFLAGS) $(LUA_O) -llua $(LIBS) + $(CC) -o $@ -L. $(LDFLAGS) $(LUA_O) -llua $(LIBS)
+endif
$(LUAC_T): $(LUAC_O) $(LUA_A) $(LUAC_T): $(LUAC_O) $(LUA_A)
$(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS) $(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)

View File

@ -14,8 +14,7 @@ LUA_INSTALL_STAGING = YES
LUA_LICENSE = MIT LUA_LICENSE = MIT
LUA_LICENSE_FILES = COPYRIGHT LUA_LICENSE_FILES = COPYRIGHT
LUA_CFLAGS = -Wall -fPIC LUA_CFLAGS = -Wall -fPIC -DLUA_USE_POSIX
LUA_MYLIBS += -ldl
ifeq ($(BR2_PACKAGE_LUA_5_2),y) ifeq ($(BR2_PACKAGE_LUA_5_2),y)
LUA_CFLAGS += -DLUA_COMPAT_ALL LUA_CFLAGS += -DLUA_COMPAT_ALL
@ -24,17 +23,23 @@ LUA_CFLAGS += -D_FILE_OFFSET_BITS=32
endif endif
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) ifeq ($(BR2_PACKAGE_LUA_INTERPRETER_READLINE),y)
LUA_DEPENDENCIES = readline ncurses LUA_DEPENDENCIES = readline ncurses
LUA_MYLIBS += -lreadline -lhistory -lncurses LUA_MYLIBS += -lreadline -lhistory -lncurses
LUA_CFLAGS += -DLUA_USE_POSIX -DLUA_USE_DLOPEN -DLUA_USE_READLINE LUA_CFLAGS += -DLUA_USE_READLINE
else else
ifeq ($(BR2_PACKAGE_LUA_INTERPRETER_LINENOISE),y) ifeq ($(BR2_PACKAGE_LUA_INTERPRETER_LINENOISE),y)
LUA_DEPENDENCIES = linenoise LUA_DEPENDENCIES = linenoise
LUA_MYLIBS += -llinenoise LUA_MYLIBS += -llinenoise
LUA_CFLAGS += -DLUA_USE_POSIX -DLUA_USE_DLOPEN -DLUA_USE_LINENOISE LUA_CFLAGS += -DLUA_USE_LINENOISE
else
LUA_CFLAGS += -DLUA_USE_POSIX -DLUA_USE_DLOPEN
endif endif
endif endif
@ -53,6 +58,7 @@ define LUA_BUILD_CMDS
CC="$(TARGET_CC)" RANLIB="$(TARGET_RANLIB)" \ CC="$(TARGET_CC)" RANLIB="$(TARGET_RANLIB)" \
CFLAGS="$(TARGET_CFLAGS) $(LUA_CFLAGS)" \ CFLAGS="$(TARGET_CFLAGS) $(LUA_CFLAGS)" \
MYLIBS="$(LUA_MYLIBS)" AR="$(TARGET_CROSS)ar rcu" \ MYLIBS="$(LUA_MYLIBS)" AR="$(TARGET_CROSS)ar rcu" \
BUILDMODE=$(LUA_BUILDMODE) \
PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all
endef endef
@ -61,6 +67,7 @@ define HOST_LUA_BUILD_CMDS
CFLAGS="$(HOST_LUA_CFLAGS)" \ CFLAGS="$(HOST_LUA_CFLAGS)" \
MYLDFLAGS="$(HOST_LDFLAGS)" \ MYLDFLAGS="$(HOST_LDFLAGS)" \
MYLIBS="$(HOST_LUA_MYLIBS)" \ MYLIBS="$(HOST_LUA_MYLIBS)" \
BUILDMODE=static \
PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all
endef endef