* PHPC-2311: Note that with-libbson and with-libmongoc are deprecated
* PHPC-2312: MONGOC_ENABLE_SASL_GSSAPI is obsolete
* PHPC-1218: Use m4_include with base path for including m4 scripts
This removes the custom _include macro, which used sinclude on two different paths in order to support both shared and static builds. Unlike m4_sinclude, m4_include reports an error if the file is not found, so this also addresses the validation that was disabled to support PECL installs.
* PHPC-2300 and PHPC-2302: Fix configure output for bundled libbson/libmongoc versions
This was missed in 7ccb0949ba and 1c533ffa2d.
* PHPC-2225: Validate PHP_ARG_ENABLE and PHP_ARG_WITH configure options
Introduce a PHP_MONGODB_VALIDATE_ARG macro, which is called after processing a configure option.
PHP may still assign "yes" as a value during parsing, so map that to another value when necessary (e.g. selecting a crypto/TLS library).
* Add deprecation notice for --enable-system-ciphers in shared builds
* PHPC-2155: Remove prefixes for quoted shell variable references
* PHPC-1017: Allow configure options to be specified with PECL install
Introducing <configureoption> tags in package.xml means that PECL installs will now prompt for input. Non-interactive installs can still be achieved by either piping input (e.g. `yes '' | pecl install mongodb`) or explicitly specifying configure options (--configureoptions option for pecl install).
* Refer to update-submodule-sources.php in config.m4/w32 and fix macOS compatibility
* PHPC-2314: Require OpenSSL 1.0.1+ for libmongoc 1.24+
* PHPC-2315: Use PKG_CHECK_MODULES for detecting libmongoc system libs
* Remove superfluous AC_MSG_NOTICE output in CheckSSL.m4
* PHPC-2274: Apply libmongocrypt defs to PHP_MONGODB_LIBMONGOCRYPT_CFLAGS
This ensures PHP_MONGODB_LIBMONGOCRYPT_CFLAGS is used instead of PHP_MONGODB_BUNDLED_CFLAGS for libmongocrypt-specific checks.
A libmongoc-specific copy of Endian.m4 has been created to use when building without libmongocrypt, since the endianness check is still required by libmongoc's bundled KMS sources.
* PHPC-2308: Handle unknown and universal cases for AC_C_BIGENDIAN
* Do not call AC_PROG_CC_C99 on autoconf 2.70+
* Replace obsolete AC_TRY_COMPILE with AC_COMPILE_IFELSE
* Update pkg.m4 to pkg-config-0.29
* Update ax_check_compile_flag.m4
* Update ax_pthread.m4
* Update ax_prototype.m4 and introduce ax_prototype_accept.m4
This also moves the accept() checking to libmongoc/FindDependencies.m4, since it is specific to libmongoc.
* PHPC-2272: as_var_copy.m4 is obsolete
PHP 7.4 requires autoconf 2.68+ and AS_VAR_COPY was introduced in 2.64
Bumps the libmongoc submodule to mongodb/mongo-c-driver@d933a8c996, which is the 1.25-dev commit for the corresponding patch in the 1.24.3 release for PHPC's 1.16 branch.
* Update to libmongoc 1.24.3
* Define constants for POSIX features and extensions used by libmongoc 1.24
This removes old logic to not define _DEFAULT_SOURCE on Windows (technically MinGW or Cygwin). It's not clear whether that was ever necessary; it was introduced in ab44b0cbeb based on upstream work in mongodb/mongo-c-driver@9d2d8b157c, but libmongoc did not utilize the same logic.
In any event, these constants are now defined unconditionally for libmongoc since mongodb/mongo-c-driver@c5206511cd, so this change should restore parity between PHPC's autoconf and libmongoc's CMake configurations.
* Remove obsolete conditional defines for glibc 2.19
It's not clear what purpose this originally served. It dates back to mongodb/mongo-c-driver@50f701ce6a, but PHPC never incorporated the defines into its own CPPFLAGS.
The recent additions to PlatformFlags.m4 should be sufficient.
Bumps libmongoc to 1.25-dev.
This introduces a --with-mongodb-utf8proc configure flag, which accepts "bundled" (default) and "system". Windows will always use bundled sources.
CheckICU.m4 and the --with-mongodb-icu configure flag have been removed.
For the libmongoc bump, this also adds support for a new MONGOC_ENABLE_SRV config constant, which is currently set based on detection in CheckResolv.m4. We can consider exposing that as a configure option down the line in PHPC-2256.
This introduces several configure options:
--with-mongodb-snappy=[auto/yes/no]
--with-mongodb-zlib=[auto/yes/system/bundled/no]
--with-mongodb-zstd=[auto/yes/no]
The "auto", "yes", and "no" options behave like existing options: "auto" attempts to use a library but allows it to not be found; "yes" requires a library and errors if it's not found; "no" disables a library.
The "system" and "bundled" options for zlib function like "yes", but for using the system library or bundled zlib sources in libmongoc, respectively. Since bundled sources are always available, configuring zlib with "auto", "yes", or "bundled" should never fail.
* PHPC-2049: Bump libmongoc and libmongocrypt submodules
libmongoc master (1.22-dev) now depends on libmongocrypt master (1.5-dev).
libmongoc's bundled zlib library was updated to 1.2.12.
* PHPC-2049: BulkWrite and Query support comment option of any type
MongoDB 4.4+ allows a comment option of any type on most commands. Previously, find required a string type and write commands did not support comment at all. The driver does not validate the option and relies on the server to raise an error.
* Fix title and variable access in BulkWrite and Query let option tests
* Fix grammar in php_phongo_bulkwrite_delete_apply_options comment
* Undefine additional Query option macros
This allows PHPC to defer entirely to libmongoc for cross-option URI validation
Bump libmongoc to 1.21-dev
Build changes are ported from upstream CMake changes (see: CDRIVER-4249)
On AIX, the resolver functions are in libc, so trying libresolv
will cause the checks to fail. The behaviour should be instead
like AC_SEARCH_LIBS.
This hardcodes a check not to use libresolv on AIX. Better than
nothing, but it may not compensate for other systems without a
libresolv.
Per src/libmongoc/doc/installing.rst, the VERSION_CURRENT and VERSION_RELEASED files must now be generated. This requires Python and the GitPython pip module to run src/libmongoc/build/calc_release_version.py. A new libmongoc-version-current Makefile target has been added.
The AC_CHECK_FUNC macro has only the following form:
AC_CHECK_FUNC(function, [action-if-found], [action-if-not-found])
In most cases adding more arguments to macro call don't cause errors,
but it also doesn't have any functionality either.
The AC_COMPILE_CHECK_SIZEOF is from the GNU Autoconf Archive and was
renamed to AX_COMPILE_CHECK_SIZEOF. However this macro is not used in
current MongoDB PHP extension nor in the mongo-c-driver dependency
anymore.
The AC_HELP_STRING has been made obsolete since Autoconf 2.58 somewhere
in 2003. The new AS_HELP_STRING macro has been since recommended to be
used and should be today supported on most systems out there. The phpize
script for PHP 7.2+ requires Autoconf 2.59 and PHP requires 2.64.
This patch has been made with the help of the autoupdate script.
Autoconf changelog:
- http://git.savannah.gnu.org/cgit/autoconf.git/tree/ChangeLog.3
The output path for this file was left incorrect in the previous PR for PHPC-1174, but the file isn't actually even used anymore per mongodb/mongo-c-driver@abc882dec9 (CDRIVER-2473).
The check for sasl_client_done was inadvertently removed by aab92e1d3e. This ensures that we check for the symbol regardless of whether SASL was found with pgk-config or PHP_CHECK_LIBRARY.
libmongoc does not actually support GSSAPI (CDRIVER-2170), so we should not allow building with it. This also reverts preference for the GSS framework on macOS (PHPC-1142).
GitHub's file finder filters out "build/" directories, among others, which can make it difficult to quickly access these files. Also, the "build/" directory doesn't provide much value here, since it only contains "autotools/".