Removed version number from file header.
[ira/wip.git] / source3 / smbd / build_options.c
1 /* 
2    Unix SMB/CIFS implementation.
3    Build Options for Samba Suite
4    Copyright (C) Vance Lankhaar <vlankhaar@hotmail.com> 2001
5    Copyright (C) Andrew Bartlett <abartlet@samba.org> 2001
6    
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11    
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16    
17    You should have received a copy of the GNU General Public License
18    along with this program; if not, write to the Free Software
19    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 */
21
22 #include "includes.h"
23 #include "build_env.h"
24 #include "dynconfig.h"
25
26 static void output(BOOL screen, char *format, ...) PRINTF_ATTRIBUTE(2,3);
27
28 /*
29 #define OUTPUT(x) snprintf(outstring,sizeof(outstring),x); output(screen,outstring);
30 */
31 /****************************************************************************
32 helper function for build_options
33 ****************************************************************************/
34 static void output(BOOL screen, char *format, ...)
35 {
36        char *ptr;
37        va_list ap;
38        
39        va_start(ap, format);
40        vasprintf(&ptr,format,ap);
41        va_end(ap);
42
43        if (screen) {
44               d_printf("%s", ptr);
45        } else {
46                DEBUG(4,("%s", ptr));
47        }
48        
49        SAFE_FREE(ptr);
50 }
51
52 /****************************************************************************
53 options set at build time for the samba suite
54 ****************************************************************************/
55 void build_options(BOOL screen)
56 {
57        if ((DEBUGLEVEL < 4) && (!screen)) {
58                return;
59        }
60
61 #ifdef _BUILD_ENV_H
62        /* Output information about the build environment */
63        output(screen,"Build environment:\n");
64        output(screen,"   Built by:    %s@%s\n",BUILD_ENV_USER,BUILD_ENV_HOST);
65        output(screen,"   Built on:    %s\n",BUILD_ENV_DATE);
66
67        output(screen,"   Built using: %s\n",BUILD_ENV_COMPILER);
68        output(screen,"   Build host:  %s\n",BUILD_ENV_UNAME);
69        output(screen,"   SRCDIR:      %s\n",BUILD_ENV_SRCDIR);
70        output(screen,"   BUILDDIR:    %s\n",BUILD_ENV_BUILDDIR);
71
72        
73 #endif
74
75        /* Output various options (most correspond to --with options) */ 
76        output(screen,"\nBuild options:\n");
77 #ifdef WITH_SMBWRAPPER 
78        output(screen,"   WITH_SMBWRAPPER\n");
79 #endif
80 #ifdef WITH_AFS
81        output(screen,"   WITH_AFS\n");
82 #endif
83 #ifdef WITH_DFS
84        output(screen,"   WITH_DFS\n");
85 #endif
86 #ifdef KRB4_AUTH
87        output(screen,"   KRB4_AUTH");
88 #endif
89 #ifdef HAVE_KRB5
90        output(screen,"   HAVE_KRB5");
91 #endif
92 #ifdef WITH_AUTOMOUNT
93        output(screen,"   WITH_AUTOMOUNT\n");
94 #endif
95 #ifdef WITH_SMBMOUNT
96        output(screen,"   WITH_SMBMOUNT\n");
97 #endif
98 #ifdef WITH_PAM
99        output(screen,"   WITH_PAM\n");
100 #endif
101 #ifdef WITH_TDB_SAM
102        output(screen,"   WITH_TDB_SAM\n");
103 #endif
104 #ifdef WITH_LDAP_SAM
105        output(screen,"   WITH_LDAP_SAM\n");
106 #endif
107 #ifdef WITH_SMBPASSWD_SAM
108        output(screen,"   WITH_SMBPASSWD_SAM\n");
109 #endif
110 #ifdef WITH_NISPLUS_SAM
111        output(screen,"   WITH_NISPLUS_SAM\n");
112 #endif
113 #ifdef WITH_NISPLUS_HOME
114        output(screen,"   WITH_NISPLUS_HOME\n");
115 #endif
116 #ifdef WITH_SSL
117        output(screen,"   WITH_SSL\n");
118 #endif
119 #ifdef SSL_DIR
120        output(screen,"   SSL_DIR: %s\n",SSL_DIR);
121 #endif
122 #ifdef WITH_SYSLOG
123        output(screen,"   WITH_SYSLOG\n");
124 #endif
125 #ifdef WITH_PROFILE
126        output(screen,"   WITH_PROFILE\n");
127 #endif
128 #ifdef WITH_QUOTAS
129        output(screen,"   WITH_QUOTAS\n");
130 #endif
131 #ifdef WITH_VFS
132        output(screen,"   WITH_VFS\n");
133 #endif
134 #ifdef USE_SPINLOCKS
135        output(screen,"   USE_SPINLOCKS\n");
136 #endif
137 #ifdef SPARC_SPINLOCKS
138        output(screen,"   SPARC_SPINLOCKS\n");
139 #endif
140 #ifdef INTEL_SPINLOCKS
141        output(screen,"   INTEL_SPINLOCKS\n");
142 #endif
143 #ifdef MIPS_SPINLOCKS
144        output(screen,"   MIPS_SPINLOCKS\n");
145 #endif
146 #ifdef POWERPC_SPINLOCKS
147        output(screen,"   POWERPC_SPINLOCKS\n");
148 #endif
149 #ifdef HAVE_UNIXWARE_ACLS
150        output(screen,"   HAVE_UNIXWARE_ACLS\n");
151 #endif
152 #ifdef HAVE_SOLARIS_ACLS
153        output(screen,"   HAVE_SOLARIS_ACLS\n");
154 #endif 
155 #ifdef HAVE_IRIX_ACLS
156        output(screen,"   HAVE_IRIX_ACLS\n");
157 #endif
158 #ifdef HAVE_AIX_ACLS
159        output(screen,"   HAVE_AIX_ACLS\n");
160 #endif
161 #ifdef HAVE_POSIX_ACLS
162        output(screen,"   HAVE_POSIX_ACLS\n");
163 #endif
164 #ifdef HAVE_TRU64_ACLS
165        output(screen,"   HAVE_TRU64_ACLS\n");
166 #endif
167
168 #ifdef HAVE_ACL_GET_PERM_NP
169        output(screen,"   HAVE_ACL_GET_PERM_NP\n");
170 #endif
171 #ifdef HAVE_NO_ACLS
172        output(screen,"   HAVE_NO_ACLS\n");
173 #endif
174 #ifdef HAVE_LIBREADLINE
175        output(screen,"   HAVE_LIBREADLINE\n"); 
176 #endif
177 #ifdef WITH_LIBICONV
178        output(screen,"   WITH_LIBICONV: %s\n",WITH_LIBICONV);
179 #endif
180
181
182        /* Output various paths to files and directories */
183        output(screen,"\nPaths:\n");
184        output(screen,"   CONFIGFILE: %s\n", dyn_CONFIGFILE);
185 #ifdef PRIVATE_DIR
186        output(screen,"   PRIVATE_DIR: %s\n",PRIVATE_DIR);
187 #endif
188 #ifdef LMHOSTSFILE
189        output(screen,"   LMHOSTSFILE: %s\n",LMHOSTSFILE);
190 #endif
191        output(screen,"   SBINDIR: %s\n", dyn_SBINDIR);
192        output(screen,"   BINDIR: %s\n", dyn_BINDIR);
193        output(screen,"   LOCKDIR: %s\n",dyn_LOCKDIR);
194        output(screen,"   DRIVERFILE: %s\n", dyn_DRIVERFILE);
195        output(screen,"   LOGFILEBASE: %s\n", dyn_LOGFILEBASE);
196
197        /*Output various other options (most map to defines in the configure script*/
198        output(screen,"\nOther Build Options:\n");
199 #ifdef HAVE_VOLATILE
200        output(screen,"   HAVE_VOLATILE\n");
201 #endif
202 #ifdef HAVE_SHADOW_H
203        output(screen,"   HAVE_SHADOW_H\n");
204 #endif
205 #ifdef HAVE_CRYPT
206        output(screen,"   HAVE_CRYPT\n");
207 #endif
208 #ifdef USE_BOTH_CRYPT_CALLS
209        output(screen,"   USE_BOTH_CRYPT_CALLS\n");
210 #endif
211 #ifdef HAVE_TRUNCATED_SALT
212        output(screen,"   HAVE_TRUNCATED_SALT\n");
213 #endif
214 #ifdef HAVE_CUPS
215        output(screen,"   HAVE_CUPS\n");
216 #endif
217 #ifdef HAVE_CUPS_CUPS_H
218        output(screen,"   HAVE_CUPS_CUPS_H\n");
219 #endif
220 #ifdef HAVE_CUPS_LANGUAGE_H
221        output(screen,"   HAVE_CUPS_LANGUAGE_H\n");
222 #endif
223 #ifdef HAVE_LIBDL
224        output(screen,"   HAVE_LIBDL\n");
225 #endif
226 #ifdef HAVE_UNIXSOCKET
227        output(screen,"   HAVE_UNIXSOCKET\n");
228 #endif
229 #ifdef HAVE_SOCKLEN_T_TYPE
230        output(screen,"   HAVE_SOCKLEN_T_TYPE\n");
231 #endif
232 #ifdef HAVE_SIG_ATOMIC_T_TYPE
233        output(screen,"   HAVE_SIG_ATOMIC_T_TYPE\n");
234 #endif
235 #ifdef HAVE_SETRESUID
236        output(screen,"   HAVE_SETRESUID\n");
237 #endif
238 #ifdef HAVE_SETRESGID
239        output(screen,"   HAVE_SETRESGID\n");
240 #endif
241 #ifdef HAVE_CONNECT
242        output(screen,"   HAVE_CONNECT\n");
243 #endif
244 #ifdef HAVE_YP_GET_DEFAULT_DOMAIN
245        output(screen,"   HAVE_YP_GET_DEFAULT_DOMAIN\n");
246 #endif
247 #ifdef HAVE_STAT64
248        output(screen,"   HAVE_STAT64\n");
249 #endif
250 #ifdef HAVE_LSTAT64
251        output(screen,"   HAVE_LSTAT64\n");
252 #endif
253 #ifdef HAVE_FSTAT64
254        output(screen,"   HAVE_FSTAT64\n");
255 #endif
256 #ifdef HAVE_STRCASECMP
257        output(screen,"   HAVE_STRCASECMP\n");
258 #endif
259 #ifdef HAVE_MEMSET
260        output(screen,"   HAVE_MEMSET\n");
261 #endif
262 #ifdef HAVE_LONGLONG
263        output(screen,"   HAVE_LONGLONG\n");
264 #endif
265 #ifdef COMPILER_SUPPORTS_LL
266        output(screen,"   COMPILER_SUPPORTS_LL\n");
267 #endif
268 #ifdef SIZEOF_OFF_T
269        output(screen,"   SIZEOF_OFF_T: %d\n",SIZEOF_OFF_T);
270 #endif
271 #ifdef HAVE_OFF64_T
272        output(screen,"   HAVE_OFF64_T\n");
273 #endif
274 #ifdef SIZEOF_INO_T
275        output(screen,"   SIZEOF_INO_T: %d\n",SIZEOF_INO_T);
276 #endif
277 #ifdef HAVE_INO64_T
278        output(screen,"   HAVE_INO64_T\n");
279 #endif
280 #ifdef HAVE_STRUCT_DIRENT64
281        output(screen,"   HAVE_STRUCT_DIRENT64\n");
282 #endif
283 #ifdef HAVE_UNSIGNED_CHAR
284        output(screen,"   HAVE_UNSIGNED_CHAR\n");
285 #endif
286 #ifdef HAVE_SOCK_SIN_LEN
287        output(screen,"   HAVE_SOCK_SIN_LEN\n");
288 #endif
289 #ifdef SEEKDIR_RETURNS_VOID
290        output(screen,"   SEEKDIR_RETURNS_VOID\n");
291 #endif
292 #ifdef HAVE_FILE_MACRO
293        output(screen,"   HAVE_FILE_MACRO\n");
294 #endif
295 #ifdef HAVE_FUNCTION_MACRO
296        output(screen,"   HAVE_FUNCTION_MACRO\n");
297 #endif
298 #ifdef HAVE_GETTIMEOFDAY
299        output(screen,"   HAVE_GETTIMEOFDAY\n");
300 #endif
301 #ifdef HAVE_C99_VSNPRINTF
302        output(screen,"   HAVE_C99_VSNPRINTF\n");
303 #endif
304 #ifdef HAVE_BROKEN_READDIR
305        output(screen,"   HAVE_BROKEN_READDIR\n");
306 #endif
307 #ifdef HAVE_NATIVE_ICONV
308        output(screen,"   HAVE_NATIVE_ICONV\n");
309 #endif
310 #ifdef HAVE_KERNEL_OPLOCKS_LINUX
311        output(screen,"   HAVE_KERNEL_OPLOCKS_LINUX\n");
312 #endif
313 #ifdef HAVE_KERNEL_CHANGE_NOTIFY
314        output(screen,"   HAVE_KERNEL_CHANGE_NOTIFY\n");
315 #endif
316 #ifdef HAVE_KERNEL_SHARE_MODES
317        output(screen,"   HAVE_KERNEL_SHARE_MODES\n");
318 #endif
319 #ifdef HAVE_KERNEL_OPLOCKS_IRIX
320        output(screen,"   HAVE_KERNEL_OPLOCKS_IRIX\n");
321 #endif
322 #ifdef HAVE_IRIX_SPECIFIC_CAPABILITIES
323        output(screen,"   HAVE_IRIX_SPECIFIC_CAPABILITIES\n");
324 #endif
325 #ifdef HAVE_INT16_FROM_RPC_RPC_H
326        output(screen,"   HAVE_INT16_FROM_RPC_RPC_H\n");
327 #endif
328 #ifdef HAVE_UINT16_FROM_RPC_RPC_H
329        output(screen,"   HAVE_UINT16_FROM_RPC_RPC_H\n");
330 #endif
331 #ifdef HAVE_INT32_FROM_RPC_RPC_H
332        output(screen,"   HAVE_INT16_FROM_RPC_RPC_H\n");
333 #endif
334 #ifdef HAVE_UINT32_FROM_RPC_RPC_H
335        output(screen,"   HAVE_UINT32_FROM_RPC_RPC_H\n");
336 #endif
337 #ifdef HAVE_RPC_AUTH_ERROR_CONFLICT
338        output(screen,"   HAVE_RPC_AUTH_ERROR_CONFLICT\n");
339 #endif
340 #ifdef HAVE_FTRUNCATE_EXTEND
341        output(screen,"   HAVE_FTRUNCATE_EXTEND\n");
342 #endif
343 #ifdef HAVE_WORKING_AF_LOCAL
344        output(screen,"   HAVE_WORKING_AF_LOCAL\n");
345 #endif
346 #ifdef HAVE_BROKEN_GETGROUPS
347        output(screen,"   HAVE_BROKEN_GETGROUPS\n");
348 #endif
349 #ifdef REPLACE_GETPASS
350        output(screen,"   REPLACE_GETPASS\n");
351 #endif
352 #ifdef REPLACE_INET_NTOA
353        output(screen,"   REPLACE_INET_NTOA\n");
354 #endif
355 #ifdef HAVE_SECURE_MKSTEMP
356        output(screen,"   HAVE_SECURE_MKSTEMP\n");
357 #endif
358 #ifdef SYSCONF_SC_NGROUPS_MAX
359        output(screen,"   SYSCONF_SC_NGROUPS_MAX\n");
360 #endif
361 #ifdef HAVE_IFACE_AIX
362        output(screen,"   HAVE_IFACE_AIX\n");
363 #endif
364 #ifdef HAVE_IFACE_IFCONF
365        output(screen,"   HAVE_IFACE_IFCONF\n");
366 #endif
367 #ifdef HAVE_IFACE_IFREQ
368        output(screen,"   HAVE_IFACE_IFREQ\n");
369 #endif
370 #ifdef USE_SETRESUID
371        output(screen,"   USE_SETRESUID\n");
372 #endif
373 #ifdef USE_SETRESGID
374        output(screen,"   USE_SETREUID\n");
375 #endif
376 #ifdef USE_SETEUID
377        output(screen,"   USE_SETEUID\n");
378 #endif
379 #ifdef USE_SETUIDX
380        output(screen,"   USE_SETUIDX\n");
381 #endif
382 #ifdef HAVE_MMAP
383        output(screen,"   HAVE_MMAP\n");
384 #endif
385 #ifdef MMAP_BLACKLIST
386        output(screen,"   MMAP_BLACKLIST\n");
387 #endif
388 #ifdef FTRUNCATE_NEEDS_ROOT
389        output(screen,"   FTRUNCATE_NEEDS_ROOT\n");
390 #endif
391 #ifdef HAVE_FCNTL_LOCK
392        output(screen,"   HAVE_FCNTL_LOCK\n");
393 #endif
394 #ifdef HAVE_BROKEN_FCNTL64_LOCKS
395        output(screen,"   HAVE_BROKEN_FCNTL64_LOCKS\n");
396 #endif
397 #ifdef HAVE_STRUCT_FLOCK64
398        output(screen,"   HAVE_STRUCT_FLOCK64\n");
399 #endif
400 #ifdef BROKEN_NISPLUS_INCLUDE_FILES
401        output(screen,"   BROKEN_NISPLUS_INCLUDE_FILES\n");
402 #endif
403 #ifdef HAVE_LIBPAM
404        output(screen,"   HAVE_LIBPAM\n");
405 #endif
406 #ifdef STAT_STATVFS64
407        output(screen,"   STAT_STATVFS64\n");
408 #endif
409 #ifdef STAT_STATVFS
410        output(screen,"   STAT_STATVFS\n");
411 #endif
412 #ifdef STAT_STATFS3_OSF1
413        output(screen,"   STAT_STATFS3_OSF1\n");
414 #endif
415 #ifdef STAT_STATFS2_BSIZE
416        output(screen,"   STAT_STATFS2_BSIZE\n");
417 #endif
418 #ifdef STAT_STATFS4
419        output(screen,"   STAT_STATFS4\n");
420 #endif
421 #ifdef STAT_STATFS2_FSIZE
422        output(screen,"   STAT_STATFS2_FSIZE\n");
423 #endif
424 #ifdef STAT_STATFS2_FS_DATA
425        output(screen,"   STAT_STATFS2_FS_DATA\n");
426 #endif
427 #ifdef HAVE_EXPLICIT_LARGEFILE_SUPPORT
428        output(screen,"   HAVE_EXPLICIT_LARGEFILE_SUPPORT\n");
429 #endif
430
431 #ifdef WITH_UTMP
432        /* Output UTMP Stuff */
433        output(screen,"\nUTMP Related:\n");
434        output(screen,"   WITH_UTMP\n");
435
436 #ifdef HAVE_UTIMBUF
437        output(screen,"   HAVE_UTIMBUF\n");
438 #endif
439 #ifdef HAVE_UT_UT_NAME
440        output(screen,"   HAVE_UT_UT_NAME\n");
441 #endif
442 #ifdef HAVE_UT_UT_USER
443        output(screen,"   HAVE_UT_UT_USER\n");
444 #endif
445 #ifdef HAVE_UT_UT_ID
446        output(screen,"   HAVE_UT_UT_ID\n");
447 #endif
448 #ifdef HAVE_UT_UT_HOST
449        output(screen,"   HAVE_UT_UT_HOST\n");
450 #endif
451 #ifdef HAVE_UT_UT_TIME
452        output(screen,"   HAVE_UT_UT_TIME\n");
453 #endif
454 #ifdef HAVE_UT_UT_TV
455        output(screen,"   HAVE_UT_UT_TV\n");
456 #endif
457 #ifdef HAVE_UT_UT_TYPE
458        output(screen,"   HAVE_UT_UT_TYPE\n");
459 #endif
460 #ifdef HAVE_UT_UT_PID
461        output(screen,"   HAVE_UT_UT_PID\n");
462 #endif
463 #ifdef HAVE_UT_UT_EXIT
464        output(screen,"   HAVE_UT_UT_EXIT\n");
465 #endif
466 #ifdef HAVE_UT_UT_ADDR
467        output(screen,"   HAVE_UT_UT_ADDR\n");
468 #endif
469 #ifdef PUTUTLINE_RETURNS_UTMP
470        output(screen,"   PUTUTLINE_RETURNS_UTMP\n");
471 #endif
472 #ifdef HAVE_UX_UT_SYSLEN
473        output(screen,"   HAVE_UX_UT_SYSLEN\n");
474 #endif
475 #endif /* WITH_UTMP */
476
477        /* Output Build OS */
478        output(screen,"\nBuilt for host os:\n");
479 #ifdef LINUX
480        output(screen,"   LINUX\n");
481 #endif
482 #ifdef SUNOS5
483        output(screen,"   SUNOS5\n");
484 #endif
485 #ifdef SUNOS4
486        output(screen,"   SUNOS4\n");
487 #endif
488        /* BSD Isn't Defined in the configure script, but there is something about it in include/config.h.in (and I guess acconfig.h) */
489 #ifdef BSD
490        output(screen,"   BSD\n");
491 #endif
492 #ifdef IRIX
493        output(screen,"   IRIX\n");
494 #endif
495 #ifdef IRIX6
496        output(screen,"   IRIX6\n");
497 #endif
498 #ifdef AIX
499        output(screen,"   AIX\n");
500 #endif
501 #ifdef HPUX
502        output(screen,"   HPUX\n");
503 #endif
504 #ifdef QNX
505        output(screen,"   QNX\n");
506 #endif
507 #ifdef OSF1
508        output(screen,"   OSF1\n");
509 #endif
510 #ifdef SCO
511        output(screen,"   SCO\n");
512 #endif
513 #ifdef UNIXWARE
514        output(screen,"   UNIXWARE\n");
515 #endif
516 #ifdef NEXT2
517        output(screen,"   NEXT2\n");
518 #endif
519 #ifdef RELIANTUNIX
520        output(screen,"   RELIANTUNIX\n");
521 #endif
522
523        /* Output the sizes of the various types */
524        output(screen,"\nType sizes:\n");
525        output(screen,"   sizeof(char):    %d\n",sizeof(char));
526        output(screen,"   sizeof(int):     %d\n",sizeof(int));
527        output(screen,"   sizeof(long):    %d\n",sizeof(long));
528        output(screen,"   sizeof(uint8):   %d\n",sizeof(uint8));
529        output(screen,"   sizeof(uint16):  %d\n",sizeof(uint16));
530        output(screen,"   sizeof(uint32):  %d\n",sizeof(uint32));
531        output(screen,"   sizeof(short):   %d\n",sizeof(short));
532        output(screen,"   sizeof(void*):   %d\n",sizeof(void*));
533 }
534
535
536