From ee6d4a82bbebe6f6683e57fd0f84c5faf984ddcc Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Sun, 12 Oct 2025 22:00:18 +0200 Subject: [PATCH] github: add CI build MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Add Github CI supporting different architectures and odhcp6c build options. Signed-off-by: Álvaro Fernández Rojas --- .github/workflows/ci.yml | 94 ++++++++++++++++++++++++++++++++++++++++ CMakeLists.txt | 3 +- 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..24e721e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,94 @@ +name: odhcp6c + +on: + pull_request: + push: + +jobs: + build: + name: Build ${{ matrix.arch }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - arch: aarch64 + gcc: /usr/bin/aarch64-linux-gnu-gcc + packages: gcc-aarch64-linux-gnu + - arch: arm + gcc: /usr/bin/arm-linux-gnueabi-gcc + packages: gcc-arm-linux-gnueabi + - arch: mips + gcc: /usr/bin/mips-linux-gnu-gcc + packages: gcc-mips-linux-gnu + - arch: x86_64 + gcc: /usr/bin/x86_64-linux-gnu-gcc + packages: gcc-x86-64-linux-gnu + + steps: + - name: Checkout odhcp6c + uses: actions/checkout@v5 + + - name: Checkout json-c + uses: actions/checkout@v5 + with: + repository: json-c/json-c + path: depends/json-c + + - name: Checkout libubox + uses: actions/checkout@v5 + with: + repository: openwrt/libubox + path: depends/libubox + + - name: Install dependencies + run: | + sudo apt install ${{ matrix.packages }} + + - name: Prepare build + run: | + mkdir -p ${GITHUB_WORKSPACE}/build + + - name: Build json-c + working-directory: depends/json-c + run: | + cmake \ + -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \ + -DCMAKE_C_COMPILER=${{ matrix.gcc }} \ + -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \ + -DBUILD_SHARED_LIBS=OFF -DDISABLE_EXTRA_LIBS=ON \ + --install-prefix ${GITHUB_WORKSPACE}/build + make + make install + + - name: Build libubox + working-directory: depends/libubox + run: | + cmake \ + -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \ + -DCMAKE_C_COMPILER=${{ matrix.gcc }} \ + -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \ + -DBUILD_LUA=OFF -DBUILD_EXAMPLES=OFF \ + --install-prefix ${GITHUB_WORKSPACE}/build + make + make install + + - name: Build odhcp6c (w/o libubox) + run: | + cmake \ + -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \ + -DCMAKE_C_COMPILER=${{ matrix.gcc }} \ + -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \ + -D USE_LIBUBOX=OFF \ + -B build/odhcp6c-without-libubox + make -C build/odhcp6c-without-libubox + + - name: Build odhcp6c (with libubox) + run: | + cmake \ + -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} \ + -DCMAKE_C_COMPILER=${{ matrix.gcc }} \ + -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \ + -DUSE_LIBUBOX=ON \ + -B build/odhcp6c-with-libubox + make -C build/odhcp6c-with-libubox diff --git a/CMakeLists.txt b/CMakeLists.txt index 89dbdd9..1e13d2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,8 @@ set(LIBRARIES resolv) if(USE_LIBUBOX) add_definitions(-DUSE_LIBUBOX) - set(LIBRARIES ${LIBRARIES} ubox) + find_library(libubox ubox) + set(LIBRARIES ${LIBRARIES} ${libubox}) FIND_PATH(ubox_include_dir libubox/md5.h) INCLUDE_DIRECTORIES(${ubox_include_dir}) else() -- 2.30.2