################################################################################ # 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)