1*151bd351SKyle Evans /*- 2*151bd351SKyle Evans * Copyright (c) 2025 Kyle Evans <kevans@FreeBSD.org> 3*151bd351SKyle Evans * 4*151bd351SKyle Evans * SPDX-License-Identifier: BSD-2-Clause 5*151bd351SKyle Evans */ 6*151bd351SKyle Evans 7*151bd351SKyle Evans #ifndef FLUA_BOOTSTRAP_H 8*151bd351SKyle Evans #define FLUA_BOOTSTRAP_H 9*151bd351SKyle Evans 10*151bd351SKyle Evans #ifdef BOOTSTRAPPING 11*151bd351SKyle Evans #include <sys/linker_set.h> 12*151bd351SKyle Evans 13*151bd351SKyle Evans #include <lauxlib.h> 14*151bd351SKyle Evans 15*151bd351SKyle Evans #define FLUA_MODULE_SETNAME flua_modules 16*151bd351SKyle Evans 17*151bd351SKyle Evans SET_DECLARE(FLUA_MODULE_SETNAME, const luaL_Reg); 18*151bd351SKyle Evans #define FLUA_MODULE_DEF(ident, modname, openfn) \ 19*151bd351SKyle Evans static const luaL_Reg ident = { modname, openfn }; \ 20*151bd351SKyle Evans DATA_SET(FLUA_MODULE_SETNAME, ident) 21*151bd351SKyle Evans 22*151bd351SKyle Evans #define FLUA_MODULE_NAMED(mod, name) \ 23*151bd351SKyle Evans FLUA_MODULE_DEF(module_ ## mod, name, luaopen_ ## mod) 24*151bd351SKyle Evans #define FLUA_MODULE(mod) \ 25*151bd351SKyle Evans FLUA_MODULE_DEF(module_ ## mod, #mod, luaopen_ ## mod) 26*151bd351SKyle Evans #else /* !BOOTSTRAPPING */ 27*151bd351SKyle Evans #define FLUA_MODULE_DEF(ident, modname, openfn) 28*151bd351SKyle Evans #define FLUA_MODULE_NAMED(mod, name) 29*151bd351SKyle Evans #define FLUA_MODULE(modname) 30*151bd351SKyle Evans #endif /* BOOTSTRAPPING */ 31*151bd351SKyle Evans 32*151bd351SKyle Evans #endif /* FLUA_BOOTSTRAP_H */ 33