1dnl config.m4 for extension mongodb 2PHP_ARG_ENABLE([mongodb], 3 [whether to enable MongoDB support], 4 [AS_HELP_STRING([--enable-mongodb], 5 [Enable MongoDB support])]) 6 7if test "$PHP_MONGODB" != "no"; then 8 dnl Check PHP version is compatible with this extension 9 AC_MSG_CHECKING([PHP version]) 10 11 PHP_MONGODB_PHP_VERSION=$PHP_VERSION 12 PHP_MONGODB_PHP_VERSION_ID=$PHP_VERSION_ID 13 14 if test -z "$PHP_MONGODB_PHP_VERSION"; then 15 if test -z "$PHP_CONFIG"; then 16 AC_MSG_ERROR([php-config not found]) 17 fi 18 PHP_MONGODB_PHP_VERSION=`${PHP_CONFIG} --version` 19 PHP_MONGODB_PHP_VERSION_ID=`echo "${PHP_MONGODB_PHP_VERSION}" | $AWK 'BEGIN { FS = "."; } { printf "%d", ([$]1 * 100 + [$]2) * 100 + [$]3;}'` 20 fi 21 22 AC_MSG_RESULT($PHP_MONGODB_PHP_VERSION) 23 if test "$PHP_MONGODB_PHP_VERSION_ID" -lt "70000"; then 24 AC_MSG_ERROR([not supported. Need a PHP version >= 7.0.0 (found $PHP_MONGODB_PHP_VERSION)]) 25 fi 26 27 PHP_ARG_ENABLE([mongodb-developer-flags], 28 [whether to enable developer build flags], 29 [AS_HELP_STRING([--enable-mongodb-developer-flags], 30 [MongoDB: Enable developer flags [default=no]])], 31 [no], 32 [no]) 33 34 if test "$PHP_MONGODB_DEVELOPER_FLAGS" = "yes"; then 35 dnl Warn about functions which might be candidates for format attributes 36 AX_CHECK_COMPILE_FLAG(-Wmissing-format-attribute, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wmissing-format-attribute" ,, -Werror) 37 dnl Avoid duplicating values for an enum 38 AX_CHECK_COMPILE_FLAG(-Wduplicate-enum, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wduplicate-enum" ,, -Werror) 39 dnl Warns on mismatches between #ifndef and #define header guards 40 AX_CHECK_COMPILE_FLAG(-Wheader-guard, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wheader-guard" ,, -Werror) 41 dnl logical not of a non-boolean expression 42 AX_CHECK_COMPILE_FLAG(-Wlogical-not-parentheses, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wlogical-not-parentheses" ,, -Werror) 43 dnl Warn about suspicious uses of logical operators in expressions 44 AX_CHECK_COMPILE_FLAG(-Wlogical-op, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wlogical-op",, -Werror ,, -Werror) 45 dnl memory error detector. 46 dnl FIXME: -fsanitize=address,undefined for clang. The AX_CHECK_COMPILE_FLAG macro isn't happy about that string :( 47 AX_CHECK_COMPILE_FLAG(-fsanitize-address, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -fsanitize-address" ,, -Werror) 48 dnl Enable frame debugging 49 AX_CHECK_COMPILE_FLAG(-fno-omit-frame-pointer, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -fno-omit-frame-pointer" ,, -Werror) 50 dnl Make sure we don't optimize calls 51 AX_CHECK_COMPILE_FLAG(-fno-optimize-sibling-calls, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -fno-optimize-sibling-calls" ,, -Werror) 52 AX_CHECK_COMPILE_FLAG(-Wlogical-op-parentheses, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wlogical-op-parentheses" ,, -Werror) 53 AX_CHECK_COMPILE_FLAG(-Wpointer-bool-conversion, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wpointer-bool-conversion" ,, -Werror) 54 AX_CHECK_COMPILE_FLAG(-Wbool-conversion, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wbool-conversion" ,, -Werror) 55 AX_CHECK_COMPILE_FLAG(-Wloop-analysis, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wloop-analysis" ,, -Werror) 56 AX_CHECK_COMPILE_FLAG(-Wsizeof-array-argument, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wsizeof-array-argument" ,, -Werror) 57 AX_CHECK_COMPILE_FLAG(-Wstring-conversion, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wstring-conversion" ,, -Werror) 58 AX_CHECK_COMPILE_FLAG(-Wno-variadic-macros, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wno-variadic-macros" ,, -Werror) 59 AX_CHECK_COMPILE_FLAG(-Wno-sign-compare, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wno-sign-compare" ,, -Werror) 60 AX_CHECK_COMPILE_FLAG(-fstack-protector, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -fstack-protector" ,, -Werror) 61 AX_CHECK_COMPILE_FLAG(-fno-exceptions, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -fno-exceptions" ,, -Werror) 62 AX_CHECK_COMPILE_FLAG(-Wformat-security, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wformat-security" ,, -Werror) 63 AX_CHECK_COMPILE_FLAG(-Wformat-nonliteral, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wformat-nonliteral" ,, -Werror) 64 AX_CHECK_COMPILE_FLAG(-Winit-self, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Winit-self" ,, -Werror) 65 AX_CHECK_COMPILE_FLAG(-Wwrite-strings, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wwrite-strings" ,, -Werror) 66 AX_CHECK_COMPILE_FLAG(-Wenum-compare, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wenum-compare" ,, -Werror) 67 AX_CHECK_COMPILE_FLAG(-Wempty-body, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wempty-body" ,, -Werror) 68 AX_CHECK_COMPILE_FLAG(-Wparentheses, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wparentheses" ,, -Werror) 69 AX_CHECK_COMPILE_FLAG(-Wdeclaration-after-statement, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wdeclaration-after-statement" ,, -Werror) 70 AX_CHECK_COMPILE_FLAG(-Wmaybe-uninitialized, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wmaybe-uninitialized" ,, -Werror) 71 AX_CHECK_COMPILE_FLAG(-Wimplicit-fallthrough, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wimplicit-fallthrough" ,, -Werror) 72 AX_CHECK_COMPILE_FLAG(-Werror, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Werror" ,, -Werror) 73 AX_CHECK_COMPILE_FLAG(-Wextra, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wextra" ,, -Werror) 74 AX_CHECK_COMPILE_FLAG(-Wno-unused-parameter, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wno-unused-parameter" ,, -Werror) 75 AX_CHECK_COMPILE_FLAG(-Wno-unused-but-set-variable, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wno-unused-but-set-variable" ,, -Werror) 76 AX_CHECK_COMPILE_FLAG(-Wno-missing-field-initializers, _MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS -Wno-missing-field-initializers",, -Werror) 77 78 MAINTAINER_CFLAGS="$_MAINTAINER_CFLAGS" 79 STD_CFLAGS="-g -O0 -Wall" 80 fi 81 82 83 PHP_ARG_ENABLE([mongodb-coverage], 84 [whether to enable code coverage], 85 [AS_HELP_STRING([--enable-mongodb-coverage], 86 [MongoDB: Enable developer code coverage information [default=no]])], 87 [no], 88 [no]) 89 90 if test "$PHP_MONGODB_COVERAGE" = "yes"; then 91 if test "$ext_shared" != "yes"; then 92 AC_MSG_ERROR(code coverage is not supported for static builds) 93 fi 94 95 COVERAGE_CFLAGS="--coverage -g" 96 COVERAGE_LDFLAGS="--coverage" 97 98 MONGODB_SHARED_LIBADD="$MONGODB_SHARED_LIBADD $COVERAGE_LDFLAGS" 99 fi 100 101 PHP_MONGODB_CFLAGS="$STD_CFLAGS $MAINTAINER_CFLAGS $COVERAGE_CFLAGS" 102 103 PHP_MONGODB_SOURCES="\ 104 php_phongo.c \ 105 phongo_compat.c \ 106 src/bson.c \ 107 src/bson-encode.c \ 108 src/BSON/Binary.c \ 109 src/BSON/BinaryInterface.c \ 110 src/BSON/DBPointer.c \ 111 src/BSON/Decimal128.c \ 112 src/BSON/Decimal128Interface.c \ 113 src/BSON/Int64.c \ 114 src/BSON/Javascript.c \ 115 src/BSON/JavascriptInterface.c \ 116 src/BSON/MaxKey.c \ 117 src/BSON/MaxKeyInterface.c \ 118 src/BSON/MinKey.c \ 119 src/BSON/MinKeyInterface.c \ 120 src/BSON/ObjectId.c \ 121 src/BSON/ObjectIdInterface.c \ 122 src/BSON/Persistable.c \ 123 src/BSON/Regex.c \ 124 src/BSON/RegexInterface.c \ 125 src/BSON/Serializable.c \ 126 src/BSON/Symbol.c \ 127 src/BSON/Timestamp.c \ 128 src/BSON/TimestampInterface.c \ 129 src/BSON/Type.c \ 130 src/BSON/Undefined.c \ 131 src/BSON/Unserializable.c \ 132 src/BSON/UTCDateTime.c \ 133 src/BSON/UTCDateTimeInterface.c \ 134 src/BSON/functions.c \ 135 src/MongoDB/BulkWrite.c \ 136 src/MongoDB/ClientEncryption.c \ 137 src/MongoDB/Command.c \ 138 src/MongoDB/Cursor.c \ 139 src/MongoDB/CursorId.c \ 140 src/MongoDB/CursorInterface.c \ 141 src/MongoDB/Manager.c \ 142 src/MongoDB/Query.c \ 143 src/MongoDB/ReadConcern.c \ 144 src/MongoDB/ReadPreference.c \ 145 src/MongoDB/Server.c \ 146 src/MongoDB/Session.c \ 147 src/MongoDB/WriteConcern.c \ 148 src/MongoDB/WriteConcernError.c \ 149 src/MongoDB/WriteError.c \ 150 src/MongoDB/WriteResult.c \ 151 src/MongoDB/Exception/AuthenticationException.c \ 152 src/MongoDB/Exception/BulkWriteException.c \ 153 src/MongoDB/Exception/CommandException.c \ 154 src/MongoDB/Exception/ConnectionException.c \ 155 src/MongoDB/Exception/ConnectionTimeoutException.c \ 156 src/MongoDB/Exception/EncryptionException.c \ 157 src/MongoDB/Exception/Exception.c \ 158 src/MongoDB/Exception/ExecutionTimeoutException.c \ 159 src/MongoDB/Exception/InvalidArgumentException.c \ 160 src/MongoDB/Exception/LogicException.c \ 161 src/MongoDB/Exception/RuntimeException.c \ 162 src/MongoDB/Exception/ServerException.c \ 163 src/MongoDB/Exception/SSLConnectionException.c \ 164 src/MongoDB/Exception/UnexpectedValueException.c \ 165 src/MongoDB/Exception/WriteException.c \ 166 src/MongoDB/Monitoring/CommandFailedEvent.c \ 167 src/MongoDB/Monitoring/CommandStartedEvent.c \ 168 src/MongoDB/Monitoring/CommandSubscriber.c \ 169 src/MongoDB/Monitoring/CommandSucceededEvent.c \ 170 src/MongoDB/Monitoring/Subscriber.c \ 171 src/MongoDB/Monitoring/functions.c \ 172 " 173 174 PHP_ARG_WITH([mongodb-system-libs], 175 [whether to compile against system libraries instead of bundled], 176 [AS_HELP_STRING([--with-mongodb-system-libs=@<:@yes/no@:>@], 177 [MongoDB: Use system libraries for libbson, libmongoc, and libmongocrypt [default=no]])], 178 [no], 179 [no]) 180 PHP_ARG_WITH([libbson], 181 [whether to use system libbson], 182 [AS_HELP_STRING([--with-libbson=@<:@yes/no@:>@], 183 [MongoDB: Use system libbson [default=no]])], 184 [no], 185 [no]) 186 PHP_ARG_WITH([libmongoc], 187 [whether to use system libmongoc], 188 [AS_HELP_STRING([--with-libmongoc=@<:@yes/no@:>@], 189 [MongoDB: Use system libmongoc [default=no]])], 190 [no], 191 [no]) 192 PHP_ARG_WITH([mongodb-client-side-encryption], 193 [whether to enable client-side encryption], 194 [AS_HELP_STRING([--with-mongodb-client-side-encryption=@<:@auto/yes/no@:>@], 195 [MongoDB: Enable client-side encryption [default=auto]])], 196 [auto], 197 [no]) 198 199 if test "$PHP_LIBBSON" != "no"; then 200 AC_MSG_WARN(Using --with-libbson is deprecated and will be removed in a future version. Please use --with-system-libs instead) 201 202 if test "$PHP_LIBMONGOC" = "no"; then 203 AC_MSG_ERROR(Cannot use system libbson and bundled libmongoc) 204 fi 205 206 PHP_MONGODB_SYSTEM_LIBS="yes" 207 fi 208 209 if test "$PHP_LIBMONGOC" != "no"; then 210 AC_MSG_WARN(Using --with-libmongoc is deprecated and will be removed in a future version. Please use --with-system-libs instead) 211 212 if test "$PHP_LIBBSON" = "no"; then 213 AC_MSG_ERROR(Cannot use system libmongoc and bundled libbson) 214 fi 215 216 PHP_MONGODB_SYSTEM_LIBS="yes" 217 fi 218 219 PHP_MONGODB_BSON_VERSION_STRING="None" 220 PHP_MONGODB_MONGOC_VERSION_STRING="None" 221 PHP_MONGODB_MONGOCRYPT_VERSION_STRING="None" 222 223 if test "$PHP_MONGODB_SYSTEM_LIBS" != "no"; then 224 AC_PATH_PROG(PKG_CONFIG, pkg-config, no) 225 AC_MSG_CHECKING(for libbson) 226 if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists libbson-1.0; then 227 if $PKG_CONFIG libbson-1.0 --atleast-version 1.17.0; then 228 PHP_MONGODB_BSON_CFLAGS=`$PKG_CONFIG libbson-1.0 --cflags` 229 PHP_MONGODB_BSON_LIBS=`$PKG_CONFIG libbson-1.0 --libs` 230 PHP_MONGODB_BSON_VERSION=`$PKG_CONFIG libbson-1.0 --modversion` 231 PHP_MONGODB_BSON_VERSION_STRING="System ($PHP_MONGODB_BSON_VERSION)" 232 AC_MSG_RESULT(version $PHP_MONGODB_BSON_VERSION found) 233 else 234 AC_MSG_ERROR(system libbson must be upgraded to version >= 1.17.0) 235 fi 236 else 237 AC_MSG_ERROR(pkgconfig and libbson must be installed) 238 fi 239 PHP_MONGODB_CFLAGS="$PHP_MONGODB_CFLAGS $PHP_MONGODB_BSON_CFLAGS" 240 PHP_EVAL_LIBLINE($PHP_MONGODB_BSON_LIBS, MONGODB_SHARED_LIBADD) 241 AC_DEFINE(HAVE_SYSTEM_LIBBSON, 1, [Use system libbson]) 242 243 AC_MSG_CHECKING(for libmongoc) 244 if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists libmongoc-1.0; then 245 if $PKG_CONFIG libmongoc-1.0 --atleast-version 1.17.0; then 246 PHP_MONGODB_MONGOC_CFLAGS=`$PKG_CONFIG libmongoc-1.0 --cflags` 247 PHP_MONGODB_MONGOC_LIBS=`$PKG_CONFIG libmongoc-1.0 --libs` 248 PHP_MONGODB_MONGOC_VERSION=`$PKG_CONFIG libmongoc-1.0 --modversion` 249 PHP_MONGODB_MONGOC_VERSION_STRING="System ($PHP_MONGODB_MONGOC_VERSION)" 250 AC_MSG_RESULT(version $PHP_MONGODB_MONGOC_VERSION found) 251 else 252 AC_MSG_ERROR(system libmongoc must be upgraded to version >= 1.17.0) 253 fi 254 else 255 AC_MSG_ERROR(pkgconfig and libmongoc must be installed) 256 fi 257 PHP_MONGODB_CFLAGS="$PHP_MONGODB_CFLAGS $PHP_MONGODB_MONGOC_CFLAGS" 258 PHP_EVAL_LIBLINE($PHP_MONGODB_MONGOC_LIBS, MONGODB_SHARED_LIBADD) 259 AC_DEFINE(HAVE_SYSTEM_LIBMONGOC, 1, [Use system libmongoc]) 260 261 if test "$PHP_MONGODB_CLIENT_SIDE_ENCRYPTION" != "no"; then 262 AC_MSG_CHECKING(for libmongocrypt) 263 264 if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists libmongocrypt; then 265 if $PKG_CONFIG libmongocrypt --atleast-version 1.0.4; then 266 PHP_MONGODB_MONGOCRYPT_CFLAGS=`$PKG_CONFIG libmongocrypt --cflags` 267 PHP_MONGODB_MONGOCRYPT_LIBS=`$PKG_CONFIG libmongocrypt --libs` 268 PHP_MONGODB_MONGOCRYPT_VERSION=`$PKG_CONFIG libmongocrypt --modversion` 269 PHP_MONGODB_MONGOCRYPT_VERSION_STRING="System ($PHP_MONGODB_MONGOCRYPT_VERSION)" 270 AC_MSG_RESULT(version $PHP_MONGODB_MONGOCRYPT_VERSION found) 271 272 PHP_MONGODB_CFLAGS="$PHP_MONGODB_CFLAGS $PHP_MONGODB_MONGOCRYPT_CFLAGS" 273 PHP_EVAL_LIBLINE($PHP_MONGODB_MONGOCRYPT_LIBS, MONGODB_SHARED_LIBADD) 274 AC_DEFINE(HAVE_SYSTEM_LIBMONGOCRYPT, 1, [Use system libmongocrypt]) 275 elif test "$PHP_MONGODB_CLIENT_SIDE_ENCRYPTION" = "yes"; then 276 AC_MSG_ERROR(system libmongocrypt must be upgraded to version >= 1.0.4) 277 else 278 AC_MSG_RESULT(found an older version, compiling without client-side encryption) 279 fi 280 else 281 if test "$PHP_MONGODB_CLIENT_SIDE_ENCRYPTION" = "yes"; then 282 AC_MSG_ERROR(pkgconfig and libmongocrypt must be installed) 283 else 284 AC_MSG_RESULT(not found, compiling without client-side encryption) 285 fi 286 fi 287 fi 288 fi 289 290 if test "$PHP_MONGODB_SYSTEM_LIBS" = "no"; then 291 PHP_MONGODB_BUNDLED_CFLAGS="$STD_CFLAGS -DBSON_COMPILATION -DMONGOC_COMPILATION" 292 dnl TODO: MONGOCRYPT-219 makes the -std argument obsolete 293 PHP_MONGODB_LIBMONGOCRYPT_CFLAGS="-DKMS_MSG_STATIC -std=gnu99" 294 295 dnl M4 doesn't know if we're building statically or as a shared module, so 296 dnl attempt to include both paths while ignoring errors. If neither path 297 dnl exists, report an error during configure (this is later than M4 parsing 298 dnl during phpize but better than nothing). 299 m4_pushdef([_include],[ 300 dnl TODO: Fix this for PECL install (PHPC-1218) 301 dnl if test ! \( -f "$1" -o -f "ext/mongodb/$1" \); then 302 dnl AC_MSG_ERROR([m4 could not include $1: No such file or directory]) 303 dnl fi 304 m4_builtin([sinclude],[$1]) 305 m4_builtin([sinclude],[ext/mongodb/][$1]) 306 ]) 307 308 dnl Avoid using AC_CONFIG_MACRO_DIR, which might conflict with PHP 309 _include([scripts/autotools/m4/as_var_copy.m4]) 310 _include([scripts/autotools/m4/ax_check_compile_flag.m4]) 311 _include([scripts/autotools/m4/ax_prototype.m4]) 312 _include([scripts/autotools/m4/ax_pthread.m4]) 313 _include([scripts/autotools/m4/php_mongodb.m4]) 314 _include([scripts/autotools/m4/pkg.m4]) 315 316 _include([scripts/autotools/CheckCompiler.m4]) 317 _include([scripts/autotools/CheckHost.m4]) 318 319 _include([scripts/autotools/libbson/CheckAtomics.m4]) 320 _include([scripts/autotools/libbson/CheckHeaders.m4]) 321 _include([scripts/autotools/libbson/Endian.m4]) 322 _include([scripts/autotools/libbson/FindDependencies.m4]) 323 _include([scripts/autotools/libbson/Versions.m4]) 324 325 _include([scripts/autotools/libmongoc/CheckCompression.m4]) 326 _include([scripts/autotools/libmongoc/CheckResolv.m4]) 327 _include([scripts/autotools/libmongoc/CheckSasl.m4]) 328 _include([scripts/autotools/libmongoc/CheckSSL.m4]) 329 _include([scripts/autotools/libmongoc/CheckICU.m4]) 330 _include([scripts/autotools/libmongoc/FindDependencies.m4]) 331 _include([scripts/autotools/libmongoc/PlatformFlags.m4]) 332 _include([scripts/autotools/libmongoc/Versions.m4]) 333 _include([scripts/autotools/libmongoc/WeakSymbols.m4]) 334 335 dnl This include modifies the value of $PHP_MONGODB_CLIENT_SIDE_ENCRYPTION to "yes" 336 dnl or "no" depending on whether dependencies for libmongocrypt are fulfilled 337 _include([scripts/autotools/libmongocrypt/CheckSSL.m4]) 338 _include([scripts/autotools/libmongocrypt/Version.m4]) 339 340 PHP_MONGODB_BSON_VERSION_STRING="Bundled ($BSON_VERSION)" 341 PHP_MONGODB_MONGOC_VERSION_STRING="Bundled ($MONGOC_VERSION)" 342 PHP_MONGODB_MONGOCRYPT_VERSION_STRING="Bundled ($MONGOCRYPT_BUILD_VERSION)" 343 344 m4_popdef([_include]) 345 346 AC_SUBST(BSON_EXTRA_ALIGN, 0) 347 AC_SUBST(BSON_OS, 1) 348 349 AC_SUBST(MONGOC_NO_AUTOMATIC_GLOBALS, 1) 350 AC_SUBST(MONGOC_ENABLE_MONGODB_AWS_AUTH, 0) 351 AC_SUBST(MONGOC_ENABLE_RDTSCP, 0) 352 AC_SUBST(MONGOC_ENABLE_SHM_COUNTERS, 0) 353 AC_SUBST(MONGOC_TRACE, 1) 354 355 dnl Assignments for metadata handshake. Leave CFLAGS/LDFLAGS empty as they 356 dnl would likely cause platform info (PHP version) to be truncated. We can 357 dnl consider restoring CFLAGS/LDFLAGS once CDRIVER-3134 is resolved. 358 AC_SUBST(MONGOC_CC, [$CC]) 359 AC_SUBST(MONGOC_USER_SET_CFLAGS, []) 360 AC_SUBST(MONGOC_USER_SET_LDFLAGS, []) 361 362 if test "$PHP_MONGODB_CLIENT_SIDE_ENCRYPTION" = "yes"; then 363 AC_SUBST(MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION, 1) 364 else 365 AC_SUBST(MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION, 0) 366 fi 367 368 dnl On MacOS, use gcut from the coreutils brew package instead of cut 369 dnl Generated with: find src/libmongoc/src/common -name '*.c' -print0 | cut -sz -d / -f 5- | sort -dz | tr '\000' ' ' 370 PHP_MONGODB_COMMON_SOURCES="common-b64.c common-md5.c common-thread.c" 371 372 dnl Generated with: find src/libmongoc/src/kms-message/src -maxdepth 1 -name '*.c' -print0 | cut -sz -d / -f 6- | sort -dz | tr '\000' ' ' 373 PHP_MONGODB_KMS_MESSAGE_SOURCES="hexlify.c kms_b64.c kms_caller_identity_request.c kms_crypto_apple.c kms_crypto_libcrypto.c kms_crypto_none.c kms_crypto_windows.c kms_decrypt_request.c kms_encrypt_request.c kms_kv_list.c kms_message.c kms_port.c kms_request.c kms_request_opt.c kms_request_str.c kms_response.c kms_response_parser.c sort.c" 374 375 dnl Generated with: find src/libmongoc/src/libbson/src/bson -name '*.c' -print0 | cut -sz -d / -f 7- | sort -dz | tr '\000' ' ' 376 PHP_MONGODB_BSON_SOURCES="bcon.c bson-atomic.c bson.c bson-clock.c bson-context.c bson-decimal128.c bson-error.c bson-iso8601.c bson-iter.c bson-json.c bson-keys.c bson-md5.c bson-memory.c bson-oid.c bson-reader.c bson-string.c bson-timegm.c bson-utf8.c bson-value.c bson-version-functions.c bson-writer.c" 377 378 dnl Generated with: find src/libmongoc/src/libbson/src/jsonsl -name '*.c' -print0 | cut -sz -d / -f 7- | sort -dz | tr '\000' ' ' 379 PHP_MONGODB_JSONSL_SOURCES="jsonsl.c" 380 381 dnl Generated with: find src/libmongoc/src/libmongoc/src/mongoc -name '*.c' -print0 | cut -sz -d / -f 7- | sort -dz | tr '\000' ' ' 382 PHP_MONGODB_MONGOC_SOURCES="mongoc-aggregate.c mongoc-apm.c mongoc-array.c mongoc-async.c mongoc-async-cmd.c mongoc-buffer.c mongoc-bulk-operation.c mongoc-change-stream.c mongoc-client.c mongoc-client-pool.c mongoc-client-session.c mongoc-client-side-encryption.c mongoc-cluster-aws.c mongoc-cluster.c mongoc-cluster-cyrus.c mongoc-cluster-sasl.c mongoc-cluster-sspi.c mongoc-cmd.c mongoc-collection.c mongoc-compression.c mongoc-counters.c mongoc-crypt.c mongoc-crypto.c mongoc-crypto-cng.c mongoc-crypto-common-crypto.c mongoc-crypto-openssl.c mongoc-cursor-array.c mongoc-cursor.c mongoc-cursor-change-stream.c mongoc-cursor-cmd.c mongoc-cursor-cmd-deprecated.c mongoc-cursor-find.c mongoc-cursor-find-cmd.c mongoc-cursor-find-opquery.c mongoc-cursor-legacy.c mongoc-cyrus.c mongoc-database.c mongoc-error.c mongoc-find-and-modify.c mongoc-gridfs-bucket.c mongoc-gridfs-bucket-file.c mongoc-gridfs.c mongoc-gridfs-file.c mongoc-gridfs-file-list.c mongoc-gridfs-file-page.c mongoc-handshake.c mongoc-host-list.c mongoc-http.c mongoc-index.c mongoc-init.c mongoc-interrupt.c mongoc-libressl.c mongoc-linux-distro-scanner.c mongoc-list.c mongoc-log.c mongoc-matcher.c mongoc-matcher-op.c mongoc-memcmp.c mongoc-ocsp-cache.c mongoc-openssl.c mongoc-opts.c mongoc-opts-helpers.c mongoc-queue.c mongoc-rand-cng.c mongoc-rand-common-crypto.c mongoc-rand-openssl.c mongoc-read-concern.c mongoc-read-prefs.c mongoc-rpc.c mongoc-sasl.c mongoc-scram.c mongoc-secure-channel.c mongoc-secure-transport.c mongoc-server-description.c mongoc-server-monitor.c mongoc-server-stream.c mongoc-set.c mongoc-socket.c mongoc-ssl.c mongoc-sspi.c mongoc-stream-buffered.c mongoc-stream.c mongoc-stream-file.c mongoc-stream-gridfs.c mongoc-stream-gridfs-download.c mongoc-stream-gridfs-upload.c mongoc-stream-socket.c mongoc-stream-tls.c mongoc-stream-tls-libressl.c mongoc-stream-tls-openssl-bio.c mongoc-stream-tls-openssl.c mongoc-stream-tls-secure-channel.c mongoc-stream-tls-secure-transport.c mongoc-topology-background-monitoring.c mongoc-topology.c mongoc-topology-description-apm.c mongoc-topology-description.c mongoc-topology-scanner.c mongoc-uri.c mongoc-util.c mongoc-version-functions.c mongoc-write-command.c mongoc-write-command-legacy.c mongoc-write-concern.c" 383 384 dnl Generated with: find src/libmongoc/src/zlib-1.2.11 -maxdepth 1 -name '*.c' -print0 | cut -sz -d / -f 5- | sort -dz | tr '\000' ' ' 385 PHP_MONGODB_ZLIB_SOURCES="adler32.c compress.c crc32.c deflate.c gzclose.c gzlib.c gzread.c gzwrite.c infback.c inffast.c inflate.c inftrees.c trees.c uncompr.c zutil.c" 386 387 PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/common/], $PHP_MONGODB_COMMON_SOURCES, $PHP_MONGODB_BUNDLED_CFLAGS) 388 PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/libbson/src/bson/], $PHP_MONGODB_BSON_SOURCES, $PHP_MONGODB_BUNDLED_CFLAGS) 389 PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/libbson/src/jsonsl/], $PHP_MONGODB_JSONSL_SOURCES, $PHP_MONGODB_BUNDLED_CFLAGS) 390 PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/libmongoc/src/mongoc/], $PHP_MONGODB_MONGOC_SOURCES, $PHP_MONGODB_BUNDLED_CFLAGS) 391 392 PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/common/]) 393 PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/libbson/src/]) 394 PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/libbson/src/jsonsl/]) 395 PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/libmongoc/src/]) 396 397 PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/common/]) 398 PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/libbson/src/bson/]) 399 PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/libbson/src/jsonsl/]) 400 PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/libmongoc/src/mongoc/]) 401 402 dnl If compiling without libmongocrypt, use kms_message sources bundled with libmongoc. 403 dnl If compiling with libmongocrypt, kms_message bundled with libmongocrypt is used as it is most likely newer. 404 if test "$PHP_MONGODB_CLIENT_SIDE_ENCRYPTION" != "yes" && test "$PHP_MONGODB_SSL" != "no"; then 405 AC_SUBST(MONGOC_ENABLE_MONGODB_AWS_AUTH, 1) 406 PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/kms-message/src/], $PHP_MONGODB_KMS_MESSAGE_SOURCES, $PHP_MONGODB_BUNDLED_CFLAGS) 407 PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/kms-message/src/]) 408 PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/kms-message/src/]) 409 fi 410 411 dnl TODO: Use $ext_srcdir if we can move this after PHP_NEW_EXTENSION 412 ac_config_dir=PHP_EXT_SRCDIR(mongodb) 413 414 AC_CONFIG_FILES([ 415 ${ac_config_dir}/src/libmongoc/src/libbson/src/bson/bson-config.h 416 ${ac_config_dir}/src/libmongoc/src/libbson/src/bson/bson-version.h 417 ${ac_config_dir}/src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h 418 ${ac_config_dir}/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h 419 ]) 420 421 if test "x$bundled_zlib" = "xyes"; then 422 PHP_MONGODB_ZLIB_CFLAGS="$PHP_MONGODB_BUNDLED_CFLAGS" 423 AC_CHECK_HEADER([unistd.h], [PHP_MONGODB_ZLIB_CFLAGS="$PHP_MONGODB_ZLIB_CFLAGS -DHAVE_UNISTD_H=1"], []) 424 PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/zlib-1.2.11/], $PHP_MONGODB_ZLIB_SOURCES, $PHP_MONGODB_ZLIB_CFLAGS) 425 PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/zlib-1.2.11/]) 426 PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/zlib-1.2.11/]) 427 AC_CONFIG_FILES([${ac_config_dir}/src/libmongoc/src/zlib-1.2.11/zconf.h]) 428 fi 429 430 if test "$PHP_MONGODB_CLIENT_SIDE_ENCRYPTION" = "yes"; then 431 dnl Since libmongocrypt adds kms-message, we can enable AWS auth in this case 432 AC_SUBST(MONGOC_ENABLE_MONGODB_AWS_AUTH, 1) 433 AC_SUBST(MONGOCRYPT_ENABLE_TRACE, 1) 434 435 dnl Generated with: find src/libmongocrypt/src -maxdepth 1 -name '*.c' -print0 | cut -sz -d / -f 4- | sort -dz | tr '\000' ' ' 436 PHP_MONGODB_MONGOCRYPT_SOURCES="mongocrypt-binary.c mongocrypt-buffer.c mongocrypt.c mongocrypt-cache.c mongocrypt-cache-collinfo.c mongocrypt-cache-key.c mongocrypt-ciphertext.c mongocrypt-crypto.c mongocrypt-ctx.c mongocrypt-ctx-datakey.c mongocrypt-ctx-decrypt.c mongocrypt-ctx-encrypt.c mongocrypt-key-broker.c mongocrypt-key.c mongocrypt-kms-ctx.c mongocrypt-log.c mongocrypt-marking.c mongocrypt-opts.c mongocrypt-status.c mongocrypt-traverse-util.c" 437 438 dnl Generated with: find src/libmongocrypt/src/crypto -name '*.c' -print0 | cut -sz -d / -f 5- | sort -dz | tr '\000' ' ' 439 PHP_MONGODB_MONGOCRYPT_CRYPTO_SOURCES="cng.c commoncrypto.c libcrypto.c none.c" 440 441 dnl Generated with: find src/libmongocrypt/src/os_posix -name '*.c' -print0 | cut -sz -d / -f 5- | sort -dz | tr '\000' ' ' 442 PHP_MONGODB_MONGOCRYPT_OS_POSIX_SOURCES="os_mutex.c os_once.c" 443 444 dnl Generated with: find src/libmongocrypt/src/os_win -name '*.c' -print0 | cut -sz -d / -f 5- | sort -dz | tr '\000' ' ' 445 PHP_MONGODB_MONGOCRYPT_OS_WIN_SOURCES="os_mutex.c os_once.c" 446 447 dnl Generated with: find src/libmongocrypt/kms-message/src -maxdepth 1 -name '*.c' -print0 | cut -sz -d / -f 5- | sort -dz | tr '\000' ' ' 448 PHP_MONGODB_MONGOCRYPT_KMS_MESSAGE_SOURCES="hexlify.c kms_b64.c kms_caller_identity_request.c kms_crypto_apple.c kms_crypto_libcrypto.c kms_crypto_none.c kms_crypto_windows.c kms_decrypt_request.c kms_encrypt_request.c kms_kv_list.c kms_message.c kms_port.c kms_request.c kms_request_opt.c kms_request_str.c kms_response.c kms_response_parser.c sort.c" 449 450 PHP_MONGODB_LIBMONGOCRYPT_CFLAGS="$PHP_MONGODB_BUNDLED_CFLAGS $PHP_MONGODB_LIBMONGOCRYPT_CFLAGS" 451 PHP_MONGODB_ADD_SOURCES([src/libmongocrypt/src/], $PHP_MONGODB_MONGOCRYPT_SOURCES, $PHP_MONGODB_LIBMONGOCRYPT_CFLAGS) 452 PHP_MONGODB_ADD_SOURCES([src/libmongocrypt/src/crypto/], $PHP_MONGODB_MONGOCRYPT_CRYPTO_SOURCES, $PHP_MONGODB_LIBMONGOCRYPT_CFLAGS) 453 PHP_MONGODB_ADD_SOURCES([src/libmongocrypt/src/os_posix/], $PHP_MONGODB_MONGOCRYPT_OS_POSIX_SOURCES, $PHP_MONGODB_LIBMONGOCRYPT_CFLAGS) 454 PHP_MONGODB_ADD_SOURCES([src/libmongocrypt/src/os_win/], $PHP_MONGODB_MONGOCRYPT_OS_WIN_SOURCES, $PHP_MONGODB_LIBMONGOCRYPT_CFLAGS) 455 PHP_MONGODB_ADD_SOURCES([src/libmongocrypt/kms-message/src/], $PHP_MONGODB_MONGOCRYPT_KMS_MESSAGE_SOURCES, $PHP_MONGODB_LIBMONGOCRYPT_CFLAGS) 456 457 PHP_MONGODB_ADD_INCLUDE([src/libmongocrypt/src/]) 458 PHP_MONGODB_ADD_INCLUDE([src/libmongocrypt/kms-message/src/]) 459 PHP_MONGODB_ADD_INCLUDE([src/libmongocrypt-compat/]) 460 461 PHP_MONGODB_ADD_BUILD_DIR([src/libmongocrypt/src/]) 462 PHP_MONGODB_ADD_BUILD_DIR([src/libmongocrypt/src/crypto/]) 463 PHP_MONGODB_ADD_BUILD_DIR([src/libmongocrypt/src/os_posix/]) 464 PHP_MONGODB_ADD_BUILD_DIR([src/libmongocrypt/src/os_win/]) 465 PHP_MONGODB_ADD_BUILD_DIR([src/libmongocrypt/kms-message/src/]) 466 467 AC_CONFIG_FILES([ 468 ${ac_config_dir}/src/libmongocrypt/src/mongocrypt-config.h 469 ${ac_config_dir}/src/libmongocrypt/src/mongocrypt.h 470 ]) 471 fi 472 fi 473 474 PHP_NEW_EXTENSION(mongodb, $PHP_MONGODB_SOURCES, $ext_shared,, $PHP_MONGODB_CFLAGS) 475 476 PHP_SUBST(MONGODB_SHARED_LIBADD) 477 478 PHP_ADD_EXTENSION_DEP(mongodb, date) 479 PHP_ADD_EXTENSION_DEP(mongodb, json) 480 PHP_ADD_EXTENSION_DEP(mongodb, spl) 481 PHP_ADD_EXTENSION_DEP(mongodb, standard) 482 483 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR(mongodb)[/src/BSON/]) 484 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR(mongodb)[/src/MongoDB/]) 485 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR(mongodb)[/src/MongoDB/Exception/]) 486 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR(mongodb)[/src/MongoDB/Monitoring/]) 487 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR(mongodb)[/src/contrib/]) 488 489 PHP_ADD_BUILD_DIR(PHP_EXT_BUILDDIR(mongodb)[/src/BSON/]) 490 PHP_ADD_BUILD_DIR(PHP_EXT_BUILDDIR(mongodb)[/src/MongoDB/]) 491 PHP_ADD_BUILD_DIR(PHP_EXT_BUILDDIR(mongodb)[/src/MongoDB/Exception/]) 492 PHP_ADD_BUILD_DIR(PHP_EXT_BUILDDIR(mongodb)[/src/MongoDB/Monitoring/]) 493 PHP_ADD_BUILD_DIR(PHP_EXT_BUILDDIR(mongodb)[/src/contrib/]) 494 495 dnl Necessary to ensure that static builds include "-pthread" when linking 496 if test "$ext_shared" != "yes"; then 497 EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM $EXTRA_LDFLAGS" 498 fi 499 500 dnl This must come after PHP_NEW_EXTENSION, otherwise the srcdir won't be set 501 PHP_ADD_MAKEFILE_FRAGMENT 502 503 dnl The libmongocrypt line intentionally uses the PHP_LIBBSON flag as that decides whether to build against bundled or system libraries. 504 AC_CONFIG_COMMANDS_POST([ 505 if test "$enable_static" = "no"; then 506 echo " 507mongodb was configured with the following options: 508 509Build configuration: 510 CFLAGS : $CFLAGS 511 Extra CFLAGS : $STD_CFLAGS $EXTRA_CFLAGS 512 Developers flags (slow) : $MAINTAINER_CFLAGS 513 Code Coverage flags (extra slow) : $COVERAGE_CFLAGS 514 libmongoc : $PHP_MONGODB_BSON_VERSION_STRING 515 libbson : $PHP_MONGODB_MONGOC_VERSION_STRING 516 libmongocrypt : $PHP_MONGODB_MONGOCRYPT_VERSION_STRING 517 LDFLAGS : $LDFLAGS 518 EXTRA_LDFLAGS : $EXTRA_LDFLAGS 519 MONGODB_SHARED_LIBADD : $MONGODB_SHARED_LIBADD 520 521Please submit bugreports at: 522 https://jira.mongodb.org/browse/PHPC 523 524" 525 fi 526 ]) 527fi 528 529dnl: vim: et sw=2 530