Line data Source code
1 : /*-------------------------------------------------------------------------
2 : *
3 : * config_info.c
4 : * Common code for pg_config output
5 : *
6 : *
7 : * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
8 : * Portions Copyright (c) 1994, Regents of the University of California
9 : *
10 : *
11 : * IDENTIFICATION
12 : * src/common/config_info.c
13 : *
14 : *-------------------------------------------------------------------------
15 : */
16 :
17 : #ifndef FRONTEND
18 : #include "postgres.h"
19 : #else
20 : #include "postgres_fe.h"
21 : #endif
22 :
23 : #include "common/config_info.h"
24 :
25 :
26 : /*
27 : * get_configdata(const char *my_exec_path, size_t *configdata_len)
28 : *
29 : * Get configure-time constants. The caller is responsible
30 : * for pfreeing the result.
31 : */
32 : ConfigData *
33 1 : get_configdata(const char *my_exec_path, size_t *configdata_len)
34 : {
35 : ConfigData *configdata;
36 : char path[MAXPGPATH];
37 : char *lastsep;
38 1 : int i = 0;
39 :
40 : /* Adjust this to match the number of items filled below */
41 1 : *configdata_len = 23;
42 1 : configdata = (ConfigData *) palloc(*configdata_len * sizeof(ConfigData));
43 :
44 1 : configdata[i].name = pstrdup("BINDIR");
45 1 : strlcpy(path, my_exec_path, sizeof(path));
46 1 : lastsep = strrchr(path, '/');
47 1 : if (lastsep)
48 1 : *lastsep = '\0';
49 1 : cleanup_path(path);
50 1 : configdata[i].setting = pstrdup(path);
51 1 : i++;
52 :
53 1 : configdata[i].name = pstrdup("DOCDIR");
54 1 : get_doc_path(my_exec_path, path);
55 1 : cleanup_path(path);
56 1 : configdata[i].setting = pstrdup(path);
57 1 : i++;
58 :
59 1 : configdata[i].name = pstrdup("HTMLDIR");
60 1 : get_html_path(my_exec_path, path);
61 1 : cleanup_path(path);
62 1 : configdata[i].setting = pstrdup(path);
63 1 : i++;
64 :
65 1 : configdata[i].name = pstrdup("INCLUDEDIR");
66 1 : get_include_path(my_exec_path, path);
67 1 : cleanup_path(path);
68 1 : configdata[i].setting = pstrdup(path);
69 1 : i++;
70 :
71 1 : configdata[i].name = pstrdup("PKGINCLUDEDIR");
72 1 : get_pkginclude_path(my_exec_path, path);
73 1 : cleanup_path(path);
74 1 : configdata[i].setting = pstrdup(path);
75 1 : i++;
76 :
77 1 : configdata[i].name = pstrdup("INCLUDEDIR-SERVER");
78 1 : get_includeserver_path(my_exec_path, path);
79 1 : cleanup_path(path);
80 1 : configdata[i].setting = pstrdup(path);
81 1 : i++;
82 :
83 1 : configdata[i].name = pstrdup("LIBDIR");
84 1 : get_lib_path(my_exec_path, path);
85 1 : cleanup_path(path);
86 1 : configdata[i].setting = pstrdup(path);
87 1 : i++;
88 :
89 1 : configdata[i].name = pstrdup("PKGLIBDIR");
90 1 : get_pkglib_path(my_exec_path, path);
91 1 : cleanup_path(path);
92 1 : configdata[i].setting = pstrdup(path);
93 1 : i++;
94 :
95 1 : configdata[i].name = pstrdup("LOCALEDIR");
96 1 : get_locale_path(my_exec_path, path);
97 1 : cleanup_path(path);
98 1 : configdata[i].setting = pstrdup(path);
99 1 : i++;
100 :
101 1 : configdata[i].name = pstrdup("MANDIR");
102 1 : get_man_path(my_exec_path, path);
103 1 : cleanup_path(path);
104 1 : configdata[i].setting = pstrdup(path);
105 1 : i++;
106 :
107 1 : configdata[i].name = pstrdup("SHAREDIR");
108 1 : get_share_path(my_exec_path, path);
109 1 : cleanup_path(path);
110 1 : configdata[i].setting = pstrdup(path);
111 1 : i++;
112 :
113 1 : configdata[i].name = pstrdup("SYSCONFDIR");
114 1 : get_etc_path(my_exec_path, path);
115 1 : cleanup_path(path);
116 1 : configdata[i].setting = pstrdup(path);
117 1 : i++;
118 :
119 1 : configdata[i].name = pstrdup("PGXS");
120 1 : get_pkglib_path(my_exec_path, path);
121 1 : strlcat(path, "/pgxs/src/makefiles/pgxs.mk", sizeof(path));
122 1 : cleanup_path(path);
123 1 : configdata[i].setting = pstrdup(path);
124 1 : i++;
125 :
126 1 : configdata[i].name = pstrdup("CONFIGURE");
127 : #ifdef VAL_CONFIGURE
128 1 : configdata[i].setting = pstrdup(VAL_CONFIGURE);
129 : #else
130 : configdata[i].setting = pstrdup(_("not recorded"));
131 : #endif
132 1 : i++;
133 :
134 1 : configdata[i].name = pstrdup("CC");
135 : #ifdef VAL_CC
136 1 : configdata[i].setting = pstrdup(VAL_CC);
137 : #else
138 : configdata[i].setting = pstrdup(_("not recorded"));
139 : #endif
140 1 : i++;
141 :
142 1 : configdata[i].name = pstrdup("CPPFLAGS");
143 : #ifdef VAL_CPPFLAGS
144 1 : configdata[i].setting = pstrdup(VAL_CPPFLAGS);
145 : #else
146 : configdata[i].setting = pstrdup(_("not recorded"));
147 : #endif
148 1 : i++;
149 :
150 1 : configdata[i].name = pstrdup("CFLAGS");
151 : #ifdef VAL_CFLAGS
152 1 : configdata[i].setting = pstrdup(VAL_CFLAGS);
153 : #else
154 : configdata[i].setting = pstrdup(_("not recorded"));
155 : #endif
156 1 : i++;
157 :
158 1 : configdata[i].name = pstrdup("CFLAGS_SL");
159 : #ifdef VAL_CFLAGS_SL
160 1 : configdata[i].setting = pstrdup(VAL_CFLAGS_SL);
161 : #else
162 : configdata[i].setting = pstrdup(_("not recorded"));
163 : #endif
164 1 : i++;
165 :
166 1 : configdata[i].name = pstrdup("LDFLAGS");
167 : #ifdef VAL_LDFLAGS
168 1 : configdata[i].setting = pstrdup(VAL_LDFLAGS);
169 : #else
170 : configdata[i].setting = pstrdup(_("not recorded"));
171 : #endif
172 1 : i++;
173 :
174 1 : configdata[i].name = pstrdup("LDFLAGS_EX");
175 : #ifdef VAL_LDFLAGS_EX
176 1 : configdata[i].setting = pstrdup(VAL_LDFLAGS_EX);
177 : #else
178 : configdata[i].setting = pstrdup(_("not recorded"));
179 : #endif
180 1 : i++;
181 :
182 1 : configdata[i].name = pstrdup("LDFLAGS_SL");
183 : #ifdef VAL_LDFLAGS_SL
184 1 : configdata[i].setting = pstrdup(VAL_LDFLAGS_SL);
185 : #else
186 : configdata[i].setting = pstrdup(_("not recorded"));
187 : #endif
188 1 : i++;
189 :
190 1 : configdata[i].name = pstrdup("LIBS");
191 : #ifdef VAL_LIBS
192 1 : configdata[i].setting = pstrdup(VAL_LIBS);
193 : #else
194 : configdata[i].setting = pstrdup(_("not recorded"));
195 : #endif
196 1 : i++;
197 :
198 1 : configdata[i].name = pstrdup("VERSION");
199 1 : configdata[i].setting = pstrdup("PostgreSQL " PG_VERSION);
200 1 : i++;
201 :
202 1 : Assert(i == *configdata_len);
203 :
204 1 : return configdata;
205 : }
|