NAME ?= libasm.a SRCS_DIR = srcs SRCS_BONUS_DIR = srcs/bonus OBJS_DIR = .objs SRCS_NAMES = ft_strlen.s\ ft_strcpy.s\ ft_strcmp.s\ ft_write.s\ ft_read.s\ ft_strdup.s SRCS_BONUS_NAMES = ft_atoi_base.s\ ft_list_push_front.s\ ft_list_size.s\ ft_list_sort.s\ ft_list_remove_if.s\ SRCS = $(addprefix $(SRCS_DIR)/, $(SRCS_NAMES)) SRCS_BONUS = $(addprefix $(SRCS_BONUS_DIR)/, $(SRCS_NAMES)) OBJS = $(addprefix $(OBJS_DIR)/, $(SRCS_NAMES:.s=.o)) OBJS_BONUS = $(addprefix $(OBJS_DIR)/, $(SRCS_BONUS_NAMES:.s=.o)) FLAGS = -felf64 all: $(NAME) test: test.c bonus clang -z noexecstack test.c -L. -lasm_bonus -o test -g ./test || echo -e "\033[31m tests exited with an error code" bonus: $(OBJS_DIR) $(OBJS) $(OBJS_BONUS) ar rcs $@ $(OBJS) $(OBJS_BONUS) $(NAME): $(OBJS_DIR) $(OBJS) ar rcs $@ $(OBJS) $(OBJS_DIR): mkdir -p $(OBJS_DIR) $(OBJS_DIR)/%.o: $(SRCS_DIR)/%.s nasm $(FLAGS) -o $@ $< $(OBJS_DIR)/%.o: $(SRCS_BONUS_DIR)/%.s nasm $(FLAGS) -o $@ $< clean: rm -rf $(OBJS_DIR) fclean: clean rm -f $(NAME) test .PHONY: fclean clean all