From 08a1c588c36a31d5c793b1fa3ed42d02c6e6d2f7 Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Mon, 15 Sep 2025 18:58:31 +0200 Subject: [PATCH 1/5] Some tests --- test.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 test.c diff --git a/test.c b/test.c new file mode 100644 index 0000000..bf69dbc --- /dev/null +++ b/test.c @@ -0,0 +1,31 @@ +#include "hash/crc32.h" +#include "hash/djb2.h" +#include +#include +#include + +int main(void) { + assert(crc32("123456789", 9) == 0xCBF43926); + assert(crc32("", 0) == 0x00000000); + assert(crc32("a", 1) == 0xE8B7BE43); + assert(crc32("A", 1) == 0xD3D99E8B); + assert(crc32("hello", 5) == 0x3610A686); + assert(crc32("The quick brown fox jumps over the lazy dog", 43) == 0x414FA339); + assert(crc32("The quick brown fox jumps over the lazy dog.", 44) == 0x519025E9); + + /* Keep in mind the update api requires initialization and finalization */ + uint32_t crc = crc32_init(); + crc = crc32_update_raw(crc, "a", 1); + crc = crc32_finalize(crc); + + assert(crc == crc32("a", 1)); + assert(crc == 0xE8B7BE43); + + assert(djb2("Hello") == 0x000000310D4F2079); + assert(djb2("a") == 0x000000000002B606); + assert(djb2("A") == 0x000000000002B5E6); + assert(djb2("123456789") == 0x0377821035CDBB82); + + printf("All good!\n"); + exit(EXIT_SUCCESS); +} From 41cb395b0db40f00c4ead2d597824c4ddf2ca0d5 Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Mon, 15 Sep 2025 18:58:50 +0200 Subject: [PATCH 2/5] Test target --- Makefile | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 1fd1cd6..2430818 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,12 @@ PREFIX ?= /usr/local INCLUDEDIR = $(PREFIX)/include LIBDIR = $(PREFIX)/lib -all: $(STATIC_LIB) $(SHARED_LIB) +TEST_SRC = test.c +TEST_BIN = test.elf + +all: $(STATIC_LIB) $(SHARED_LIB) $(TEST_BIN) +test: $(TEST_BIN) + ./$< %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ @@ -24,6 +29,9 @@ $(STATIC_LIB): $(OBJS) $(SHARED_LIB): $(OBJS) $(CC) -shared -o $@ $^ +$(TEST_BIN): $(TEST_SRC) $(STATIC_LIB) + $(CC) -Wall -Ihash -o $@ $(TEST_SRC) $(STATIC_LIB) + install: $(STATIC_LIB) $(SHARED_LIB) mkdir -p $(DESTDIR)$(INCLUDEDIR)/hash cp -r hash/*.h $(DESTDIR)$(INCLUDEDIR)/hash/ @@ -37,6 +45,6 @@ uninstall: @echo "Uninstalled libraries from $(DESTDIR)$(LIBDIR) and headers from $(DESTDIR)$(INCLUDEDIR)/hash" clean: - rm -f $(OBJS) $(STATIC_LIB) $(SHARED_LIB) + rm -f $(OBJS) $(STATIC_LIB) $(SHARED_LIB) $(TEST_BIN) -.PHONY: all clean install uninstall +.PHONY: all clean install uninstall test From aca110741895e6fe3522e6e57038f103946ceada Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Mon, 15 Sep 2025 18:59:15 +0200 Subject: [PATCH 3/5] Use install instead of cp, support for DESTDIR env variable --- Makefile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 2430818..ea50f64 100644 --- a/Makefile +++ b/Makefile @@ -33,10 +33,11 @@ $(TEST_BIN): $(TEST_SRC) $(STATIC_LIB) $(CC) -Wall -Ihash -o $@ $(TEST_SRC) $(STATIC_LIB) install: $(STATIC_LIB) $(SHARED_LIB) - mkdir -p $(DESTDIR)$(INCLUDEDIR)/hash - cp -r hash/*.h $(DESTDIR)$(INCLUDEDIR)/hash/ - mkdir -p $(DESTDIR)$(LIBDIR) - cp $(STATIC_LIB) $(SHARED_LIB) $(DESTDIR)$(LIBDIR)/ + install -d $(DESTDIR)$(INCLUDEDIR)/hash + install -m 644 hash/*.h $(DESTDIR)$(INCLUDEDIR)/hash/ + install -d $(DESTDIR)$(LIBDIR) + install -m 644 $(STATIC_LIB) $(DESTDIR)$(LIBDIR)/ + install -m 755 $(SHARED_LIB) $(DESTDIR)$(LIBDIR)/ @echo "Installed libraries to $(DESTDIR)$(LIBDIR) and headers to $(DESTDIR)$(INCLUDEDIR)/hash" uninstall: From 9d83fd1975ca24d19c7dee16569d4762d22347ad Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Mon, 15 Sep 2025 20:54:44 +0200 Subject: [PATCH 4/5] APKBUILD aports demo --- APKBUILD | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 APKBUILD diff --git a/APKBUILD b/APKBUILD new file mode 100644 index 0000000..d0c5e21 --- /dev/null +++ b/APKBUILD @@ -0,0 +1,29 @@ +# Maintainer: Imbus +pkgname=libhash +pkgver=0.1.2 +pkgrel=0 +pkgdesc="Various hash functions in C" +url="https://git.silversoft.se/Imbus/libhash" +arch="all" +license="MIT" +makedepends="gcc make" +checkdepends="" +subpackages="$pkgname-static $pkgname-dev" +source="$pkgname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz" +builddir="$srcdir/$pkgname" + +build() { + make +} + +check() { + make test +} + +package() { + PREFIX="$pkgdir/usr" make install +} + +sha512sums=" +2e7d02e96f26569a2ae2e29d8644fa93e08229fbb288a67418c986d928cfa3d93e16793ca20cc9a39cbc74e5842395a37923f843fba2215350db350a307ff080 libhash-0.1.2.tar.gz +" From 9c23dc5653a5de8fef69265411a23c9905495acb Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Mon, 15 Sep 2025 20:56:17 +0200 Subject: [PATCH 5/5] Extra warnings --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ea50f64..ca364c9 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ CC ?= gcc -CFLAGS ?= -Wall -fPIC -Ihash -O2 +CFLAGS ?= -Wall -Wextra -fPIC -Ihash -O2 AR ?= ar ARFLAGS ?= rcs