summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas2025-11-14 11:15:13 +0000
committerÁlvaro Fernández Rojas2025-11-14 11:15:13 +0000
commit8022b2e4d01094bf8ebc09f626478c855b89142e (patch)
tree4306ba1886cfc83f7cf8e95264625b3724580e03
parente1ab90c510ce89228488607b9f8f383c21f9adc6 (diff)
downloaduci-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--.gitignore2
-rwxr-xr-xscripts/devel-build.sh83
2 files changed, 84 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 8d2927f..96053ac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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