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>
This commit is contained in:
Gustavo Zacarias
2010-04-29 18:03:45 -03:00
committed by Peter Korsgaard
parent 494149b989
commit 46913a2d4f
9 changed files with 400 additions and 76 deletions

View File

@@ -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
lua-libs: $(if $(BR2_HAVE_DEVFILES),$(TARGET_DIR)/usr/lib/liblua.a)
lua: readline ncurses lua-bins lua-libs
lua-source: $(DL_DIR)/$(LUA_SOURCE)
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
lua-dirclean:
rm -rf $(LUA_DIR)
#############################################################
#
# Toplevel Makefile options
#
#############################################################
ifeq ($(BR2_PACKAGE_LUA),y)
TARGETS+=lua
ifeq ($(BR2_PACKAGE_LUA_SHARED_LIBRARY),y)
LUA_MYCFLAGS += -fPIC -DLUA_USE_DLOPEN
LUA_MYLIBS += -ldl
endif
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
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
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
ifeq ($(BR2_PACKAGE_LUA_COMPILER),y)
define LUA_INSTALL_COMPILER
$(INSTALL) $(@D)/src/luac $(TARGET_DIR)/usr/bin
endef
endif
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
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))