This source file includes following definitions.
- opal_installdirs_base_open
- opal_installdirs_base_close
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include "opal_config.h"
17
18 #include "opal/constants.h"
19 #include "opal/mca/mca.h"
20 #include "opal/mca/installdirs/installdirs.h"
21 #include "opal/mca/installdirs/base/base.h"
22 #include "opal/mca/installdirs/base/static-components.h"
23
24 opal_install_dirs_t opal_install_dirs = {0};
25
26 #define CONDITIONAL_COPY(target, origin, field) \
27 do { \
28 if (origin.field != NULL && target.field == NULL) { \
29 target.field = origin.field; \
30 } \
31 } while (0)
32
33 static int
34 opal_installdirs_base_open(mca_base_open_flag_t flags)
35 {
36 mca_base_component_list_item_t *component_item;
37 int ret;
38
39 ret = mca_base_framework_components_open (&opal_installdirs_base_framework,
40 flags);
41 if (OPAL_SUCCESS != ret) {
42 return ret;
43 }
44
45 OPAL_LIST_FOREACH(component_item, &opal_installdirs_base_framework.framework_components, mca_base_component_list_item_t) {
46 const opal_installdirs_base_component_t *component =
47 (const opal_installdirs_base_component_t *) component_item->cli_component;
48
49
50 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
51 prefix);
52 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
53 exec_prefix);
54 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
55 bindir);
56 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
57 sbindir);
58 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
59 libexecdir);
60 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
61 datarootdir);
62 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
63 datadir);
64 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
65 sysconfdir);
66 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
67 sharedstatedir);
68 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
69 localstatedir);
70 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
71 libdir);
72 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
73 includedir);
74 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
75 infodir);
76 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
77 mandir);
78 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
79 opaldatadir);
80 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
81 opallibdir);
82 CONDITIONAL_COPY(opal_install_dirs, component->install_dirs_data,
83 opalincludedir);
84 }
85
86
87 opal_install_dirs.prefix =
88 opal_install_dirs_expand_setup(opal_install_dirs.prefix);
89 opal_install_dirs.exec_prefix =
90 opal_install_dirs_expand_setup(opal_install_dirs.exec_prefix);
91 opal_install_dirs.bindir =
92 opal_install_dirs_expand_setup(opal_install_dirs.bindir);
93 opal_install_dirs.sbindir =
94 opal_install_dirs_expand_setup(opal_install_dirs.sbindir);
95 opal_install_dirs.libexecdir =
96 opal_install_dirs_expand_setup(opal_install_dirs.libexecdir);
97 opal_install_dirs.datarootdir =
98 opal_install_dirs_expand_setup(opal_install_dirs.datarootdir);
99 opal_install_dirs.datadir =
100 opal_install_dirs_expand_setup(opal_install_dirs.datadir);
101 opal_install_dirs.sysconfdir =
102 opal_install_dirs_expand_setup(opal_install_dirs.sysconfdir);
103 opal_install_dirs.sharedstatedir =
104 opal_install_dirs_expand_setup(opal_install_dirs.sharedstatedir);
105 opal_install_dirs.localstatedir =
106 opal_install_dirs_expand_setup(opal_install_dirs.localstatedir);
107 opal_install_dirs.libdir =
108 opal_install_dirs_expand_setup(opal_install_dirs.libdir);
109 opal_install_dirs.includedir =
110 opal_install_dirs_expand_setup(opal_install_dirs.includedir);
111 opal_install_dirs.infodir =
112 opal_install_dirs_expand_setup(opal_install_dirs.infodir);
113 opal_install_dirs.mandir =
114 opal_install_dirs_expand_setup(opal_install_dirs.mandir);
115 opal_install_dirs.opaldatadir =
116 opal_install_dirs_expand_setup(opal_install_dirs.opaldatadir);
117 opal_install_dirs.opallibdir =
118 opal_install_dirs_expand_setup(opal_install_dirs.opallibdir);
119 opal_install_dirs.opalincludedir =
120 opal_install_dirs_expand_setup(opal_install_dirs.opalincludedir);
121
122 #if 0
123 fprintf(stderr, "prefix: %s\n", opal_install_dirs.prefix);
124 fprintf(stderr, "exec_prefix: %s\n", opal_install_dirs.exec_prefix);
125 fprintf(stderr, "bindir: %s\n", opal_install_dirs.bindir);
126 fprintf(stderr, "sbindir: %s\n", opal_install_dirs.sbindir);
127 fprintf(stderr, "libexecdir: %s\n", opal_install_dirs.libexecdir);
128 fprintf(stderr, "datarootdir: %s\n", opal_install_dirs.datarootdir);
129 fprintf(stderr, "datadir: %s\n", opal_install_dirs.datadir);
130 fprintf(stderr, "sysconfdir: %s\n", opal_install_dirs.sysconfdir);
131 fprintf(stderr, "sharedstatedir: %s\n", opal_install_dirs.sharedstatedir);
132 fprintf(stderr, "localstatedir: %s\n", opal_install_dirs.localstatedir);
133 fprintf(stderr, "libdir: %s\n", opal_install_dirs.libdir);
134 fprintf(stderr, "includedir: %s\n", opal_install_dirs.includedir);
135 fprintf(stderr, "infodir: %s\n", opal_install_dirs.infodir);
136 fprintf(stderr, "mandir: %s\n", opal_install_dirs.mandir);
137 fprintf(stderr, "pkgdatadir: %s\n", opal_install_dirs.pkgdatadir);
138 fprintf(stderr, "pkglibdir: %s\n", opal_install_dirs.pkglibdir);
139 fprintf(stderr, "pkgincludedir: %s\n", opal_install_dirs.pkgincludedir);
140 #endif
141
142
143
144
145 return OPAL_SUCCESS;
146 }
147
148
149 static int
150 opal_installdirs_base_close(void)
151 {
152 free(opal_install_dirs.prefix);
153 free(opal_install_dirs.exec_prefix);
154 free(opal_install_dirs.bindir);
155 free(opal_install_dirs.sbindir);
156 free(opal_install_dirs.libexecdir);
157 free(opal_install_dirs.datarootdir);
158 free(opal_install_dirs.datadir);
159 free(opal_install_dirs.sysconfdir);
160 free(opal_install_dirs.sharedstatedir);
161 free(opal_install_dirs.localstatedir);
162 free(opal_install_dirs.libdir);
163 free(opal_install_dirs.includedir);
164 free(opal_install_dirs.infodir);
165 free(opal_install_dirs.mandir);
166 free(opal_install_dirs.opaldatadir);
167 free(opal_install_dirs.opallibdir);
168 free(opal_install_dirs.opalincludedir);
169 memset (&opal_install_dirs, 0, sizeof (opal_install_dirs));
170
171 return mca_base_framework_components_close (&opal_installdirs_base_framework, NULL);
172 }
173
174
175 MCA_BASE_FRAMEWORK_DECLARE(opal, installdirs, NULL, NULL, opal_installdirs_base_open,
176 opal_installdirs_base_close, mca_installdirs_base_static_components,
177 MCA_BASE_FRAMEWORK_FLAG_NOREGISTER | MCA_BASE_FRAMEWORK_FLAG_NO_DSO);