diff options
Diffstat (limited to 'examples/redis-unstable/modules/Makefile')
| -rw-r--r-- | examples/redis-unstable/modules/Makefile | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/examples/redis-unstable/modules/Makefile b/examples/redis-unstable/modules/Makefile new file mode 100644 index 0000000..11fcdc3 --- /dev/null +++ b/examples/redis-unstable/modules/Makefile @@ -0,0 +1,90 @@ + +SUBDIRS = redisjson redistimeseries redisbloom redisearch + +define submake + for dir in $(SUBDIRS); do $(MAKE) -C $$dir $(1); done +endef + +all: prepare_source + $(call submake,$@) + +get_source: + $(call submake,$@) + +prepare_source: get_source handle-werrors setup_environment + +clean: + $(call submake,$@) + +distclean: clean_environment + $(call submake,$@) + +pristine: + $(call submake,$@) + +install: + $(call submake,$@) + +setup_environment: install-rust handle-werrors + +clean_environment: uninstall-rust + +# Keep all of the Rust stuff in one place +install-rust: +ifeq ($(INSTALL_RUST_TOOLCHAIN),yes) + @RUST_VERSION=1.92.0; \ + ARCH="$$(uname -m)"; \ + if ldd --version 2>&1 | grep -q musl; then LIBC_TYPE="musl"; else LIBC_TYPE="gnu"; fi; \ + echo "Detected architecture: $${ARCH} and libc: $${LIBC_TYPE}"; \ + case "$${ARCH}" in \ + 'x86_64') \ + if [ "$${LIBC_TYPE}" = "musl" ]; then \ + RUST_INSTALLER="rust-$${RUST_VERSION}-x86_64-unknown-linux-musl"; \ + RUST_SHA256="e9b977ef480504d3beef0a095b470945af79e8496bcbb0e4a9d4601d6d72dd91"; \ + else \ + RUST_INSTALLER="rust-$${RUST_VERSION}-x86_64-unknown-linux-gnu"; \ + RUST_SHA256="d2ccef59dd9f7439f2c694948069f789a044dc1addcc0803613232af8f88ee0c"; \ + fi ;; \ + 'aarch64') \ + if [ "$${LIBC_TYPE}" = "musl" ]; then \ + RUST_INSTALLER="rust-$${RUST_VERSION}-aarch64-unknown-linux-musl"; \ + RUST_SHA256="0c35fca319d01c3d55345d44dbe66c987858c45e262a77c4db679e9869b0af73"; \ + else \ + RUST_INSTALLER="rust-$${RUST_VERSION}-aarch64-unknown-linux-gnu"; \ + RUST_SHA256="3e383f8b4fca710d0600d0c1de97b78281672be2cda6575ecbe1c183a12e3822"; \ + fi ;; \ + *) echo >&2 "Unsupported architecture: '$${ARCH}'"; exit 1 ;; \ + esac; \ + echo "Downloading and installing Rust standalone installer: $${RUST_INSTALLER}"; \ + wget --quiet -O $${RUST_INSTALLER}.tar.xz https://static.rust-lang.org/dist/$${RUST_INSTALLER}.tar.xz; \ + echo "$${RUST_SHA256} $${RUST_INSTALLER}.tar.xz" | sha256sum -c --quiet || { echo "Rust standalone installer checksum failed!"; exit 1; }; \ + tar -xf $${RUST_INSTALLER}.tar.xz; \ + (cd $${RUST_INSTALLER} && ./install.sh); \ + rm -rf $${RUST_INSTALLER} +endif + +uninstall-rust: +ifeq ($(INSTALL_RUST_TOOLCHAIN),yes) + @if [ -x "/usr/local/lib/rustlib/uninstall.sh" ]; then \ + echo "Uninstalling Rust using uninstall.sh script"; \ + rm -rf ~/.cargo; \ + /usr/local/lib/rustlib/uninstall.sh; \ + else \ + echo "WARNING: Rust toolchain not found or uninstall script is missing."; \ + fi +endif + +handle-werrors: get_source +ifeq ($(DISABLE_WERRORS),yes) + @echo "Disabling -Werror for all modules" + @for dir in $(SUBDIRS); do \ + echo "Processing $$dir"; \ + find $$dir/src -type f \ + \( -name "Makefile" \ + -o -name "*.mk" \ + -o -name "CMakeLists.txt" \) \ + -exec sed -i 's/-Werror//g' {} +; \ + done +endif + +.PHONY: all clean distclean install $(SUBDIRS) setup_environment clean_environment install-rust uninstall-rust handle-werrors |
