xref: /freebsd/libexec/flua/bootstrap.h (revision 151bd3516b541823b16793460d73916e63d2b9c1)
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