1################################################################################
2#
3# lua
4#
5################################################################################
6
7ifeq ($(BR2_PACKAGE_LUA_5_4),y)
8LUA_VERSION = 5.4.6
9else ifeq ($(BR2_PACKAGE_LUA_5_3),y)
10LUA_VERSION = 5.3.6
11else
12LUA_VERSION = 5.1.5
13endif
14LUA_SITE = https://www.lua.org/ftp
15LUA_INSTALL_STAGING = YES
16LUA_LICENSE = MIT
17ifeq ($(BR2_PACKAGE_LUA_5_3)$(BR2_PACKAGE_LUA_5_4),y)
18LUA_LICENSE_FILES = doc/readme.html
19else
20LUA_LICENSE_FILES = COPYRIGHT
21endif
22LUA_CPE_ID_VENDOR = lua
23
24LUA_PROVIDES = luainterpreter
25
26LUA_CFLAGS = -Wall -fPIC -DLUA_USE_POSIX
27
28ifeq ($(BR2_PACKAGE_LUA_5_4),y)
29LUA_CFLAGS += -DLUA_COMPAT_5_3
30else ifeq ($(BR2_PACKAGE_LUA_5_3),y)
31LUA_CFLAGS += -DLUA_COMPAT_5_2
32endif
33
34ifeq ($(BR2_PACKAGE_LUA_CVT_N2S),)
35LUA_CFLAGS += -DLUA_NOCVTN2S
36endif
37
38ifeq ($(BR2_PACKAGE_LUA_CVT_S2N),)
39LUA_CFLAGS += -DLUA_NOCVTS2N
40endif
41
42ifeq ($(BR2_STATIC_LIBS),y)
43LUA_BUILDMODE = static
44else
45LUA_BUILDMODE = dynamic
46LUA_CFLAGS += -DLUA_USE_DLOPEN
47LUA_MYLIBS += -ldl
48endif
49
50ifeq ($(BR2_PACKAGE_LUA_READLINE),y)
51LUA_DEPENDENCIES += readline ncurses
52LUA_MYLIBS += -lreadline -lhistory -lncurses
53LUA_CFLAGS += -DLUA_USE_READLINE
54else
55ifeq ($(BR2_PACKAGE_LUA_LINENOISE),y)
56LUA_DEPENDENCIES += linenoise
57LUA_MYLIBS += -llinenoise
58LUA_CFLAGS += -DLUA_USE_LINENOISE
59endif
60endif
61
62ifeq ($(BR2_PACKAGE_LUA_32BITS),y)
63define LUA_32BITS_LUACONF
64	$(SED) 's/\/\* #define LUA_32BITS \*\//#define LUA_32BITS/' $(@D)/src/luaconf.h
65endef
66
67LUA_POST_PATCH_HOOKS += LUA_32BITS_LUACONF
68endif
69
70define HOST_LUA_LUACONF
71	$(SED) 's|#define LUA_ROOT.*|#define LUA_ROOT "$(HOST_DIR)/"|' $(@D)/src/luaconf.h
72endef
73HOST_LUA_POST_PATCH_HOOKS += HOST_LUA_LUACONF
74
75HOST_LUA_CFLAGS = -Wall -fPIC -DLUA_USE_DLOPEN -DLUA_USE_POSIX
76ifeq ($(BR2_PACKAGE_LUA_5_3),y)
77HOST_LUA_CFLAGS += -DLUA_COMPAT_5_2
78endif
79HOST_LUA_MYLIBS = -ldl
80
81define LUA_BUILD_CMDS
82	$(TARGET_MAKE_ENV) $(MAKE) \
83	CC="$(TARGET_CC)" RANLIB="$(TARGET_RANLIB)" \
84	CFLAGS="$(TARGET_CFLAGS) $(LUA_CFLAGS)" \
85	MYLIBS="$(LUA_MYLIBS)" AR="$(TARGET_CROSS)ar rcu" \
86	MYLDFLAGS="$(TARGET_LDFLAGS)" \
87	BUILDMODE=$(LUA_BUILDMODE) \
88	PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all
89	sed -e "s/@VERSION@/$(LUA_VERSION)/;s/@ABI@/$(LUAINTERPRETER_ABIVER)/;s/@MYLIBS@/$(LUA_MYLIBS)/" \
90		package/lua/lua.pc.in > $(@D)/lua.pc
91endef
92
93define HOST_LUA_BUILD_CMDS
94	$(HOST_MAKE_ENV) $(MAKE) \
95	CFLAGS="$(HOST_LUA_CFLAGS)" \
96	MYLDFLAGS="$(HOST_LDFLAGS)" \
97	MYLIBS="$(HOST_LUA_MYLIBS)" \
98	BUILDMODE=dynamic \
99	PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all
100	sed -e "s/@VERSION@/$(LUA_VERSION)/;s/@ABI@/$(LUAINTERPRETER_ABIVER)/;s/@MYLIBS@/$(HOST_LUA_MYLIBS)/" \
101		package/lua/lua.pc.in > $(@D)/lua.pc
102endef
103
104define LUA_INSTALL_STAGING_CMDS
105	$(TARGET_MAKE_ENV) $(MAKE) INSTALL_TOP="$(STAGING_DIR)/usr" -C $(@D) install
106	$(INSTALL) -m 0644 -D $(@D)/lua.pc \
107		$(STAGING_DIR)/usr/lib/pkgconfig/lua.pc
108endef
109
110define LUA_INSTALL_TARGET_CMDS
111	$(TARGET_MAKE_ENV) $(MAKE) INSTALL_TOP="$(TARGET_DIR)/usr" -C $(@D) install
112endef
113
114define HOST_LUA_INSTALL_CMDS
115	$(HOST_MAKE_ENV) $(MAKE) INSTALL_TOP="$(HOST_DIR)" -C $(@D) install
116	$(INSTALL) -m 0644 -D $(@D)/lua.pc \
117		$(HOST_DIR)/lib/pkgconfig/lua.pc
118endef
119
120$(eval $(generic-package))
121$(eval $(host-generic-package))
122