aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 793d8889495b816d34667e69337c287bb312f56b (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
40
41
42
43
44
45
46
47
48
MAKEFLAGS += --no-builtin-rules
MAKEFLAGS += --no-builtin-variables

# Compiler, Linker, and Assembler
CC  := gcc
AR  := ar
AS  := gcc
PKG := PKG_CONFIG_PATH=lib/pkgconfig pkg-config

OS   := linux
ARCH := amd64

#WL_PROTO:=$(shell $(PKG) --variable=pkgdatadir wayland-protocols)
#WL_SCAN:=$(shell $(PKG) --variable=wayland_scanner wayland-scanner)

# All needed build directories
INC_DIR := include
BIN_DIR := bin
SYS_DIR := sys
LIB_DIR := lib
SRC_DIR := src
OBJ_DIR := obj
TST_DIR := test

# runtime library
INIT = $(RT1) $(RTI) `gcc --print-file-name=crtbeginT.o`
FINI = `gcc --print-file-name=crtend.o` $(RTN) $(RT3)

# Flags, Libraries and Includes
CFLAGS := -g -march=native -fno-strict-aliasing -fwrapv -fms-extensions -Wno-microsoft-anon-tag
STATIC := -ffreestanding -nodefaultlibs -nostartfiles -nostdinc -static
AFLAGS := -g
INCS   := -I $(SYS_DIR)/$(OS)/$(ARCH) -I $(SYS_DIR)/$(OS)/port -I $(INC_DIR) -isystem $(INC_DIR)/vendor/libc
ELIBS  := -L$(LIB_DIR) -lc

# Named generic rules (must be evaluated lazily)
COMPILE  = @echo "CC 	"$(@:$(OBJ_DIR)/%=%);\
		   $(CC) -MD $(CFLAGS) $(STATIC) $(TCFLAGS) $(INCS) $(TINCS) -o $@ -c $<
LINK 	 = @echo "LD 	"$(@:$(OBJ_DIR)/%=%);\
		   $(CC) -MD $(CFLAGS) $(STATIC) $(TCFLAGS) -o $@ $(INIT) $< $(TLIBS) $(ELIBS) $(FINI)
COMPLINK = @echo "CC 	"$(@:$(OBJ_DIR)/%=%);\
		   $(CC) -MD $(CFLAGS) $(STATIC) $(TCFLAGS) $(INCS) $(TINCS) -o $@ $(INIT) $^ $(TLIBS) $(ELIBS) $(FINI)
ASSEMBLE = @echo "AS	"$(@:$(OBJ_DIR)/%=%);\
		   $(AS) $(AFLAGS) -o $@ -c $<
ARCHIVE  = @echo "AR	"$(@:$(OBJ_DIR)/%=%);\
		   $(AR) crs $@ $^

include rules.mk