-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
116 lines (91 loc) · 2.33 KB
/
Makefile
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#CC = cc
#LD = $(CC)
#AR = ar
CFLAGS ?= -O2 -g
DESTDIR ?=
# Allow users to override build settings without dirtying their trees
# For debugging, put this in local.mk:
#
# CFLAGS += -O0 -DDEBUG -g3 -gdwarf-2
#
DFRAME_LOCAL_CONFIG ?= local.mk
-include ${DFRAME_LOCAL_CONFIG}
SRCROOT = .
ABS_SRCROOT := $(shell cd $(SRCROOT) && pwd)
srctree := $(ABS_SRCROOT)
LIB_OBJS :=
LIB_OBJS += src/util.o
LIB_OBJS += src/list.o
LIB_OBJS += src/rect.o
LIB_OBJS += src/color.o
LIB_OBJS += src/qui.o
LIB_OBJS += src/event.o
LIB_OBJS += src/app.o
LIB_OBJS += src/window.o
LIB_OBJS += src/view.o
LIB_OBJS += src/button.o
TESTS :=
TESTS += test/list
EXAMPLES :=
EXAMPLES += example/simplest
EXAMPLES += example/hello
EXAMPLES += example/window
EXAMPLES += example/window-color
EXAMPLES += example/window-frame
EXAMPLES += example/window-resizable
EXAMPLES += example/draw
EXAMPLES += example/text
EXAMPLES += example/button
EXAMPLES += example/subview
EXAMPLES += example/window-event
EXAMPLES += example/path
PROGRAMS :=
PROGRAMS += $(TESTS) $(EXAMPLES)
MODULES :=
PLATFORM_PATH ?=
export srctree
all:
cflags = -fno-strict-aliasing
cflags += -Wall -Wwrite-strings
cflags += -Iinclude
OSNAME := $(shell uname)
ifeq ($(OSNAME),Darwin)
PLATFORM_PATH = platform/mac-cocoa
ldflags += -framework Cocoa
ldflags += -lSystem
ldflags += -L$(PLATFORM_PATH)
LIBS += $(PLATFORM_PATH)/libqui-mac-cocoa.a
MODULES += $(PLATFORM_PATH)
else
$(error Your OS is not supported yet)
endif
LIBS += libqui.a
OBJS := $(LIB_OBJS) $(EXTRA_OBJS) $(PROGRAMS:%=%.o)
# Pretty print
V := @
Q := $(V:1=)
all: submodules $(PROGRAMS)
submodules:
@for dir in $(MODULES); do ${MAKE} all -C $$dir; exit_status=$$?; \
if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
ldflags += $($(@)-ldflags) $(LDFLAGS)
ldlibs += $($(@)-ldlibs) $(LDLIBS)
$(PROGRAMS): % : %.o $(LIBS)
@echo " LD $@"
$(Q)$(LD) $(ldflags) $^ $(ldlibs) -o $@
libqui.a: $(LIB_OBJS)
@echo " AR $@"
$(Q)$(AR) rcs $@ $^
cflags += $($(*)-cflags) $(CPPFLAGS) $(CFLAGS)
%.o: %.c
@echo " CC $@"
$(Q)$(CC) $(cflags) -c -o $@ $<
tags TAGS t: FORCE
scripts/tags
clean:
@for dir in $(MODULES); do ${MAKE} clean -C $$dir; exit_status=$$?; \
if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
@echo " CLEAN"
@rm -f src/*.[oa] $(PROGRAMS)
@rm -f test/*.[oa] example/*.[oa]
.PHONY: submodules clean FORCE