1 # SPDX-License-Identifier: GPL-2.0-or-later
3 # Copyright (C) 2020 by Tarek BOUCHKATI <tarek.bouchkati@gmail.com>
11 runs-on: [ubuntu-18.04]
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
20 - name: Prepare libusb1
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 "::set-env name=LIBUSB1_SRC::$PWD/libusb-${LIBUSB1_VER}"
28 - name: Prepare hidapi
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}
37 echo "::set-env name=HIDAPI_SRC::$PWD"
38 - name: Prepare libftdi
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 "::set-env name=LIBFTDI_SRC::$PWD/libftdi1-${LIBFTDI_VER}"
46 - name: Prepare capstone
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
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"
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
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"
81 echo "::set-env name=ARTIFACT_NAME::$ARTIFACT"
82 echo "::set-env name=ARTIFACT_PATH::$PWD/$ARTIFACT"
83 - name: Publish OpenOCD packaged for windows
84 uses: actions/upload-artifact@v1
86 name: ${{ env.ARTIFACT_NAME }}
87 path: ${{ env.ARTIFACT_PATH }}
88 - name: Get the upload URL for a release
90 if: startsWith(github.ref, 'refs/tags/')
91 uses: bruceadams/get-release@v1.2.0
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
98 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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