mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-15 16:23:42 +00:00
70 lines
2.9 KiB
Python
70 lines
2.9 KiB
Python
# vi: syntax=python:et:ts=4
|
|
from config_check_utils import *
|
|
from os import environ
|
|
from os.path import join
|
|
import SCons.Conftest
|
|
|
|
# Based on SCons.SConf.CheckLibWithHeader()
|
|
def CheckLibsWithSystemHeader(context, libs, header, language):
|
|
res = SCons.Conftest.CheckLib(context, libs,
|
|
header = "#include <%s>" % header, language = language)
|
|
context.did_show_result = 1
|
|
return not res
|
|
|
|
def CheckLua(context, require_version):
|
|
backup = backup_env(context.env, ["CPPPATH", "LIBPATH", "LIBS"])
|
|
version = require_version.split(".")
|
|
major_version = version[0]
|
|
minor_version = version[1]
|
|
|
|
include_subdirs_raw = [
|
|
"",
|
|
"lua" + major_version + minor_version,
|
|
"lua" + major_version + "." + minor_version,
|
|
"lua-" + major_version + "." + minor_version,
|
|
]
|
|
include_subdirs = []
|
|
for include_subdir_raw in include_subdirs_raw:
|
|
include_subdirs[len(include_subdirs):] = [include_subdir_raw,
|
|
join("include", include_subdir_raw)]
|
|
|
|
# Add new names here when found in distributions.
|
|
# Debian since lua5.2 5.2.3-2 uses luaX.Y-c++:
|
|
# https://salsa.debian.org/lua-team/lua5.2/-/commit/fa2dc77c
|
|
# Arch since lua 5.4.4-4 uses lua++-X.Y:
|
|
# https://gitlab.archlinux.org/archlinux/packaging/packages/lua/-/commit/4e97e19d
|
|
libs = [
|
|
"lua" + major_version + minor_version + "-c++",
|
|
"lua" + major_version + "." + minor_version + "-c++",
|
|
"lua-" + major_version + "." + minor_version + "-c++",
|
|
"lua." + major_version + "." + minor_version + "-c++",
|
|
"lua++" + major_version + minor_version,
|
|
"lua++" + major_version + "." + minor_version,
|
|
"lua++-" + major_version + "." + minor_version,
|
|
"lua++." + major_version + "." + minor_version,
|
|
]
|
|
|
|
luadir = context.env.get("luadir", environ.get("LUA_DIR"))
|
|
if luadir:
|
|
for include_subdir in include_subdirs:
|
|
includes = find_include([luadir], "lua.h",
|
|
include_subdir=include_subdir, default_prefixes=False)
|
|
for prefix, include in includes:
|
|
context.env.Append(CPPPATH = [join(prefix, include_subdir)])
|
|
if CheckLibsWithSystemHeader(context, libs, "lua.h", "CXX"):
|
|
return True
|
|
restore_env(context.env, backup)
|
|
return False
|
|
|
|
for include_subdir in include_subdirs:
|
|
includes = find_include([context.env["prefix"]], "lua.h",
|
|
include_subdir=include_subdir, default_prefixes=True)
|
|
for prefix, include in includes:
|
|
context.env.Append(CPPPATH = [join(prefix, include_subdir)])
|
|
if CheckLibsWithSystemHeader(context, libs, "lua.h", "CXX"):
|
|
return True
|
|
restore_env(context.env, backup)
|
|
return False
|
|
|
|
config_checks = { "CheckLua" : CheckLua }
|