Skip to content

Commit

Permalink
Merge pull request #2175 from alerque/autoconf-upstream
Browse files Browse the repository at this point in the history
Bump AX macros again as submitted upstream
  • Loading branch information
alerque authored Nov 23, 2024
2 parents a726e0a + 3c670e1 commit f324a15
Show file tree
Hide file tree
Showing 8 changed files with 212 additions and 41 deletions.
1 change: 1 addition & 0 deletions .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ task:
--disable-font-variations \
--with-system-lua-sources \
--with-system-luarocks \
--with-luarocks=luarocks51 \
--without-manual
make_script:
- gmake all
Expand Down
64 changes: 51 additions & 13 deletions build-aux/ax_lua_module.m4
Original file line number Diff line number Diff line change
@@ -1,15 +1,53 @@
#serial 0

AC_DEFUN([AX_LUA_MODULE],
[
AX_PROG_LUA([5.1], [], [], [], [prefer])
AC_MSG_CHECKING([whether Lua can load module $1])
AS_IF([$LUA -e 'require("$1")' 2>/dev/null], [
AC_MSG_RESULT([loaded])
$3
], [
AC_MSG_RESULT([unable to load])
m4_default([$4], [AC_MSG_ERROR([cannot find Lua library $1 - install from luarocks package $2])])
])
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_lua_module.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_LUA_MODULE([ROCKNAME], [MODULE])
#
# DESCRIPTION
#
# Tests the availability of a Lua module using both available mechanisms,
# first checking if a Lua Rock manifest is available, and if not falling
# back to attempting to load a module directly.
#
# If the module name is the same as the rock name, the second argument can
# be ommitted.
#
# Example usage:
#
# AX_LUA_MODULE([ssl], [luasec])
#
# Note: under the hood this uses AX_LUAROCKS_ROCK and AX_LUA_REQUIRE.
#
# LICENSE
#
# Copyright (c) 2024 Caleb Maclennan <[email protected]>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.

#serial 1

AC_DEFUN([AX_LUA_MODULE],[
pushdef([ROCKNAME],$1)
pushdef([MODULE],m4_default($2,$1))
pushdef([VARIABLE],LUA_HAS_[]m4_toupper(m4_translit($1,-.,__)))
AC_ARG_VAR(VARIABLE,Was Lua module found)
AS_IF(test -z "$VARIABLE",[
AX_LUAROCKS_ROCK(ROCKNAME,[VARIABLE=yes],[VARIABLE=no])
AS_IF([test "x$VARIABLE" != xyes],[
AX_LUA_REQUIRE(MODULE,[VARIABLE=yes])
])
])
popdef([ROCKNAME])
popdef([MODULE])
])


65 changes: 65 additions & 0 deletions build-aux/ax_lua_require.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_lua_require.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_LUA_REQUIRE([MODULE], [ACTION_IF_FOUND], [ACTION_IF_NOT_FOUND])
#
# DESCRIPTION
#
# Tests whether Lua can load a module, fails if it is not loadable.
#
# Example usage:
#
# AX_LUA_REQUIRE(lpeg)
#
# Note: this is an alternative to AX_LUAROCKS_ROCK which queries the
# LuaRocks manifest for whether something is installed. Sometimes a
# proper manifest is not available, and this tests whether a given
# module name is actually loadable.
#
# It can also be useful to test for libraries that may or may not be
# built into Lua VMs. Builtin modules will return a success.
#
# LICENSE
#
# Copyright (c) 2024 Caleb Maclennan <[email protected]>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.

#serial 1

AC_DEFUN([AX_LUA_REQUIRE],[
# Make sure we have a Lua interpreter
if test -z "$LUA"; then
AX_PROG_LUA
if test -z "$LUA"; then
AC_MSG_ERROR([No Lua VM set])
fi
fi
AC_PREREQ([2.61])
pushdef([MODULE],$1)
pushdef([ACTION_IF_FOUND],$2)
pushdef([ACTION_IF_NOT_FOUND],$3)
AC_MSG_CHECKING([whether Lua can load module MODULE])
AS_IF([$LUA -e 'require("MODULE")' 2>/dev/null], [
AC_MSG_RESULT([loaded])
ACTION_IF_FOUND
], [
AC_MSG_RESULT([unable to load])
m4_ifset([ACTION_IF_NOT_FOUND][ACTION_IF_NOT_FOUND],
[AC_MSG_FAILURE([cannot find Lua module MODULE])])
])
popdef([MODULE])
popdef([ACTION_IF_FOUND])
popdef([ACTION_IF_NOT_FOUND])
])

62 changes: 62 additions & 0 deletions build-aux/ax_luarocks_rock.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_luarocks_rock.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_LUAROCKS_ROCK([ROCKNAME], [ACTION_IF_FOUND], [ACTION_IF_NOT_FOUND])
#
# DESCRIPTION
#
# Checks for a rock, and fails if it is not installed.
#
# Example usage:
#
# AX_LUAROCKS_ROCK(stdlib)
#
# Note: use of this macro is not normally recommended. Normally, LuaRocks
# should be used to drive the build system, and it takes care of rock
# dependencies. Use this macro only if LuaRocks cannot be used at the top
# level, for example, in a build system that uses Lua only incidentally.
#
# LICENSE
#
# Copyright (c) 2024 Caleb Maclennan <[email protected]>
# Copyright (c) 2016 Reuben Thomas <[email protected]>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.

#serial 4

AC_DEFUN([AX_LUAROCKS_ROCK],[
# Make sure we have luarocks
if test -z "$LUAROCKS"; then
AX_WITH_PROG(LUAROCKS,luarocks)
if test -z "$LUAROCKS"; then
AC_MSG_ERROR([can't find luarocks])
fi
fi
AC_PREREQ([2.61])
pushdef([ROCKNAME],$1)
pushdef([ACTION_IF_FOUND],$2)
pushdef([ACTION_IF_NOT_FOUND],$3)
AC_MSG_CHECKING(whether LuaRock ROCKNAME is installed)
AS_IF(["$LUAROCKS"${LUA_VERSION+ --lua-version $LUA_VERSION} show ROCKNAME > /dev/null 2>&1],[
AC_MSG_RESULT(yes)
ACTION_IF_FOUND
],[
AC_MSG_RESULT(no)
m4_ifset([ACTION_IF_NOT_FOUND],[ACTION_IF_NOT_FOUND],
[AC_MSG_FAILURE([LuaRock ROCKNAME not found])])
])
popdef([ROCKNAME])
popdef([ACTION_IF_FOUND])
popdef([ACTION_IF_NOT_FOUND])
])
4 changes: 4 additions & 0 deletions build-aux/pkg.nix
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ let
ps:
with ps;
[
# used for module detection, also recommended at runtime for 3rd party module installation
luarocks

# modules used at runtime
cassowary
cldr
fluent
Expand Down
10 changes: 8 additions & 2 deletions build-aux/que_progvar.m4
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
AC_DEFUN([QUE_PROGVAR], [
test -n "$m4_toupper($1)" || { AC_PATH_PROG(m4_toupper($1), m4_default($2,$1)) }
test -n "$m4_toupper($1)" || AC_MSG_ERROR([m4_default($2,$1) is required])
pushdef([VARIABLE],m4_toupper($1))
pushdef([EXECUTABLE],m4_default($2,$1))
AX_WITH_PROG(VARIABLE,EXECUTABLE)
AS_IF([test "x$with_$1" != xno && test -z "$VARIABLE"], [
AC_MSG_ERROR([EXECUTABLE is required])
])
popdef([EXECUTABLE])
popdef([VARIABLE])
])

46 changes: 21 additions & 25 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ QUE_PROGVAR([diff])
QUE_PROGVAR([find])
QUE_PROGVAR([head])
QUE_PROGVAR([jq])
QUE_PROGVAR([luarocks])
QUE_PROGVAR([pdfinfo])
QUE_PROGVAR([sort])
QUE_PROGVAR([xargs])
Expand Down Expand Up @@ -189,7 +190,6 @@ AM_COND_IF([DEVELOPER_TOOLS], [
QUE_PROGVAR([curl])
QUE_PROGVAR([ldoc])
QUE_PROGVAR([luacheck])
QUE_PROGVAR([luarocks])
QUE_PROGVAR([nix])
QUE_PROGVAR([npm])
QUE_PROGVAR([perl])
Expand All @@ -205,32 +205,28 @@ AX_LUA_LIBS

AM_COND_IF([SYSTEM_LUAROCKS], [
AS_IF([test "$LUA_SHORT_VERSION" -lt 52], [
AM_COND_IF([LUAJIT], [], [
AX_LUA_MODULE([bit32], [bit32])
])
])
AX_LUA_MODULE([cassowary], [cassowary])
AS_IF([test "$LUA_SHORT_VERSION" -lt 53], [
AX_LUA_MODULE([compat53], [compat53])
AM_COND_IF([LUAJIT], [], [AX_LUA_MODULE(bit32)])
])
AX_LUA_MODULE([cldr], [cldr])
AX_LUA_MODULE([fluent], [fluent])
AX_LUA_MODULE([linenoise], [linenoise])
AX_LUA_MODULE([loadkit], [loadkit])
AX_LUA_MODULE([lpeg], [lpeg])
AX_LUA_MODULE([zlib], [lua-zlib])
AX_LUA_MODULE([cliargs], [lua_cliargs])
AX_LUA_MODULE([epnf], [luaepnf])
AX_LUA_MODULE([lxp], [luaexpat])
AX_LUA_MODULE([lfs], [luafilesystem])
AX_LUA_MODULE([repl], [luarepl])
AX_LUA_MODULE([ssl], [luasec])
AX_LUA_MODULE([socket], [luasocket])
AX_LUA_MODULE([lua-utf8], [luautf8])
AX_LUA_MODULE([pl], [penlight])
AX_LUA_MODULE([vstruct], [vstruct])
AX_LUA_MODULE(cassowary)
AS_IF([test "$LUA_SHORT_VERSION" -lt 53], [AX_LUA_MODULE(compat53)])
AX_LUA_MODULE(cldr)
AX_LUA_MODULE(fluent)
AX_LUA_MODULE(linenoise)
AX_LUA_MODULE(loadkit)
AX_LUA_MODULE(lpeg)
AX_LUA_MODULE(lua-zlib, zlib)
AX_LUA_MODULE(lua_cliargs, cliargs)
AX_LUA_MODULE(luaepnf, epnf)
AX_LUA_MODULE(luaexpat, lxp)
AX_LUA_MODULE(luafilesystem, lfs)
AX_LUA_MODULE(luafilesystem)
AX_LUA_MODULE(luarepl, repl)
AX_LUA_MODULE(luasec, ssl)
AX_LUA_MODULE(luasocket, socket)
AX_LUA_MODULE(luautf8, lua-utf8)
AX_LUA_MODULE(penlight, pl)
AX_LUA_MODULE(vstruct)
], [
QUE_PROGVAR([luarocks])
QUE_PROGVAR([git]) # required for luarocks to install zlib rock
])

Expand Down
1 change: 0 additions & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@
"--with-manual"
];
nativeBuildInputs = sile.nativeBuildInputs ++ [
pkgs.luarocks
# For regression test diff highlighting
pkgs.delta
# For commitlint git hook
Expand Down

0 comments on commit f324a15

Please sign in to comment.