summaryrefslogtreecommitdiff
path: root/package/lua/lua.mk
diff options
context:
space:
mode:
Diffstat (limited to 'package/lua/lua.mk')
-rw-r--r--package/lua/lua.mk175
1 files changed, 108 insertions, 67 deletions
diff --git a/package/lua/lua.mk b/package/lua/lua.mk
index aeb6c8285..9b2302144 100644
--- a/package/lua/lua.mk
+++ b/package/lua/lua.mk
@@ -4,78 +4,119 @@
#
#############################################################
-LUA_VERSION=5.1.4
+LUA_VERSION = 5.1.4
+LUA_SITE = http://www.lua.org/ftp
+LUA_INSTALL_STAGING = YES
-LUA_SOURCE=lua-$(LUA_VERSION).tar.gz
-LUA_CAT:=$(ZCAT)
-LUA_SITE=http://www.lua.org/ftp
-
-LUA_DIR=$(BUILD_DIR)/lua-$(LUA_VERSION)
-
-LUA_CFLAGS=-DLUA_USE_LINUX
-LUA_MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses"
-
-$(DL_DIR)/$(LUA_SOURCE):
- $(call DOWNLOAD,$(LUA_SITE),$(LUA_SOURCE))
-
-$(LUA_DIR)/.unpacked: $(DL_DIR)/$(LUA_SOURCE)
- $(LUA_CAT) $(DL_DIR)/$(LUA_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
- touch $(LUA_DIR)/.unpacked
-
-$(LUA_DIR)/src/lua: $(LUA_DIR)/.unpacked
- rm -f $@
- $(MAKE) $(TARGET_CONFIGURE_OPTS) \
- MYCFLAGS=$(LUA_CFLAGS) \
- MYLIBS=$(LUA_MYLIBS) \
- AR="$(TARGET_CROSS)ar rcu" \
- -C $(LUA_DIR)/src all
-
-$(LUA_DIR)/src/luac: $(LUA_DIR)/src/lua
-
-$(LUA_DIR)/src/liblua.a: $(LUA_DIR)/src/lua
-
-$(STAGING_DIR)/usr/lib/liblua.a: $(LUA_DIR)/src/liblua.a
- cp -dpf $(LUA_DIR)/src/liblua.a $(STAGING_DIR)/usr/lib/liblua.a
-
-$(STAGING_DIR)/usr/bin/lua: $(LUA_DIR)/src/lua
- cp -dpf $(LUA_DIR)/src/lua $(STAGING_DIR)/usr/bin/lua
-
-$(STAGING_DIR)/usr/bin/luac: $(LUA_DIR)/src/luac
- cp -dpf $(LUA_DIR)/src/luac $(STAGING_DIR)/usr/bin/luac
-
-$(TARGET_DIR)/usr/lib/liblua.a: $(STAGING_DIR)/usr/lib/liblua.a
- cp -dpf $(STAGING_DIR)/usr/lib/liblua.a $(TARGET_DIR)/usr/lib/liblua.a
-
-$(TARGET_DIR)/usr/bin/lua: $(STAGING_DIR)/usr/bin/lua
- cp -dpf $(STAGING_DIR)/usr/bin/lua $(TARGET_DIR)/usr/bin/lua
-
-$(TARGET_DIR)/usr/bin/luac: $(STAGING_DIR)/usr/bin/luac
- cp -dpf $(STAGING_DIR)/usr/bin/luac $(TARGET_DIR)/usr/bin/luac
-
-
-lua-bins: $(TARGET_DIR)/usr/bin/lua $(TARGET_DIR)/usr/bin/luac
+ifeq ($(BR2_PACKAGE_LUA_SHARED_LIBRARY),y)
+ LUA_MYCFLAGS += -fPIC -DLUA_USE_DLOPEN
+ LUA_MYLIBS += -ldl
+endif
-lua-libs: $(if $(BR2_HAVE_DEVFILES),$(TARGET_DIR)/usr/lib/liblua.a)
+ifeq ($(BR2_PACKAGE_LUA_INTERPRETER_READLINE),y)
+ LUA_DEPENDENCIES = readline ncurses
+ LUA_MYLIBS += -lreadline -lhistory -lncurses
+ LUA_MYCFLAGS += -DLUA_USE_LINUX
+else
+ LUA_MYCFLAGS += -DLUA_USE_POSIX
+endif
-lua: readline ncurses lua-bins lua-libs
+define LUA_BUILD_CMDS
+ sed -i -e 's/-O2//' $(@D)/src/Makefile
+ sed -i -e 's/\/usr\/local/\/usr/' $(@D)/etc/lua.pc
+ $(MAKE) $(TARGET_CONFIGURE_OPTS) MYCFLAGS="$(LUA_MYCFLAGS)" \
+ MYLIBS="$(LUA_MYLIBS)" AR="$(TARGET_CROSS)ar rcu" \
+ PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all
+endef
+
+ifeq ($(BR2_PACKAGE_LUA_SHARED_LIBRARY),y)
+define LUA_INSTALL_STAGING_SHARED_LIB
+ $(INSTALL) -D $(@D)/src/liblua.so.$(LUA_VERSION) \
+ $(STAGING_DIR)/usr/lib/liblua.so.$(LUA_VERSION)
+ ln -sf liblua.so.$(LUA_VERSION) $(STAGING_DIR)/usr/lib/liblua.so
+endef
+endif
-lua-source: $(DL_DIR)/$(LUA_SOURCE)
+define LUA_INSTALL_STAGING_CMDS
+ $(INSTALL) -m 0644 -D $(@D)/etc/lua.pc \
+ $(STAGING_DIR)/usr/lib/pkgconfig
+ $(INSTALL) $(@D)/src/liblua.a $(STAGING_DIR)/usr/lib
+ $(INSTALL) $(@D)/src/lua $(STAGING_DIR)/usr/bin
+ $(INSTALL) $(@D)/src/luac $(STAGING_DIR)/usr/bin
+ $(INSTALL) $(@D)/src/lua.h $(STAGING_DIR)/usr/include
+ $(INSTALL) $(@D)/src/luaconf.h $(STAGING_DIR)/usr/include
+ $(INSTALL) $(@D)/src/lualib.h $(STAGING_DIR)/usr/include
+ $(INSTALL) $(@D)/src/lauxlib.h $(STAGING_DIR)/usr/include
+endef
+
+ifeq ($(BR2_PACKAGE_LUA_INTERPRETER),y)
+define LUA_INSTALL_INTERPRETER
+ $(INSTALL) $(@D)/src/lua $(TARGET_DIR)/usr/bin
+endef
+endif
-lua-clean:
- rm -f $(STAGING_DIR)/usr/bin/lua $(TARGET_DIR)/usr/bin/luac
- rm -f $(STAGING_DIR)/usr/lib/liblua.a
- rm -f $(TARGET_DIR)/usr/bin/lua $(TARGET_DIR)/usr/bin/luac
- rm -f $(TARGET_DIR)/usr/lib/liblua.a
- -$(MAKE) -C $(LUA_DIR) clean
+ifeq ($(BR2_PACKAGE_LUA_COMPILER),y)
+define LUA_INSTALL_COMPILER
+ $(INSTALL) $(@D)/src/luac $(TARGET_DIR)/usr/bin
+endef
+endif
-lua-dirclean:
- rm -rf $(LUA_DIR)
+ifeq ($(BR2_PACKAGE_LUA_SHARED_LIBRARY),y)
+define LUA_INSTALL_LIBRARY
+ $(INSTALL) $(@D)/src/liblua.so.$(LUA_VERSION) \
+ $(TARGET_DIR)/usr/lib/liblua.so.$(LUA_VERSION)
+ ln -sf liblua.so.$(LUA_VERSION) $(TARGET_DIR)/usr/lib/liblua.so
+ $(INSTALL) $(@D)/src/liblua.a $(TARGET_DIR)/usr/lib/liblua.a
+endef
+else
+define LUA_INSTALL_LIBRARY
+ $(INSTALL) $(@D)/src/liblua.a $(TARGET_DIR)/usr/lib/liblua.a
+endef
+endif
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_LUA),y)
-TARGETS+=lua
+ifeq ($(BR2_HAVE_DEVFILES),y)
+define LUA_INSTALL_DEVFILES
+ $(INSTALL) -m 0644 -D $(@D)/etc/lua.pc \
+ $(TARGET_DIR)/usr/lib/pkgconfig/lua.pc
+ $(INSTALL) $(@D)/src/lua.h $(TARGET_DIR)/usr/include
+ $(INSTALL) $(@D)/src/luaconf.h $(TARGET_DIR)/usr/include
+ $(INSTALL) $(@D)/src/lualib.h $(TARGET_DIR)/usr/include
+ $(INSTALL) $(@D)/src/lauxlib.h $(TARGET_DIR)/usr/include
+endef
endif
+
+define LUA_INSTALL_TARGET_CMDS
+ $(LUA_INSTALL_INTERPRETER)
+ $(LUA_INSTALL_COMPILER)
+ $(LUA_INSTALL_LIBRARY)
+ $(LUA_INSTALL_DEVFILES)
+endef
+
+LUA_INSTALLED_FILES = \
+ /usr/include/lua.h \
+ /usr/include/luaconf.h \
+ /usr/include/lualib.h \
+ /usr/include/lauxlib.h \
+ /usr/lib/pkgconfig/lua.pc \
+ /usr/bin/lua \
+ /usr/bin/luac \
+ /usr/lib/liblua.a \
+ /usr/lib/liblua.so*
+
+define LUA_UNINSTALL_STAGING_CMDS
+ for i in $(LUA_INSTALLED_FILES); do \
+ rm -f $(STAGING_DIR)$$i; \
+ done
+endef
+
+define LUA_UNINSTALL_TARGET_CMDS
+ for i in $(LUA_INSTALLED_FILES); do \
+ rm -f $(TARGET_DIR)$$i; \
+ done
+endef
+
+define LUA_CLEAN_CMDS
+ -$(MAKE) -C $(@D) clean
+endef
+
+$(eval $(call GENTARGETS,package,lua))