-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathMakefile
More file actions
106 lines (83 loc) · 2.17 KB
/
Makefile
File metadata and controls
106 lines (83 loc) · 2.17 KB
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
#General macros
EMPTY :=
SPACE := $(EMPTY) $(EMPTY)
#export AR
ifndef RANLIB
export RANLIB := ranlib
#export ARFLAGS
export AROFT := $(SPACE)
export CC := gcc
export CXX := g++
endif
export O := .o
export IFT := -I
export OFT := -o$(SPACE)
export LNKOFT := -o$(SPACE)
export LIBPFX := lib
export LIBEXT := .a
CFLAGS+=$(XCFLAGS)
CFLAGS+=-DB_LITTLE_ENDIAN
CFLAGS+=-Wall -c
ifeq (debug,$(build))
CFLAGS += -g
else
CFLAGS += -Os -O3
endif
CFLAGS += -DXPRINTF
ifndef PLAT
PLAT=Posix
CFLAGS+=$(IFT)src/arch/Posix
EXTRALIBS += -lrt
endif
ifndef ODIR
ODIR = obj
endif
LIBNAME=$(LIBPFX)ExampleLib$(LIBEXT)
CFLAGS+=$(IFT)src $(IFT)examples
VPATH=src:examples
# Implicit rules for making .o files from .c files
$(ODIR)/%$(O) : %.c
$(CC) $(CFLAGS) $(OFT)$@ $<
# Implicit rules for making .o files from .cpp files
$(ODIR)/%$(O) : %.cpp
$(CXX) $(CFLAGS) $(OFT)$@ $<
SOURCE = selib.c SMQClient.c
.PHONY : examples clean
CXX_AVAILABLE := $(shell command -v g++x)
# Conditional compilation based on g++ availability
ifeq ($(CXX_AVAILABLE),)
$(info g++ not found, assuming gcc is installed. Compiling the LED-SMQ example.)
examples: $(ODIR) LED-SMQ$(EXT)
else
# g++ available, proceed as normal
ifneq ($(wildcard ../JSON/.*),)
examples: $(ODIR) publish$(EXT) subscribe$(EXT) bulb$(EXT) LED-SMQ$(EXT)
VPATH += ../JSON/src
SOURCE += AllocatorIntf.c\
BaAtoi.c\
BufPrint.c\
JDecoder.c\
JEncoder.c\
JParser.c\
JVal.c
CFLAGS += -I../JSON/inc -DUSE_JSON=1 -fno-exceptions
publish$(EXT): $(ODIR)/publish$(O) $(LIBNAME)
$(CC) $(LNKOFT)$@ $< -L. -lExampleLib $(EXTRALIBS)
subscribe$(EXT): $(ODIR)/subscribe$(O) $(LIBNAME)
$(CC) $(LNKOFT)$@ $< -L. -lExampleLib $(EXTRALIBS)
else
examples: $(ODIR) bulb$(EXT) LED-SMQ$(EXT)
$(info No JSON directory. Excluding the examples 'publish' and 'subscribe'.)
endif
endif
$(ODIR):
mkdir $(ODIR)
LED-SMQ$(EXT): $(ODIR)/LED-SMQ$(O) $(LIBNAME)
$(CC) $(LNKOFT)$@ $< -L. -lExampleLib $(EXTRALIBS)
bulb$(EXT): $(ODIR)/bulb$(O) $(LIBNAME)
$(CC) $(LNKOFT)$@ $< -L. -lExampleLib $(EXTRALIBS)
$(LIBNAME): $(SOURCE:%.c=$(ODIR)/%$(O))
$(AR) $(ARFLAGS) $(AROFT)$@ $^
$(RANLIB) $@
clean:
rm -rf $(ODIR) $(LIBNAME) LED-SMQ$(EXT) bulb$(EXT) publish$(EXT) subscribe$(EXT)