blob: ecd8408243df45728328373c55865c8ee392e22f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# Compiler, Linker, and Assembler
CC := clang
AR := ar
AS := nasm
# All needed build directories
INC_DIR := include
SRC_DIR := sys
BIN_DIR := bin
LIB_DIR := lib
OBJ_DIR := build
TST_DIR := test
# C runtime library
CINIT := $(LIB_DIR)/crt/crt1.o $(LIB_DIR)/crt/x86_64/crti.o `gcc --print-file-name=crtbeginS.o`
CFINI := `gcc --print-file-name=crtendS.o` $(LIB_DIR)/crt/x86_64/crtn.o
# Flags, Libraries and Includes
CFLAGS := -g -march=native \
-ffast-math -fno-strict-aliasing -fwrapv -fms-extensions \
-Wno-microsoft-anon-tag -Wno-incompatible-function-pointer-types
STATIC := -static -nodefaultlibs -nostartfiles
AFLAGS := -f elf64
INCS := -isystem $(INC_DIR)/vendor/libc -I $(INC_DIR)
ELIBS := -L$(LIB_DIR) -lc
# Named generic rules (must be evaluated lazily)
COMPILE = @echo "CC "$^;\
$(CC) -MMD $(CFLAGS) $(TCFLAGS) $(INCS) $(TCINCS) -o $@ -c $<
LINK = @echo "LD "$@;\
$(CC) -MMD $(CFLAGS) $(STATIC) $(TCFLAGS) -o $@ $(CINIT) $^ $(CFINI) $(TCLIBS) $(ELIBS)
COMPLINK = @echo "LD "$@;\
$(CC) -MMD $(CFLAGS) $(STATIC) $(TCFLAGS) $u$(INCS) $(TCINCS) -o $@ $(CINIT) $^ $(CFINI) $(TCLIBS) $(ELIBS)
ASSEMBLE = @echo "AS "$^;\
$(AS) $(AFLAGS) $(TCFLAGS) -o $@ $<
ARCHIVE = @echo "AR "$@;\
$(AR) crs $@ $^
include rules.mk
|