xref: /nrf52832-nimble/packages/NimBLE-latest/porting/examples/linux/Makefile (revision 042d53a763ad75cb1465103098bb88c245d95138)
1# Toolchain commands
2CROSS_COMPILE ?=
3CC      := ccache $(CROSS_COMPLIE)gcc
4CXX     := ccache $(CROSS_COMPILE)g++
5LD      := $(CROSS_COMPILE)gcc
6AR      := $(CROSS_COMPILE)ar
7AS      := $(CROSS_COMPILE)as
8NM      := $(CROSS_COMPILE)nm
9OBJDUMP := $(CROSS_COMPILE)objdump
10OBJCOPY := $(CROSS_COMPILE)objcopy
11SIZE    := $(CROSS_COMPILE)size
12
13# Configure NimBLE variables
14NIMBLE_ROOT := ../../..
15NIMBLE_CFG_TINYCRYPT := 1
16include $(NIMBLE_ROOT)/porting/nimble/Makefile.defs
17
18SRC := 	$(NIMBLE_SRC)
19
20# Source files for NPL OSAL
21SRC += \
22	$(NIMBLE_ROOT)/porting/npl/linux/src/os_atomic.c   \
23	$(NIMBLE_ROOT)/porting/npl/linux/src/os_callout.c  \
24	$(NIMBLE_ROOT)/porting/npl/linux/src/os_eventq.cc  \
25	$(NIMBLE_ROOT)/porting/npl/linux/src/os_mutex.c    \
26	$(NIMBLE_ROOT)/porting/npl/linux/src/os_sem.c      \
27	$(NIMBLE_ROOT)/porting/npl/linux/src/os_task.c     \
28	$(NIMBLE_ROOT)/porting/npl/linux/src/os_time.c     \
29	$(NIMBLE_ROOT)/nimble/transport/socket/src/ble_hci_socket.c \
30	$(TINYCRYPT_SRC) \
31	$(NULL)
32
33# Source files for demo app
34SRC += \
35	./ble.c \
36	./main.c \
37	$(NULL)
38
39# Add NPL and all NimBLE directories to include paths
40INC = \
41    ./include \
42	$(NIMBLE_ROOT)/porting/npl/linux/include \
43	$(NIMBLE_ROOT)/porting/npl/linux/src \
44	$(NIMBLE_ROOT)/nimble/transport/socket/include \
45	$(NIMBLE_INCLUDE) \
46	$(TINYCRYPT_INCLUDE) \
47	$(NULL)
48
49INCLUDES := $(addprefix -I, $(INC))
50
51SRC_C  = $(filter %.c,  $(SRC))
52SRC_CC = $(filter %.cc, $(SRC))
53
54OBJ := $(SRC_C:.c=.o)
55OBJ += $(SRC_CC:.cc=.o)
56
57TINYCRYPT_OBJ := $(TINYCRYPT_SRC:.c=.o)
58
59CFLAGS =                    \
60    $(NIMBLE_CFLAGS)        \
61    $(INCLUDES)             \
62    -g                      \
63    -D_GNU_SOURCE           \
64    $(NULL)
65
66LIBS := -lrt -lpthread -lstdc++
67
68.PHONY: all clean
69.DEFAULT: all
70
71all: nimble-linux
72
73clean:
74	rm $(OBJ) -f
75	rm dummy -f
76
77$(TINYCRYPT_OBJ): CFLAGS+=$(TINYCRYPT_CFLAGS)
78
79%.o: %.c
80	$(CC) -c $(INCLUDES) $(CFLAGS) -o $@ $<
81
82%.o: %.cc
83	$(CXX) -c $(INCLUDES) $(CFLAGS) -o $@ $<
84
85nimble-linux: $(OBJ) $(TINYCRYPT_OBJ)
86	$(LD) -o $@ $^ $(LIBS)
87	$(SIZE) $@
88