From 42bc366e01949620be0f8233aa2e4c53bac3768b Mon Sep 17 00:00:00 2001 From: Evan Burkey Date: Mon, 30 Oct 2023 14:22:11 -0700 Subject: [PATCH] Add Makefile for OpenBSD --- .gitignore | 1 + Makefile | 29 +++++++++++++++++++++++++++++ src/math.c | 3 ++- src/vector.c | 14 +++++++++++++- 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 Makefile diff --git a/.gitignore b/.gitignore index 6d23c5e..8fa11ee 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ cmake* build compile_commands.json site +libflint.so diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..77dc460 --- /dev/null +++ b/Makefile @@ -0,0 +1,29 @@ +.PHONY : clean + +CFLAGS = -std=c99 -Iinclude -pedantic -Wall -Wextra +LDFLAGS = -fPIC -shared + +TARGET = libflint.so +SRC != ls src/*.c +OBJ = $(SRC:./src/$.c=./obj/%.o) + +PREFIX = $(DESTDIR)/usr/local +LIBDIR = $(PREFIX)/lib + +all: $(TARGET) + +$(TARGET): $(OBJ) + cc $(CFLAGS) $(LDFLAGS) -o $(TARGET) $(OBJ) + +./obj/%.o: ./src/%.c + cc $(CFLAGS) -c $< -o $@ + +install: $(TARGET) + cp $(TARGET) $(LIBDIR) + +uninstall: + rm -f $(LIBDIR)/$(TARGET) + +clean: + rm -f $(TARGET) + diff --git a/src/math.c b/src/math.c index fd5bb58..6f738bc 100644 --- a/src/math.c +++ b/src/math.c @@ -75,4 +75,5 @@ Point *bresenham(int x0, int y0, int x1, int y1, size_t *sz) { Point *bresenham_p(Point p1, Point p2, size_t *sz) { return bresenham(p1.x, p1.y, p2.x, p2.y, sz); -} \ No newline at end of file +} + diff --git a/src/vector.c b/src/vector.c index 52355fc..517bb25 100644 --- a/src/vector.c +++ b/src/vector.c @@ -31,7 +31,13 @@ int vec_init_with_capacity(Vector *vec, void (*destroy)(void *data), size_t capa static int vec_grow(Vector *const vec) { vec->capacity *= 2; + +#ifdef __OpenBSD__ + vec->elements = reallocarray(vec->elements, vec->capacity, sizeof(void *)); +#else vec->elements = reallocf(vec->elements, sizeof(void *) * vec->capacity); +#endif + if (vec->elements == NULL) { return -1; } @@ -106,7 +112,13 @@ int vec_shrink(Vector *vec) { } vec->capacity = vec_len(vec); - vec->elements = reallocf(vec, sizeof(void*) * vec_cap(vec)); + +#ifdef __OpenBSD__ + vec->elements = reallocarray(vec->elements, vec->capacity, sizeof(void *)); +#else + vec->elements = reallocf(vec->elements, sizeof(void *) * vec->capacity); +#endif + if (vec->elements == NULL) { return -1; }