From 29b8c1556bf456596c6c067d413b65b51e17724e Mon Sep 17 00:00:00 2001 From: Thomas Vanbesien Date: Sun, 22 Feb 2026 12:31:46 +0100 Subject: Initial scaffold: Makefile, stub malloc/free/realloc, test harness Build system produces libft_malloc_$HOSTTYPE.so shared library with Libft (NOMALLOC=1) as dependency. Stub functions print their name and return NULL. Test runner compares system malloc vs LD_PRELOAD output using write(2) to avoid stdio interference. --- Makefile | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Makefile (limited to 'Makefile') diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..fd8fe46 --- /dev/null +++ b/Makefile @@ -0,0 +1,59 @@ +ifeq ($(HOSTTYPE),) +HOSTTYPE := $(shell uname -m)_$(shell uname -s) +endif + +CC = cc +CFLAGS = -Wall -Wextra -Werror -fPIC $(EXTRA) + +SRCDIR = src +INCDIR = inc +OBJDIR = obj +LIBDIR = lib + +LIBFT_DIR = deps/Libft +LIBFT = $(LIBFT_DIR)/lib/libft.a + +NAME = $(LIBDIR)/libft_malloc_$(HOSTTYPE).so +LINK = $(LIBDIR)/libft_malloc.so + +SRCS = malloc.c free.c realloc.c + +OBJS = $(SRCS:%.c=$(OBJDIR)/%.o) + +$(NAME): $(LIBFT) $(OBJS) | $(LIBDIR) + $(CC) -shared -o $@ $(OBJS) -L $(LIBFT_DIR)/lib -lft + ln -sf libft_malloc_$(HOSTTYPE).so $(LINK) + +all: $(NAME) + +$(LIBFT): + $(MAKE) -C $(LIBFT_DIR) NOMALLOC=1 + +$(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR) + $(CC) $(CFLAGS) -I $(INCDIR) -I $(LIBFT_DIR)/inc -c $< -o $@ + +$(OBJDIR): + mkdir -p $(OBJDIR) + +$(LIBDIR): + mkdir -p $(LIBDIR) + +clean: + rm -rf $(OBJDIR) + rm -f compile_commands.json + +fclean: clean + rm -rf $(LIBDIR) + $(MAKE) -C $(LIBFT_DIR) fclean + $(MAKE) -C tests clean + +re: fclean all + +test: $(NAME) + $(MAKE) -C tests test + +compile_commands.json: $(SRCS:%=$(SRCDIR)/%) + @echo '$(foreach src,$(SRCS),{"directory":"$(CURDIR)","command":"$(CC) $(CFLAGS) -I $(INCDIR) -I $(LIBFT_DIR)/inc -c $(SRCDIR)/$(src)","file":"$(SRCDIR)/$(src)"})' \ + | jq -s '.' > $@ + +.PHONY: all clean fclean re test -- cgit v1.2.3