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 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) libasm_bonus.a : $(OBJS_DIR) $(OBJS) $(OBJS_BONUS) ar rcs libasm_bonus.a $(OBJS) $(OBJS_BONUS) test: test.c libasm_bonus.a clang -z noexecstack test.c -L. -lasm_bonus -o test -g $(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