# make gets confused if a file with the same name exists in the sources, so some # file are prefixed with test_ rawtests = \ expansion \ test_cmdlist_use_after_free \ test_here_doc \ test_wordlist_idx \ test_redirection_parsing \ test_quote_removal \ test_metacharacters \ test_parse_command_lists \ test_parse_pipelines \ test_parse_simple_cmds \ test_env_manip \ test_word_splitting \ ifeq ($(CFLAGS),) CFLAGS = -Wall -Wextra -Werror -g endif tests = $(addprefix test_,$(rawtests)) run_tests = $(addprefix run_test_,$(rawtests)) test_objs = $(addsuffix .o,$(tests)) objs := $(addprefix ../,$(objs)) \ testutil.o \ parse_command_list.o \ parse_pipeline.o \ all_objs = $(objs) $(test_objs) deps = $(all_objs:.o=.d) LDLIBS = \ -lreadline \ -lft LIBFTDIR = ../libft/ LIBFT = $(LIBFTDIR)libft.a IFLAGS = -I$(LIBFTDIR) LINCLUDE = -L$(LIBFTDIR) .PHONY: run fclean run_test_% .NOTPARALLEL: run run: $(run_tests) @echo "Finished running C tests" -include $(deps) %.o: %.c $(CC) -c $(CFLAGS) $(IFLAGS) -o $*.o $*.c $(CC) -MM $(CFLAGS) $(IFLAGS) $*.c > $*.d test_%: %.o $(objs) $(CC) $(CFLAGS) -rdynamic -o $@ $*.o $(objs) $(LINCLUDE) $(LDLIBS) run_test_%: test_% @echo @echo "====== Now running test: $* ======" @echo ./test_$* @echo "====== End of test: $* ======" fclean: rm -f $(tests)