blob: d7628671118513931e7a489e533357e89a1c8e36 [file] [log] [blame]
Francois Perrad72afb292014-01-11 16:42:07 +01001################################################################################
2# LuaRocks package infrastructure
3# see http://luarocks.org/
4#
5# This file implements an infrastructure that eases development of
6# package .mk files for LuaRocks packages.
7# LuaRocks supports various build.type : builtin, make, cmake.
8# This luarocks infrastructure supports only the builtin mode,
9# the make & cmake modes could be directly handled by generic & cmake infrastructure.
10#
11# See the Buildroot documentation for details on the usage of this
12# infrastructure
13#
14# In terms of implementation, this LuaRocks infrastructure requires
Thomas De Schampheleire60714bb2014-07-24 20:07:02 +020015# the .mk file to only specify metadata information about the
Francois Perrad72afb292014-01-11 16:42:07 +010016# package: name, version, etc.
17#
18################################################################################
19
20################################################################################
21# inner-luarocks-package -- defines how the configuration, compilation and
22# installation of a LuaRocks package should be done, implements a few hooks to
23# tune the build process and calls the generic package infrastructure to
24# generate the necessary make targets
25#
26# argument 1 is the lowercase package name
Thomas De Schampheleire5bd9ed62014-07-24 20:57:41 +020027# argument 2 is the uppercase package name, including a HOST_ prefix
Francois Perrad72afb292014-01-11 16:42:07 +010028# for host packages
29# argument 3 is the uppercase package name, without the HOST_ prefix
30# for host packages
Thomas De Schampheleire26aef882014-02-05 10:44:03 +010031# argument 4 is the type (target or host)
Francois Perrad72afb292014-01-11 16:42:07 +010032################################################################################
33
34define inner-luarocks-package
35
Thomas De Schampheleirea603eb12014-09-27 21:32:45 +020036$(2)_BUILD_OPTS ?=
Arnout Vandecappelle75cf6942017-02-23 18:00:40 +010037$(2)_NAME_UPSTREAM ?= $(1)
38$(2)_SUBDIR ?= $$($(2)_NAME_UPSTREAM)-$$(shell echo "$$($(2)_VERSION)" | sed -e "s/-[0-9]$$$$//")
Arnout Vandecappelle01372b02017-02-23 18:00:42 +010039$(2)_ROCKSPEC ?= $$(call LOWERCASE,$$($(2)_NAME_UPSTREAM))-$$($(2)_VERSION).rockspec
40$(2)_SOURCE ?= $$(call LOWERCASE,$$($(2)_NAME_UPSTREAM))-$$($(2)_VERSION).src.rock
Thomas De Schampheleire54456cc2014-06-11 21:12:24 +020041$(2)_SITE ?= $$(call qstrip,$$(BR2_LUAROCKS_MIRROR))
Francois Perrad72afb292014-01-11 16:42:07 +010042
43# Since we do not support host-luarocks-package, we know this is
44# a target package, and can just add the required dependencies
45$(2)_DEPENDENCIES += host-luarocks luainterpreter
46
Francois Perrad72afb292014-01-11 16:42:07 +010047#
Arnout Vandecappelle55d74b82017-02-23 18:00:38 +010048# Extract step. Extract into a temporary dir and move the relevant part to the
49# source dir.
Francois Perrad72afb292014-01-11 16:42:07 +010050#
51ifndef $(2)_EXTRACT_CMDS
52define $(2)_EXTRACT_CMDS
Arnout Vandecappelle55d74b82017-02-23 18:00:38 +010053 mkdir -p $$($(2)_DIR)/luarocks-extract
54 cd $$($(2)_DIR)/luarocks-extract && \
Fabio Porcedda22b327f2015-07-01 10:10:47 +020055 $$(LUAROCKS_RUN_ENV) $$(LUAROCKS_RUN_CMD) unpack --force $$(DL_DIR)/$$($(2)_SOURCE)
Arnout Vandecappelle55d74b82017-02-23 18:00:38 +010056 mv $$($(2)_DIR)/luarocks-extract/*/* $$($(2)_DIR)
Francois Perrad72afb292014-01-11 16:42:07 +010057endef
58endif
59
60#
61# Build/install step.
62#
63ifndef $(2)_INSTALL_TARGET_CMDS
64define $(2)_INSTALL_TARGET_CMDS
Fabio Porcedda22b327f2015-07-01 10:10:47 +020065 cd $$($(2)_SRCDIR) && $$(LUAROCKS_RUN_ENV) flock $$(TARGET_DIR) \
66 $$(LUAROCKS_RUN_CMD) make --keep $$($(2)_ROCKSPEC) $$($(2)_BUILD_OPTS)
Francois Perrad72afb292014-01-11 16:42:07 +010067endef
68endif
69
70# Call the generic package infrastructure to generate the necessary
71# make targets
Thomas De Schampheleire26aef882014-02-05 10:44:03 +010072$(call inner-generic-package,$(1),$(2),$(3),$(4))
Francois Perrad72afb292014-01-11 16:42:07 +010073
Fabio Porcedda207d2ac2014-04-01 11:12:50 +020074# $(2)_DEPENDENCIES are handled for configure step (too late)
75# but host-luarocks is required to do the extract
76$$($(2)_TARGET_EXTRACT): | host-luarocks
77
Francois Perrad72afb292014-01-11 16:42:07 +010078endef
79
80################################################################################
81# luarocks-package -- the target generator macro for LuaRocks packages
82################################################################################
83
Thomas De Schampheleire26aef882014-02-05 10:44:03 +010084luarocks-package = $(call inner-luarocks-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)
Francois Perrad72afb292014-01-11 16:42:07 +010085# host-luarocks-package not supported