diff --git a/3rdParty/vcpkg_ports/ports/openssl/asm-comments.patch b/3rdParty/vcpkg_ports/ports/openssl/asm-comments.patch new file mode 100644 index 00000000000..56e2ced26d6 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/asm-comments.patch @@ -0,0 +1,704 @@ +diff --git a/crypto/ec/asm/ecp_sm2p256-armv8.pl b/crypto/ec/asm/ecp_sm2p256-armv8.pl +index 5095086..62fadc0 100644 +--- a/crypto/ec/asm/ecp_sm2p256-armv8.pl ++++ b/crypto/ec/asm/ecp_sm2p256-armv8.pl +@@ -28,44 +28,44 @@ my ($t4,$t5,$t6,$t7,$t8)=map("x$_",(15..19)); + sub bn_mod_add() { + my $mod = shift; + $code.=<<___; +- # Load inputs ++ // Load inputs + ldp $s0,$s1,[x1] + ldp $s2,$s3,[x1,#16] + ldp $s4,$s5,[x2] + ldp $s6,$s7,[x2,#16] + +- # Addition ++ // Addition + adds $s0,$s0,$s4 + adcs $s1,$s1,$s5 + adcs $s2,$s2,$s6 + adcs $s3,$s3,$s7 + adc $t4,xzr,xzr + +- # Load polynomial ++ // Load polynomial + adr x2,$mod + ldp $s4,$s5,[x2] + ldp $s6,$s7,[x2,#16] + +- # Backup Addition ++ // Backup Addition + mov $t0,$s0 + mov $t1,$s1 + mov $t2,$s2 + mov $t3,$s3 + +- # Sub polynomial ++ // Sub polynomial + subs $t0,$t0,$s4 + sbcs $t1,$t1,$s5 + sbcs $t2,$t2,$s6 + sbcs $t3,$t3,$s7 + sbcs $t4,$t4,xzr + +- # Select based on carry ++ // Select based on carry + csel $s0,$s0,$t0,cc + csel $s1,$s1,$t1,cc + csel $s2,$s2,$t2,cc + csel $s3,$s3,$t3,cc + +- # Store results ++ // Store results + stp $s0,$s1,[x0] + stp $s2,$s3,[x0,#16] + ___ +@@ -74,44 +74,44 @@ ___ + sub bn_mod_sub() { + my $mod = shift; + $code.=<<___; +- # Load inputs ++ // Load inputs + ldp $s0,$s1,[x1] + ldp $s2,$s3,[x1,#16] + ldp $s4,$s5,[x2] + ldp $s6,$s7,[x2,#16] + +- # Subtraction ++ // Subtraction + subs $s0,$s0,$s4 + sbcs $s1,$s1,$s5 + sbcs $s2,$s2,$s6 + sbcs $s3,$s3,$s7 + sbc $t4,xzr,xzr + +- # Load polynomial ++ // Load polynomial + adr x2,$mod + ldp $s4,$s5,[x2] + ldp $s6,$s7,[x2,#16] + +- # Backup subtraction ++ // Backup subtraction + mov $t0,$s0 + mov $t1,$s1 + mov $t2,$s2 + mov $t3,$s3 + +- # Add polynomial ++ // Add polynomial + adds $t0,$t0,$s4 + adcs $t1,$t1,$s5 + adcs $t2,$t2,$s6 + adcs $t3,$t3,$s7 + tst $t4,$t4 + +- # Select based on carry ++ // Select based on carry + csel $s0,$s0,$t0,eq + csel $s1,$s1,$t1,eq + csel $s2,$s2,$t2,eq + csel $s3,$s3,$t3,eq + +- # Store results ++ // Store results + stp $s0,$s1,[x0] + stp $s2,$s3,[x0,#16] + ___ +@@ -120,38 +120,38 @@ ___ + sub bn_mod_div_by_2() { + my $mod = shift; + $code.=<<___; +- # Load inputs ++ // Load inputs + ldp $s0,$s1,[x1] + ldp $s2,$s3,[x1,#16] + +- # Save the least significant bit ++ // Save the least significant bit + mov $t0,$s0 + +- # Right shift 1 ++ // Right shift 1 + extr $s0,$s1,$s0,#1 + extr $s1,$s2,$s1,#1 + extr $s2,$s3,$s2,#1 + lsr $s3,$s3,#1 + +- # Load mod ++ // Load mod + adr x2,$mod + ldp $s4,$s5,[x2] + ldp $s6,$s7,[x2,#16] + +- # Parity check ++ // Parity check + tst $t0,#1 + csel $s4,xzr,$s4,eq + csel $s5,xzr,$s5,eq + csel $s6,xzr,$s6,eq + csel $s7,xzr,$s7,eq + +- # Add ++ // Add + adds $s0,$s0,$s4 + adcs $s1,$s1,$s5 + adcs $s2,$s2,$s6 + adc $s3,$s3,$s7 + +- # Store results ++ // Store results + stp $s0,$s1,[x0] + stp $s2,$s3,[x0,#16] + ___ +@@ -183,17 +183,17 @@ $code.=<<___; + .align 5 + bn_rshift1: + AARCH64_VALID_CALL_TARGET +- # Load inputs ++ // Load inputs + ldp $s0,$s1,[x0] + ldp $s2,$s3,[x0,#16] + +- # Right shift ++ // Right shift + extr $s0,$s1,$s0,#1 + extr $s1,$s2,$s1,#1 + extr $s2,$s3,$s2,#1 + lsr $s3,$s3,#1 + +- # Store results ++ // Store results + stp $s0,$s1,[x0] + stp $s2,$s3,[x0,#16] + +@@ -206,19 +206,19 @@ bn_rshift1: + .align 5 + bn_sub: + AARCH64_VALID_CALL_TARGET +- # Load inputs ++ // Load inputs + ldp $s0,$s1,[x1] + ldp $s2,$s3,[x1,#16] + ldp $s4,$s5,[x2] + ldp $s6,$s7,[x2,#16] + +- # Subtraction ++ // Subtraction + subs $s0,$s0,$s4 + sbcs $s1,$s1,$s5 + sbcs $s2,$s2,$s6 + sbc $s3,$s3,$s7 + +- # Store results ++ // Store results + stp $s0,$s1,[x0] + stp $s2,$s3,[x0,#16] + +@@ -255,11 +255,11 @@ $code.=<<___; + .align 5 + ecp_sm2p256_mul_by_3: + AARCH64_VALID_CALL_TARGET +- # Load inputs ++ // Load inputs + ldp $s0,$s1,[x1] + ldp $s2,$s3,[x1,#16] + +- # 2*a ++ // 2*a + adds $s0,$s0,$s0 + adcs $s1,$s1,$s1 + adcs $s2,$s2,$s2 +@@ -271,7 +271,7 @@ ecp_sm2p256_mul_by_3: + mov $t2,$s2 + mov $t3,$s3 + +- # Sub polynomial ++ // Sub polynomial + adr x2,.Lpoly + ldp $s4,$s5,[x2] + ldp $s6,$s7,[x2,#16] +@@ -287,7 +287,7 @@ ecp_sm2p256_mul_by_3: + csel $s3,$s3,$t3,cs + eor $t4,$t4,$t4 + +- # 3*a ++ // 3*a + ldp $s4,$s5,[x1] + ldp $s6,$s7,[x1,#16] + adds $s0,$s0,$s4 +@@ -301,7 +301,7 @@ ecp_sm2p256_mul_by_3: + mov $t2,$s2 + mov $t3,$s3 + +- # Sub polynomial ++ // Sub polynomial + adr x2,.Lpoly + ldp $s4,$s5,[x2] + ldp $s6,$s7,[x2,#16] +@@ -316,7 +316,7 @@ ecp_sm2p256_mul_by_3: + csel $s2,$s2,$t2,cs + csel $s3,$s3,$t3,cs + +- # Store results ++ // Store results + stp $s0,$s1,[x0] + stp $s2,$s3,[x0,#16] + +@@ -360,45 +360,45 @@ $code.=<<___; + .size ecp_sm2p256_sub_mod_ord,.-ecp_sm2p256_sub_mod_ord + + .macro RDC +- # a = | s7 | ... | s0 |, where si are 64-bit quantities +- # = |a15|a14| ... |a1|a0|, where ai are 32-bit quantities +- # | s7 | s6 | s5 | s4 | +- # | a15 | a14 | a13 | a12 | a11 | a10 | a9 | a8 | +- # | s3 | s2 | s1 | s0 | +- # | a7 | a6 | a5 | a4 | a3 | a2 | a1 | a0 | +- # ================================================= +- # | a8 | a11 | a10 | a9 | a8 | 0 | s4 | (+) +- # | a9 | a15 | s6 | a11 | 0 | a10 | a9 | (+) +- # | a10 | 0 | a14 | a13 | a12 | 0 | s5 | (+) +- # | a11 | 0 | s7 | a13 | 0 | a12 | a11 | (+) +- # | a12 | 0 | s7 | a13 | 0 | s6 | (+) +- # | a12 | 0 | 0 | a15 | a14 | 0 | a14 | a13 | (+) +- # | a13 | 0 | 0 | 0 | a15 | 0 | a14 | a13 | (+) +- # | a13 | 0 | 0 | 0 | 0 | 0 | s7 | (+) +- # | a14 | 0 | 0 | 0 | 0 | 0 | s7 | (+) +- # | a14 | 0 | 0 | 0 | 0 | 0 | 0 | a15 | (+) +- # | a15 | 0 | 0 | 0 | 0 | 0 | 0 | a15 | (+) +- # | a15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | (+) +- # | s7 | 0 | 0 | 0 | 0 | 0 | 0 | (+) +- # | 0 | 0 | 0 | 0 | 0 | a8 | 0 | 0 | (-) +- # | 0 | 0 | 0 | 0 | 0 | a9 | 0 | 0 | (-) +- # | 0 | 0 | 0 | 0 | 0 | a13 | 0 | 0 | (-) +- # | 0 | 0 | 0 | 0 | 0 | a14 | 0 | 0 | (-) +- # | U[7]| U[6]| U[5]| U[4]| U[3]| U[2]| U[1]| U[0]| +- # | V[3] | V[2] | V[1] | V[0] | +- +- # 1. 64-bit addition +- # t2=s6+s7+s7 ++ // a = | s7 | ... | s0 |, where si are 64-bit quantities ++ // = |a15|a14| ... |a1|a0|, where ai are 32-bit quantities ++ // | s7 | s6 | s5 | s4 | ++ // | a15 | a14 | a13 | a12 | a11 | a10 | a9 | a8 | ++ // | s3 | s2 | s1 | s0 | ++ // | a7 | a6 | a5 | a4 | a3 | a2 | a1 | a0 | ++ // ================================================= ++ // | a8 | a11 | a10 | a9 | a8 | 0 | s4 | (+) ++ // | a9 | a15 | s6 | a11 | 0 | a10 | a9 | (+) ++ // | a10 | 0 | a14 | a13 | a12 | 0 | s5 | (+) ++ // | a11 | 0 | s7 | a13 | 0 | a12 | a11 | (+) ++ // | a12 | 0 | s7 | a13 | 0 | s6 | (+) ++ // | a12 | 0 | 0 | a15 | a14 | 0 | a14 | a13 | (+) ++ // | a13 | 0 | 0 | 0 | a15 | 0 | a14 | a13 | (+) ++ // | a13 | 0 | 0 | 0 | 0 | 0 | s7 | (+) ++ // | a14 | 0 | 0 | 0 | 0 | 0 | s7 | (+) ++ // | a14 | 0 | 0 | 0 | 0 | 0 | 0 | a15 | (+) ++ // | a15 | 0 | 0 | 0 | 0 | 0 | 0 | a15 | (+) ++ // | a15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | (+) ++ // | s7 | 0 | 0 | 0 | 0 | 0 | 0 | (+) ++ // | 0 | 0 | 0 | 0 | 0 | a8 | 0 | 0 | (-) ++ // | 0 | 0 | 0 | 0 | 0 | a9 | 0 | 0 | (-) ++ // | 0 | 0 | 0 | 0 | 0 | a13 | 0 | 0 | (-) ++ // | 0 | 0 | 0 | 0 | 0 | a14 | 0 | 0 | (-) ++ // | U[7]| U[6]| U[5]| U[4]| U[3]| U[2]| U[1]| U[0]| ++ // | V[3] | V[2] | V[1] | V[0] | ++ ++ // 1. 64-bit addition ++ // t2=s6+s7+s7 + adds $t2,$s6,$s7 + adcs $t1,xzr,xzr + adds $t2,$t2,$s7 + adcs $t1,$t1,xzr +- # t3=s4+s5+t2 ++ // t3=s4+s5+t2 + adds $t3,$s4,$t2 + adcs $t4,$t1,xzr + adds $t3,$t3,$s5 + adcs $t4,$t4,xzr +- # sum ++ // sum + adds $s0,$s0,$t3 + adcs $s1,$s1,$t4 + adcs $s2,$s2,$t2 +@@ -410,7 +410,7 @@ $code.=<<___; + stp $s0,$s1,[sp,#32] + stp $s2,$s3,[sp,#48] + +- # 2. 64-bit to 32-bit spread ++ // 2. 64-bit to 32-bit spread + mov $t1,#0xffffffff + mov $s0,$s4 + mov $s1,$s5 +@@ -425,7 +425,7 @@ $code.=<<___; + lsr $s6,$s6,#32 // a13 + lsr $s7,$s7,#32 // a15 + +- # 3. 32-bit addition ++ // 3. 32-bit addition + add $t1,$a14,$a12 // t1 <- a12 + a14 + add $t2,$a15,$a13 // t2 <- a13 + a15 + add $t3,$a8,$a9 // t3 <- a8 + a9 +@@ -446,53 +446,53 @@ $code.=<<___; + add $a11,$a11,$t2 // a11 <- a9 + a11 + 2*(a13 + a15) + add $t1,$t1,$t4 // t1 <- a10 + a12 + 2*a14 + +- # U[0] s5 a9 + a11 + 2*(a13 + a15) +- # U[1] t1 a10 + a12 + 2*a14 +- # U[2] -t3 a8 + a9 + a13 + a14 +- # U[3] s2 a8 + a11 + a12 + 2*a13 + a14 + a15 +- # U[4] s4 a9 + a13 + a15 +- # U[5] t4 a10 + a14 +- # U[6] s7 a11 + a15 +- # U[7] s1 a8 + a9 + a10 + a11 + 2*(a12 + a13 + a14 + a15) ++ // U[0] s5 a9 + a11 + 2*(a13 + a15) ++ // U[1] t1 a10 + a12 + 2*a14 ++ // U[2] -t3 a8 + a9 + a13 + a14 ++ // U[3] s2 a8 + a11 + a12 + 2*a13 + a14 + a15 ++ // U[4] s4 a9 + a13 + a15 ++ // U[5] t4 a10 + a14 ++ // U[6] s7 a11 + a15 ++ // U[7] s1 a8 + a9 + a10 + a11 + 2*(a12 + a13 + a14 + a15) + +- # 4. 32-bit to 64-bit ++ // 4. 32-bit to 64-bit + lsl $s0,$t1,#32 + extr $t1,$s2,$t1,#32 + extr $s2,$t4,$s2,#32 + extr $t4,$s1,$t4,#32 + lsr $s1,$s1,#32 + +- # 5. 64-bit addition ++ // 5. 64-bit addition + adds $s5,$s5,$s0 + adcs $t1,$t1,xzr + adcs $s4,$s4,$s2 + adcs $s7,$s7,$t4 + adcs $t0,$t0,$s1 + +- # V[0] s5 +- # V[1] t1 +- # V[2] s4 +- # V[3] s7 +- # carry t0 +- # sub t3 ++ // V[0] s5 ++ // V[1] t1 ++ // V[2] s4 ++ // V[3] s7 ++ // carry t0 ++ // sub t3 + +- # 5. Process s0-s3 ++ // 5. Process s0-s3 + ldp $s0,$s1,[sp,#32] + ldp $s2,$s3,[sp,#48] +- # add with V0-V3 ++ // add with V0-V3 + adds $s0,$s0,$s5 + adcs $s1,$s1,$t1 + adcs $s2,$s2,$s4 + adcs $s3,$s3,$s7 + adcs $t0,$t0,xzr +- # sub with t3 ++ // sub with t3 + subs $s1,$s1,$t3 + sbcs $s2,$s2,xzr + sbcs $s3,$s3,xzr + sbcs $t0,$t0,xzr + +- # 6. MOD +- # First Mod ++ // 6. MOD ++ // First Mod + lsl $t1,$t0,#32 + subs $t2,$t1,$t0 + +@@ -501,8 +501,8 @@ $code.=<<___; + adcs $s2,$s2,xzr + adcs $s3,$s3,$t1 + +- # Last Mod +- # return y - p if y > p else y ++ // Last Mod ++ // return y - p if y > p else y + mov $s4,$s0 + mov $s5,$s1 + mov $s6,$s2 +@@ -533,44 +533,44 @@ $code.=<<___; + .align 5 + ecp_sm2p256_mul: + AARCH64_SIGN_LINK_REGISTER +- # Store scalar registers ++ // Store scalar registers + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + stp x16,x17,[sp,#16] + stp x18,x19,[sp,#64] + +- # Load inputs ++ // Load inputs + ldp $s0,$s1,[x1] + ldp $s2,$s3,[x1,#16] + ldp $s4,$s5,[x2] + ldp $s6,$s7,[x2,#16] + +-### multiplication ### +- # ======================== +- # s3 s2 s1 s0 +- # * s7 s6 s5 s4 +- # ------------------------ +- # + s0 s0 s0 s0 +- # * * * * +- # s7 s6 s5 s4 +- # s1 s1 s1 s1 +- # * * * * +- # s7 s6 s5 s4 +- # s2 s2 s2 s2 +- # * * * * +- # s7 s6 s5 s4 +- # s3 s3 s3 s3 +- # * * * * +- # s7 s6 s5 s4 +- # ------------------------ +- # s7 s6 s5 s4 s3 s2 s1 s0 +- # ======================== +- +-### s0*s4 ### ++// ### multiplication ### ++ // ======================== ++ // s3 s2 s1 s0 ++ // * s7 s6 s5 s4 ++ // ------------------------ ++ // + s0 s0 s0 s0 ++ // * * * * ++ // s7 s6 s5 s4 ++ // s1 s1 s1 s1 ++ // * * * * ++ // s7 s6 s5 s4 ++ // s2 s2 s2 s2 ++ // * * * * ++ // s7 s6 s5 s4 ++ // s3 s3 s3 s3 ++ // * * * * ++ // s7 s6 s5 s4 ++ // ------------------------ ++ // s7 s6 s5 s4 s3 s2 s1 s0 ++ // ======================== ++ ++// ### s0*s4 ### + mul $t5,$s0,$s4 + umulh $t2,$s0,$s4 + +-### s1*s4 + s0*s5 ### ++// ### s1*s4 + s0*s5 ### + mul $t0,$s1,$s4 + umulh $t1,$s1,$s4 + adds $t2,$t2,$t0 +@@ -582,7 +582,7 @@ ecp_sm2p256_mul: + adcs $t3,$t3,$t1 + adcs $t4,xzr,xzr + +-### s2*s4 + s1*s5 + s0*s6 ### ++// ### s2*s4 + s1*s5 + s0*s6 ### + mul $t0,$s2,$s4 + umulh $t1,$s2,$s4 + adds $t3,$t3,$t0 +@@ -600,7 +600,7 @@ ecp_sm2p256_mul: + adcs $t4,$t4,$t1 + adcs $t6,$t6,xzr + +-### s3*s4 + s2*s5 + s1*s6 + s0*s7 ### ++// ### s3*s4 + s2*s5 + s1*s6 + s0*s7 ### + mul $t0,$s3,$s4 + umulh $t1,$s3,$s4 + adds $t4,$t4,$t0 +@@ -625,7 +625,7 @@ ecp_sm2p256_mul: + adcs $t6,$t6,$t1 + adcs $t7,$t7,xzr + +-### s3*s5 + s2*s6 + s1*s7 ### ++// ### s3*s5 + s2*s6 + s1*s7 ### + mul $t0,$s3,$s5 + umulh $t1,$s3,$s5 + adds $t6,$t6,$t0 +@@ -644,7 +644,7 @@ ecp_sm2p256_mul: + adcs $t7,$t7,$t1 + adcs $t8,$t8,xzr + +-### s3*s6 + s2*s7 ### ++// ### s3*s6 + s2*s7 ### + mul $t0,$s3,$s6 + umulh $t1,$s3,$s6 + adds $t7,$t7,$t0 +@@ -657,7 +657,7 @@ ecp_sm2p256_mul: + adcs $t8,$t8,$t1 + adcs $t6,$t6,xzr + +-### s3*s7 ### ++// ### s3*s7 ### + mul $t0,$s3,$s7 + umulh $t1,$s3,$s7 + adds $s6,$t8,$t0 +@@ -668,15 +668,15 @@ ecp_sm2p256_mul: + mov $s2,$t3 + mov $s3,$t4 + +- # result of mul: s7 s6 s5 s4 s3 s2 s1 s0 ++ // result of mul: s7 s6 s5 s4 s3 s2 s1 s0 + +-### Reduction ### ++// ### Reduction ### + RDC + + stp $s0,$s1,[x0] + stp $s2,$s3,[x0,#16] + +- # Restore scalar registers ++ // Restore scalar registers + ldp x16,x17,[sp,#16] + ldp x18,x19,[sp,#64] + ldp x29,x30,[sp],#80 +@@ -692,48 +692,48 @@ ecp_sm2p256_mul: + + ecp_sm2p256_sqr: + AARCH64_SIGN_LINK_REGISTER +- # Store scalar registers ++ // Store scalar registers + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + stp x16,x17,[sp,#16] + stp x18,x19,[sp,#64] + +- # Load inputs ++ // Load inputs + ldp $s4,$s5,[x1] + ldp $s6,$s7,[x1,#16] + +-### square ### +- # ======================== +- # s7 s6 s5 s4 +- # * s7 s6 s5 s4 +- # ------------------------ +- # + s4 s4 s4 s4 +- # * * * * +- # s7 s6 s5 s4 +- # s5 s5 s5 s5 +- # * * * * +- # s7 s6 s5 s4 +- # s6 s6 s6 s6 +- # * * * * +- # s7 s6 s5 s4 +- # s7 s7 s7 s7 +- # * * * * +- # s7 s6 s5 s4 +- # ------------------------ +- # s7 s6 s5 s4 s3 s2 s1 s0 +- # ======================== +- +-### s4*s5 ### ++// ### square ### ++ // ======================== ++ // s7 s6 s5 s4 ++ // * s7 s6 s5 s4 ++ // ------------------------ ++ // + s4 s4 s4 s4 ++ // * * * * ++ // s7 s6 s5 s4 ++ // s5 s5 s5 s5 ++ // * * * * ++ // s7 s6 s5 s4 ++ // s6 s6 s6 s6 ++ // * * * * ++ // s7 s6 s5 s4 ++ // s7 s7 s7 s7 ++ // * * * * ++ // s7 s6 s5 s4 ++ // ------------------------ ++ // s7 s6 s5 s4 s3 s2 s1 s0 ++ // ======================== ++ ++// ### s4*s5 ### + mul $s1,$s4,$s5 + umulh $s2,$s4,$s5 + +-### s4*s6 ### ++// ### s4*s6 ### + mul $t0,$s6,$s4 + umulh $s3,$s6,$s4 + adds $s2,$s2,$t0 + adcs $s3,$s3,xzr + +-### s4*s7 + s5*s6 ### ++// ### s4*s7 + s5*s6 ### + mul $t0,$s7,$s4 + umulh $t1,$s7,$s4 + adds $s3,$s3,$t0 +@@ -745,19 +745,19 @@ ecp_sm2p256_sqr: + adcs $s0,$s0,$t1 + adcs $t2,xzr,xzr + +-### s5*s7 ### ++// ### s5*s7 ### + mul $t0,$s7,$s5 + umulh $t1,$s7,$s5 + adds $s0,$s0,$t0 + adcs $t2,$t2,$t1 + +-### s6*s7 ### ++// ### s6*s7 ### + mul $t0,$s7,$s6 + umulh $t1,$s7,$s6 + adds $t2,$t2,$t0 + adcs $t3,$t1,xzr + +-### 2*(t3,t2,s0,s3,s2,s1) ### ++// ### 2*(t3,t2,s0,s3,s2,s1) ### + adds $s1,$s1,$s1 + adcs $s2,$s2,$s2 + adcs $s3,$s3,$s3 +@@ -766,19 +766,19 @@ ecp_sm2p256_sqr: + adcs $t3,$t3,$t3 + adcs $t4,xzr,xzr + +-### s4*s4 ### ++// ### s4*s4 ### + mul $t5,$s4,$s4 + umulh $t6,$s4,$s4 + +-### s5*s5 ### ++// ### s5*s5 ### + mul $s4,$s5,$s5 + umulh $s5,$s5,$s5 + +-### s6*s6 ### ++// ### s6*s6 ### + mul $t0,$s6,$s6 + umulh $t1,$s6,$s6 + +-### s7*s7 ### ++// ### s7*s7 ### + mul $t7,$s7,$s7 + umulh $t8,$s7,$s7 + +@@ -796,15 +796,15 @@ ecp_sm2p256_sqr: + mov $s6,$t3 + mov $s7,$t4 + +- # result of mul: s7 s6 s5 s4 s3 s2 s1 s0 ++ // result of mul: s7 s6 s5 s4 s3 s2 s1 s0 + +-### Reduction ### ++// ### Reduction ### + RDC + + stp $s0,$s1,[x0] + stp $s2,$s3,[x0,#16] + +- # Restore scalar registers ++ // Restore scalar registers + ldp x16,x17,[sp,#16] + ldp x18,x19,[sp,#64] + ldp x29,x30,[sp],#80 diff --git a/3rdParty/vcpkg_ports/ports/openssl/declspec-align.patch b/3rdParty/vcpkg_ports/ports/openssl/declspec-align.patch new file mode 100644 index 00000000000..83849c94414 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/declspec-align.patch @@ -0,0 +1,188 @@ +diff --git a/crypto/ec/ecp_sm2p256.c b/crypto/ec/ecp_sm2p256.c +index 6ec4245..d47689a 100644 +--- a/crypto/ec/ecp_sm2p256.c ++++ b/crypto/ec/ecp_sm2p256.c +@@ -40,28 +40,28 @@ typedef struct { + + #if !defined(OPENSSL_NO_SM2_PRECOMP) + /* Coordinates of G, for which we have precomputed tables */ +-static const BN_ULONG def_xG[P256_LIMBS] ALIGN32 = { ++ALIGN32 static const BN_ULONG def_xG[P256_LIMBS] = { + 0x715a4589334c74c7, 0x8fe30bbff2660be1, + 0x5f9904466a39c994, 0x32c4ae2c1f198119 + }; + +-static const BN_ULONG def_yG[P256_LIMBS] ALIGN32 = { ++ALIGN32 static const BN_ULONG def_yG[P256_LIMBS] = { + 0x02df32e52139f0a0, 0xd0a9877cc62a4740, + 0x59bdcee36b692153, 0xbc3736a2f4f6779c, + }; + #endif + + /* p and order for SM2 according to GB/T 32918.5-2017 */ +-static const BN_ULONG def_p[P256_LIMBS] ALIGN32 = { ++ALIGN32 static const BN_ULONG def_p[P256_LIMBS] = { + 0xffffffffffffffff, 0xffffffff00000000, + 0xffffffffffffffff, 0xfffffffeffffffff + }; +-static const BN_ULONG def_ord[P256_LIMBS] ALIGN32 = { ++ALIGN32 static const BN_ULONG def_ord[P256_LIMBS] = { + 0x53bbf40939d54123, 0x7203df6b21c6052b, + 0xffffffffffffffff, 0xfffffffeffffffff + }; + +-static const BN_ULONG ONE[P256_LIMBS] ALIGN32 = {1, 0, 0, 0}; ++ALIGN32 static const BN_ULONG ONE[P256_LIMBS] = {1, 0, 0, 0}; + + /* Functions implemented in assembly */ + /* +@@ -139,10 +139,10 @@ static ossl_inline int is_greater(const BN_ULONG *a, const BN_ULONG *b) + /* Binary algorithm for inversion in Fp */ + #define BN_MOD_INV(out, in, mod_div, mod_sub, mod) \ + do { \ +- BN_ULONG u[4] ALIGN32; \ +- BN_ULONG v[4] ALIGN32; \ +- BN_ULONG x1[4] ALIGN32 = {1, 0, 0, 0}; \ +- BN_ULONG x2[4] ALIGN32 = {0}; \ ++ ALIGN32 BN_ULONG u[4] ; \ ++ ALIGN32 BN_ULONG v[4] ; \ ++ ALIGN32 BN_ULONG x1[4] = {1, 0, 0, 0}; \ ++ ALIGN32 BN_ULONG x2[4] = {0}; \ + \ + if (is_zeros(in)) \ + return; \ +@@ -188,9 +188,9 @@ static ossl_inline void ecp_sm2p256_mod_ord_inverse(BN_ULONG* out, + static void ecp_sm2p256_point_double(P256_POINT *R, const P256_POINT *P) + { + unsigned int i; +- BN_ULONG tmp0[P256_LIMBS] ALIGN32; +- BN_ULONG tmp1[P256_LIMBS] ALIGN32; +- BN_ULONG tmp2[P256_LIMBS] ALIGN32; ++ ALIGN32 BN_ULONG tmp0[P256_LIMBS] ; ++ ALIGN32 BN_ULONG tmp1[P256_LIMBS] ; ++ ALIGN32 BN_ULONG tmp2[P256_LIMBS] ; + + /* zero-check P->Z */ + if (is_zeros(P->Z)) { +@@ -225,10 +225,10 @@ static void ecp_sm2p256_point_add_affine(P256_POINT *R, const P256_POINT *P, + const P256_POINT_AFFINE *Q) + { + unsigned int i; +- BN_ULONG tmp0[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG tmp1[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG tmp2[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG tmp3[P256_LIMBS] ALIGN32 = {0}; ++ ALIGN32 BN_ULONG tmp0[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG tmp1[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG tmp2[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG tmp3[P256_LIMBS] = {0}; + + /* zero-check P->Z */ + if (is_zeros(P->Z)) { +@@ -288,9 +288,9 @@ static void ecp_sm2p256_point_add(P256_POINT *R, const P256_POINT *P, + const P256_POINT *Q) + { + unsigned int i; +- BN_ULONG tmp0[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG tmp1[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG tmp2[P256_LIMBS] ALIGN32 = {0}; ++ ALIGN32 BN_ULONG tmp0[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG tmp1[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG tmp2[P256_LIMBS] = {0}; + + /* zero-check P | Q ->Z */ + if (is_zeros(P->Z)) { +@@ -382,7 +382,7 @@ static void ecp_sm2p256_point_P_mul_by_scalar(P256_POINT *R, const BN_ULONG *k, + { + int i, init = 0; + unsigned int index, mask = 0x0f; +- P256_POINT precomputed[16] ALIGN64; ++ ALIGN64 P256_POINT precomputed[16] ; + + memset(R, 0, sizeof(P256_POINT)); + +@@ -427,8 +427,8 @@ static void ecp_sm2p256_point_P_mul_by_scalar(P256_POINT *R, const BN_ULONG *k, + static void ecp_sm2p256_point_get_affine(P256_POINT_AFFINE *R, + const P256_POINT *P) + { +- BN_ULONG z_inv3[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG z_inv2[P256_LIMBS] ALIGN32 = {0}; ++ ALIGN32 BN_ULONG z_inv3[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG z_inv2[P256_LIMBS] = {0}; + + if (is_one(P->Z)) { + memcpy(R->X, P->X, 32); +@@ -461,13 +461,13 @@ static int ecp_sm2p256_get_affine(const EC_GROUP *group, + const EC_POINT *point, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx) + { +- BN_ULONG z_inv2[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG z_inv3[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG x_aff[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG y_aff[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG point_x[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG point_y[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG point_z[P256_LIMBS] ALIGN32 = {0}; ++ ALIGN32 BN_ULONG z_inv2[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG z_inv3[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG x_aff[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG y_aff[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG point_x[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG point_y[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG point_z[P256_LIMBS] = {0}; + + if (EC_POINT_is_at_infinity(group, point)) { + ECerr(ERR_LIB_EC, EC_R_POINT_AT_INFINITY); +@@ -510,7 +510,7 @@ static int ecp_sm2p256_windowed_mul(const EC_GROUP *group, + unsigned int i; + int ret = 0; + const BIGNUM **scalars = NULL; +- BN_ULONG k[P256_LIMBS] ALIGN32 = {0}; ++ ALIGN32 BN_ULONG k[P256_LIMBS] = {0}; + P256_POINT kP; + ALIGN32 union { + P256_POINT p; +@@ -572,7 +572,7 @@ static int ecp_sm2p256_points_mul(const EC_GROUP *group, + { + int ret = 0, p_is_infinity = 0; + const EC_POINT *generator = NULL; +- BN_ULONG k[P256_LIMBS] ALIGN32 = {0}; ++ ALIGN32 BN_ULONG k[P256_LIMBS] = {0}; + ALIGN32 union { + P256_POINT p; + P256_POINT_AFFINE a; +@@ -646,9 +646,9 @@ err: + static int ecp_sm2p256_field_mul(const EC_GROUP *group, BIGNUM *r, + const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx) + { +- BN_ULONG a_fe[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG b_fe[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG r_fe[P256_LIMBS] ALIGN32 = {0}; ++ ALIGN32 BN_ULONG a_fe[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG b_fe[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG r_fe[P256_LIMBS] = {0}; + + if (a == NULL || b == NULL || r == NULL) + return 0; +@@ -670,8 +670,8 @@ static int ecp_sm2p256_field_mul(const EC_GROUP *group, BIGNUM *r, + static int ecp_sm2p256_field_sqr(const EC_GROUP *group, BIGNUM *r, + const BIGNUM *a, BN_CTX *ctx) + { +- BN_ULONG a_fe[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG r_fe[P256_LIMBS] ALIGN32 = {0}; ++ ALIGN32 BN_ULONG a_fe[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG r_fe[P256_LIMBS] = {0}; + + if (a == NULL || r == NULL) + return 0; +@@ -693,8 +693,8 @@ static int ecp_sm2p256_inv_mod_ord(const EC_GROUP *group, BIGNUM *r, + const BIGNUM *x, BN_CTX *ctx) + { + int ret = 0; +- BN_ULONG t[P256_LIMBS] ALIGN32 = {0}; +- BN_ULONG out[P256_LIMBS] ALIGN32 = {0}; ++ ALIGN32 BN_ULONG t[P256_LIMBS] = {0}; ++ ALIGN32 BN_ULONG out[P256_LIMBS] = {0}; + + if (bn_wexpand(r, P256_LIMBS) == NULL) { + ECerr(ERR_LIB_EC, ERR_R_BN_LIB); diff --git a/3rdParty/vcpkg_ports/ports/openssl/install-pc-files.cmake b/3rdParty/vcpkg_ports/ports/openssl/install-pc-files.cmake new file mode 100644 index 00000000000..04897faed78 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/install-pc-files.cmake @@ -0,0 +1,32 @@ +function(install_pc_file name pc_data) + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + configure_file("${CMAKE_CURRENT_LIST_DIR}/openssl.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/${name}.pc" @ONLY) + endif() + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + configure_file("${CMAKE_CURRENT_LIST_DIR}/openssl.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/${name}.pc" @ONLY) + endif() +endfunction() + +install_pc_file(openssl [[ +Name: OpenSSL +Description: Secure Sockets Layer and cryptography libraries and tools +Requires: libssl libcrypto +]]) + +install_pc_file(libssl [[ +Name: OpenSSL-libssl +Description: Secure Sockets Layer and cryptography libraries +Libs: -L"${libdir}" -llibssl +Requires: libcrypto +Cflags: -I"${includedir}" +]]) + +install_pc_file(libcrypto [[ +Name: OpenSSL-libcrypto +Description: OpenSSL cryptography library +Libs: -L"${libdir}" -llibcrypto +Libs.private: -lcrypt32 -lws2_32 -ladvapi32 -luser32 +Cflags: -I"${includedir}" +]]) + +vcpkg_fixup_pkgconfig() diff --git a/3rdParty/vcpkg_ports/ports/openssl/openssl.pc.in b/3rdParty/vcpkg_ports/ports/openssl/openssl.pc.in new file mode 100644 index 00000000000..f7fa9d185f1 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/openssl.pc.in @@ -0,0 +1,6 @@ +prefix=${pcfiledir}/../.. +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include +Version: @VERSION@ +@pc_data@ diff --git a/3rdParty/vcpkg_ports/ports/openssl/portfile.cmake b/3rdParty/vcpkg_ports/ports/openssl/portfile.cmake new file mode 100644 index 00000000000..1de3d05aa54 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/portfile.cmake @@ -0,0 +1,85 @@ +if(EXISTS "${CURRENT_INSTALLED_DIR}/share/libressl/copyright" + OR EXISTS "${CURRENT_INSTALLED_DIR}/share/boringssl/copyright") + message(FATAL_ERROR "Can't build openssl if libressl/boringssl is installed. Please remove libressl/boringssl, and try install openssl again if you need it.") +endif() + +if(VCPKG_TARGET_IS_EMSCRIPTEN) + vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +endif() + +if (NOT "${VERSION}" MATCHES [[^([0-9]+)\.([0-9]+)\.([0-9]+)$]]) + message(FATAL_ERROR "Version regex did not match.") +endif() +set(OPENSSL_VERSION_MAJOR "${CMAKE_MATCH_1}") +set(OPENSSL_VERSION_MINOR "${CMAKE_MATCH_2}") +set(OPENSSL_VERSION_FIX "${CMAKE_MATCH_3}") +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO openssl/openssl + REF "openssl-${VERSION}" + SHA512 aaf4f13b7b8020be37837f8084ab7aa3db64e6eb1ecabf04473ed5bd09bcabb8790f0dc1f7604febbbf974702b1fbe41795a7b575e7f88b07cbe094493926a6b + PATCHES + asm-comments.patch + declspec-align.patch + qt-msvc.patch + script-prefix.patch + windows/install-layout.patch + windows/install-pdbs.patch + unix/android-cc.patch + unix/move-openssldir.patch + unix/no-empty-dirs.patch + unix/no-static-libs-for-shared.patch + unix/disable-quicserver.patch +) + +vcpkg_list(SET CONFIGURE_OPTIONS + enable-static-engine + enable-capieng + no-tests + no-docs +) + +set(INSTALL_FIPS "") +if("fips" IN_LIST FEATURES) + vcpkg_list(APPEND INSTALL_FIPS install_fips) + vcpkg_list(APPEND CONFIGURE_OPTIONS enable-fips) +endif() + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + vcpkg_list(APPEND CONFIGURE_OPTIONS shared) +else() + vcpkg_list(APPEND CONFIGURE_OPTIONS no-shared no-module) +endif() + +if(NOT "tools" IN_LIST FEATURES) + vcpkg_list(APPEND CONFIGURE_OPTIONS no-apps) +endif() + +if("weak-ssl-ciphers" IN_LIST FEATURES) + vcpkg_list(APPEND CONFIGURE_OPTIONS enable-weak-ssl-ciphers) +endif() + +if("ssl3" IN_LIST FEATURES) + vcpkg_list(APPEND CONFIGURE_OPTIONS enable-ssl3) + vcpkg_list(APPEND CONFIGURE_OPTIONS enable-ssl3-method) +endif() + +if(DEFINED OPENSSL_USE_NOPINSHARED) + vcpkg_list(APPEND CONFIGURE_OPTIONS no-pinshared) +endif() + +if(OPENSSL_NO_AUTOLOAD_CONFIG) + vcpkg_list(APPEND CONFIGURE_OPTIONS no-autoload-config) +endif() + +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + include("${CMAKE_CURRENT_LIST_DIR}/windows/portfile.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/install-pc-files.cmake") +else() + include("${CMAKE_CURRENT_LIST_DIR}/unix/portfile.cmake") +endif() + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt") diff --git a/3rdParty/vcpkg_ports/ports/openssl/qt-msvc.patch b/3rdParty/vcpkg_ports/ports/openssl/qt-msvc.patch new file mode 100644 index 00000000000..50f945d9893 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/qt-msvc.patch @@ -0,0 +1,21 @@ +diff --git a/include/openssl/e_ostime.h b/include/openssl/e_ostime.h +index 8a7cc9880fa79..0e17487504992 100644 +--- a/include/openssl/e_ostime.h ++++ b/include/openssl/e_ostime.h +@@ -22,7 +22,15 @@ + */ + + # if defined(OPENSSL_SYS_WINDOWS) +-# include ++# if !defined(_WINSOCKAPI_) ++ /* ++ * winsock2.h defines _WINSOCK2API_ and both winsock2.h and winsock.h define ++ * _WINSOCKAPI_. Both of these provide struct timeval. Don't include ++ * winsock2.h if either header has been included to avoid breakage with ++ * applications that prefer to use over . ++ */ ++# include ++# endif + # else + # include + # endif diff --git a/3rdParty/vcpkg_ports/ports/openssl/script-prefix.patch b/3rdParty/vcpkg_ports/ports/openssl/script-prefix.patch new file mode 100644 index 00000000000..70f0859ca86 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/script-prefix.patch @@ -0,0 +1,22 @@ +diff --git a/tools/c_rehash.in b/tools/c_rehash.in +index 343cdc1..e48038e 100644 +--- a/tools/c_rehash.in ++++ b/tools/c_rehash.in +@@ -12,7 +12,7 @@ + # and add symbolic links to their hash values. + + my $dir = {- quotify1($config{openssldir}) -}; +-my $prefix = {- quotify1($config{prefix}) -}; ++use FindBin; + + my $errorcount = 0; + my $openssl = $ENV{OPENSSL} || "openssl"; +@@ -61,7 +61,7 @@ if (defined(&Cwd::getcwd)) { + + # DOS/Win32 or Unix delimiter? Prefix our installdir, then search. + my $path_delim = ($pwd =~ /^[a-z]\:/i) ? ';' : ':'; +-$ENV{PATH} = "$prefix/bin" . ($ENV{PATH} ? $path_delim . $ENV{PATH} : ""); ++$ENV{PATH} = "$FindBin::Bin" . ($ENV{PATH} ? $path_delim . $ENV{PATH} : ""); + + if (! -x $openssl) { + my $found = 0; diff --git a/3rdParty/vcpkg_ports/ports/openssl/unix/android-cc.patch b/3rdParty/vcpkg_ports/ports/openssl/unix/android-cc.patch new file mode 100644 index 00000000000..f4c3d683431 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/unix/android-cc.patch @@ -0,0 +1,20 @@ +diff --git a/Configurations/15-android.conf b/Configurations/15-android.conf +index 41ad922..d15e34c 100644 +--- a/Configurations/15-android.conf ++++ b/Configurations/15-android.conf +@@ -102,6 +102,7 @@ + my $cflags; + my $cppflags; + ++if (0) { + # see if there is NDK clang on $PATH, "universal" or "standalone" + if (which("clang") =~ m|^$ndk/.*/prebuilt/([^/]+)/|) { + my $host=$1; +@@ -158,6 +159,7 @@ + $sysroot =~ s|^$ndk/||; + $sysroot = " --sysroot=\$($ndk_var)/$sysroot"; + } ++} + $android_ndk = { + cflags => $cflags . $sysroot, + cppflags => $cppflags, diff --git a/3rdParty/vcpkg_ports/ports/openssl/unix/configure b/3rdParty/vcpkg_ports/ports/openssl/unix/configure new file mode 100755 index 00000000000..2d49b3d166b --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/unix/configure @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -e + +declare -a OUT_OPTIONS + +INTERPRETER=perl + +LAST_SEEN= +COPY_OPTIONS=no +for OPTION; do + case "${OPTION},${COPY_OPTIONS}" in + */Configure,no) + OUT_OPTIONS+=("${OPTION}") + INTERPRETER="${LAST_SEEN}" + COPY_OPTIONS=yes + ;; + --prefix=*|--openssldir=*|--libdir=*|--cross-compile-prefix=*|--debug,*) + OUT_OPTIONS+=("${OPTION}") + ;; + -*|*=*) + ;; + *,yes) + OUT_OPTIONS+=("${OPTION}") + ;; + esac + LAST_SEEN="${OPTION}" +done + +set -x +"${INTERPRETER}" ${OUT_OPTIONS[@]} diff --git a/3rdParty/vcpkg_ports/ports/openssl/unix/disable-quicserver.patch b/3rdParty/vcpkg_ports/ports/openssl/unix/disable-quicserver.patch new file mode 100644 index 00000000000..4c3c9d672e5 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/unix/disable-quicserver.patch @@ -0,0 +1,15 @@ +diff --git a/util/build.info b/util/build.info +index cf06f15ae4..aad7c50fee 100644 +--- a/util/build.info ++++ b/util/build.info +@@ -5,10 +5,3 @@ ENDIF + SCRIPTS{noinst}=wrap.pl + SOURCE[wrap.pl]=wrap.pl.in + DEPEND[wrap.pl]=../configdata.pm +- +-IF[{- !$disabled{quic} && !$disabled{stdio} -}] +- PROGRAMS{noinst}=quicserver +- SOURCE[quicserver]=quicserver.c +-INCLUDE[quicserver]=../include ../apps/include +-DEPEND[quicserver]=../libcrypto.a ../libssl.a +-ENDIF diff --git a/3rdParty/vcpkg_ports/ports/openssl/unix/move-openssldir.patch b/3rdParty/vcpkg_ports/ports/openssl/unix/move-openssldir.patch new file mode 100644 index 00000000000..2a39bdbe745 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/unix/move-openssldir.patch @@ -0,0 +1,16 @@ +diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl +index c82c086..6c5402d 100644 +--- a/Configurations/unix-Makefile.tmpl ++++ b/Configurations/unix-Makefile.tmpl +@@ -690,6 +690,11 @@ install_ssldirs: + chmod 644 "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf"; \ + fi + ++ $(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)$(OPENSSLDIR) ++ for I in $(DESTDIR)$(OPENSSLDIR)/*; do \ ++ mv $$I $(DESTDIR)$(INSTALLTOP)$(OPENSSLDIR)/; \ ++ done ++ + install_dev: install_runtime_libs + @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) + @$(ECHO) "*** Installing development files" diff --git a/3rdParty/vcpkg_ports/ports/openssl/unix/no-empty-dirs.patch b/3rdParty/vcpkg_ports/ports/openssl/unix/no-empty-dirs.patch new file mode 100644 index 00000000000..7cf0cf05fa9 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/unix/no-empty-dirs.patch @@ -0,0 +1,22 @@ +diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl +index 6c5402d..fc982df 100644 +--- a/Configurations/unix-Makefile.tmpl ++++ b/Configurations/unix-Makefile.tmpl +@@ -823,7 +823,7 @@ _install_modules_deps: install_runtime_libs build_modules + + install_engines: _install_modules_deps + @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) +- @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(ENGINESDIR)/" ++ @[ -z "$(INSTALL_ENGINES)" ] || $(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(ENGINESDIR)/ + @$(ECHO) "*** Installing engines" + @set -e; for e in dummy $(INSTALL_ENGINES); do \ + if [ "$$e" = "dummy" ]; then continue; fi; \ +@@ -847,7 +847,7 @@ uninstall_engines: + + install_modules: _install_modules_deps + @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) +- @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(MODULESDIR)/" ++ @[ -z "$(INSTALL_MODULES)" ] || $(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(MODULESDIR)/ + @$(ECHO) "*** Installing modules" + @set -e; for e in dummy $(INSTALL_MODULES); do \ + if [ "$$e" = "dummy" ]; then continue; fi; \ diff --git a/3rdParty/vcpkg_ports/ports/openssl/unix/no-static-libs-for-shared.patch b/3rdParty/vcpkg_ports/ports/openssl/unix/no-static-libs-for-shared.patch new file mode 100644 index 00000000000..d6aa34cfe24 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/unix/no-static-libs-for-shared.patch @@ -0,0 +1,12 @@ +diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl +index fc982df..10f1c54 100644 +--- a/Configurations/unix-Makefile.tmpl ++++ b/Configurations/unix-Makefile.tmpl +@@ -713,6 +713,7 @@ install_dev: install_runtime_libs + done + @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(libdir)" + @set -e; for l in $(INSTALL_LIBS); do \ ++ if [ -n "$(INSTALL_SHLIBS)" ] ; then continue ; fi ; \ + fn=`basename $$l`; \ + $(ECHO) "install $$l -> $(DESTDIR)$(libdir)/$$fn"; \ + cp $$l "$(DESTDIR)$(libdir)/$$fn.new"; \ diff --git a/3rdParty/vcpkg_ports/ports/openssl/unix/portfile.cmake b/3rdParty/vcpkg_ports/ports/openssl/unix/portfile.cmake new file mode 100644 index 00000000000..02e62732d5f --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/unix/portfile.cmake @@ -0,0 +1,154 @@ +if (VCPKG_TARGET_IS_LINUX) + message(NOTICE [[ +openssl requires Linux kernel headers from the system package manager. + They can be installed on Alpine systems via `apk add linux-headers`. + They can be installed on Ubuntu systems via `apt install linux-libc-dev`. +]]) +endif() + +if(CMAKE_HOST_WIN32) + vcpkg_acquire_msys(MSYS_ROOT PACKAGES make perl) + set(MAKE "${MSYS_ROOT}/usr/bin/make.exe") + set(PERL "${MSYS_ROOT}/usr/bin/perl.exe") +else() + find_program(MAKE make) + if(NOT MAKE) + message(FATAL_ERROR "Could not find make. Please install it through your package manager.") + endif() + vcpkg_find_acquire_program(PERL) +endif() +set(INTERPRETER "${PERL}") + +execute_process( + COMMAND "${PERL}" -e "use IPC::Cmd;" + RESULT_VARIABLE perl_ipc_cmd_result +) +if(NOT perl_ipc_cmd_result STREQUAL "0") + message(FATAL_ERROR "\nPerl cannot find IPC::Cmd. Please install it through your system package manager.\n") +endif() + +# Ideally, OpenSSL should use `CC` from vcpkg as is (absolute path). +# But in reality, OpenSSL expects to locate the compiler via `PATH`, +# and it makes its own choices e.g. for Android. +vcpkg_cmake_get_vars(cmake_vars_file) +include("${cmake_vars_file}") +cmake_path(GET VCPKG_DETECTED_CMAKE_C_COMPILER PARENT_PATH compiler_path) +cmake_path(GET VCPKG_DETECTED_CMAKE_C_COMPILER FILENAME compiler_name) +find_program(compiler_in_path NAMES "${compiler_name}" PATHS ENV PATH NO_DEFAULT_PATH) +if(NOT compiler_in_path) + vcpkg_host_path_list(APPEND ENV{PATH} "${compiler_path}") +elseif(NOT compiler_in_path STREQUAL VCPKG_DETECTED_CMAKE_C_COMPILER) + vcpkg_host_path_list(PREPEND ENV{PATH} "${compiler_path}") +endif() + +vcpkg_list(SET MAKEFILE_OPTIONS) +if(VCPKG_TARGET_IS_ANDROID) + set(ENV{ANDROID_NDK_ROOT} "${VCPKG_DETECTED_CMAKE_ANDROID_NDK}") + set(OPENSSL_ARCH "android-${VCPKG_DETECTED_CMAKE_ANDROID_ARCH}") + # asm on arm32 NEON is broken, https://github.com/openssl/openssl/pull/21583#issuecomment-1727057735 + if(VCPKG_DETECTED_CMAKE_ANDROID_ARCH STREQUAL "arm" #[[AND NOT VCPKG_DETECTED_CMAKE_ANDROID_ARM_NEON]]) + vcpkg_list(APPEND CONFIGURE_OPTIONS no-asm) + endif() +elseif(VCPKG_TARGET_IS_LINUX) + if(VCPKG_TARGET_ARCHITECTURE MATCHES "arm64") + set(OPENSSL_ARCH linux-aarch64) + elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "arm") + set(OPENSSL_ARCH linux-armv4) + elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x64") + set(OPENSSL_ARCH linux-x86_64) + elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x86") + set(OPENSSL_ARCH linux-x86) + else() + set(OPENSSL_ARCH linux-generic32) + endif() +elseif(VCPKG_TARGET_IS_IOS) + if(VCPKG_TARGET_ARCHITECTURE MATCHES "arm64") + set(OPENSSL_ARCH ios64-xcrun) + elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "arm") + set(OPENSSL_ARCH ios-xcrun) + elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x86" OR VCPKG_TARGET_ARCHITECTURE MATCHES "x64") + set(OPENSSL_ARCH iossimulator-xcrun) + else() + message(FATAL_ERROR "Unknown iOS target architecture: ${VCPKG_TARGET_ARCHITECTURE}") + endif() + # disable that makes linkage error (e.g. require stderr usage) + list(APPEND CONFIGURE_OPTIONS no-ui no-asm) +elseif(VCPKG_TARGET_IS_OSX) + if(VCPKG_TARGET_ARCHITECTURE MATCHES "arm64") + set(OPENSSL_ARCH darwin64-arm64) + else() + set(OPENSSL_ARCH darwin64-x86_64) + endif() +elseif(VCPKG_TARGET_IS_FREEBSD OR VCPKG_TARGET_IS_OPENBSD) + set(OPENSSL_ARCH BSD-generic64) +elseif(VCPKG_TARGET_IS_MINGW) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(OPENSSL_ARCH mingw64) + else() + set(OPENSSL_ARCH mingw) + endif() +elseif(VCPKG_TARGET_IS_EMSCRIPTEN) + vcpkg_list(APPEND CONFIGURE_OPTIONS + threads + no-engine + no-asm + no-sse2 + no-srtp + --cross-compile-prefix= + ) +else() + message(FATAL_ERROR "Unknown platform") +endif() + +file(MAKE_DIRECTORY "${SOURCE_PATH}/vcpkg") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/configure" DESTINATION "${SOURCE_PATH}/vcpkg") +vcpkg_configure_make( + SOURCE_PATH "${SOURCE_PATH}" + PROJECT_SUBPATH "vcpkg" + NO_ADDITIONAL_PATHS + OPTIONS + "${INTERPRETER}" + "${SOURCE_PATH}/Configure" + ${OPENSSL_ARCH} + ${CONFIGURE_OPTIONS} + "--openssldir=/etc/ssl" + "--libdir=lib" + OPTIONS_DEBUG + --debug +) +vcpkg_install_make( + ${MAKEFILE_OPTIONS} + BUILD_TARGET build_sw +) +vcpkg_fixup_pkgconfig() + +if("tools" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}") + file(RENAME "${CURRENT_PACKAGES_DIR}/bin/c_rehash" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/c_rehash") + file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/bin/c_rehash") + vcpkg_copy_tools(TOOL_NAMES openssl AUTO_CLEAN) +elseif(VCPKG_LIBRARY_LINKAGE STREQUAL "static" OR NOT VCPKG_TARGET_IS_WINDOWS) + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/etc/ssl/misc") +endif() + +file(TOUCH "${CURRENT_PACKAGES_DIR}/etc/ssl/certs/.keep") +file(TOUCH "${CURRENT_PACKAGES_DIR}/etc/ssl/private/.keep") + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/debug/etc" + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/debug/share" +) + +# For consistency of mingw build with nmake build +file(GLOB engines "${CURRENT_PACKAGES_DIR}/lib/ossl-modules/*.dll") +if(NOT engines STREQUAL "") + file(COPY ${engines} DESTINATION "${CURRENT_PACKAGES_DIR}/bin") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/ossl-modules") +endif() +file(GLOB engines "${CURRENT_PACKAGES_DIR}/debug/lib/ossl-modules/*.dll") +if(NOT engines STREQUAL "") + file(COPY ${engines} DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/lib/ossl-modules") +endif() diff --git a/3rdParty/vcpkg_ports/ports/openssl/unix/remove-deps.cmake b/3rdParty/vcpkg_ports/ports/openssl/unix/remove-deps.cmake new file mode 100644 index 00000000000..53ad6ef2906 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/unix/remove-deps.cmake @@ -0,0 +1,7 @@ +file(GLOB_RECURSE MAKEFILES ${DIR}/*/Makefile) +foreach(MAKEFILE ${MAKEFILES}) + message("removing deps from ${MAKEFILE}") + file(READ "${MAKEFILE}" _contents) + string(REGEX REPLACE "\n# DO NOT DELETE THIS LINE.*" "" _contents "${_contents}") + file(WRITE "${MAKEFILE}" "${_contents}") +endforeach() diff --git a/3rdParty/vcpkg_ports/ports/openssl/usage b/3rdParty/vcpkg_ports/ports/openssl/usage new file mode 100644 index 00000000000..cf83f33916b --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/usage @@ -0,0 +1,4 @@ +The package openssl is compatible with built-in CMake targets: + + find_package(OpenSSL REQUIRED) + target_link_libraries(main PRIVATE OpenSSL::SSL OpenSSL::Crypto) diff --git a/3rdParty/vcpkg_ports/ports/openssl/vcpkg-cmake-wrapper.cmake.in b/3rdParty/vcpkg_ports/ports/openssl/vcpkg-cmake-wrapper.cmake.in new file mode 100644 index 00000000000..5008112c35c --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/vcpkg-cmake-wrapper.cmake.in @@ -0,0 +1,82 @@ +cmake_policy(PUSH) +cmake_policy(SET CMP0012 NEW) +cmake_policy(SET CMP0054 NEW) +cmake_policy(SET CMP0057 NEW) + +set(OPENSSL_VERSION_MAJOR @OPENSSL_VERSION_MAJOR@) +set(OPENSSL_VERSION_MINOR @OPENSSL_VERSION_MINOR@) +set(OPENSSL_VERSION_FIX @OPENSSL_VERSION_FIX@) + +if(OPENSSL_USE_STATIC_LIBS) + if("@VCPKG_LIBRARY_LINKAGE@" STREQUAL "dynamic") + message(WARNING "OPENSSL_USE_STATIC_LIBS is set, but vcpkg port openssl was built with dynamic linkage") + endif() + set(OPENSSL_USE_STATIC_LIBS_BAK "${OPENSSL_USE_STATIC_LIBS}") + set(OPENSSL_USE_STATIC_LIBS FALSE) +endif() + +if(DEFINED OPENSSL_ROOT_DIR) + set(OPENSSL_ROOT_DIR_BAK "${OPENSSL_ROOT_DIR}") +endif() +get_filename_component(OPENSSL_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}" DIRECTORY) +get_filename_component(OPENSSL_ROOT_DIR "${OPENSSL_ROOT_DIR}" DIRECTORY) +find_path(OPENSSL_INCLUDE_DIR NAMES openssl/ssl.h PATH "${OPENSSL_ROOT_DIR}/include" NO_DEFAULT_PATH) +if(MSVC) + find_library(LIB_EAY_DEBUG NAMES libcrypto PATHS "${OPENSSL_ROOT_DIR}/debug/lib" NO_DEFAULT_PATH) + find_library(LIB_EAY_RELEASE NAMES libcrypto PATHS "${OPENSSL_ROOT_DIR}/lib" NO_DEFAULT_PATH) + find_library(SSL_EAY_DEBUG NAMES libssl PATHS "${OPENSSL_ROOT_DIR}/debug/lib" NO_DEFAULT_PATH) + find_library(SSL_EAY_RELEASE NAMES libssl PATHS "${OPENSSL_ROOT_DIR}/lib" NO_DEFAULT_PATH) +elseif(WIN32) + find_library(LIB_EAY NAMES libcrypto crypto NAMES_PER_DIR) + find_library(SSL_EAY NAMES libssl ssl NAMES_PER_DIR) +else() + find_library(OPENSSL_CRYPTO_LIBRARY NAMES crypto) + find_library(OPENSSL_SSL_LIBRARY NAMES ssl) +endif() + +_find_package(${ARGS}) + +unset(OPENSSL_ROOT_DIR) +if(DEFINED OPENSSL_ROOT_DIR_BAK) + set(OPENSSL_ROOT_DIR "${OPENSSL_ROOT_DIR_BAK}") + unset(OPENSSL_ROOT_DIR_BAK) +endif() + +if(DEFINED OPENSSL_USE_STATIC_LIBS_BAK) + set(OPENSSL_USE_STATIC_LIBS "${OPENSSL_USE_STATIC_LIBS_BAK}") + unset(OPENSSL_USE_STATIC_LIBS_BAK) +endif() + +if(OPENSSL_FOUND AND "@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static") + if(WIN32) + list(APPEND OPENSSL_LIBRARIES crypt32 ws2_32) + if(TARGET OpenSSL::Crypto) + set_property(TARGET OpenSSL::Crypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES "crypt32;ws2_32") + endif() + if(TARGET OpenSSL::SSL) + set_property(TARGET OpenSSL::SSL APPEND PROPERTY INTERFACE_LINK_LIBRARIES "crypt32;ws2_32") + endif() + else() + find_library(OPENSSL_DL_LIBRARY NAMES dl) + if(OPENSSL_DL_LIBRARY) + list(APPEND OPENSSL_LIBRARIES "dl") + if(TARGET OpenSSL::Crypto) + set_property(TARGET OpenSSL::Crypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES "dl") + endif() + endif() + + if("REQUIRED" IN_LIST ARGS) + find_package(Threads REQUIRED) + else() + find_package(Threads) + endif() + list(APPEND OPENSSL_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) + if(TARGET OpenSSL::Crypto) + set_property(TARGET OpenSSL::Crypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES "Threads::Threads") + endif() + if(TARGET OpenSSL::SSL) + set_property(TARGET OpenSSL::SSL APPEND PROPERTY INTERFACE_LINK_LIBRARIES "Threads::Threads") + endif() + endif() +endif() +cmake_policy(POP) diff --git a/3rdParty/vcpkg_ports/ports/openssl/vcpkg.json b/3rdParty/vcpkg_ports/ports/openssl/vcpkg.json new file mode 100644 index 00000000000..72694559e53 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/vcpkg.json @@ -0,0 +1,38 @@ +{ + "name": "openssl", + "version": "3.2.0", + "port-version": 2, + "description": "OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.", + "homepage": "https://www.openssl.org", + "license": "Apache-2.0", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + { + "name": "vcpkg-cmake-get-vars", + "host": true + } + ], + "features": { + "fips": { + "description": "Enable fips", + "supports": "!static" + }, + "ssl3": { + "description": "Enable SSL3" + }, + "tools": { + "description": "Install openssl executable and scripts", + "supports": "!uwp" + }, + "weak-ssl-ciphers": { + "description": "Enable weak-ssl-ciphers" + } + } +} diff --git a/3rdParty/vcpkg_ports/ports/openssl/windows/install-layout.patch b/3rdParty/vcpkg_ports/ports/openssl/windows/install-layout.patch new file mode 100644 index 00000000000..be9df768b38 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/windows/install-layout.patch @@ -0,0 +1,13 @@ +diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl +index f71f3bf..116954f 100644 +--- a/Configurations/windows-makefile.tmpl ++++ b/Configurations/windows-makefile.tmpl +@@ -223,7 +223,7 @@ MODULESDIR_dev={- use File::Spec::Functions qw(:DEFAULT splitpath catpath); + splitpath($modulesprefix, 1); + our $modulesdir_dev = $modulesprefix_dev; + our $modulesdir_dir = +- catdir($modulesprefix_dir, "ossl-modules"); ++ catdir($modulesprefix_dir, "../bin"); + our $modulesdir = catpath($modulesdir_dev, $modulesdir_dir); + our $enginesdir_dev = $modulesprefix_dev; + our $enginesdir_dir = diff --git a/3rdParty/vcpkg_ports/ports/openssl/windows/install-pdbs.patch b/3rdParty/vcpkg_ports/ports/openssl/windows/install-pdbs.patch new file mode 100644 index 00000000000..379c525a4f4 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/windows/install-pdbs.patch @@ -0,0 +1,44 @@ +diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl +index 5946c89..f71f3bf 100644 +--- a/Configurations/windows-makefile.tmpl ++++ b/Configurations/windows-makefile.tmpl +@@ -556,6 +556,7 @@ install_dev: install_runtime_libs + @"$(PERL)" "$(SRCDIR)\util\mkdir-p.pl" "$(libdir)" + @"$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_LIBS) "$(libdir)" + @if "$(SHLIBS)"=="" \ ++ @if "$(INSTALL_PDBS)"=="ON" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" ossl_static.pdb "$(libdir)" + + uninstall_dev: +@@ -569,6 +570,7 @@ install_engines: _install_modules_deps + @if not "$(INSTALL_ENGINES)"=="" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_ENGINES) "$(ENGINESDIR)" + @if not "$(INSTALL_ENGINES)"=="" \ ++ @if "$(INSTALL_PDBS)"=="ON" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_ENGINEPDBS) "$(ENGINESDIR)" + + uninstall_engines: +@@ -580,6 +582,7 @@ install_modules: _install_modules_deps + @if not "$(INSTALL_MODULES)"=="" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_MODULES) "$(MODULESDIR)" + @if not "$(INSTALL_MODULES)"=="" \ ++ @if "$(INSTALL_PDBS)"=="ON" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_MODULEPDBS) "$(MODULESDIR)" + + uninstall_modules: +@@ -593,6 +596,7 @@ install_runtime_libs: build_libs + @if not "$(SHLIBS)"=="" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_SHLIBS) "$(INSTALLTOP)\bin" + @if not "$(SHLIBS)"=="" \ ++ @if "$(INSTALL_PDBS)"=="ON" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_SHLIBPDBS) \ + "$(INSTALLTOP)\bin" + +@@ -605,6 +609,7 @@ install_programs: install_runtime_libs build_programs + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_PROGRAMS) \ + "$(INSTALLTOP)\bin" + @if not "$(INSTALL_PROGRAMS)"=="" \ ++ @if "$(INSTALL_PDBS)"=="ON" \ + "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_PROGRAMPDBS) \ + "$(INSTALLTOP)\bin" + @if not "$(INSTALL_PROGRAMS)"=="" \ diff --git a/3rdParty/vcpkg_ports/ports/openssl/windows/portfile.cmake b/3rdParty/vcpkg_ports/ports/openssl/windows/portfile.cmake new file mode 100644 index 00000000000..59da6897fe2 --- /dev/null +++ b/3rdParty/vcpkg_ports/ports/openssl/windows/portfile.cmake @@ -0,0 +1,152 @@ +vcpkg_find_acquire_program(PERL) +get_filename_component(PERL_EXE_PATH "${PERL}" DIRECTORY) +vcpkg_add_to_path("${PERL_EXE_PATH}") + +vcpkg_cmake_get_vars(cmake_vars_file) +include("${cmake_vars_file}") + +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(OPENSSL_ARCH VC-WIN32) +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(OPENSSL_ARCH VC-WIN64A) +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + set(OPENSSL_ARCH VC-WIN32-ARM) +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + if(VCPKG_TARGET_IS_UWP) + set(OPENSSL_ARCH VC-WIN64-ARM) + elseif(VCPKG_DETECTED_CMAKE_C_COMPILER_ID MATCHES "Clang") + set(OPENSSL_ARCH VC-CLANG-WIN64-CLANGASM-ARM) + else() + set(OPENSSL_ARCH VC-WIN64-CLANGASM-ARM) + endif() +else() + message(FATAL_ERROR "Unsupported target architecture: ${VCPKG_TARGET_ARCHITECTURE}") +endif() + +if(VCPKG_TARGET_IS_UWP) + vcpkg_list(APPEND CONFIGURE_OPTIONS + no-unit-test + no-asm + no-uplink + ) + string(APPEND OPENSSL_ARCH "-UWP") +endif() + +if(VCPKG_CONCURRENCY GREATER "1") + vcpkg_list(APPEND CONFIGURE_OPTIONS no-makedepend) +endif() + +cmake_path(NATIVE_PATH CURRENT_PACKAGES_DIR NORMALIZE install_dir_native) + +# Clang always uses /Z7; Patching /Zi /Fd out of openssl requires more work. +set(OPENSSL_BUILD_MAKES_PDBS ON) +if (VCPKG_DETECTED_CMAKE_C_COMPILER_ID MATCHES "Clang" OR VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(OPENSSL_BUILD_MAKES_PDBS OFF) +endif() + +cmake_path(NATIVE_PATH VCPKG_DETECTED_CMAKE_C_COMPILER NORMALIZE cc) +if(OPENSSL_ARCH MATCHES "CLANG") + vcpkg_find_acquire_program(CLANG) + cmake_path(GET CLANG PARENT_PATH clang_path) + vcpkg_add_to_path("${clang_path}") + if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID MATCHES "Clang") + string(APPEND VCPKG_COMBINED_C_FLAGS_DEBUG " --target=aarch64-win32-msvc") + string(APPEND VCPKG_COMBINED_C_FLAGS_RELEASE " --target=aarch64-win32-msvc") + endif() +endif() +if(OPENSSL_ARCH MATCHES "CLANGASM") + vcpkg_list(APPEND CONFIGURE_OPTIONS "ASFLAGS=--target=aarch64-win32-msvc") +else() + vcpkg_find_acquire_program(NASM) + cmake_path(NATIVE_PATH NASM NORMALIZE as) + cmake_path(GET NASM PARENT_PATH nasm_path) + vcpkg_add_to_path("${nasm_path}") # Needed by Configure +endif() + +cmake_path(NATIVE_PATH VCPKG_DETECTED_CMAKE_AR NORMALIZE ar) +cmake_path(NATIVE_PATH VCPKG_DETECTED_CMAKE_LINKER NORMALIZE ld) + +vcpkg_build_nmake( + SOURCE_PATH "${SOURCE_PATH}" + PREFER_JOM + CL_LANGUAGE NONE + PRERUN_SHELL_RELEASE "${PERL}" Configure + ${CONFIGURE_OPTIONS} + ${OPENSSL_ARCH} + "--prefix=${install_dir_native}" + "--openssldir=${install_dir_native}" + "AS=${as}" + "CC=${cc}" + "CFLAGS=${VCPKG_COMBINED_C_FLAGS_RELEASE}" + "AR=${ar}" + "ARFLAGS=${VCPKG_COMBINED_STATIC_LINKER_FLAGS_RELEASE}" + "LD=${ld}" + "LDFLAGS=${VCPKG_COMBINED_SHARED_LINKER_FLAGS_RELEASE}" + PRERUN_SHELL_DEBUG "${PERL}" Configure + ${CONFIGURE_OPTIONS} + ${OPENSSL_ARCH} + --debug + "--prefix=${install_dir_native}\\debug" + "--openssldir=${install_dir_native}\\debug" + "AS=${as}" + "CC=${cc}" + "CFLAGS=${VCPKG_COMBINED_C_FLAGS_DEBUG}" + "AR=${ar}" + "ARFLAGS=${VCPKG_COMBINED_STATIC_LINKER_FLAGS_DEBUG}" + "LD=${ld}" + "LDFLAGS=${VCPKG_COMBINED_SHARED_LINKER_FLAGS_DEBUG}" + PROJECT_NAME "makefile" + TARGET install_dev install_modules ${INSTALL_FIPS} + LOGFILE_ROOT install + OPTIONS + "INSTALL_PDBS=${OPENSSL_BUILD_MAKES_PDBS}" # install-pdbs.patch + OPTIONS_RELEASE + install_runtime install_ssldirs # extra targets +) + +set(scripts "bin/c_rehash.pl" "misc/CA.pl" "misc/tsget.pl") +if("tools" IN_LIST FEATURES) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}") + file(RENAME "${CURRENT_PACKAGES_DIR}/openssl.cnf" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/openssl.cnf") + if("fips" IN_LIST FEATURES) + file(RENAME "${CURRENT_PACKAGES_DIR}/fipsmodule.cnf" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/fipsmodule.cnf") + endif() + foreach(script IN LISTS scripts) + file(COPY "${CURRENT_PACKAGES_DIR}/${script}" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}") + file(REMOVE "${CURRENT_PACKAGES_DIR}/${script}" "${CURRENT_PACKAGES_DIR}/debug/${script}") + endforeach() + vcpkg_copy_tools(TOOL_NAMES openssl AUTO_CLEAN) +else() + file(REMOVE "${CURRENT_PACKAGES_DIR}/openssl.cnf") + file(REMOVE "${CURRENT_PACKAGES_DIR}/fipsmodule.cnf") + foreach(script IN LISTS scripts) + file(REMOVE "${CURRENT_PACKAGES_DIR}/${script}" "${CURRENT_PACKAGES_DIR}/debug/${script}") + endforeach() + if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") + endif() +endif() + +vcpkg_copy_pdbs() + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/certs" + "${CURRENT_PACKAGES_DIR}/misc" + "${CURRENT_PACKAGES_DIR}/private" + "${CURRENT_PACKAGES_DIR}/lib/engines-3" + "${CURRENT_PACKAGES_DIR}/debug/certs" + "${CURRENT_PACKAGES_DIR}/debug/misc" + "${CURRENT_PACKAGES_DIR}/debug/lib/engines-3" + "${CURRENT_PACKAGES_DIR}/debug/private" + "${CURRENT_PACKAGES_DIR}/debug/include" +) +file(REMOVE + "${CURRENT_PACKAGES_DIR}/ct_log_list.cnf" + "${CURRENT_PACKAGES_DIR}/ct_log_list.cnf.dist" + "${CURRENT_PACKAGES_DIR}/openssl.cnf.dist" + "${CURRENT_PACKAGES_DIR}/debug/ct_log_list.cnf" + "${CURRENT_PACKAGES_DIR}/debug/ct_log_list.cnf.dist" + "${CURRENT_PACKAGES_DIR}/debug/openssl.cnf" + "${CURRENT_PACKAGES_DIR}/debug/openssl.cnf.dist" + "${CURRENT_PACKAGES_DIR}/debug/fipsmodule.cnf" +) diff --git a/3rdParty/vcpkg_ports/triplets/default/arm-android.cmake b/3rdParty/vcpkg_ports/triplets/default/arm-android.cmake index ed41e62ac9f..5bd6859638d 100644 --- a/3rdParty/vcpkg_ports/triplets/default/arm-android.cmake +++ b/3rdParty/vcpkg_ports/triplets/default/arm-android.cmake @@ -19,3 +19,6 @@ include(${CMAKE_CURRENT_LIST_DIR}/../../vcpkg_root_find.cmake) include(${VCPKG_ROOT}/triplets/community/arm-android.cmake) set(VCPKG_CMAKE_SYSTEM_VERSION android-16) + +set(VCPKG_CXX_FLAGS -DNO_RECVMMSG) +set(VCPKG_C_FLAGS -DNO_RECVMMSG) diff --git a/3rdParty/vcpkg_ports/triplets/default/arm-neon-android.cmake b/3rdParty/vcpkg_ports/triplets/default/arm-neon-android.cmake index 2ba22231d34..581947a24c3 100644 --- a/3rdParty/vcpkg_ports/triplets/default/arm-neon-android.cmake +++ b/3rdParty/vcpkg_ports/triplets/default/arm-neon-android.cmake @@ -19,3 +19,6 @@ include(${CMAKE_CURRENT_LIST_DIR}/../../vcpkg_root_find.cmake) include(${VCPKG_ROOT}/triplets/arm-neon-android.cmake) set(VCPKG_CMAKE_SYSTEM_VERSION android-16) + +set(VCPKG_CXX_FLAGS -DNO_RECVMMSG) +set(VCPKG_C_FLAGS -DNO_RECVMMSG) diff --git a/3rdParty/vcpkg_ports/triplets/default/armv6-android.cmake b/3rdParty/vcpkg_ports/triplets/default/armv6-android.cmake index 4191224dc5f..ac4bcc5dfd3 100644 --- a/3rdParty/vcpkg_ports/triplets/default/armv6-android.cmake +++ b/3rdParty/vcpkg_ports/triplets/default/armv6-android.cmake @@ -19,3 +19,6 @@ include(${CMAKE_CURRENT_LIST_DIR}/../../vcpkg_root_find.cmake) include(${VCPKG_ROOT}/triplets/community/armv6-android.cmake) set(VCPKG_CMAKE_SYSTEM_VERSION android-16) + +set(VCPKG_CXX_FLAGS -DNO_RECVMMSG) +set(VCPKG_C_FLAGS -DNO_RECVMMSG) diff --git a/3rdParty/vcpkg_ports/triplets/default/x86-android.cmake b/3rdParty/vcpkg_ports/triplets/default/x86-android.cmake index bb4f42f9d76..2a4c06ef5dd 100644 --- a/3rdParty/vcpkg_ports/triplets/default/x86-android.cmake +++ b/3rdParty/vcpkg_ports/triplets/default/x86-android.cmake @@ -19,3 +19,6 @@ include(${CMAKE_CURRENT_LIST_DIR}/../../vcpkg_root_find.cmake) include(${VCPKG_ROOT}/triplets/community/x86-android.cmake) set(VCPKG_CMAKE_SYSTEM_VERSION android-16) + +set(VCPKG_CXX_FLAGS -DNO_RECVMMSG) +set(VCPKG_C_FLAGS -DNO_RECVMMSG) diff --git a/ci_tools/source_code_check.py b/ci_tools/source_code_check.py index 470d1a67315..993697f7259 100644 --- a/ci_tools/source_code_check.py +++ b/ci_tools/source_code_check.py @@ -43,6 +43,7 @@ def check(directory, bytes_to_check, exclude_dirs, exclude_extensions, exclude_f os.path.join(directory, "3rdParty", "buildCache"), os.path.join(directory, "3rdParty", "linux"), os.path.join(directory, "3rdParty", "Windows"), + os.path.join(directory, "3rdParty", "vcpkg_ports", "ports"), os.path.join(directory, "android", "BOINC", ".gradle"), os.path.join(directory, "android", "BOINC", "app", "build"), os.path.join(directory, "android", "BOINC", "app", "src", "main", "assets"), diff --git a/ci_tools/trailing_whitespaces_check.py b/ci_tools/trailing_whitespaces_check.py index 7ef58544184..bf1753ccb1f 100644 --- a/ci_tools/trailing_whitespaces_check.py +++ b/ci_tools/trailing_whitespaces_check.py @@ -65,6 +65,7 @@ def check(directory, exclude_dirs, exclude_extensions, exclude_files, fix_errors os.path.join(directory, "3rdParty", "buildCache"), os.path.join(directory, "3rdParty", "linux"), os.path.join(directory, "3rdParty", "Windows"), + os.path.join(directory, "3rdParty", "vcpkg_ports", "ports"), os.path.join(directory, "android", "BOINC", ".gradle"), os.path.join(directory, "android", "BOINC", ".idea"), os.path.join(directory, "android", "BOINC", "app", "build"),