@@ -4,11 +4,6 @@ pub fn build(b: *std.Build) !void {
4
4
const target = b .standardTargetOptions (.{});
5
5
const optimize = b .standardOptimizeOption (.{});
6
6
7
- const mbedtls_dep = b .dependency ("mbedtls" , .{
8
- .target = target ,
9
- .optimize = optimize ,
10
- });
11
-
12
7
const libgit_src = b .dependency ("libgit2" , .{});
13
8
const libgit_root = libgit_src .path ("." );
14
9
@@ -46,6 +41,7 @@ pub fn build(b: *std.Build) !void {
46
41
};
47
42
48
43
const openssl = b .option (bool , "enable-openssl" , "Use OpenSSL instead of MbedTLS" ) orelse false ;
44
+ var tls_dep : ? * std.Build.Dependency = null ;
49
45
50
46
if (target .result .os .tag == .windows ) {
51
47
if (openssl ) {
@@ -75,9 +71,11 @@ pub fn build(b: *std.Build) !void {
75
71
} else {
76
72
if (openssl ) {
77
73
// OpenSSL backend
78
- const openssl_dep = b .dependency ("openssl" , .{});
79
- const openssl_lib = openssl_dep .artifact ("openssl" );
80
- lib .linkLibrary (openssl_lib );
74
+ tls_dep = b .lazyDependency ("openssl" , .{
75
+ .target = target ,
76
+ .optimize = optimize ,
77
+ });
78
+ if (tls_dep ) | tls | lib .linkLibrary (tls .artifact ("openssl" ));
81
79
features .addValues (.{
82
80
.GIT_HTTPS = 1 ,
83
81
.GIT_OPENSSL = 1 ,
@@ -89,8 +87,12 @@ pub fn build(b: *std.Build) !void {
89
87
.GIT_IO_SELECT = 1 ,
90
88
});
91
89
} else {
92
- // mbedTLS https and SHA backend
93
- lib .linkLibrary (mbedtls_dep .artifact ("mbedtls" ));
90
+ // mbedTLS backend
91
+ tls_dep = b .lazyDependency ("mbedtls" , .{
92
+ .target = target ,
93
+ .optimize = optimize ,
94
+ });
95
+ if (tls_dep ) | tls | lib .linkLibrary (tls .artifact ("mbedtls" ));
94
96
features .addValues (.{
95
97
.GIT_HTTPS = 1 ,
96
98
.GIT_MBEDTLS = 1 ,
@@ -112,11 +114,7 @@ pub fn build(b: *std.Build) !void {
112
114
.link_libc = true ,
113
115
});
114
116
ntlm .addIncludePath (libgit_src .path ("deps/ntlmclient" ));
115
- if (openssl ) {
116
- addOpenSSLHeaders (ntlm );
117
- } else {
118
- ntlm .linkLibrary (mbedtls_dep .artifact ("mbedtls" ));
119
- }
117
+ addTlsHeaders (ntlm , tls_dep , openssl );
120
118
121
119
const ntlm_cflags = .{
122
120
"-Wno-implicit-fallthrough" ,
@@ -304,7 +302,7 @@ pub fn build(b: *std.Build) !void {
304
302
cli .addIncludePath (libgit_src .path ("include" ));
305
303
cli .addIncludePath (libgit_src .path ("src/util" ));
306
304
cli .addIncludePath (libgit_src .path ("src/cli" ));
307
- if ( openssl ) addOpenSSLHeaders ( cli );
305
+ addTlsHeaders ( cli , tls_dep , openssl );
308
306
309
307
if (target .result .os .tag == .windows )
310
308
cli .addCSourceFiles (.{ .root = libgit_root , .files = & cli_win32_sources })
@@ -349,7 +347,7 @@ pub fn build(b: *std.Build) !void {
349
347
});
350
348
351
349
exe .addIncludePath (libgit_src .path ("include" ));
352
- if ( openssl ) addOpenSSLHeaders ( exe );
350
+ addTlsHeaders ( exe , tls_dep , openssl );
353
351
exe .linkLibrary (lib );
354
352
355
353
// independent install step so you can easily access the binary
@@ -379,7 +377,7 @@ pub fn build(b: *std.Build) !void {
379
377
tests .addConfigHeader (features );
380
378
tests .addIncludePath (libgit_src .path ("include" ));
381
379
tests .addIncludePath (libgit_src .path ("src/util" ));
382
- if ( openssl ) addOpenSSLHeaders ( tests );
380
+ addTlsHeaders ( tests , tls_dep , openssl );
383
381
384
382
tests .linkLibrary (lib );
385
383
@@ -388,11 +386,10 @@ pub fn build(b: *std.Build) !void {
388
386
}
389
387
}
390
388
391
- fn addOpenSSLHeaders (compile : * std.Build.Step.Compile ) void {
392
- const b = compile .step .owner ;
393
- const openssl_dep = b .dependency ("openssl" , .{});
394
- const openssl_lib = openssl_dep .artifact ("openssl" );
395
- compile .addIncludePath (openssl_lib .getEmittedIncludeTree ());
389
+ fn addTlsHeaders (compile : * std.Build.Step.Compile , tls_dep : ? * std.Build.Dependency , openssl_or_mbedtls : bool ) void {
390
+ if (tls_dep ) | tls | compile .addIncludePath (
391
+ tls .artifact (if (openssl_or_mbedtls ) "openssl" else "mbedtls" ).getEmittedIncludeTree (),
392
+ );
396
393
}
397
394
398
395
const libgit_sources = [_ ][]const u8 {
0 commit comments