1151bd351SKyle Evans /*- 2151bd351SKyle Evans * Copyright (c) 2025 Kyle Evans <kevans@FreeBSD.org> 3151bd351SKyle Evans * 4151bd351SKyle Evans * SPDX-License-Identifier: BSD-2-Clause 5151bd351SKyle Evans */ 6151bd351SKyle Evans 7151bd351SKyle Evans #ifndef FLUA_BOOTSTRAP_H 8151bd351SKyle Evans #define FLUA_BOOTSTRAP_H 9151bd351SKyle Evans 10151bd351SKyle Evans #ifdef BOOTSTRAPPING 11151bd351SKyle Evans #include <sys/linker_set.h> 12151bd351SKyle Evans 13151bd351SKyle Evans #include <lauxlib.h> 14151bd351SKyle Evans 15151bd351SKyle Evans #define FLUA_MODULE_SETNAME flua_modules 16151bd351SKyle Evans 17151bd351SKyle Evans SET_DECLARE(FLUA_MODULE_SETNAME, const luaL_Reg); 18151bd351SKyle Evans #define FLUA_MODULE_DEF(ident, modname, openfn) \ 19151bd351SKyle Evans static const luaL_Reg ident = { modname, openfn }; \ 20151bd351SKyle Evans DATA_SET(FLUA_MODULE_SETNAME, ident) 21151bd351SKyle Evans 22151bd351SKyle Evans #define FLUA_MODULE_NAMED(mod, name) \ 23151bd351SKyle Evans FLUA_MODULE_DEF(module_ ## mod, name, luaopen_ ## mod) 24151bd351SKyle Evans #define FLUA_MODULE(mod) \ 25151bd351SKyle Evans FLUA_MODULE_DEF(module_ ## mod, #mod, luaopen_ ## mod) 26151bd351SKyle Evans #else /* !BOOTSTRAPPING */ 27151bd351SKyle Evans #define FLUA_MODULE_DEF(ident, modname, openfn) 28151bd351SKyle Evans #define FLUA_MODULE_NAMED(mod, name) 29151bd351SKyle Evans #define FLUA_MODULE(modname) 30151bd351SKyle Evans #endif /* BOOTSTRAPPING */ 31151bd351SKyle Evans 32151bd351SKyle Evans #endif /* FLUA_BOOTSTRAP_H */ 33