summaryrefslogtreecommitdiffstats
path: root/package/lua/lua.mk
diff options
context:
space:
mode:
authorGustavo Zacarias <gustavo@zacarias.com.ar>2010-04-29 18:03:45 -0300
committerPeter Korsgaard <jacmet@sunsite.dk>2010-05-01 22:31:07 +0200
commit46913a2d4f5a059126aaf0411aded258f7d2de1b (patch)
treedb142364cc2375e57438abc0c1619d8109931867 /package/lua/lua.mk
parent494149b989867d65b24f08cb428c596d0a0c3bc6 (diff)
downloadbuildroot-novena-46913a2d4f5a059126aaf0411aded258f7d2de1b.tar.gz
buildroot-novena-46913a2d4f5a059126aaf0411aded258f7d2de1b.zip
lua: Migrate to gentargets and improve it
Closes #803 Based on initial patch by rvpaasen@t3i.nl [Peter: lua/luac needs liblua.so.* on target] Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
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))