Age Owner Branch data TLA Line data Source code
1 : : /*-------------------------------------------------------------------------
2 : : *
3 : : * config_info.c
4 : : * Common code for pg_config output
5 : : *
6 : : *
7 : : * Portions Copyright (c) 1996-2024, 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 *
2975 tgl@sss.pgh.pa.us 33 :CBC 400 : get_configdata(const char *my_exec_path, size_t *configdata_len)
34 : : {
35 : : ConfigData *configdata;
36 : : char path[MAXPGPATH];
37 : : char *lastsep;
2866 rhaas@postgresql.org 38 : 400 : int i = 0;
39 : :
40 : : /* Adjust this to match the number of items filled below */
2975 tgl@sss.pgh.pa.us 41 : 400 : *configdata_len = 23;
580 peter@eisentraut.org 42 : 400 : configdata = palloc_array(ConfigData, *configdata_len);
43 : :
2975 tgl@sss.pgh.pa.us 44 : 400 : configdata[i].name = pstrdup("BINDIR");
45 : 400 : strlcpy(path, my_exec_path, sizeof(path));
2979 mail@joeconway.com 46 : 400 : lastsep = strrchr(path, '/');
47 [ + - ]: 400 : if (lastsep)
48 : 400 : *lastsep = '\0';
49 : 400 : cleanup_path(path);
2975 tgl@sss.pgh.pa.us 50 : 400 : configdata[i].setting = pstrdup(path);
51 : 400 : i++;
52 : :
53 : 400 : configdata[i].name = pstrdup("DOCDIR");
2979 mail@joeconway.com 54 : 400 : get_doc_path(my_exec_path, path);
55 : 400 : cleanup_path(path);
2975 tgl@sss.pgh.pa.us 56 : 400 : configdata[i].setting = pstrdup(path);
57 : 400 : i++;
58 : :
59 : 400 : configdata[i].name = pstrdup("HTMLDIR");
2979 mail@joeconway.com 60 : 400 : get_html_path(my_exec_path, path);
61 : 400 : cleanup_path(path);
2975 tgl@sss.pgh.pa.us 62 : 400 : configdata[i].setting = pstrdup(path);
63 : 400 : i++;
64 : :
65 : 400 : configdata[i].name = pstrdup("INCLUDEDIR");
2979 mail@joeconway.com 66 : 400 : get_include_path(my_exec_path, path);
67 : 400 : cleanup_path(path);
2975 tgl@sss.pgh.pa.us 68 : 400 : configdata[i].setting = pstrdup(path);
69 : 400 : i++;
70 : :
71 : 400 : configdata[i].name = pstrdup("PKGINCLUDEDIR");
2979 mail@joeconway.com 72 : 400 : get_pkginclude_path(my_exec_path, path);
73 : 400 : cleanup_path(path);
2975 tgl@sss.pgh.pa.us 74 : 400 : configdata[i].setting = pstrdup(path);
75 : 400 : i++;
76 : :
77 : 400 : configdata[i].name = pstrdup("INCLUDEDIR-SERVER");
2979 mail@joeconway.com 78 : 400 : get_includeserver_path(my_exec_path, path);
79 : 400 : cleanup_path(path);
2975 tgl@sss.pgh.pa.us 80 : 400 : configdata[i].setting = pstrdup(path);
81 : 400 : i++;
82 : :
83 : 400 : configdata[i].name = pstrdup("LIBDIR");
2979 mail@joeconway.com 84 : 400 : get_lib_path(my_exec_path, path);
85 : 400 : cleanup_path(path);
2975 tgl@sss.pgh.pa.us 86 : 400 : configdata[i].setting = pstrdup(path);
87 : 400 : i++;
88 : :
89 : 400 : configdata[i].name = pstrdup("PKGLIBDIR");
2979 mail@joeconway.com 90 : 400 : get_pkglib_path(my_exec_path, path);
91 : 400 : cleanup_path(path);
2975 tgl@sss.pgh.pa.us 92 : 400 : configdata[i].setting = pstrdup(path);
93 : 400 : i++;
94 : :
95 : 400 : configdata[i].name = pstrdup("LOCALEDIR");
2979 mail@joeconway.com 96 : 400 : get_locale_path(my_exec_path, path);
97 : 400 : cleanup_path(path);
2975 tgl@sss.pgh.pa.us 98 : 400 : configdata[i].setting = pstrdup(path);
99 : 400 : i++;
100 : :
101 : 400 : configdata[i].name = pstrdup("MANDIR");
2979 mail@joeconway.com 102 : 400 : get_man_path(my_exec_path, path);
103 : 400 : cleanup_path(path);
2975 tgl@sss.pgh.pa.us 104 : 400 : configdata[i].setting = pstrdup(path);
105 : 400 : i++;
106 : :
107 : 400 : configdata[i].name = pstrdup("SHAREDIR");
2979 mail@joeconway.com 108 : 400 : get_share_path(my_exec_path, path);
109 : 400 : cleanup_path(path);
2975 tgl@sss.pgh.pa.us 110 : 400 : configdata[i].setting = pstrdup(path);
111 : 400 : i++;
112 : :
113 : 400 : configdata[i].name = pstrdup("SYSCONFDIR");
2979 mail@joeconway.com 114 : 400 : get_etc_path(my_exec_path, path);
115 : 400 : cleanup_path(path);
2975 tgl@sss.pgh.pa.us 116 : 400 : configdata[i].setting = pstrdup(path);
117 : 400 : i++;
118 : :
119 : 400 : configdata[i].name = pstrdup("PGXS");
2979 mail@joeconway.com 120 : 400 : get_pkglib_path(my_exec_path, path);
121 : 400 : strlcat(path, "/pgxs/src/makefiles/pgxs.mk", sizeof(path));
122 : 400 : cleanup_path(path);
2975 tgl@sss.pgh.pa.us 123 : 400 : configdata[i].setting = pstrdup(path);
124 : 400 : i++;
125 : :
126 : 400 : configdata[i].name = pstrdup("CONFIGURE");
1525 peter@eisentraut.org 127 : 400 : configdata[i].setting = pstrdup(CONFIGURE_ARGS);
2975 tgl@sss.pgh.pa.us 128 : 400 : i++;
129 : :
130 : 400 : configdata[i].name = pstrdup("CC");
131 : : #ifdef VAL_CC
132 : 400 : configdata[i].setting = pstrdup(VAL_CC);
133 : : #else
134 : : configdata[i].setting = pstrdup(_("not recorded"));
135 : : #endif
136 : 400 : i++;
137 : :
138 : 400 : configdata[i].name = pstrdup("CPPFLAGS");
139 : : #ifdef VAL_CPPFLAGS
140 : 400 : configdata[i].setting = pstrdup(VAL_CPPFLAGS);
141 : : #else
142 : : configdata[i].setting = pstrdup(_("not recorded"));
143 : : #endif
144 : 400 : i++;
145 : :
146 : 400 : configdata[i].name = pstrdup("CFLAGS");
147 : : #ifdef VAL_CFLAGS
148 : 400 : configdata[i].setting = pstrdup(VAL_CFLAGS);
149 : : #else
150 : : configdata[i].setting = pstrdup(_("not recorded"));
151 : : #endif
152 : 400 : i++;
153 : :
154 : 400 : configdata[i].name = pstrdup("CFLAGS_SL");
155 : : #ifdef VAL_CFLAGS_SL
156 : 400 : configdata[i].setting = pstrdup(VAL_CFLAGS_SL);
157 : : #else
158 : : configdata[i].setting = pstrdup(_("not recorded"));
159 : : #endif
160 : 400 : i++;
161 : :
162 : 400 : configdata[i].name = pstrdup("LDFLAGS");
163 : : #ifdef VAL_LDFLAGS
164 : 400 : configdata[i].setting = pstrdup(VAL_LDFLAGS);
165 : : #else
166 : : configdata[i].setting = pstrdup(_("not recorded"));
167 : : #endif
168 : 400 : i++;
169 : :
170 : 400 : configdata[i].name = pstrdup("LDFLAGS_EX");
171 : : #ifdef VAL_LDFLAGS_EX
172 : 400 : configdata[i].setting = pstrdup(VAL_LDFLAGS_EX);
173 : : #else
174 : : configdata[i].setting = pstrdup(_("not recorded"));
175 : : #endif
176 : 400 : i++;
177 : :
178 : 400 : configdata[i].name = pstrdup("LDFLAGS_SL");
179 : : #ifdef VAL_LDFLAGS_SL
180 : 400 : configdata[i].setting = pstrdup(VAL_LDFLAGS_SL);
181 : : #else
182 : : configdata[i].setting = pstrdup(_("not recorded"));
183 : : #endif
184 : 400 : i++;
185 : :
186 : 400 : configdata[i].name = pstrdup("LIBS");
187 : : #ifdef VAL_LIBS
188 : 400 : configdata[i].setting = pstrdup(VAL_LIBS);
189 : : #else
190 : : configdata[i].setting = pstrdup(_("not recorded"));
191 : : #endif
192 : 400 : i++;
193 : :
194 : 400 : configdata[i].name = pstrdup("VERSION");
195 : 400 : configdata[i].setting = pstrdup("PostgreSQL " PG_VERSION);
196 : 400 : i++;
197 : :
198 [ - + ]: 400 : Assert(i == *configdata_len);
199 : :
2979 mail@joeconway.com 200 : 400 : return configdata;
201 : : }
|