39 lines
765 B
Makefile
39 lines
765 B
Makefile
CC := gcc
|
|
AS := nasm
|
|
ASFLAGS := -g -Wall
|
|
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) -f elf64 $< -o $@
|
|
|
|
clean:
|
|
@rm -f $(NAME)
|
|
@rm -rf $(OBJ_DIR)
|
|
|
|
re:
|
|
@make --no-print clean
|
|
@make --no-print all
|