1 # SPDX-License-Identifier: GPL-2.0-or-later
3 # Copyright (C) 2020 by Tarek BOUCHKATI <tarek.bouchkati@gmail.com>
11 runs-on: [ubuntu-20.04]
16 - name: Install needed packages
19 sudo apt-get install autotools-dev autoconf automake libtool pkg-config cmake texinfo texlive g++-mingw-w64-i686
21 uses: actions/checkout@v1
23 - name: Prepare libusb1
27 mkdir -p $DL_DIR && cd $DL_DIR
28 wget "https://github.com/libusb/libusb/releases/download/v${LIBUSB1_VER}/libusb-${LIBUSB1_VER}.tar.bz2"
29 tar -xjf libusb-${LIBUSB1_VER}.tar.bz2
30 echo "LIBUSB1_SRC=$PWD/libusb-${LIBUSB1_VER}" >> $GITHUB_ENV
31 - name: Prepare hidapi
35 mkdir -p $DL_DIR && cd $DL_DIR
36 wget "https://github.com/libusb/hidapi/archive/hidapi-${HIDAPI_VER}.tar.gz"
37 tar -xzf hidapi-${HIDAPI_VER}.tar.gz
38 cd hidapi-hidapi-${HIDAPI_VER}
40 echo "HIDAPI_SRC=$PWD" >> $GITHUB_ENV
41 - name: Prepare libftdi
45 mkdir -p $DL_DIR && cd $DL_DIR
46 wget "http://www.intra2net.com/en/developer/libftdi/download/libftdi1-${LIBFTDI_VER}.tar.bz2"
47 tar -xjf libftdi1-${LIBFTDI_VER}.tar.bz2
48 echo "LIBFTDI_SRC=$PWD/libftdi1-${LIBFTDI_VER}" >> $GITHUB_ENV
49 - name: Prepare capstone
53 mkdir -p $DL_DIR && cd $DL_DIR
54 CAPSTONE_NAME=${CAPSTONE_VER}
55 CAPSTONE_FOLDER=capstone-${CAPSTONE_VER}
56 wget "https://github.com/aquynh/capstone/archive/${CAPSTONE_VER}.tar.gz"
57 tar -xzf ${CAPSTONE_VER}.tar.gz
58 echo "CAPSTONE_SRC=$PWD/capstone-${CAPSTONE_VER}" >> $GITHUB_ENV
59 - name: Prepare libjaylink
63 mkdir -p $DL_DIR && cd $DL_DIR
64 wget https://gitlab.zapb.de/libjaylink/libjaylink/-/archive/${LIBJAYLINK_VER}/libjaylink-${LIBJAYLINK_VER}.tar.gz
65 tar -xzf libjaylink-${LIBJAYLINK_VER}.tar.gz
66 cd libjaylink-${LIBJAYLINK_VER}
68 echo "LIBJAYLINK_SRC=$PWD" >> $GITHUB_ENV
69 - name: Package OpenOCD for windows
72 HOST: i686-w64-mingw32
73 LIBUSB1_CONFIG: --enable-shared --disable-static
74 HIDAPI_CONFIG: --enable-shared --disable-static --disable-testgui
75 LIBFTDI_CONFIG: -DSTATICLIBS=OFF -DEXAMPLES=OFF -DFTDI_EEPROM=OFF
76 CAPSTONE_CONFIG: "CAPSTONE_BUILD_CORE_ONLY=yes CAPSTONE_STATIC=yes CAPSTONE_SHARED=no"
77 LIBJAYLINK_CONFIG: --enable-shared --disable-static
79 # check if there is tag pointing at HEAD, otherwise take the HEAD SHA-1 as OPENOCD_TAG
80 OPENOCD_TAG="`git tag --points-at HEAD`"
81 [ -z $OPENOCD_TAG ] && OPENOCD_TAG="`git rev-parse --short HEAD`"
82 # check if there is tag pointing at HEAD, if so the release will have the same name as the tag,
83 # otherwise it will be named 'latest'
84 RELEASE_NAME="`git tag --points-at HEAD`"
85 [ -z $RELEASE_NAME ] && RELEASE_NAME="latest"
86 [[ $RELEASE_NAME = "latest" ]] && IS_PRE_RELEASE="true" || IS_PRE_RELEASE="false"
87 # set env and call cross-build.sh
88 export OPENOCD_TAG=$OPENOCD_TAG
89 export OPENOCD_SRC=$PWD
90 export OPENOCD_CONFIG=""
91 mkdir -p $BUILD_DIR && cd $BUILD_DIR
92 bash $OPENOCD_SRC/contrib/cross-build.sh $HOST
95 cp `$HOST-gcc --print-file-name=libwinpthread-1.dll` ./bin/
96 # required by libftdi1.dll. For the gcc-mingw-10.3.x or later "libgcc_s_dw2-1.dll" will need to be copied.
97 cp `$HOST-gcc --print-file-name=libgcc_s_sjlj-1.dll` ./bin/
98 # prepare the artifact
99 ARTIFACT="openocd-${OPENOCD_TAG}-${HOST}.tar.gz"
101 echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV
102 echo "IS_PRE_RELEASE=$IS_PRE_RELEASE" >> $GITHUB_ENV
103 echo "ARTIFACT_PATH=$PWD/$ARTIFACT" >> $GITHUB_ENV
104 - name: Publish OpenOCD packaged for windows
105 uses: actions/upload-artifact@v3
107 path: ${{ env.ARTIFACT_PATH }}
108 - name: Delete 'latest' Release
109 uses: dev-drprasad/delete-tag-and-release@v0.2.1
112 tag_name: ${{ env.RELEASE_NAME }}
114 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
115 - name: Create Release
116 uses: ncipollo/release-action@v1
118 tag: ${{ env.RELEASE_NAME }}
119 commit: ${{ github.sha }}
121 artifacts: ${{ env.ARTIFACT_PATH }}
122 prerelease: ${{ env.IS_PRE_RELEASE }}
123 token: ${{ secrets.GITHUB_TOKEN }}