diff options
| author | Álvaro Fernández Rojas | 2025-11-14 11:15:13 +0000 |
|---|---|---|
| committer | Álvaro Fernández Rojas | 2025-11-14 11:15:13 +0000 |
| commit | 8022b2e4d01094bf8ebc09f626478c855b89142e (patch) | |
| tree | 4306ba1886cfc83f7cf8e95264625b3724580e03 | |
| parent | e1ab90c510ce89228488607b9f8f383c21f9adc6 (diff) | |
| download | uci-8022b2e4d01094bf8ebc09f626478c855b89142e.tar.gz | |
uci: add a simple build script
Should make it a little bit easier for people who want to contribute to
uci.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
| -rw-r--r-- | .gitignore | 2 | ||||
| -rwxr-xr-x | scripts/devel-build.sh | 83 |
2 files changed, 84 insertions, 1 deletions
@@ -7,8 +7,8 @@ CMakeFiles *.so *.dylib *.pyc +build install_manifest.txt - uci uci_config.h tests/shunit2/save diff --git a/scripts/devel-build.sh b/scripts/devel-build.sh new file mode 100755 index 0000000..6dfc791 --- /dev/null +++ b/scripts/devel-build.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +set -euxo pipefail +cd "${0%/*}" +cd .. + +# Sanity checks +if [ ! -e "CMakeLists.txt" ] || [ ! -e "libuci.c" ]; then + echo "uci checkout not found" >&2 + exit 1 +fi + +if [ $# -eq 0 ]; then + BUILD_ARGS="-DBUILD_LUA=ON -DUNIT_TESTING=ON" +else + BUILD_ARGS="$@" +fi + +# Create build dirs +UCIDIR="$(pwd)" +BUILDDIR="${UCIDIR}/build" +DEPSDIR="${BUILDDIR}/depends" +[ -e "${BUILDDIR}" ] || mkdir "${BUILDDIR}" +[ -e "${DEPSDIR}" ] || mkdir "${DEPSDIR}" + +# Download deps +cd "${DEPSDIR}" +[ -e "json-c" ] || git clone https://github.com/json-c/json-c.git +[ -e "libubox" ] || git clone https://github.com/openwrt/libubox.git +if [ ! -e "lua" ]; then + mkdir -p lua + wget -qO- https://www.lua.org/ftp/lua-5.1.5.tar.gz | \ + tar zxvf - -C lua --strip-components=1 + sed -i '/#define LUA_USE_READLINE/d' ./lua/src/luaconf.h + sed -i 's/ -lreadline -lhistory -lncurses//g' ./lua/src/Makefile +fi + +# Build lua +cd "${DEPSDIR}/lua" +make linux install \ + INSTALL_TOP="${BUILDDIR}" + +# Build json-c +cd "${DEPSDIR}/json-c" +cmake \ + -S . \ + -B . \ + -DCMAKE_PREFIX_PATH="${BUILDDIR}" \ + -DBUILD_SHARED_LIBS=OFF \ + -DDISABLE_EXTRA_LIBS=ON \ + -DBUILD_TESTING=OFF \ + --install-prefix "${BUILDDIR}" +make +make install + +# Build libubox +cd "${DEPSDIR}/libubox" +cmake \ + -S . \ + -B . \ + -DCMAKE_PREFIX_PATH="${BUILDDIR}" \ + -DBUILD_LUA=ON \ + -DBUILD_EXAMPLES=OFF \ + -DLUAPATH=${BUILDDIR}/lib/lua \ + --install-prefix "${BUILDDIR}" +make +make install + +# Build uci +cd "${UCIDIR}" +cmake \ + -S . \ + -B "${BUILDDIR}" \ + -DCMAKE_PREFIX_PATH="${BUILDDIR}" \ + -DLUAPATH=${BUILDDIR}/lib/lua \ + ${BUILD_ARGS} +make -C "${BUILDDIR}" all test CTEST_OUTPUT_ON_FAILURE=1 + +set +x +echo "✅ Success - the uci library is available at ${BUILDDIR}" +echo "👷 You can rebuild uci by running 'make -C build'" + +exit 0 |