Skip to content

Latest commit

 

History

History
 
 

curl

The 'curl' subdirectory is based on curl 8.1.2

== Updating to a new upstream version ==

The upstream code this curl fork is based on is present in the `dev/UPSTREAM` git branch.
To upgrade to a new upstream version of curl, use autopatch_project.sh from buildtools:
- https://stashweb.sd.apple.com/users/achivetta/repos/buildtools/browse

== Updating configuration ==

Confirm/update versions in xcconfigs/libcurl-version.xcconfig
 - This will probably require building the regular open source version and running otool on the resulting library.

Update CURL_SUPPORT_* in xcconfigs/common.xcconfig
 - Run configure, check config.status

If options change (see below), update CURL_CONFIGURE_OPTIONS in xcconfigs/common.xcconfig

Make sure all files are being compiled.
curl: CURL_CFILES and CURLX_CFILES in curl/src/Makefile.inc 
libcurl: LIB_CFILES and LIB_VTLS_CFILES in curl/lib/Makefile.inc
The Xcode targets list the files in the same order.
Might be able to process the Makefile.inc files into Xcode file lists at some point.

Make sure all man pages and headers are being installed.

Update xcscripts/install_libtest.sh (see comment at top) -- NOTE: This hasn't been updated in quite some time, see radar:17812072

== Configuration ==

macOS:
SDKROOT=macosx.internal ./configure --enable-hidden-symbols --enable-threaded-resolver --with-gssapi --with-ssl=$(xcrun --show-sdk-path)/usr/local/libressl --with-secure-transport

iOS (etc):
SDKROOT=macosx.internal ./configure --enable-hidden-symbols --enable-threaded-resolver --disable-ldap --with-secure-transport

Changes to curl_config.h post-configure:
  (1) Add #ifdef __LP64__ for SIZEOF_LONG, SIZEOF_SIZE_T, SIZEOF_TIME_T, SIZEOF_VOIDP
  (2) #undef OS - conditionally defined in common.xcconfig
  (3) [iOS only] #undef CURL_CA_BUNDLE - causes an error; we currently use SecureTransport
  (4) Enable USE_NGHTTP2.  Because our nghttp2 is at a non-standard path and we
      don't install the pkgconfig support, the configure script cannot
      configure it automatically.

Manual Testing:

Right now we don't have automated tests running, even if they did they won't catch every error. In addition to doing basic curl test on well known URLs it's good to test both SSL backends available. This can be done soley on a macOS hosts.  By default macOS use libressl curl can be set to SecureTransport with the follow environment variable change 'CURL_SSL_BACKEND='Secure-Transport'