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