lua: handles BR2_PREFER_STATIC_LIB
authorFrancois Perrad <fperrad@gmail.com>
Wed, 26 Feb 2014 10:03:16 +0000 (11:03 +0100)
committerPeter Korsgaard <peter@korsgaard.com>
Wed, 26 Feb 2014 16:22:17 +0000 (17:22 +0100)
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>
package/Config.in
package/lua/5.1.5/lua-02-shared-libs-for-lua.patch
package/lua/5.2.3/lua-02-shared-libs-for-lua.patch
package/lua/lua.mk

index fca61d6752921a3d1015b063f6eaa1c48d86cd68..46c4ba4a2175c760ee15ea07a7f4187c9e8ea549 100644 (file)
@@ -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"
index bd40534aa714dd76b54527ddac298a5aef665216..3f863a530cb7785479c371f0b764070f533956d4 100644 (file)
@@ -1,6 +1,7 @@
 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)
index cd8a5bf8e1e2a67d342f0e468e9b000ec07085ea..3cf3b2484835f76cd12be2fda6a05b70bd697b7e 100644 (file)
@@ -1,6 +1,7 @@
 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)
index c016d7e0e7270d070bc5957d409934fc94eab89a..bf68e654f28887e85f7293ed00e006973b2bf702 100644 (file)
@@ -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