diff options
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 |
