minishell/Makefile

81 lines
1.6 KiB
Makefile
Raw Normal View History

2025-02-06 13:43:26 +01:00
NAME = minishell
DEBUG = -g
ASAN = -fsanitize=address
TSAN = -fsanitize=thread
UBSAN = -fsanitize=undefined
LDLIBS = \
-lreadline \
2025-02-12 14:51:05 +01:00
-lft
LIBFTDIR = ./libft/
LIBFT = $(LIBFTDIR)libft.a
IFLAGS = -I$(LIBFTDIR)
LINCLUDE = -L$(LIBFTDIR)
2025-02-06 13:43:26 +01:00
ifeq ($(CFLAGS),)
CFLAGS = -Wall -Wextra -Werror $(DEBUG)
endif
export CFLAGS
srcs = \
2025-02-18 15:07:05 +01:00
src/env_get_set.c \
src/parser/matchers/metacharacter.c \
2025-02-06 13:43:26 +01:00
objs = $(srcs:.c=.o)
export objs
2025-02-06 13:43:26 +01:00
minishell_objs = $(addsuffix .o,src/$(NAME)) $(objs)
all_objs = $(minishell_objs)
deps = $(all_objs:.o=.d)
2025-02-12 15:10:12 +01:00
.PHONY: all clean fclean re norm tests ctests
2025-02-06 13:43:26 +01:00
all: $(NAME)
-include $(deps)
2025-02-12 14:51:05 +01:00
$(NAME): $(minishell_objs) $(LIBFT)
$(CC) $(CFLAGS) -o $@ $(minishell_objs) $(LINCLUDE) $(LDLIBS)
$(LIBFT):
+$(MAKE) -C $(LIBFTDIR)
2025-02-06 13:43:26 +01:00
%.o: %.c
2025-02-12 14:51:05 +01:00
$(CC) -c $(CFLAGS) $(IFLAGS) -o $*.o $*.c
$(CC) -MM $(CFLAGS) $(IFLAGS) $*.c > $*.d
2025-02-06 13:43:26 +01:00
clean:
2025-02-12 14:51:05 +01:00
+$(MAKE) -C $(LIBFTDIR) clean
2025-02-06 13:43:26 +01:00
find . -name '*.o' -print -delete
find . -name '*.d' -print -delete
fclean: clean
2025-02-12 14:51:05 +01:00
$(MAKE) -C $(LIBFTDIR) fclean
2025-02-06 13:43:26 +01:00
rm -f $(NAME)
+make -C tests fclean
2025-02-06 13:43:26 +01:00
re:
+make fclean
+make all
2025-02-06 13:45:29 +01:00
norm:
norminette src libft | grep -v OK || true
2025-02-06 15:13:34 +01:00
tests:
@echo "Running tests with AddressSanitizer..."
2025-02-06 15:13:34 +01:00
+CFLAGS="$(CFLAGS) $(ASAN)" make re
shellspec
2025-02-12 15:10:12 +01:00
+CFLAGS="$(CFLAGS) $(ASAN)" make ctests
@echo "Running tests with UndefinedBehaviourSanitizer..."
2025-02-06 15:13:34 +01:00
+CFLAGS="$(CFLAGS) $(UBSAN)" make re
shellspec
2025-02-12 15:10:12 +01:00
+CFLAGS="$(CFLAGS) $(UBTSAN)" make ctests
@echo "Running tests with ThreadSanitizer..."
2025-02-06 15:13:34 +01:00
+CFLAGS="$(CFLAGS) $(TSAN)" make re
shellspec
2025-02-12 15:10:12 +01:00
+CFLAGS="$(CFLAGS) $(TSAN)" make ctests
2025-02-06 15:13:34 +01:00
@echo "All tests passed!"
2025-02-12 15:10:12 +01:00
ctests:
+make -C tests