1################################################################################
2#
3# luajit
4#
5################################################################################
6
7LUAJIT_VERSION = 41fb94defa8f830ce69a8122b03f6ac3216d392a
8LUAJIT_SITE = $(call github,LuaJIT,LuaJIT,$(LUAJIT_VERSION))
9LUAJIT_LICENSE = MIT
10LUAJIT_LICENSE_FILES = COPYRIGHT
11LUAJIT_CPE_ID_VENDOR = luajit
12
13LUAJIT_INSTALL_STAGING = YES
14
15LUAJIT_PROVIDES = luainterpreter
16
17ifeq ($(BR2_PACKAGE_LUAJIT_COMPAT52),y)
18LUAJIT_XCFLAGS += -DLUAJIT_ENABLE_LUA52COMPAT
19endif
20
21# The luajit build procedure requires the host compiler to have the
22# same bitness as the target compiler. Therefore, on a x86 build
23# machine, we can't build luajit for x86_64, which is checked in
24# Config.in. When the target is a 32 bits target, we pass -m32 to
25# ensure that even on 64 bits build machines, a compiler of the same
26# bitness is used. Of course, this assumes that the 32 bits multilib
27# libraries are installed.
28ifeq ($(BR2_ARCH_IS_64),y)
29LUAJIT_HOST_CC = $(HOSTCC)
30# There is no LUAJIT_ENABLE_GC64 option.
31else
32LUAJIT_HOST_CC = $(HOSTCC) -m32
33LUAJIT_XCFLAGS += -DLUAJIT_DISABLE_GC64
34endif
35
36# We unfortunately can't use TARGET_CONFIGURE_OPTS, because the luajit
37# build system uses non conventional variable names.
38define LUAJIT_BUILD_CMDS
39	$(TARGET_MAKE_ENV) $(MAKE) PREFIX="/usr" \
40		STATIC_CC="$(TARGET_CC)" \
41		DYNAMIC_CC="$(TARGET_CC) -fPIC" \
42		TARGET_LD="$(TARGET_CC)" \
43		TARGET_AR="$(TARGET_AR) rcus" \
44		TARGET_STRIP=true \
45		TARGET_CFLAGS="$(TARGET_CFLAGS)" \
46		TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \
47		HOST_CC="$(LUAJIT_HOST_CC)" \
48		HOST_CFLAGS="$(HOST_CFLAGS)" \
49		HOST_LDFLAGS="$(HOST_LDFLAGS)" \
50		BUILDMODE=dynamic \
51		XCFLAGS="$(LUAJIT_XCFLAGS)" \
52		-C $(@D) amalg
53endef
54
55define LUAJIT_INSTALL_STAGING_CMDS
56	$(TARGET_MAKE_ENV) $(MAKE) PREFIX="/usr" DESTDIR="$(STAGING_DIR)" LDCONFIG=true -C $(@D) install
57endef
58
59define LUAJIT_INSTALL_TARGET_CMDS
60	$(TARGET_MAKE_ENV) $(MAKE) PREFIX="/usr" DESTDIR="$(TARGET_DIR)" LDCONFIG=true -C $(@D) install
61endef
62
63define LUAJIT_INSTALL_SYMLINK
64	ln -fs luajit $(TARGET_DIR)/usr/bin/lua
65endef
66LUAJIT_POST_INSTALL_TARGET_HOOKS += LUAJIT_INSTALL_SYMLINK
67
68# host-efl package needs host-luajit to be linked dynamically.
69define HOST_LUAJIT_BUILD_CMDS
70	$(HOST_MAKE_ENV) $(MAKE) PREFIX="$(HOST_DIR)" BUILDMODE=dynamic \
71		TARGET_LDFLAGS="$(HOST_LDFLAGS)" \
72		XCFLAGS="$(LUAJIT_XCFLAGS)" \
73		-C $(@D) amalg
74endef
75
76define HOST_LUAJIT_INSTALL_CMDS
77	$(HOST_MAKE_ENV) $(MAKE) PREFIX="$(HOST_DIR)" LDCONFIG=true -C $(@D) install
78endef
79
80$(eval $(generic-package))
81$(eval $(host-generic-package))
82