blob: 828eaf85bb326953415381f044be61c606f3fe0d [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
Helmiton Moraes da Silva Cunha Jrd0068032017-11-06 17:28:11 -030014CD=cd
15MV=mv
Tiago Barros27e7c382016-09-08 13:46:12 -030016GIT=git
17ZIP=zip
Rodrigo Alves3725a9e2016-11-23 13:35:31 -030018FIND=find
Tiago Barros27e7c382016-09-08 13:46:12 -030019
20KNOT_THING_NAME = KNoTThing
Tiago Barros27e7c382016-09-08 13:46:12 -030021KNOT_THING_TARGET = $(KNOT_THING_NAME).zip
Erick Simões67192a82016-10-24 13:29:54 -030022KNOT_THING_FILES = ./src
Tiago Barros27e7c382016-09-08 13:46:12 -030023
24KNOT_THING_DOWNLOAD_DIR = download
Tiago Barros27e7c382016-09-08 13:46:12 -030025
Lucas Cavalcanti5efde272017-01-18 13:09:14 -030026ifdef release
27 KNOT_THING_LIB_VERSION = $(release)
28 KNOT_THING_LIB_REPO = knot-thing-source
29 KNOT_THING_LIB_SITE = https://github.com/CESARBR/$(KNOT_THING_LIB_REPO).git
30 KNOT_THING_FILES = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_THING_LIB_REPO)/src
31endif
32
Tiago Barros27e7c382016-09-08 13:46:12 -030033#Dependencies
Erick Simões67192a82016-10-24 13:29:54 -030034KNOT_PROTOCOL_LIB_VERSION = master
Rodrigo Alves03acedc2017-01-02 15:17:52 -030035ifdef release
36 KNOT_PROTOCOL_LIB_VERSION = $(release)
37endif
Tiago Barros27e7c382016-09-08 13:46:12 -030038KNOT_PROTOCOL_LIB_REPO = knot-protocol-source
Erick Simõesdc7e3812016-10-14 13:19:11 -030039KNOT_PROTOCOL_LIB_SITE = https://github.com/CESARBR/$(KNOT_PROTOCOL_LIB_REPO).git
Tiago Barros27e7c382016-09-08 13:46:12 -030040KNOT_PROTOCOL_LIB_DIR = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_PROTOCOL_LIB_REPO)/src
41
Erick Simões67192a82016-10-24 13:29:54 -030042KNOT_HAL_LIB_VERSION = master
Rodrigo Alves03acedc2017-01-02 15:17:52 -030043ifdef release
44 KNOT_HAL_LIB_VERSION = $(release)
45endif
Erick Simões67192a82016-10-24 13:29:54 -030046KNOT_HAL_LIB_REPO = knot-hal-source
47KNOT_HAL_LIB_SITE = https://github.com/CESARBR/$(KNOT_HAL_LIB_REPO).git
Claudio Takahasi99c902a2017-05-03 15:51:47 -030048KNOT_HAL_HDR_LIB_DIR = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO)/hal
Erick Simões67192a82016-10-24 13:29:54 -030049KNOT_HAL_SRC_LIB_DIR = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO)/src/hal
Tiago Barros27e7c382016-09-08 13:46:12 -030050
Rodrigo Alves3725a9e2016-11-23 13:35:31 -030051KNOT_HAL_SRC_DRIVERS_LIB_DIR = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO)/src/drivers
52KNOT_HAL_SRC_NRF_LIB_DIR = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO)/src/nrf24l01
53KNOT_HAL_SRC_SPI_LIB_DIR = ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO)/src/spi
54
Helmiton Moraes da Silva Cunha Jrd0068032017-11-06 17:28:11 -030055KNOT_ECHO_LIB = echo_lib
56KNOT_ECHO_LIB_DIR = ./$(KNOT_THING_NAME)/examples/nRF24_Echo/$(KNOT_ECHO_LIB)
57
Tiago Barros9c807b52017-07-11 10:38:08 -030058.PHONY: clean clean-local
Tiago Barros27e7c382016-09-08 13:46:12 -030059
60default: all
61
62all: $(KNOT_THING_TARGET)
63
Rodrigo Alves03acedc2017-01-02 15:17:52 -030064
Tiago Barros27e7c382016-09-08 13:46:12 -030065$(KNOT_THING_DOWNLOAD_DIR):
66 $(MKDIR) -p ./$(KNOT_THING_DOWNLOAD_DIR)
67
Tiago Barros27e7c382016-09-08 13:46:12 -030068$(KNOT_PROTOCOL_LIB_DIR): $(KNOT_THING_DOWNLOAD_DIR)
Paulo Serra Filhoea729bf2017-07-18 16:58:20 -030069 if [ ! -d "./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_PROTOCOL_LIB_REPO)" ]; then \
70 $(GIT) clone -b $(KNOT_PROTOCOL_LIB_VERSION) $(KNOT_PROTOCOL_LIB_SITE) ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_PROTOCOL_LIB_REPO); \
71 fi
72 if [ ! -d "./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO)" ]; then \
73 $(GIT) clone -b $(KNOT_HAL_LIB_VERSION) $(KNOT_HAL_LIB_SITE) ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO); \
74 fi
Lucas Cavalcanti5efde272017-01-18 13:09:14 -030075ifdef release
76 $(GIT) clone -b $(KNOT_THING_LIB_VERSION) $(KNOT_THING_LIB_SITE) ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_THING_LIB_REPO)
77endif
Tiago Barros27e7c382016-09-08 13:46:12 -030078$(KNOT_THING_TARGET): $(KNOT_PROTOCOL_LIB_DIR)
Erick Simões67192a82016-10-24 13:29:54 -030079 #Creating subdirectories
Claudio Takahasi99c902a2017-05-03 15:51:47 -030080 $(MKDIR) -p ./$(KNOT_THING_NAME)/src/hal
Erick Simões9ceee7e2017-01-05 09:49:56 -030081 $(MKDIR) -p ./$(KNOT_THING_NAME)/examples
Helmiton Moraes da Silva Cunha Jrd0068032017-11-06 17:28:11 -030082 $(MKDIR) -p ./$(KNOT_ECHO_LIB_DIR)/hal
Erick Simões67192a82016-10-24 13:29:54 -030083
Gabriel Bandeirac0328042017-02-09 18:24:37 -030084 #Filling with configuration files for Arduino IDE
Erick Simões67192a82016-10-24 13:29:54 -030085 # TODO: Create keywords.txt file to KNoT Thing
86 # TODO: Amend keywords of the HAL libs, protocol and thing
87 $(CP) -r $(KNOT_THING_FILES)/library.properties ./$(KNOT_THING_NAME)
Paulo Serra Filhod4740402017-07-18 12:56:02 -030088ifdef release
89 $$(sed -i '/version/ s/=.*/=$(KNOT_THING_LIB_VERSION)/g' ./$(KNOT_THING_NAME)/library.properties)
90 $$(sed -i '/version/ s/\([v\.]\)0\+\([[:digit:]]\+\)/\1\2/g' ./$(KNOT_THING_NAME)/library.properties)
Helmiton Moraes da Silva Cunha Jr96571402017-11-16 14:56:25 -030091 $$(sed -i '/version/ s/KNOT-v//g' ./$(KNOT_THING_NAME)/library.properties)
Paulo Serra Filhod4740402017-07-18 12:56:02 -030092endif
Erick Simões67192a82016-10-24 13:29:54 -030093
94 #Filling root and thing directory
95 $(CP) -r $(KNOT_THING_FILES)/*.h ./$(KNOT_THING_NAME)/src
96 $(CP) -r $(KNOT_THING_FILES)/*.c ./$(KNOT_THING_NAME)/src
97 $(CP) -r $(KNOT_THING_FILES)/*.cpp ./$(KNOT_THING_NAME)/src
98
99 #Filling protocol directory
Marcela Oliveirab725d8b2017-05-15 16:33:27 -0300100 $(CP) -r $(KNOT_PROTOCOL_LIB_DIR)/*.h ./$(KNOT_THING_NAME)/src
101 $(CP) -r $(KNOT_PROTOCOL_LIB_DIR)/*.c ./$(KNOT_THING_NAME)/src
Erick Simões67192a82016-10-24 13:29:54 -0300102
Erick Simõesb277b1e2016-12-01 12:58:57 -0300103 #Filling hal headers directory
Paulo Serra Filhoc146c542017-06-17 12:37:35 -0300104 $(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 -0300105
106 #include folder
Rodrigo Alves3725a9e2016-11-23 13:35:31 -0300107 $(FIND) ./$(KNOT_HAL_SRC_LIB_DIR)/log/ \( ! -name '*linux*' -and -name '*.cpp' \) -exec $(CP) {} ./$(KNOT_THING_NAME)/src \;
108 $(FIND) ./$(KNOT_HAL_SRC_LIB_DIR)/storage/ \( ! -name '*linux*' -and -name '*.cpp' \) -exec $(CP) {} ./$(KNOT_THING_NAME)/src \;
109 $(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 -0300110 $(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 -0300111
112 # Include comm headers and source files
113 $(FIND) ./$(KNOT_HAL_SRC_LIB_DIR)/comm/ \( \( -name '*.c' -or -name '*.h' \) -and ! -name '*serial*' \) -exec $(CP) {} ./$(KNOT_THING_NAME)/src \;
114
115 # Include nrf24l01 headers and source files
116 $(FIND) ./$(KNOT_HAL_SRC_NRF_LIB_DIR)/ \( \( -name '*.c' -or -name '*.h' \) -and ! -name '*linux*' \) -exec $(CP) {} ./$(KNOT_THING_NAME)/src \;
117
118 # Include drivers headers and source files
119 $(CP) -r ./$(KNOT_HAL_SRC_DRIVERS_LIB_DIR)/*.c ./$(KNOT_THING_NAME)/src
120 $(CP) -r ./$(KNOT_HAL_SRC_DRIVERS_LIB_DIR)/*.h ./$(KNOT_THING_NAME)/src
121
122 # Include SPI headers and source files
Claudio Takahasi174400d2017-11-01 13:13:27 -0300123 $(FIND) ./$(KNOT_HAL_SRC_SPI_LIB_DIR)/ \( \( -name '*.cpp' -or -name '*.h' \) -and ! -name '*linux*' \) -exec $(CP) {} ./$(KNOT_THING_NAME)/src \;
Erick Simões67192a82016-10-24 13:29:54 -0300124
Erick Simõesac960c72016-12-20 14:49:19 -0300125 # Include examples files
Paulo Serra Filhoc146c542017-06-17 12:37:35 -0300126 $(FIND) ./examples/* \( ! -name '*.c' -prune \) -exec $(CP) -r {} ./$(KNOT_THING_NAME)/examples/ \;
Erick Simõesac960c72016-12-20 14:49:19 -0300127
Helmiton Moraes da Silva Cunha Jrd0068032017-11-06 17:28:11 -0300128 #Filling Echo-Lib
129 $(FIND) ./$(KNOT_HAL_SRC_LIB_DIR)/comm/ \( -name '*ll*' \) -exec $(CP) {} ./$(KNOT_ECHO_LIB_DIR) \;
130 $(FIND) ./$(KNOT_HAL_HDR_LIB_DIR)/ \( -name '*avr*' -or -name '*gpio.h*' \) -exec $(CP) {} ./$(KNOT_ECHO_LIB_DIR)/hal \;
131 $(FIND) ./$(KNOT_HAL_HDR_LIB_DIR)/ \( -name '*time.h*' -or -name '*nrf24.h*' \) -exec $(CP) {} ./$(KNOT_ECHO_LIB_DIR)/hal \;
132 $(FIND) ./$(KNOT_HAL_SRC_SPI_LIB_DIR)/ \( ! -name '*linux*' -and ! -name '*.am' \) -exec $(CP) {} ./$(KNOT_ECHO_LIB_DIR) \;
133 $(FIND) ./$(KNOT_HAL_SRC_NRF_LIB_DIR)/ \( ! -name '*linux*' -and ! -name '*.am' \) -exec $(CP) {} ./$(KNOT_ECHO_LIB_DIR) \;
134 $(FIND) ./$(KNOT_HAL_SRC_LIB_DIR)/gpio/ \( ! -name '*linux*' -and -name '*.cpp' \) -exec $(CP) {} ./$(KNOT_ECHO_LIB_DIR) \;
135 $(FIND) ./$(KNOT_HAL_SRC_LIB_DIR)/log/ \( ! -name '*linux*' -and -name '*.cpp' \) -exec $(CP) {} ./$(KNOT_ECHO_LIB_DIR) \;
136 $(FIND) ./$(KNOT_HAL_SRC_LIB_DIR)/time/ \( ! -name '*linux*' -and -name '*.cpp' \) -exec $(CP) {} ./$(KNOT_ECHO_LIB_DIR) \;
137 $(FIND) ./$(KNOT_HAL_SRC_DRIVERS_LIB_DIR)/ \( -name '*phy*' \) -exec $(CP) {} ./$(KNOT_ECHO_LIB_DIR) \;
138 $(FIND) ./$(KNOT_THING_DOWNLOAD_DIR)/$(KNOT_HAL_LIB_REPO)/examples \( -name '*printf*' \) -exec $(CP) {} ./$(KNOT_ECHO_LIB_DIR) \;
139
140 #Zip Echo-Lib
141 $(CD) ./$(KNOT_ECHO_LIB_DIR) ; $(ZIP) -r $(KNOT_ECHO_LIB) ./*
142 $(MV) $(KNOT_ECHO_LIB_DIR)/$(KNOT_ECHO_LIB).zip ./$(KNOT_THING_NAME)/examples/nRF24_Echo
143
144 #Clean Echo-Lib
145 $(RM) -rf ./$(KNOT_ECHO_LIB_DIR)
146
Erick Simões67192a82016-10-24 13:29:54 -0300147 #Zip directory
Tiago Barros27e7c382016-09-08 13:46:12 -0300148 $(ZIP) -r $(KNOT_THING_TARGET) ./$(KNOT_THING_NAME)
149
Helmiton Moraes da Silva Cunha Jrd0068032017-11-06 17:28:11 -0300150
Tiago Barros27e7c382016-09-08 13:46:12 -0300151clean:
152 $(RM) $(KNOT_THING_TARGET)
153 $(RM) -rf ./$(KNOT_THING_DOWNLOAD_DIR)
Erick Simõesb277b1e2016-12-01 12:58:57 -0300154 $(RM) -rf ./$(KNOT_THING_NAME)
Helmiton Moraes da Silva Cunha Jrd0068032017-11-06 17:28:11 -0300155 $(RM) -rf ./$(KNOT_ECHO_LIB).zip
Tiago Barros9c807b52017-07-11 10:38:08 -0300156
157clean-local:
158 $(RM) $(KNOT_THING_TARGET)
Tiago Barros9c807b52017-07-11 10:38:08 -0300159 $(RM) -rf ./$(KNOT_THING_NAME)