1 # Copyright (c) 2021-2022 Yubico AB. All rights reserved.
2 # Use of this source code is governed by a BSD-style
3 # license that can be found in the LICENSE file.
4 # SPDX-License-Identifier: BSD-2-Clause
5 
6 $ErrorActionPreference = "Stop"
7 $Architectures = @('x64', 'Win32', 'ARM64', 'ARM')
8 $InstallPrefixes =  @('Win64', 'Win32', 'ARM64', 'ARM')
9 $Types = @('dynamic', 'static')
10 $Config = 'Release'
11 $SDK = '143'
12 
13 . "$PSScriptRoot\const.ps1"
14 
15 foreach ($Arch in $Architectures) {
16 	foreach ($Type in $Types) {
17 		./build.ps1 -Arch ${Arch} -Type ${Type} -Config ${Config}
18 	}
19 }
20 
21 foreach ($InstallPrefix in $InstallPrefixes) {
22 	foreach ($Type in $Types) {
23 		New-Item -Type Directory `
24 		    "${OUTPUT}/pkg/${InstallPrefix}/${Config}/v${SDK}/${Type}"
25 	}
26 }
27 
28 Function Package-Headers() {
29 	Copy-Item "${OUTPUT}\x64\dynamic\include" -Destination "${OUTPUT}\pkg" `
30 	    -Recurse -ErrorAction Stop
31 }
32 
33 Function Package-Dynamic(${SRC}, ${DEST}) {
34 	Copy-Item "${SRC}\bin\cbor.dll" "${DEST}"
35 	Copy-Item "${SRC}\lib\cbor.lib" "${DEST}"
36 	Copy-Item "${SRC}\bin\zlib1.dll" "${DEST}"
37 	Copy-Item "${SRC}\lib\zlib1.lib" "${DEST}"
38 	Copy-Item "${SRC}\bin\${CRYPTO_LIBRARIES}.dll" "${DEST}"
39 	Copy-Item "${SRC}\lib\${CRYPTO_LIBRARIES}.lib" "${DEST}"
40 	Copy-Item "${SRC}\bin\fido2.dll" "${DEST}"
41 	Copy-Item "${SRC}\lib\fido2.lib" "${DEST}"
42 }
43 
44 Function Package-Static(${SRC}, ${DEST}) {
45 	Copy-Item "${SRC}/lib/cbor.lib" "${DEST}"
46 	Copy-Item "${SRC}/lib/zlib1.lib" "${DEST}"
47 	Copy-Item "${SRC}/lib/${CRYPTO_LIBRARIES}.lib" "${DEST}"
48 	Copy-Item "${SRC}/lib/fido2_static.lib" "${DEST}/fido2.lib"
49 }
50 
51 Function Package-PDBs(${SRC}, ${DEST}) {
52 	Copy-Item "${SRC}\${LIBRESSL}\crypto\crypto_obj.dir\${Config}\crypto_obj.pdb" `
53 	    "${DEST}\${CRYPTO_LIBRARIES}.pdb"
54 	Copy-Item "${SRC}\${LIBCBOR}\src\cbor.dir\${Config}\vc${SDK}.pdb" `
55 	    "${DEST}\cbor.pdb"
56 	Copy-Item "${SRC}\${ZLIB}\zlib.dir\${Config}\vc${SDK}.pdb" `
57 	    "${DEST}\zlib1.pdb"
58 	Copy-Item "${SRC}\src\fido2_shared.dir\${Config}\vc${SDK}.pdb" `
59 	    "${DEST}\fido2.pdb"
60 }
61 
62 Function Package-StaticPDBs(${SRC}, ${DEST}) {
63 	Copy-Item "${SRC}\${LIBRESSL}\crypto\crypto_obj.dir\${Config}\crypto_obj.pdb" `
64 	    "${DEST}\${CRYPTO_LIBRARIES}.pdb"
65 	Copy-Item "${SRC}\${LIBCBOR}\src\${Config}\cbor.pdb" `
66 	    "${DEST}\cbor.pdb"
67 	Copy-Item "${SRC}\${ZLIB}\${Config}\zlibstatic.pdb" `
68 	    "${DEST}\zlib1.pdb"
69 	Copy-Item "${SRC}\src\${Config}\fido2_static.pdb" `
70 	    "${DEST}\fido2.pdb"
71 }
72 
73 Function Package-Tools(${SRC}, ${DEST}) {
74 	Copy-Item "${SRC}\tools\${Config}\fido2-assert.exe" `
75 	    "${DEST}\fido2-assert.exe"
76 	Copy-Item "${SRC}\tools\${Config}\fido2-cred.exe" `
77 	    "${DEST}\fido2-cred.exe"
78 	Copy-Item "${SRC}\tools\${Config}\fido2-token.exe" `
79 	    "${DEST}\fido2-token.exe"
80 }
81 
82 Package-Headers
83 
84 for ($i = 0; $i -lt $Architectures.Length; $i++) {
85 	$Arch = $Architectures[$i]
86 	$InstallPrefix = $InstallPrefixes[$i]
87 	Package-Dynamic "${OUTPUT}\${Arch}\dynamic" `
88 	    "${OUTPUT}\pkg\${InstallPrefix}\${Config}\v${SDK}\dynamic"
89 	Package-PDBs "${BUILD}\${Arch}\dynamic" `
90 	    "${OUTPUT}\pkg\${InstallPrefix}\${Config}\v${SDK}\dynamic"
91 	Package-Tools "${BUILD}\${Arch}\dynamic" `
92 	    "${OUTPUT}\pkg\${InstallPrefix}\${Config}\v${SDK}\dynamic"
93 	Package-Static "${OUTPUT}\${Arch}\static" `
94 	    "${OUTPUT}\pkg\${InstallPrefix}\${Config}\v${SDK}\static"
95 	Package-StaticPDBs "${BUILD}\${Arch}\static" `
96 	    "${OUTPUT}\pkg\${InstallPrefix}\${Config}\v${SDK}\static"
97 }
98