# Copyright (C) The c-ares project and its contributors # SPDX-License-Identifier: MIT name: QNX on: push: concurrency: group: ${{ github.ref }}-qnx cancel-in-progress: true env: CC: qcc CXX: q++ CFLAGS: "-V gcc_ntox86_64" CXXFLAGS: "-V gcc_ntox86_64" CPUVARDIR: "x86_64" jobs: build: runs-on: ubuntu-latest name: "QNX" steps: - name: Install packages uses: awalsh128/cache-apt-pkgs-action@latest with: packages: cmake ninja-build autoconf automake libtool version: 1.0 # Logic for intalling SDP taken right out of https://github.com/qnx-ports/build-files/blob/main/.github/workflows/c-ares.yml - name: Download SDP 8.0 env: QNX_LICENSE_KEY: ${{ secrets.QNX_LICENSE_KEY }} QNX_USER: ${{ secrets.QNX_USER }} QNX_PASSWORD: ${{ secrets.QNX_PASSWORD }} run: | [ -z "${QNX_USER}" -o -z "${QNX_PASSWORD}" -o -z "${QNX_LICENSE_KEY}" ] && echo "Must set QNX_USER, QNX_PASSWORD, and QNX_LICENSE_KEY" && /bin/false echo "Downloading QNX Software Center ..." mkdir ${{ github.workspace }}/.qnx curl --cookie-jar ${{ github.workspace }}/.qnx/myqnxcookies.auth --form "userlogin=$QNX_USER" --form "password=$QNX_PASSWORD" -X POST https://www.qnx.com/account/login.html > login_response.html curl -L --cookie ${{ github.workspace }}/.qnx/myqnxcookies.auth https://www.qnx.com/download/download/77351/qnx-setup-2.0.3-202408131717-linux.run > qnx-setup-lin.run chmod a+x qnx-setup-lin.run ./qnx-setup-lin.run force-override disable-auto-start agree-to-license-terms ${{ github.workspace }}/qnxinstall echo "Installing License ..." ${{ github.workspace }}/qnxinstall/qnxsoftwarecenter/qnxsoftwarecenter_clt -syncLicenseKeys -myqnx.user="$QNX_USER" -myqnx.password="$QNX_PASSWORD" -addLicenseKey $QNX_LICENSE_KEY cp -r ~/.qnx/license ${{ github.workspace }}/.qnx echo "Downloading QNX SDP ..." ${{ github.workspace }}/qnxinstall/qnxsoftwarecenter/qnxsoftwarecenter_clt -mirror -cleanInstall -destination ${{ github.workspace }}/qnx800 -installBaseline com.qnx.qnx800 -myqnx.user="$QNX_USER" -myqnx.password="$QNX_PASSWORD" - name: Checkout qnx-ports build-files uses: actions/checkout@v4 with: repository: qnx-ports/build-files path: build-files - name: Checkout qnx-ports googletest uses: actions/checkout@v4 with: repository: qnx-ports/googletest path: googletest - name: Build googletest run: | source "${{ github.workspace }}/qnx800/qnxsdp-env.sh" PREFIX="/usr" BUILD_TESTING="OFF" QNX_PROJECT_ROOT="$(pwd)/googletest" make -C build-files/ports/googletest install -j$(nproc) - name: Checkout c-ares uses: actions/checkout@v4 with: path: c-ares - name: Set CMAKE_FIND_ROOT_PATH run: | source "${{ github.workspace }}/qnx800/qnxsdp-env.sh" echo "QNX_TARGET=${QNX_TARGET}" >> $GITHUB_ENV echo "CMAKE_FIND_ROOT_PATH=${QNX_TARGET};${QNX_TARGET}/${CPUVARDIR}" >> $GITHUB_ENV - name: "CMake: build c-ares" env: BUILD_TYPE: CMAKE CMAKE_FLAGS: "-DCMAKE_BUILD_TYPE=DEBUG -DCARES_STATIC=ON -DCARES_STATIC_PIC=ON -DCARES_BUILD_TESTS=ON -G Ninja -DCMAKE_SYSTEM_NAME=QNX -DCMAKE_FIND_ROOT_PATH=${{ env.CMAKE_FIND_ROOT_PATH }} -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY" run: | source "${{ github.workspace }}/qnx800/qnxsdp-env.sh" cd c-ares ./ci/build.sh - name: "Autotools: build c-ares" env: BUILD_TYPE: autotools PKG_CONFIG_PATH: "${{ env.QNX_TARGET }}/${{ env.CPUVARDIR }}/usr/lib/pkgconfig" CONFIG_OPTS: "--host=x86_64-unknown-nto-qnx8.0.0 --enable-tests-crossbuild" run: | source "${{ github.workspace }}/qnx800/qnxsdp-env.sh" cd c-ares ./ci/build.sh