blob: 39c82a89f30aff79d7b7271ad0e8e19d97204401 [file] [log] [blame]
Tiago Barros27e7c382016-09-08 13:46:12 -03001#
2# Copyright (c) 2016, CESAR.
3# All rights reserved.
4#
5# This software may be modified and distributed under the terms
6# of the BSD license. See the LICENSE file for details.
7#
8# KNoTThing Arduino Library Makefile
9#
10
11# TODO: change this variables according to operating system
12MKDIR=mkdir
13CP=cp
14GIT=git
15ZIP=zip
Rodrigo Alves3725a9e2016-11-23 13:35:31 -030016FIND=find
Tiago Barros27e7c382016-09-08 13:46:12 -030017
18KNOT_THING_NAME = KNoTThing
Tiago Barros27e7c382016-09-08 13:46:12 -030019KNOT_THING_TARGET = $(KNOT_THING_NAME).zip
Erick Simões67192a82016-10-24 13:29:54 -030020KNOT_THING_FILES = ./src
Tiago Barros27e7c382016-09-08 13:46:12 -030021
22KNOT_THING_DOWNLOAD_DIR = download
Tiago Barros27e7c382016-09-08 13:46:12 -030023
Lucas Cavalcanti5efde272017-01-18 13:09:14 -030024ifdef release
25 KNOT_THING_LIB_VERSION = $(release)
26 KNOT_THING_LIB_REPO = knot-thing-source
27 KNOT_THING_LIB_SITE = https://github.com/CESARBR/$(KNOT_THING_LIB_REPO).git
28 KNOT_THING_FILES = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_THING_LIB_REPO)/src
29endif
30
Tiago Barros27e7c382016-09-08 13:46:12 -030031#Dependencies
Erick Simões67192a82016-10-24 13:29:54 -030032KNOT_PROTOCOL_LIB_VERSION = master
Rodrigo Alves03acedc2017-01-02 15:17:52 -030033ifdef release
34 KNOT_PROTOCOL_LIB_VERSION = $(release)
35endif
Tiago Barros27e7c382016-09-08 13:46:12 -030036KNOT_PROTOCOL_LIB_REPO = knot-protocol-source
Erick Simõesdc7e3812016-10-14 13:19:11 -030037KNOT_PROTOCOL_LIB_SITE = https://github.com/CESARBR/$(KNOT_PROTOCOL_LIB_REPO).git
Tiago Barros27e7c382016-09-08 13:46:12 -030038KNOT_PROTOCOL_LIB_DIR = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_PROTOCOL_LIB_REPO)/src
39
Erick Simões67192a82016-10-24 13:29:54 -030040KNOT_HAL_LIB_VERSION = master
Rodrigo Alves03acedc2017-01-02 15:17:52 -030041ifdef release
42 KNOT_HAL_LIB_VERSION = $(release)
43endif
Erick Simões67192a82016-10-24 13:29:54 -030044KNOT_HAL_LIB_REPO = knot-hal-source
45KNOT_HAL_LIB_SITE = https://github.com/CESARBR/$(KNOT_HAL_LIB_REPO).git
Claudio Takahasi99c902a2017-05-03 15:51:47 -030046KNOT_HAL_HDR_LIB_DIR = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO)/hal
Erick Simões67192a82016-10-24 13:29:54 -030047KNOT_HAL_SRC_LIB_DIR = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO)/src/hal
Tiago Barros27e7c382016-09-08 13:46:12 -030048
Rodrigo Alves3725a9e2016-11-23 13:35:31 -030049KNOT_HAL_SRC_DRIVERS_LIB_DIR = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO)/src/drivers
50KNOT_HAL_SRC_NRF_LIB_DIR = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO)/src/nrf24l01
51KNOT_HAL_SRC_SPI_LIB_DIR = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO)/src/spi
52
Tiago Barros9c807b52017-07-11 10:38:08 -030053.PHONY: clean clean-local
Tiago Barros27e7c382016-09-08 13:46:12 -030054
55default: all
56
57all: $(KNOT_THING_TARGET)
58
Rodrigo Alves03acedc2017-01-02 15:17:52 -030059
Tiago Barros27e7c382016-09-08 13:46:12 -030060$(KNOT_THING_DOWNLOAD_DIR):
61 $(MKDIR) -p ./$(KNOT_THING_DOWNLOAD_DIR)
62
Tiago Barros27e7c382016-09-08 13:46:12 -030063$(KNOT_PROTOCOL_LIB_DIR): $(KNOT_THING_DOWNLOAD_DIR)
Paulo Serra Filhoea729bf2017-07-18 16:58:20 -030064 if [ ! -d "./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_PROTOCOL_LIB_REPO)" ]; then \
65 $(GIT) clone -b $(KNOT_PROTOCOL_LIB_VERSION) $(KNOT_PROTOCOL_LIB_SITE) ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_PROTOCOL_LIB_REPO); \
66 fi
67 if [ ! -d "./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO)" ]; then \
68 $(GIT) clone -b $(KNOT_HAL_LIB_VERSION) $(KNOT_HAL_LIB_SITE) ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO); \
69 fi
Lucas Cavalcanti5efde272017-01-18 13:09:14 -030070ifdef release
71 $(GIT) clone -b $(KNOT_THING_LIB_VERSION) $(KNOT_THING_LIB_SITE) ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_THING_LIB_REPO)
72endif
Tiago Barros27e7c382016-09-08 13:46:12 -030073$(KNOT_THING_TARGET): $(KNOT_PROTOCOL_LIB_DIR)
Erick Simões67192a82016-10-24 13:29:54 -030074 #Creating subdirectories
Claudio Takahasi99c902a2017-05-03 15:51:47 -030075 $(MKDIR) -p ./$(KNOT_THING_NAME)/src/hal
Erick Simões9ceee7e2017-01-05 09:49:56 -030076 $(MKDIR) -p ./$(KNOT_THING_NAME)/examples
Erick Simões67192a82016-10-24 13:29:54 -030077
Gabriel Bandeirac0328042017-02-09 18:24:37 -030078 #Filling with configuration files for Arduino IDE
Erick Simões67192a82016-10-24 13:29:54 -030079 # TODO: Create keywords.txt file to KNoT Thing
80 # TODO: Amend keywords of the HAL libs, protocol and thing
81 $(CP) -r $(KNOT_THING_FILES)/library.properties ./$(KNOT_THING_NAME)
Paulo Serra Filhod4740402017-07-18 12:56:02 -030082ifdef release
83 $$(sed -i '/version/ s/=.*/=$(KNOT_THING_LIB_VERSION)/g' ./$(KNOT_THING_NAME)/library.properties)
84 $$(sed -i '/version/ s/\([v\.]\)0\+\([[:digit:]]\+\)/\1\2/g' ./$(KNOT_THING_NAME)/library.properties)
85 $$(sed -i '/version/ s/KNOT-v//g' ./$(KNOT_THING_NAME)/library.properties
86endif
Erick Simões67192a82016-10-24 13:29:54 -030087
88 #Filling root and thing directory
89 $(CP) -r $(KNOT_THING_FILES)/*.h ./$(KNOT_THING_NAME)/src
90 $(CP) -r $(KNOT_THING_FILES)/*.c ./$(KNOT_THING_NAME)/src
91 $(CP) -r $(KNOT_THING_FILES)/*.cpp ./$(KNOT_THING_NAME)/src
92
93 #Filling protocol directory
Marcela Oliveirab725d8b2017-05-15 16:33:27 -030094 $(CP) -r $(KNOT_PROTOCOL_LIB_DIR)/*.h ./$(KNOT_THING_NAME)/src
95 $(CP) -r $(KNOT_PROTOCOL_LIB_DIR)/*.c ./$(KNOT_THING_NAME)/src
Erick Simões67192a82016-10-24 13:29:54 -030096
Erick Simõesb277b1e2016-12-01 12:58:57 -030097 #Filling hal headers directory
Paulo Serra Filhoc146c542017-06-17 12:37:35 -030098 $(FIND) ./$(KNOT_HAL_HDR_LIB_DIR) \( ! -name '*linux*' -and -name '*.h' \) -exec $(CP) -r {} ./$(KNOT_THING_NAME)/src/hal \;
Rodrigo Alves3725a9e2016-11-23 13:35:31 -030099
100 #include folder
Rodrigo Alves3725a9e2016-11-23 13:35:31 -0300101 $(FIND) ./$(KNOT_HAL_SRC_LIB_DIR)/log/ \( ! -name '*linux*' -and -name '*.cpp' \) -exec $(CP) {} ./$(KNOT_THING_NAME)/src \;
102 $(FIND) ./$(KNOT_HAL_SRC_LIB_DIR)/storage/ \( ! -name '*linux*' -and -name '*.cpp' \) -exec $(CP) {} ./$(KNOT_THING_NAME)/src \;
103 $(FIND) ./$(KNOT_HAL_SRC_LIB_DIR)/time/ \( ! -name '*linux*' -and -name '*.cpp' \) -exec $(CP) {} ./$(KNOT_THING_NAME)/src \;
Paulo Serra Filho3a2e1ab2017-01-25 09:10:18 -0300104 $(FIND) ./$(KNOT_HAL_SRC_LIB_DIR)/gpio/ \( ! -name '*linux*' -and -name '*.cpp' \) -exec $(CP) {} ./$(KNOT_THING_NAME)/src \;
Rodrigo Alves3725a9e2016-11-23 13:35:31 -0300105
106 # Include comm headers and source files
107 $(FIND) ./$(KNOT_HAL_SRC_LIB_DIR)/comm/ \( \( -name '*.c' -or -name '*.h' \) -and ! -name '*serial*' \) -exec $(CP) {} ./$(KNOT_THING_NAME)/src \;
108
109 # Include nrf24l01 headers and source files
110 $(FIND) ./$(KNOT_HAL_SRC_NRF_LIB_DIR)/ \( \( -name '*.c' -or -name '*.h' \) -and ! -name '*linux*' \) -exec $(CP) {} ./$(KNOT_THING_NAME)/src \;
111
112 # Include drivers headers and source files
113 $(CP) -r ./$(KNOT_HAL_SRC_DRIVERS_LIB_DIR)/*.c ./$(KNOT_THING_NAME)/src
114 $(CP) -r ./$(KNOT_HAL_SRC_DRIVERS_LIB_DIR)/*.h ./$(KNOT_THING_NAME)/src
115
116 # Include SPI headers and source files
117 $(FIND) ./$(KNOT_HAL_SRC_SPI_LIB_DIR)/ \( \( -name '*.c' -or -name '*.h' \) -and ! -name '*linux*' \) -exec $(CP) {} ./$(KNOT_THING_NAME)/src \;
Erick Simões67192a82016-10-24 13:29:54 -0300118
Erick Simõesac960c72016-12-20 14:49:19 -0300119 # Include examples files
Paulo Serra Filhoc146c542017-06-17 12:37:35 -0300120 $(FIND) ./examples/* \( ! -name '*.c' -prune \) -exec $(CP) -r {} ./$(KNOT_THING_NAME)/examples/ \;
Erick Simõesac960c72016-12-20 14:49:19 -0300121
Erick Simões67192a82016-10-24 13:29:54 -0300122 #Zip directory
Tiago Barros27e7c382016-09-08 13:46:12 -0300123 $(ZIP) -r $(KNOT_THING_TARGET) ./$(KNOT_THING_NAME)
124
125clean:
126 $(RM) $(KNOT_THING_TARGET)
127 $(RM) -rf ./$(KNOT_THING_DOWNLOAD_DIR)
Erick Simõesb277b1e2016-12-01 12:58:57 -0300128 $(RM) -rf ./$(KNOT_THING_NAME)
Tiago Barros9c807b52017-07-11 10:38:08 -0300129
130clean-local:
131 $(RM) $(KNOT_THING_TARGET)
Tiago Barros9c807b52017-07-11 10:38:08 -0300132 $(RM) -rf ./$(KNOT_THING_NAME)