hc
2024-03-22 619f0f87159c5dbd2755b1b0a0eb35784be84e7a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
################################################################################
# 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)