Make libcurl optional
authorJonathan Dieter <jdieter@gmail.com>
Sun, 9 Jan 2022 20:12:14 +0000 (20:12 +0000)
committerJonathan Dieter <jdieter@gmail.com>
Sun, 9 Jan 2022 20:59:06 +0000 (20:59 +0000)
Signed-off-by: Jonathan Dieter <jdieter@gmail.com>
meson.build
meson_options.txt
src/lib/dl/dl.c
src/meson.build
test/meson.build

index 453e5fbe473402b698d54c7a02d5b753e16356b5..53a201c61fbcc32b12d2b42fa9f8867327e28ccc 100644 (file)
@@ -18,7 +18,7 @@ if build_machine.system() == 'freebsd'
     add_project_arguments('-DFREEBSD', language : 'c')
 endif
 
-
+# zstd dependency
 if build_machine.system() == 'windows'
     zstd_dep = dependency('zstd', modules: 'zstd::libzstd_shared', required : get_option('with-zstd'), fallback: 'zstd')
 else
@@ -32,13 +32,17 @@ if zstd_dep.found()
     endif
 endif
 
+# curl dependency
 if build_machine.system() == 'windows'
-    curl_dep = dependency('curl', modules: 'CURL::libcurl')
+    curl_dep = dependency('curl', modules: 'CURL::libcurl', required : get_option('with-curl'))
 else
-    curl_dep = dependency('libcurl')
+    curl_dep = dependency('libcurl', required : get_option('with-curl'))
+endif
+if not curl_dep.found()
+    curl_dep = disabler()
 endif
 
-
+# openssl dependency
 if build_machine.system() == 'windows'
     openssl_dep = dependency('openssl', modules : ['OpenSSL::SSL', 'OpenSSL::Crypto'], required : get_option('with-openssl'))
 else
@@ -48,12 +52,14 @@ if openssl_dep.found()
     add_project_arguments('-DZCHUNK_OPENSSL', language : 'c')
 endif
 
+# includes
 inc = []
 inc += include_directories('include')
 if host_machine.system() == 'windows'
     inc += include_directories('src/lib/win32')
 endif
 
+# argp-standalone dependency (if required)
 if build_machine.system() == 'windows' or build_machine.system() == 'darwin' or build_machine.system() == 'freebsd' or not cc.links('#include <argp.h>\nstatic error_t parse_opt (int key, char *arg, struct argp_state *state) { argp_usage(state); return 0; }; void main() {}')
     if fs.is_dir(join_paths([get_option('prefix'), 'include']))
         inc += include_directories(join_paths([get_option('prefix'), 'include']))
index bb7dd6c251a851b5ba4f4d662a3d88c1ec2126b6..ef082664ffbe71e3d12727dccb9f86d6c1de42df 100644 (file)
@@ -1,3 +1,4 @@
 option('with-zstd', type : 'feature', value : 'auto')
 option('with-openssl', type : 'feature', value : 'auto')
+option('with-curl', type : 'feature', value : 'auto')
 option('coverity', type : 'boolean', value : false)
index b27960f56f2c4f5487d968525a6e807302513861..635fc02eb70be524f07c58ef8619082d22ae51cc 100644 (file)
@@ -28,7 +28,6 @@
 #include <stdint.h>
 #include <stdbool.h>
 #include <string.h>
-#include <curl/curl.h>
 #include <unistd.h>
 #include <sys/types.h>
 #include <errno.h>
index bea4ea499ac6c60f7cbbbbaf5872bc0f011d5e7e..928fe3fa55e42e00c6900da12f03afe1d5b61113 100644 (file)
@@ -22,14 +22,6 @@ unzck = executable(
     link_with: zcklib,
     install: true
 )
-zckdl = executable(
-    'zckdl',
-    ['zck_dl.c', 'util_common.c'] + extra_win_src,
-    include_directories: inc,
-    dependencies: [argplib, curl_dep],
-    link_with: zcklib,
-    install: true
-)
 zck_gen_zdict = executable(
     'zck_gen_zdict',
     ['zck_gen_zdict.c', 'util_common.c'] + extra_win_src,
@@ -54,3 +46,13 @@ zck_delta_size = executable(
     link_with: zcklib,
     install: true
 )
+if curl_dep.found()
+    zckdl = executable(
+        'zckdl',
+        ['zck_dl.c', 'util_common.c'] + extra_win_src,
+        include_directories: inc,
+        dependencies: [argplib, curl_dep],
+        link_with: zcklib,
+        install: true
+    )
+endif
index 7c05b5314edc5aa547a9c478ad4baf06bccfd1a2..76f27018b9f81287e3fe5a1c68ad58bc5faff8ee 100644 (file)
@@ -77,13 +77,15 @@ test(
         '-V'
     ]
 )
-test(
-    'check version info in zckdl',
-    zckdl,
-    args: [
-        '-V'
-    ]
-)
+if curl_dep.found()
+    test(
+        'check version info in zckdl',
+        zckdl,
+        args: [
+            '-V'
+        ]
+    )
+endif
 test(
     'check version info in zck_read_header',
     zck_read_header,
@@ -149,15 +151,17 @@ test(
     ],
     is_parallel: false
 )
-test(
-    'check verbosity in zckdl',
-    zckdl,
-    args: [
-        '-vvvvv',
-        'file:///empty'
-    ],
-    should_fail: true
-)
+if curl_dep.found()
+    test(
+        'check verbosity in zckdl',
+        zckdl,
+        args: [
+            '-vvvvv',
+            'file:///empty'
+        ],
+        should_fail: true
+    )
+endif
 test(
     'check verbosity in zck_read_header',
     zck_read_header,