48 lines
636 B
Makefile
48 lines
636 B
Makefile
SHELL = bash
|
|
|
|
# --- lib ---
|
|
|
|
NAME = libasm.a
|
|
|
|
OBJ_DIR = obj/
|
|
SRC_DIR = src/
|
|
SRC = $(shell find $(SRC_DIR) -name '*.s')
|
|
OBJ = $(addprefix $(OBJ_DIR), $(SRC:.s=.o))
|
|
|
|
AS = nasm
|
|
ASFLAGS = -f elf64
|
|
|
|
# --- tester ---
|
|
|
|
t_CC = gcc
|
|
t_CFLAGS = -z noexecstack
|
|
t_SRC = src/tests/main.c
|
|
t_NAME = tester
|
|
|
|
all: $(NAME)
|
|
|
|
$(NAME): $(OBJ)
|
|
ar rcs -o $@ $(OBJ)
|
|
|
|
$(OBJ_DIR)%.o: %.s
|
|
@mkdir -p $(@D)
|
|
$(AS) $(ASFLAGS) $< -o $@
|
|
|
|
clean:
|
|
rm -rf $(OBJ_DIR)
|
|
|
|
|
|
fclean: clean
|
|
rm -f $(NAME)
|
|
rm -f $(t_NAME)
|
|
|
|
re: fclean
|
|
$(MAKE) -s all
|
|
|
|
test: $(OBJ)
|
|
rm -f out_libasm
|
|
rm -f out_libc
|
|
$(t_CC) $(OBJ) $(t_SRC) $(t_CFLAGS) -o $(t_NAME)
|
|
|
|
.PHONY: clean fclean all re
|