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