1 /*
2  * Copyright (c) 2000-2003 Sendmail, Inc. and its suppliers.
3  *	All rights reserved.
4  *
5  * By using this file, you agree to the terms and conditions set
6  * forth in the LICENSE file which can be found at the top level of
7  * the sendmail distribution.
8  *
9  *	$Id: config.h,v 1.47 2004/10/26 21:41:07 gshapiro Exp $
10  */
11 
12 /*
13 **  libsm configuration macros.
14 **  The values of these macros are platform dependent.
15 **  The default values are given here.
16 **  If the default is incorrect, then the correct value can be specified
17 **  in the m4 configuration file in devtools/OS.
18 */
19 
20 #ifndef SM_CONFIG_H
21 # define SM_CONFIG_H
22 
23 #  include "sm_os.h"
24 
25 /*
26 **  SM_CONF_STDBOOL_H is 1 if <stdbool.h> exists
27 */
28 
29 # ifndef SM_CONF_STDBOOL_H
30 #  if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
31 #   define SM_CONF_STDBOOL_H		1
32 #  else /* defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */
33 #   define SM_CONF_STDBOOL_H		0
34 #  endif /* defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */
35 # endif /* ! SM_CONF_STDBOOL_H */
36 
37 /*
38 **  Configuration macros that specify how __P is defined.
39 */
40 
41 # ifndef SM_CONF_SYS_CDEFS_H
42 #  define SM_CONF_SYS_CDEFS_H		0
43 # endif /* ! SM_CONF_SYS_CDEFS_H */
44 
45 /*
46 **  SM_CONF_STDDEF_H is 1 if <stddef.h> exists
47 */
48 
49 # ifndef SM_CONF_STDDEF_H
50 #  define SM_CONF_STDDEF_H		1
51 # endif /* ! SM_CONF_STDDEF_H */
52 
53 /*
54 **  Configuration macro that specifies whether strlcpy/strlcat are available.
55 **  Note: this is the default so that the libsm version (optimized) will
56 **  be used by default (sm_strlcpy/sm_strlcat).
57 */
58 
59 # ifndef SM_CONF_STRL
60 #  define SM_CONF_STRL			0
61 # endif /* ! SM_CONF_STRL */
62 
63 /*
64 **  Configuration macro indicating that setitimer is available
65 */
66 
67 # ifndef SM_CONF_SETITIMER
68 #  define SM_CONF_SETITIMER		1
69 # endif /* ! SM_CONF_SETITIMER */
70 
71 /*
72 **  Does <sys/types.h> define uid_t and gid_t?
73 */
74 
75 # ifndef SM_CONF_UID_GID
76 #  define SM_CONF_UID_GID		1
77 # endif /* ! SM_CONF_UID_GID */
78 
79 /*
80 **  Does <sys/types.h> define ssize_t?
81 */
82 # ifndef SM_CONF_SSIZE_T
83 #  define SM_CONF_SSIZE_T		1
84 # endif /* ! SM_CONF_SSIZE_T */
85 
86 /*
87 **  Does the C compiler support long long?
88 */
89 
90 # ifndef SM_CONF_LONGLONG
91 #  if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
92 #   define SM_CONF_LONGLONG		1
93 #  else /* defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */
94 #   if defined(__GNUC__)
95 #    define SM_CONF_LONGLONG		1
96 #   else /* defined(__GNUC__) */
97 #    define SM_CONF_LONGLONG		0
98 #   endif /* defined(__GNUC__) */
99 #  endif /* defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */
100 # endif /* ! SM_CONF_LONGLONG */
101 
102 /*
103 **  Does <sys/types.h> define quad_t and u_quad_t?
104 **  We only care if long long is not available.
105 */
106 
107 # ifndef SM_CONF_QUAD_T
108 #  define SM_CONF_QUAD_T		0
109 # endif /* ! SM_CONF_QUAD_T */
110 
111 /*
112 **  Configuration macro indicating that shared memory is available
113 */
114 
115 # ifndef SM_CONF_SHM
116 #  define SM_CONF_SHM		0
117 # endif /* ! SM_CONF_SHM */
118 
119 /*
120 **  Does <setjmp.h> define sigsetjmp?
121 */
122 
123 # ifndef SM_CONF_SIGSETJMP
124 #  define SM_CONF_SIGSETJMP	1
125 # endif /* ! SM_CONF_SIGSETJMP */
126 
127 /*
128 **  Does <sysexits.h> exist, and define the EX_* macros with values
129 **  that differ from the default BSD values in <sm/sysexits.h>?
130 */
131 
132 # ifndef SM_CONF_SYSEXITS_H
133 #  define SM_CONF_SYSEXITS_H	0
134 # endif /* ! SM_CONF_SYSEXITS_H */
135 
136 /* has memchr() prototype? (if not: needs memory.h) */
137 # ifndef SM_CONF_MEMCHR
138 #  define SM_CONF_MEMCHR	1
139 # endif /* ! SM_CONF_MEMCHR */
140 
141 /* try LLONG tests in libsm/t-types.c? */
142 # ifndef SM_CONF_TEST_LLONG
143 #  define SM_CONF_TEST_LLONG	1
144 # endif /* !SM_CONF_TEST_LLONG */
145 
146 /* LDAP Checks */
147 # if LDAPMAP
148 #  include <lber.h>
149 #  include <ldap.h>
150 
151 /* Does the LDAP library have ldap_memfree()? */
152 #  ifndef SM_CONF_LDAP_MEMFREE
153 
154 /*
155 **  The new LDAP C API (draft-ietf-ldapext-ldap-c-api-04.txt) includes
156 **  ldap_memfree() in the API.  That draft states to use LDAP_API_VERSION
157 **  of 2004 to identify the API.
158 */
159 
160 #   if USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004
161 #    define SM_CONF_LDAP_MEMFREE	1
162 #   else /* USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004 */
163 #    define SM_CONF_LDAP_MEMFREE	0
164 #   endif /* USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004 */
165 #  endif /* ! SM_CONF_LDAP_MEMFREE */
166 
167 /* Does the LDAP library have ldap_initialize()? */
168 #  ifndef SM_CONF_LDAP_INITIALIZE
169 
170 /*
171 **  Check for ldap_initialize() support for support for LDAP URI's with
172 **  non-ldap:// schemes.
173 */
174 
175 /* OpenLDAP does it with LDAP_OPT_URI */
176 #   ifdef LDAP_OPT_URI
177 #    define SM_CONF_LDAP_INITIALIZE	1
178 #   endif /* LDAP_OPT_URI */
179 #  endif /* !SM_CONF_LDAP_INITIALIZE */
180 # endif /* LDAPMAP */
181 
182 /* don't use strcpy() */
183 # ifndef DO_NOT_USE_STRCPY
184 #  define DO_NOT_USE_STRCPY	1
185 # endif /* ! DO_NOT_USE_STRCPY */
186 
187 #endif /* ! SM_CONFIG_H */
188