libasm/Makefile

39 lines
767 B
Makefile

CC := gcc
AS := nasm
ASFLAGS := -g -f elf64 -I src/
CFLAGS := -g -Wall -Wextra -Wno-override-init -std=c2x
MAIN := $(wildcard *.c)
SRC := $(wildcard src/*.s)
OBJ_DIR := build
OBJ_CC := $(addprefix $(OBJ_DIR)/, $(patsubst %.c,%.o, $(MAIN)))
OBJ_AS := $(addprefix $(OBJ_DIR)/, $(patsubst %.s,%.o, $(SRC)))
DIR := .
NAME := main
LIB_NAME:= asm
LD := $(CC)
LDFLAGS := -L$(OBJ_DIR) -l$(LIB_NAME)
all: $(NAME)
$(NAME): $(OBJ_CC) $(OBJ_AS)
ar rcs $(OBJ_DIR)/lib$(LIB_NAME).a $(OBJ_AS)
$(LD) $(OBJ_CC) $(LDFLAGS) -o $(DIR)/$(NAME)
$(OBJ_DIR)/%.o: %.c
@mkdir -p $(@D)
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJ_DIR)/%.o: %.s
@mkdir -p $(@D)
$(AS) $(ASFLAGS) $< -o $@
clean:
@rm -f $(NAME)
@rm -rf $(OBJ_DIR)
re:
@make --no-print clean
@make --no-print all