Files
packages/lang/lua/lua5.4/Makefile
T
Mirko Vogt fe3a534718 lua: install a pkg-config file for Lua 5.4
Lua stopped shipping a pkg-config file after 5.1; the 5.2, 5.3 and 5.4
release tarballs contain none. Distributions add one to their Lua
packages instead: Debian's liblua5.4-dev ships lua5.4.pc, lua-5.4.pc
and lua54.pc, Alpine's lua5.4-dev ships lua5.4.pc and lua-5.4.pc. Build
systems of Lua consumers look Lua 5.4 up under these names. The package
stages no pkg-config file so far, so such builds cannot find
liblua5.4; the only Lua pkg-config file in the staging directory is
lua.pc of the lua package (5.1.5).

Stage lua5.4.pc, generated from a template with the package version,
and lua-5.4.pc and lua54.pc as links to it. It points to the headers in
/usr/include/lua5.4 and to liblua5.4, and lists libm and libdl as
private libraries for static linking, as the upstream Makefile links
them on Linux.

Of the packages that look up one of these names through pkg-config,
libinput disables its Lua plugin support explicitly in the previous
commit. tio looks up lua-5.4 before lua but depends on lua (5.1), so it
links liblua5.4 without depending on it until the next commit moves it
to Lua 5.4. The others select their Lua version explicitly, look up lua
(5.1) first, build without the feature using Lua, or depend on lua5.4
already.

Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
2026-10-06 10:40:22 +03:00

176 lines
4.7 KiB
Makefile

#
# Copyright (C) 2006-2023 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=lua
PKG_VERSION:=5.4.7
PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.lua.org/ftp/ \
https://www.tecgraf.puc-rio.br/lua/ftp/
PKG_HASH:=9fbf5e28ef86c69858f6d3d34eccc32e911c1a28b4120ff3e84aaa70cfbf1e30
PKG_BUILD_PARALLEL:=1
PKG_MAINTAINER:=Christian Marangi <ansuelsmth@gmail.com>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYRIGHT
PKG_CPE_ID:=cpe:/a:lua:lua
HOST_PATCH_DIR := ./patches-host
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
define Package/lua5.4/Default
SUBMENU:=Lua
SECTION:=lang
CATEGORY:=Languages
TITLE:=Lua programming language (version 5.4)
URL:=https://www.lua.org/
endef
define Package/lua5.4/Default/description
Lua is a powerful, efficient, lightweight, embeddable scripting language. It
supports procedural programming, object-oriented programming, functional
programming, data-driven programming, and data description.
endef
define Package/liblua5.4
$(call Package/lua5.4/Default)
SUBMENU:=
SECTION:=libs
CATEGORY:=Libraries
TITLE+= (libraries)
ABI_VERSION:=5.4
endef
define Package/liblua5.4/description
$(call Package/lua5.4/Default/description)
This package contains the Lua shared libraries, needed by other programs.
endef
define Package/lua5.4
$(call Package/lua5.4/Default)
DEPENDS:=+liblua5.4
TITLE+= (interpreter)
endef
define Package/lua5.4/description
$(call Package/lua5.4/Default/description)
This package contains the Lua language interpreter.
endef
define Package/luac5.4
$(call Package/lua5.4/Default)
DEPENDS:=+liblua5.4
TITLE+= (compiler)
endef
define Package/luac5.4/description
$(call Package/lua5.4/Default/description)
This package contains the Lua language compiler.
endef
define Build/Prepare
$(call Build/Prepare/Default)
mv $(PKG_BUILD_DIR)/doc/lua.1 $(PKG_BUILD_DIR)/doc/lua5.4.1
mv $(PKG_BUILD_DIR)/doc/luac.1 $(PKG_BUILD_DIR)/doc/luac5.4.1
endef
LUA_LMOD_DIR:=/usr/share/lua/5.4
LUA_CMOD_DIR:=/usr/lib/lua/5.4
TARGET_CFLAGS += -DLUA_USE_LINUX $(FPIC) -std=gnu99 \
-DLUA_PATH_DEFAULT='\"$(LUA_LMOD_DIR)/?.lua;$(LUA_LMOD_DIR)/?/init.lua;$(LUA_CMOD_DIR)/?.lua;$(LUA_CMOD_DIR)/?/init.lua;./?.lua;./?/init.lua\"' \
-DLUA_CPATH_DEFAULT='\"$(LUA_CMOD_DIR)/?.so;$(LUA_CMOD_DIR)/loadall.so;./?.so\"'
define Build/Compile
$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
CC="$(TARGET_CROSS)gcc" \
AR="$(TARGET_CROSS)ar rcu" \
RANLIB="$(TARGET_CROSS)ranlib" \
INSTALL_ROOT=/usr \
CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
PKG_VERSION=$(PKG_VERSION) \
linux
rm -rf $(PKG_INSTALL_DIR)
mkdir -p $(PKG_INSTALL_DIR)
$(MAKE) -C $(PKG_BUILD_DIR) \
INSTALL_TOP="$(PKG_INSTALL_DIR)/usr" \
install
endef
define Host/Prepare
$(call Host/Prepare/Default)
mv $(HOST_BUILD_DIR)/doc/lua.1 $(HOST_BUILD_DIR)/doc/lua5.4.1
mv $(HOST_BUILD_DIR)/doc/luac.1 $(HOST_BUILD_DIR)/doc/luac5.4.1
endef
define Host/Configure
$(SED) 's,"/usr/local/","$(STAGING_DIR_HOSTPKG)/",' $(HOST_BUILD_DIR)/src/luaconf.h
endef
ifeq ($(HOST_OS),Darwin)
LUA_OS:=macosx
else
ifeq ($(HOST_OS),FreeBSD)
LUA_OS:=freebsd
else
LUA_OS:=linux
endif
endif
define Host/Compile
$(MAKE) -C $(HOST_BUILD_DIR) \
CC="$(HOSTCC) $(HOST_FPIC) -std=gnu99" \
$(LUA_OS)
endef
define Host/Install
$(MAKE) -C $(HOST_BUILD_DIR) \
INSTALL_TOP="$(STAGING_DIR_HOSTPKG)" \
install
endef
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/lua5.4 $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/include/lua5.4/lua{,lib,conf}.h $(1)/usr/include/lua5.4/
$(CP) $(PKG_INSTALL_DIR)/usr/include/lua5.4/lua.hpp $(1)/usr/include/lua5.4/
$(CP) $(PKG_INSTALL_DIR)/usr/include/lua5.4/lauxlib.h $(1)/usr/include/lua5.4/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/liblua5.4.{a,so*} $(1)/usr/lib/
$(LN) liblua5.4.so.0.0.0 $(1)/usr/lib/liblualib5.4.so
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) ./files/lua5.4.pc.in $(1)/usr/lib/pkgconfig/lua5.4.pc
$(SED) 's,@VERSION@,$(PKG_VERSION),' $(1)/usr/lib/pkgconfig/lua5.4.pc
$(LN) lua5.4.pc $(1)/usr/lib/pkgconfig/lua-5.4.pc
$(LN) lua5.4.pc $(1)/usr/lib/pkgconfig/lua54.pc
endef
define Package/liblua5.4/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/liblua5.4.so* $(1)/usr/lib/
endef
define Package/lua5.4/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/lua5.4 $(1)/usr/bin/
endef
define Package/luac5.4/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/luac5.4 $(1)/usr/bin/
endef
$(eval $(call BuildPackage,liblua5.4))
$(eval $(call BuildPackage,lua5.4))
$(eval $(call BuildPackage,luac5.4))
$(eval $(call HostBuild))