Makefile 2.0 KB

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