| ################################################################################ |
| # LuaRocks package infrastructure |
| # see http://luarocks.org/ |
| # |
| # This file implements an infrastructure that eases development of |
| # package .mk files for LuaRocks packages. |
| # LuaRocks supports various build.type : builtin, make, cmake. |
| # This luarocks infrastructure supports only the builtin mode, |
| # the make & cmake modes could be directly handled by generic & cmake infrastructure. |
| # |
| # See the Buildroot documentation for details on the usage of this |
| # infrastructure |
| # |
| # In terms of implementation, this LuaRocks infrastructure requires |
| # the .mk file to only specify metadata information about the |
| # package: name, version, etc. |
| # |
| ################################################################################ |
| |
| LUAROCKS_RUN_CMD = $(HOST_DIR)/bin/luarocks |
| LUAROCKS_CFLAGS = $(TARGET_CFLAGS) -fPIC |
| HOST_LUAROCKS_CFLAGS = $(HOST_CFLAGS) -fPIC |
| ifeq ($(BR2_PACKAGE_LUA_5_3),y) |
| LUAROCKS_CFLAGS += -DLUA_COMPAT_5_2 |
| HOST_LUAROCKS_CFLAGS += -DLUA_COMPAT_5_2 |
| else ifeq ($(BR2_PACKAGE_LUA_5_4),y) |
| LUAROCKS_CFLAGS += -DLUA_COMPAT_5_3 |
| HOST_LUAROCKS_CFLAGS += -DLUA_COMPAT_5_3 |
| endif |
| |
| ################################################################################ |
| # inner-luarocks-package -- defines how the configuration, compilation and |
| # installation of a LuaRocks package should be done, implements a few hooks to |
| # tune the build process and calls the generic package infrastructure to |
| # generate the necessary make targets |
| # |
| # argument 1 is the lowercase package name |
| # argument 2 is the uppercase package name, including a HOST_ prefix |
| # for host packages |
| # argument 3 is the uppercase package name, without the HOST_ prefix |
| # for host packages |
| # argument 4 is the type (target or host) |
| ################################################################################ |
| |
| define inner-luarocks-package |
| |
| ifndef $(2)_NAME_UPSTREAM |
| ifdef $(3)_NAME_UPSTREAM |
| $(2)_NAME_UPSTREAM = $($(3)_NAME_UPSTREAM) |
| else |
| $(2)_NAME_UPSTREAM ?= $(1) |
| endif |
| endif |
| |
| ifndef $(2)_SUBDIR |
| ifdef $(3)_SUBDIR |
| $(2)_SUBDIR = $($(3)_SUBDIR) |
| else |
| $(2)_SUBDIR ?= $$($(3)_NAME_UPSTREAM)-$$(shell echo "$$($(3)_VERSION)" | sed -e "s/-[0-9]$$$$//") |
| endif |
| endif |
| |
| ifndef $(2)_ROCKSPEC |
| ifdef $(3)_ROCKSPEC |
| $(2)_ROCKSPEC = $($(3)_ROCKSPEC) |
| else |
| $(2)_ROCKSPEC ?= $$(call LOWERCASE,$$($(3)_NAME_UPSTREAM))-$$($(3)_VERSION).rockspec |
| endif |
| endif |
| |
| ifndef $(2)_SOURCE |
| ifdef $(3)_SOURCE |
| $(2)_SOURCE = $($(3)_SOURCE) |
| else |
| $(2)_SOURCE ?= $$(call LOWERCASE,$$($(3)_NAME_UPSTREAM))-$$($(3)_VERSION).src.rock |
| endif |
| endif |
| |
| ifndef $(2)_SITE |
| ifdef $(3)_SITE |
| $(2)_SITE = $($(3)_SITE) |
| else |
| $(2)_SITE ?= $$(call qstrip,$$(BR2_LUAROCKS_MIRROR)) |
| endif |
| endif |
| |
| ifeq ($(4),target) |
| $(2)_DEPENDENCIES += luainterpreter |
| endif |
| # host-luarocks implies host-luainterpreter |
| $(2)_EXTRACT_DEPENDENCIES += host-luarocks |
| |
| # |
| # Extract step. Extract into a temporary dir and move the relevant part to the |
| # source dir. |
| # |
| ifndef $(2)_EXTRACT_CMDS |
| define $(2)_EXTRACT_CMDS |
| mkdir -p $$($(2)_DIR)/luarocks-extract |
| cd $$($(2)_DIR)/luarocks-extract && \ |
| $$(LUAROCKS_RUN_CMD) unpack --force $$($(2)_DL_DIR)/$$($(2)_SOURCE) |
| mv $$($(2)_DIR)/luarocks-extract/*/* $$($(2)_DIR) |
| endef |
| endif |
| |
| # |
| # Build/install step. |
| # |
| ifndef $(2)_INSTALL_TARGET_CMDS |
| define $(2)_INSTALL_TARGET_CMDS |
| cd $$($(2)_SRCDIR) && \ |
| LUAROCKS_CONFIG=$$(LUAROCKS_CONFIG_FILE) \ |
| $$(LUAROCKS_RUN_CMD) make --keep --deps-mode none \ |
| --tree "$$(TARGET_DIR)/usr" \ |
| DEPS_DIR="$$(STAGING_DIR)/usr" \ |
| LUA_INCDIR="$$(STAGING_DIR)/usr/include" \ |
| LUA_LIBDIR="$$(STAGING_DIR)/usr/lib" \ |
| CC=$$(TARGET_CC) \ |
| LD=$$(TARGET_CC) \ |
| CFLAGS="$$(LUAROCKS_CFLAGS)" \ |
| LIBFLAG="-shared $$(TARGET_LDFLAGS)" \ |
| $$($(2)_BUILD_OPTS) $$($(2)_ROCKSPEC) |
| endef |
| endif |
| |
| ifndef $(2)_INSTALL_CMDS |
| define $(2)_INSTALL_CMDS |
| cd $$($(2)_SRCDIR) && \ |
| LUAROCKS_CONFIG=$$(HOST_LUAROCKS_CONFIG_FILE) \ |
| $$(LUAROCKS_RUN_CMD) make --keep --deps-mode none \ |
| DEPS_DIR="$$(HOST_DIR)" \ |
| CFLAGS="$$(HOST_LUAROCKS_CFLAGS)" \ |
| LIBFLAG="-shared $$(HOST_LDFLAGS)" \ |
| $$($(2)_BUILD_OPTS) $$($(2)_ROCKSPEC) |
| endef |
| endif |
| |
| # Call the generic package infrastructure to generate the necessary |
| # make targets |
| $(call inner-generic-package,$(1),$(2),$(3),$(4)) |
| |
| # Upgrade helper |
| $(1)-upgrade: host-luarocks |
| $$(LUAROCKS_RUN_CMD) buildroot $$($(2)_NAME_UPSTREAM) $(1) |
| |
| .PHONY: $(1)-upgrade |
| |
| endef |
| |
| ################################################################################ |
| # luarocks-package -- the target generator macro for LuaRocks packages |
| ################################################################################ |
| |
| luarocks-package = $(call inner-luarocks-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) |
| host-luarocks-package = $(call inner-luarocks-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) |