diff options
| author | Thomas Vanbesien <tvanbesi@proton.me> | 2026-02-22 12:31:46 +0100 |
|---|---|---|
| committer | Thomas Vanbesien <tvanbesi@proton.me> | 2026-02-22 12:42:48 +0100 |
| commit | 29b8c1556bf456596c6c067d413b65b51e17724e (patch) | |
| tree | b225381d762af049e9174cdf1459db1f91c9589a /Makefile | |
| download | malloc-29b8c1556bf456596c6c067d413b65b51e17724e.tar.gz malloc-29b8c1556bf456596c6c067d413b65b51e17724e.zip | |
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.
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 59 |
1 files changed, 59 insertions, 0 deletions
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 |
