xref: /utopia/UTPA2-700.0.x/projects/build/scripts/kconfig/kconfig_load.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi #include <dlfcn.h>
2*53ee8cc1Swenshuai.xi #include <stdio.h>
3*53ee8cc1Swenshuai.xi #include <stdlib.h>
4*53ee8cc1Swenshuai.xi 
5*53ee8cc1Swenshuai.xi #include "lkc.h"
6*53ee8cc1Swenshuai.xi 
7*53ee8cc1Swenshuai.xi #define P(name,type,arg)	type (*name ## _p) arg
8*53ee8cc1Swenshuai.xi #include "lkc_proto.h"
9*53ee8cc1Swenshuai.xi #undef P
10*53ee8cc1Swenshuai.xi 
kconfig_load(void)11*53ee8cc1Swenshuai.xi void kconfig_load(void)
12*53ee8cc1Swenshuai.xi {
13*53ee8cc1Swenshuai.xi 	void *handle;
14*53ee8cc1Swenshuai.xi 	char *error;
15*53ee8cc1Swenshuai.xi 
16*53ee8cc1Swenshuai.xi 	handle = dlopen("./libkconfig.so", RTLD_LAZY);
17*53ee8cc1Swenshuai.xi 	if (!handle) {
18*53ee8cc1Swenshuai.xi 		handle = dlopen("./scripts/kconfig/libkconfig.so", RTLD_LAZY);
19*53ee8cc1Swenshuai.xi 		if (!handle) {
20*53ee8cc1Swenshuai.xi 			fprintf(stderr, "%s\n", dlerror());
21*53ee8cc1Swenshuai.xi 			exit(1);
22*53ee8cc1Swenshuai.xi 		}
23*53ee8cc1Swenshuai.xi 	}
24*53ee8cc1Swenshuai.xi 
25*53ee8cc1Swenshuai.xi #define P(name,type,arg)			\
26*53ee8cc1Swenshuai.xi {						\
27*53ee8cc1Swenshuai.xi 	name ## _p = dlsym(handle, #name);	\
28*53ee8cc1Swenshuai.xi         if ((error = dlerror()))  {		\
29*53ee8cc1Swenshuai.xi                 fprintf(stderr, "%s\n", error);	\
30*53ee8cc1Swenshuai.xi 		exit(1);			\
31*53ee8cc1Swenshuai.xi 	}					\
32*53ee8cc1Swenshuai.xi }
33*53ee8cc1Swenshuai.xi #include "lkc_proto.h"
34*53ee8cc1Swenshuai.xi #undef P
35*53ee8cc1Swenshuai.xi }
36