diff --git a/python/build/libs.py b/python/build/libs.py
index 569159f34..7d93799d8 100644
--- a/python/build/libs.py
+++ b/python/build/libs.py
@@ -1,4 +1,6 @@
 import re
+from os.path import abspath
+
 from build.project import Project
 from build.zlib import ZlibProject
 from build.autotools import AutotoolsProject
@@ -359,11 +361,7 @@ curl = AutotoolsProject(
         '--without-ssl', '--without-gnutls', '--without-nss', '--without-libssh2',
     ],
 
-    edits={
-        # build only the library, not the "curl" command-line tool
-        'Makefile.in': lambda data: re.sub(r'^SUBDIRS = lib src$', r'SUBDIRS = lib',
-                                           data, count=1, flags=re.MULTILINE),
-    }
+    patches='src/lib/curl/patches',
 )
 
 boost = BoostProject(
diff --git a/src/lib/curl/patches/only_lib.patch b/src/lib/curl/patches/only_lib.patch
new file mode 100644
index 000000000..2bc374983
--- /dev/null
+++ b/src/lib/curl/patches/only_lib.patch
@@ -0,0 +1,15 @@
+Index: curl-7.58.0/Makefile.in
+===================================================================
+--- curl-7.58.0.orig/Makefile.in
++++ curl-7.58.0/Makefile.in
+@@ -641,8 +641,8 @@ CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP)
+  $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ) $(VC15_LIBVCXPROJ) $(VC15_SRCVCXPROJ)
+ 
+ bin_SCRIPTS = curl-config
+-SUBDIRS = lib src
+-DIST_SUBDIRS = $(SUBDIRS) tests packages scripts include docs
++SUBDIRS = lib
++DIST_SUBDIRS = $(SUBDIRS) include
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = libcurl.pc
+ LIB_VAUTH_CFILES = vauth/vauth.c vauth/cleartext.c vauth/cram.c         \
diff --git a/src/lib/curl/patches/series b/src/lib/curl/patches/series
new file mode 100644
index 000000000..5d0e89439
--- /dev/null
+++ b/src/lib/curl/patches/series
@@ -0,0 +1 @@
+only_lib.patch