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.48 2013/03/22 22:48:57 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 ** Note, unlike gcc, clang doesn't apply full prototypes to K&R definitions. 29 */ 30 31 # ifndef SM_CONF_STDBOOL_H 32 # if !defined(__clang__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 33 # define SM_CONF_STDBOOL_H 1 34 # else /* !defined(__clang__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */ 35 # define SM_CONF_STDBOOL_H 0 36 # endif /* !defined(__clang__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */ 37 # endif /* ! SM_CONF_STDBOOL_H */ 38 39 /* 40 ** Configuration macros that specify how __P is defined. 41 */ 42 43 # ifndef SM_CONF_SYS_CDEFS_H 44 # define SM_CONF_SYS_CDEFS_H 0 45 # endif /* ! SM_CONF_SYS_CDEFS_H */ 46 47 /* 48 ** SM_CONF_STDDEF_H is 1 if <stddef.h> exists 49 */ 50 51 # ifndef SM_CONF_STDDEF_H 52 # define SM_CONF_STDDEF_H 1 53 # endif /* ! SM_CONF_STDDEF_H */ 54 55 /* 56 ** Configuration macro that specifies whether strlcpy/strlcat are available. 57 ** Note: this is the default so that the libsm version (optimized) will 58 ** be used by default (sm_strlcpy/sm_strlcat). 59 */ 60 61 # ifndef SM_CONF_STRL 62 # define SM_CONF_STRL 0 63 # endif /* ! SM_CONF_STRL */ 64 65 /* 66 ** Configuration macro indicating that setitimer is available 67 */ 68 69 # ifndef SM_CONF_SETITIMER 70 # define SM_CONF_SETITIMER 1 71 # endif /* ! SM_CONF_SETITIMER */ 72 73 /* 74 ** Does <sys/types.h> define uid_t and gid_t? 75 */ 76 77 # ifndef SM_CONF_UID_GID 78 # define SM_CONF_UID_GID 1 79 # endif /* ! SM_CONF_UID_GID */ 80 81 /* 82 ** Does <sys/types.h> define ssize_t? 83 */ 84 # ifndef SM_CONF_SSIZE_T 85 # define SM_CONF_SSIZE_T 1 86 # endif /* ! SM_CONF_SSIZE_T */ 87 88 /* 89 ** Does the C compiler support long long? 90 */ 91 92 # ifndef SM_CONF_LONGLONG 93 # if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 94 # define SM_CONF_LONGLONG 1 95 # else /* defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */ 96 # if defined(__GNUC__) 97 # define SM_CONF_LONGLONG 1 98 # else /* defined(__GNUC__) */ 99 # define SM_CONF_LONGLONG 0 100 # endif /* defined(__GNUC__) */ 101 # endif /* defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */ 102 # endif /* ! SM_CONF_LONGLONG */ 103 104 /* 105 ** Does <sys/types.h> define quad_t and u_quad_t? 106 ** We only care if long long is not available. 107 */ 108 109 # ifndef SM_CONF_QUAD_T 110 # define SM_CONF_QUAD_T 0 111 # endif /* ! SM_CONF_QUAD_T */ 112 113 /* 114 ** Configuration macro indicating that shared memory is available 115 */ 116 117 # ifndef SM_CONF_SHM 118 # define SM_CONF_SHM 0 119 # endif /* ! SM_CONF_SHM */ 120 121 /* 122 ** Does <setjmp.h> define sigsetjmp? 123 */ 124 125 # ifndef SM_CONF_SIGSETJMP 126 # define SM_CONF_SIGSETJMP 1 127 # endif /* ! SM_CONF_SIGSETJMP */ 128 129 /* 130 ** Does <sysexits.h> exist, and define the EX_* macros with values 131 ** that differ from the default BSD values in <sm/sysexits.h>? 132 */ 133 134 # ifndef SM_CONF_SYSEXITS_H 135 # define SM_CONF_SYSEXITS_H 0 136 # endif /* ! SM_CONF_SYSEXITS_H */ 137 138 /* has memchr() prototype? (if not: needs memory.h) */ 139 # ifndef SM_CONF_MEMCHR 140 # define SM_CONF_MEMCHR 1 141 # endif /* ! SM_CONF_MEMCHR */ 142 143 /* try LLONG tests in libsm/t-types.c? */ 144 # ifndef SM_CONF_TEST_LLONG 145 # define SM_CONF_TEST_LLONG 1 146 # endif /* !SM_CONF_TEST_LLONG */ 147 148 /* LDAP Checks */ 149 # if LDAPMAP 150 # include <lber.h> 151 # include <ldap.h> 152 153 /* Does the LDAP library have ldap_memfree()? */ 154 # ifndef SM_CONF_LDAP_MEMFREE 155 156 /* 157 ** The new LDAP C API (draft-ietf-ldapext-ldap-c-api-04.txt) includes 158 ** ldap_memfree() in the API. That draft states to use LDAP_API_VERSION 159 ** of 2004 to identify the API. 160 */ 161 162 # if USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004 163 # define SM_CONF_LDAP_MEMFREE 1 164 # else /* USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004 */ 165 # define SM_CONF_LDAP_MEMFREE 0 166 # endif /* USING_NETSCAPE_LDAP || LDAP_API_VERSION >= 2004 */ 167 # endif /* ! SM_CONF_LDAP_MEMFREE */ 168 169 /* Does the LDAP library have ldap_initialize()? */ 170 # ifndef SM_CONF_LDAP_INITIALIZE 171 172 /* 173 ** Check for ldap_initialize() support for support for LDAP URI's with 174 ** non-ldap:// schemes. 175 */ 176 177 /* OpenLDAP does it with LDAP_OPT_URI */ 178 # ifdef LDAP_OPT_URI 179 # define SM_CONF_LDAP_INITIALIZE 1 180 # endif /* LDAP_OPT_URI */ 181 # endif /* !SM_CONF_LDAP_INITIALIZE */ 182 # endif /* LDAPMAP */ 183 184 /* don't use strcpy() */ 185 # ifndef DO_NOT_USE_STRCPY 186 # define DO_NOT_USE_STRCPY 1 187 # endif /* ! DO_NOT_USE_STRCPY */ 188 189 #endif /* ! SM_CONFIG_H */ 190