You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

112 lines
4.6 KiB

  1. # SPDX-License-Identifier: GPL-2.0-or-later
  2. # Copyright (C) 2020 by Tarek BOUCHKATI <tarek.bouchkati@gmail.com>
  3. on: push
  4. name: OpenOCD Snapshot
  5. jobs:
  6. package:
  7. runs-on: [ubuntu-18.04]
  8. env:
  9. DL_DIR: ../downloads
  10. BUILD_DIR: ../build
  11. steps:
  12. - name: Install needed packages
  13. run: |
  14. sudo apt-get update
  15. sudo apt-get install autotools-dev autoconf automake libtool pkg-config cmake texinfo texlive g++-mingw-w64-i686
  16. - name: Checkout Code
  17. uses: actions/checkout@v1
  18. - run: ./bootstrap
  19. - name: Prepare libusb1
  20. env:
  21. LIBUSB1_VER: 1.0.24
  22. run: |
  23. mkdir -p $DL_DIR && cd $DL_DIR
  24. wget "https://github.com/libusb/libusb/releases/download/v${LIBUSB1_VER}/libusb-${LIBUSB1_VER}.tar.bz2"
  25. tar -xjf libusb-${LIBUSB1_VER}.tar.bz2
  26. echo "LIBUSB1_SRC=$PWD/libusb-${LIBUSB1_VER}" >> $GITHUB_ENV
  27. - name: Prepare hidapi
  28. env:
  29. HIDAPI_VER: 0.10.1
  30. run: |
  31. mkdir -p $DL_DIR && cd $DL_DIR
  32. wget "https://github.com/libusb/hidapi/archive/hidapi-${HIDAPI_VER}.tar.gz"
  33. tar -xzf hidapi-${HIDAPI_VER}.tar.gz
  34. cd hidapi-hidapi-${HIDAPI_VER}
  35. ./bootstrap
  36. echo "HIDAPI_SRC=$PWD" >> $GITHUB_ENV
  37. - name: Prepare libftdi
  38. env:
  39. LIBFTDI_VER: 1.5
  40. run: |
  41. mkdir -p $DL_DIR && cd $DL_DIR
  42. wget "http://www.intra2net.com/en/developer/libftdi/download/libftdi1-${LIBFTDI_VER}.tar.bz2"
  43. tar -xjf libftdi1-${LIBFTDI_VER}.tar.bz2
  44. echo "LIBFTDI_SRC=$PWD/libftdi1-${LIBFTDI_VER}" >> $GITHUB_ENV
  45. - name: Prepare capstone
  46. env:
  47. CAPSTONE_VER: 4.0.2
  48. run: |
  49. mkdir -p $DL_DIR && cd $DL_DIR
  50. CAPSTONE_NAME=${CAPSTONE_VER}
  51. CAPSTONE_FOLDER=capstone-${CAPSTONE_VER}
  52. wget "https://github.com/aquynh/capstone/archive/${CAPSTONE_VER}.tar.gz"
  53. tar -xzf ${CAPSTONE_VER}.tar.gz
  54. echo "CAPSTONE_SRC=$PWD/capstone-${CAPSTONE_VER}" >> $GITHUB_ENV
  55. - name: Package OpenOCD for windows
  56. env:
  57. MAKE_JOBS: 2
  58. HOST: i686-w64-mingw32
  59. LIBUSB1_CONFIG: --enable-shared --enable-static
  60. HIDAPI_CONFIG: --enable-shared --disable-static --disable-testgui
  61. LIBFTDI_CONFIG: "-DCMAKE_TOOLCHAIN_FILE='${{ env.LIBFTDI_SRC }}/cmake/Toolchain-i686-w64-mingw32.cmake' -DBUILD_TESTS:BOOL=off -DFTDIPP:BOOL=off -DPYTHON_BINDINGS:BOOL=off -DEXAMPLES:BOOL=off -DDOCUMENTATION:BOOL=off -DFTDI_EEPROM:BOOL=off"
  62. CAPSTONE_CONFIG: "CAPSTONE_BUILD_CORE_ONLY=yes CAPSTONE_STATIC=yes CAPSTONE_SHARED=no"
  63. run: |
  64. # check if there is tag pointing at HEAD, otherwise take the HEAD SHA-1 as OPENOCD_TAG
  65. OPENOCD_TAG="`git tag --points-at HEAD`"
  66. [ -z $OPENOCD_TAG ] && OPENOCD_TAG="`git rev-parse --short HEAD`"
  67. # check if there is tag pointing at HEAD, if so the release will have the same name as the tag,
  68. # otherwise it will be named 'latest'
  69. RELEASE_NAME="`git tag --points-at HEAD`"
  70. [ -z $RELEASE_NAME ] && RELEASE_NAME="latest"
  71. [[ $RELEASE_NAME = "latest" ]] && IS_PRE_RELEASE="true" || IS_PRE_RELEASE="false"
  72. # set env and call cross-build.sh
  73. export OPENOCD_TAG=$OPENOCD_TAG
  74. export OPENOCD_SRC=$PWD
  75. export OPENOCD_CONFIG=""
  76. mkdir -p $BUILD_DIR && cd $BUILD_DIR
  77. bash $OPENOCD_SRC/contrib/cross-build.sh $HOST
  78. # add missing dlls
  79. cd $HOST-root/usr
  80. cp `$HOST-gcc --print-file-name=libwinpthread-1.dll` ./bin/
  81. cp `$HOST-gcc --print-file-name=libgcc_s_sjlj-1.dll` ./bin/
  82. # prepare the artifact
  83. ARTIFACT="openocd-${OPENOCD_TAG}-${HOST}.tar.gz"
  84. tar -czf $ARTIFACT *
  85. echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV
  86. echo "IS_PRE_RELEASE=$IS_PRE_RELEASE" >> $GITHUB_ENV
  87. echo "ARTIFACT_PATH=$PWD/$ARTIFACT" >> $GITHUB_ENV
  88. - name: Publish OpenOCD packaged for windows
  89. uses: actions/upload-artifact@v2
  90. with:
  91. path: ${{ env.ARTIFACT_PATH }}
  92. - name: Delete 'latest' Release
  93. uses: dev-drprasad/delete-tag-and-release@v0.2.0
  94. with:
  95. delete_release: true
  96. tag_name: ${{ env.RELEASE_NAME }}
  97. env:
  98. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  99. - name: Create Release
  100. uses: ncipollo/release-action@v1
  101. with:
  102. tag: ${{ env.RELEASE_NAME }}
  103. commit: ${{ github.sha }}
  104. draft: false
  105. artifacts: ${{ env.ARTIFACT_PATH }}
  106. prerelease: ${{ env.IS_PRE_RELEASE }}
  107. token: ${{ secrets.GITHUB_TOKEN }}