action.yml 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. name: 'Setup libusb for MSVC'
  2. description: 'Download libusb sdk for MSVC, and set output/environment variables'
  3. inputs:
  4. version:
  5. description: 'libusb version'
  6. required: true
  7. default: '1.0.27'
  8. arch:
  9. description: "libusb architecture (x86 or x64)"
  10. rqeuired: true
  11. outputs:
  12. root:
  13. description: "libusb root directory"
  14. value: ${{ steps.final.outputs.root }}
  15. runs:
  16. using: 'composite'
  17. steps:
  18. - name: 'Restore cached libusb-${{ inputs.version }}.7z'
  19. id: cache-restore
  20. uses: actions/cache/restore@v4
  21. with:
  22. path: 'C:\temp\libusb-${{ inputs.version }}.7z'
  23. key: libusb-msvc-${{ inputs.version }}
  24. - name: 'Download libusb ${{ inputs.version }}'
  25. if: ${{ !steps.cache-restore.outputs.cache-hit }}
  26. shell: pwsh
  27. run: |
  28. Invoke-WebRequest "https://github.com/libusb/libusb/releases/download/v${{ inputs.version }}/libusb-${{ inputs.version }}.7z" -OutFile "C:\temp\libusb-${{ inputs.version }}.7z"
  29. - name: 'Cache libusb-${{ inputs.version }}.7z'
  30. if: ${{ !steps.cache-restore.outputs.cache-hit }}
  31. uses: actions/cache/save@v4
  32. with:
  33. path: 'C:\temp\libusb-${{ inputs.version }}.7z'
  34. key: libusb-msvc-${{ inputs.version }}
  35. - name: 'Extract libusb'
  36. shell: pwsh
  37. run: |
  38. 7z "-oC:\temp\libusb-${{ inputs.version }}" x "C:\temp\libusb-${{ inputs.version }}.7z"
  39. - name: 'Set output vars'
  40. id: final
  41. shell: pwsh
  42. run: |
  43. if ('${{ inputs.arch }}' -eq 'x86') {
  44. $archdir = "MS32";
  45. } elseif ('${{ inputs.arch }}' -eq 'x64') {
  46. $archdir = "MS64";
  47. } else {
  48. write-host "Invalid arch=${{ inputs.arch }}"
  49. exit 1
  50. }
  51. $libusb_incdir = "C:\temp\libusb-${{ inputs.version }}\include";
  52. $libusb_libdir = "C:\temp\libusb-${{ inputs.version }}\VS2022\${archdir}\dll";
  53. $libusb_header = "${libusb_incdir}\libusb.h";
  54. $libusb_implib = "${libusb_libdir}\libusb-1.0.lib";
  55. $libusb_dll = "${libusb_libdir}\libusb-1.0.dll";
  56. if (!(Test-Path "${libusb_header}")) {
  57. write-host "${libusb_header} does not exist!"
  58. exit 1
  59. }
  60. if (!(Test-Path "${libusb_implib}")){
  61. write-host "${libusb_implib} does not exist!"
  62. exit 1
  63. }
  64. if (!(Test-Path "${libusb_dll}")) {
  65. write-host "${libusb_dll} does not exist!"
  66. exit 1
  67. }
  68. echo "root=${libusb_incdir};${libusb_libdir}" >> $env:GITHUB_OUTPUT
  69. echo "LibUSB_ROOT=${libusb_incdir};${libusb_libdir}" >> $env:GITHUB_ENV