e9a95ffb5dca9f6f5850333b22f8bd281a9f5580
[fw/openocd] / .github / workflows / snapshot.yml
1 # SPDX-License-Identifier: GPL-2.0-or-later
2
3 # Copyright (C) 2020 by Tarek BOUCHKATI <tarek.bouchkati@gmail.com>
4
5 on: push
6
7 name: OpenOCD Snapshot
8
9 jobs:
10   package:
11     runs-on: [ubuntu-18.04]
12     env:
13       DL_DIR: ../downloads
14       BUILD_DIR: ../build
15     steps:
16       - name: Install needed packages
17         run: sudo apt-get install autotools-dev autoconf automake libtool pkg-config cmake texinfo texlive g++-mingw-w64-i686
18       - uses: actions/checkout@v1
19       - run: ./bootstrap
20       - name: Prepare libusb1
21         env:
22           LIBUSB1_VER: 1.0.23
23         run: |
24           mkdir -p $DL_DIR && cd $DL_DIR
25           wget "https://github.com/libusb/libusb/releases/download/v${LIBUSB1_VER}/libusb-${LIBUSB1_VER}.tar.bz2"
26           tar -xjf libusb-${LIBUSB1_VER}.tar.bz2
27           echo "LIBUSB1_SRC=$PWD/libusb-${LIBUSB1_VER}" >> $GITHUB_ENV
28       - name: Prepare hidapi
29         env:
30           HIDAPI_VER: 0.9.0
31         run: |
32           mkdir -p $DL_DIR && cd $DL_DIR
33           wget "https://github.com/libusb/hidapi/archive/hidapi-${HIDAPI_VER}.tar.gz"
34           tar -xzf hidapi-${HIDAPI_VER}.tar.gz
35           cd hidapi-hidapi-${HIDAPI_VER}
36           ./bootstrap
37           echo "HIDAPI_SRC=$PWD" >> $GITHUB_ENV
38       - name: Prepare libftdi
39         env:
40           LIBFTDI_VER: 1.4
41         run: |
42           mkdir -p $DL_DIR && cd $DL_DIR
43           wget "http://www.intra2net.com/en/developer/libftdi/download/libftdi1-${LIBFTDI_VER}.tar.bz2"
44           tar -xjf libftdi1-${LIBFTDI_VER}.tar.bz2
45           echo "LIBFTDI_SRC=$PWD/libftdi1-${LIBFTDI_VER}" >> $GITHUB_ENV
46       - name: Prepare capstone
47         env:
48           CAPSTONE_VER: 4.0.2
49         run: |
50           mkdir -p $DL_DIR && cd $DL_DIR
51           CAPSTONE_NAME=${CAPSTONE_VER}
52           CAPSTONE_FOLDER=capstone-${CAPSTONE_VER}
53           wget "https://github.com/aquynh/capstone/archive/${CAPSTONE_VER}.tar.gz"
54           tar -xzf ${CAPSTONE_VER}.tar.gz
55           echo "CAPSTONE_SRC=$PWD/capstone-${CAPSTONE_VER}" >> $GITHUB_ENV
56       - name: Package OpenOCD for windows
57         env:
58           MAKE_JOBS: 2
59           HOST: i686-w64-mingw32
60           LIBUSB1_CONFIG: --enable-shared --enable-static
61           HIDAPI_CONFIG: --enable-shared --disable-static --disable-testgui
62           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"
63           CAPSTONE_CONFIG: "CAPSTONE_BUILD_CORE_ONLY=yes CAPSTONE_STATIC=yes CAPSTONE_SHARED=no"
64         run: |
65           # set snapshot tag
66           OPENOCD_TAG="`git tag --points-at HEAD`"
67           [ -z $OPENOCD_TAG ] && OPENOCD_TAG="`git rev-parse --short HEAD`"
68           # set env and call cross-build.sh
69           export OPENOCD_TAG=$OPENOCD_TAG
70           export OPENOCD_SRC=$PWD
71           export OPENOCD_CONFIG=""
72           mkdir -p $BUILD_DIR &&  cd $BUILD_DIR
73           bash $OPENOCD_SRC/contrib/cross-build.sh $HOST
74           # add missing dlls
75           cd $HOST-root/usr
76           cp `$HOST-gcc --print-file-name=libwinpthread-1.dll` ./bin/
77           cp `$HOST-gcc --print-file-name=libgcc_s_sjlj-1.dll` ./bin/
78           # prepare the artifact
79           ARTIFACT="openocd-${OPENOCD_TAG}-${HOST}.tar.gz"
80           tar -czf $ARTIFACT *
81           echo "ARTIFACT_NAME=$ARTIFACT" >> $GITHUB_ENV
82           echo "ARTIFACT_PATH=$PWD/$ARTIFACT" >> $GITHUB_ENV
83       - name: Publish OpenOCD packaged for windows
84         uses: actions/upload-artifact@v1
85         with:
86           name: ${{ env.ARTIFACT_NAME }}
87           path: ${{ env.ARTIFACT_PATH }}
88       - name: Get the upload URL for a release
89         id: get_release
90         if: startsWith(github.ref, 'refs/tags/')
91         uses: bruceadams/get-release@v1.2.0
92         env:
93           GITHUB_TOKEN: ${{ github.token }}
94       - name: Release OpenOCD packaged for windows
95         if: startsWith(github.ref, 'refs/tags/')
96         uses: actions/upload-release-asset@v1
97         env:
98           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
99         with:
100           upload_url: ${{ steps.get_release.outputs.upload_url }}
101           asset_path: ${{ env.ARTIFACT_PATH }}
102           asset_name: ${{ env.ARTIFACT_NAME }}
103           asset_content_type: application/gzip