farmbot_os/Makefile

141 lines
4.2 KiB
Makefile
Raw Normal View History

2018-01-05 11:02:05 -07:00
ifeq ($(ERL_EI_INCLUDE_DIR),)
2018-02-13 09:08:26 -07:00
$(error ERL_EI_INCLUDE_DIR not set. Invoke via mix)
2017-12-22 20:15:11 -07:00
endif
2018-01-05 11:02:05 -07:00
# Set Erlang-specific compile and linker flags
ERL_CFLAGS ?= -I$(ERL_EI_INCLUDE_DIR)
ERL_LDFLAGS ?= -L$(ERL_EI_LIBDIR)
2017-12-22 20:15:11 -07:00
2018-01-05 11:02:05 -07:00
NIF_LDFLAGS += -fPIC -shared
NIF_CFLAGS ?= -fPIC -O2 -Wall
ifeq ($(CROSSCOMPILE),)
ifeq ($(shell uname),Darwin)
NIF_LDFLAGS += -undefined dynamic_lookup
endif
endif
NIF=priv/build_calendar.so
ARDUINO_FW=priv/arduino-firmware.hex
FARMDUINO_FW=priv/farmduino-firmware.hex
2018-03-19 11:35:37 -06:00
FARMDUINO_V14_FW=priv/farmduino_k14-firmware.hex
2018-02-09 11:55:07 -07:00
BLINK_FW=priv/blink.hex
CLEAR_EEPROM_FW=priv/clear_eeprom.hex
2018-01-05 11:02:05 -07:00
ARDUINO_INSTALL_DIR ?= $(HOME)/arduino-1.8.5
ARDUINO_BUILDER=$(ARDUINO_INSTALL_DIR)/arduino-builder
ARDUINO_HARDWARE_DIR = $(ARDUINO_INSTALL_DIR)/hardware
ARDUINO_HARDWARE_FLAGS = -hardware $(ARDUINO_HARDWARE_DIR)
ARDUINO_TOOLS_FLAGS = -tools $(ARDUINO_INSTALL_DIR)/tools-builder \
-tools $(ARDUINO_HARDWARE_DIR)/tools/avr
ARDUINO_LIBS_FLAGS = -built-in-libraries $(ARDUINO_INSTALL_DIR)/libraries
ARDUINO_PREFS_FLAGS = -prefs=build.warn_data_percentage=75 \
-prefs=runtime.tools.avrdude.path=$(ARDUINO_INSTALL_DIR)/hardware/tools/avr \
-prefs=runtime.tools.avr-gcc.path=$(ARDUINO_INSTALL_DIR)/hardware/tools/avr
ARDUINO_ARCH_FLAGS = -fqbn=arduino:avr:mega:cpu=atmega2560
ARDUINO_SRC_INO = c_src/farmbot-arduino-firmware/src/src.ino
2018-02-09 11:55:07 -07:00
ARDUINO_SRC_BLINK_INO = $(ARDUINO_INSTALL_DIR)/examples/01.Basics/Blink/Blink.ino
ARDUINO_SRC_CLEAR_EEPROM_INO = $(ARDUINO_HARDWARE_DIR)/arduino/avr/libraries/EEPROM/examples/eeprom_clear/eeprom_clear.ino
2018-01-05 11:02:05 -07:00
ARDUINO_BUILD_DIR = $(PWD)/_build/arduino
ARDUINO_CACHE_DIR = $(PWD)/_build/arduino-cache
ARDUINO_BUILD_DIR_FLAGS = -build-path $(ARDUINO_BUILD_DIR) -build-cache $(ARDUINO_CACHE_DIR)
2018-02-15 09:27:11 -07:00
ARDUINO_BUILD_COMMON = $(ARDUINO_BUILDER) \
2018-01-05 11:02:05 -07:00
$(ARDUINO_HARDWARE_FLAGS) \
$(ARDUINO_TOOLS_FLAGS) \
$(ARDUINO_LIBS_FLAGS) \
$(ARDUINO_ARCH_FLAGS) \
$(ARDUINO_PREFS_FLAGS) \
2018-02-15 09:27:11 -07:00
$(ARDUINO_BUILD_DIR_FLAGS)
2018-01-05 11:02:05 -07:00
2018-04-09 08:48:57 -06:00
ARDUINO_BUILD = $(ARDUINO_BUILD_COMMON) $(ARDUINO_SRC_INO) > /dev/null 2>&1
BLINK_BUILD = $(ARDUINO_BUILD_COMMON) $(ARDUINO_SRC_BLINK_INO) > /dev/null 2>&1
CLEAR_EEPROM_BUILD = $(ARDUINO_BUILD_COMMON) $(ARDUINO_SRC_CLEAR_EEPROM_INO) > /dev/null 2>&1
2018-02-09 11:55:07 -07:00
ENV_STATE_FILE=.make_state
2018-04-09 08:48:57 -06:00
LAST_STATE = $(shell cat $(ENV_STATE_FILE) > /dev/null 2>&1)
ifeq ($(LAST_STATE),)
$(shell echo $(MIX_TARGET) > .make_state)
LAST_STATE=""
endif
ifneq ($(LAST_STATE), $(MIX_TARGET))
$(shell echo $(MIX_TARGET) > .make_state)
$(shell rm -f $(NIF))
endif
2018-01-05 11:46:58 -07:00
all: priv $(NIF) farmbot_arduino_firmware
2018-01-05 11:02:05 -07:00
farmbot_arduino_firmware_build_dirs: $(ARDUINO_BUILD_DIR) $(ARDUINO_CACHE_DIR)
$(ARDUINO_BUILD_DIR):
mkdir -p $(ARDUINO_BUILD_DIR)
$(ARDUINO_CACHE_DIR):
mkdir -p $(ARDUINO_CACHE_DIR)
2018-03-19 11:35:37 -06:00
farmbot_arduino_firmware: arduino farmduino farmduino_k14 blink clear_eeprom
2018-01-05 11:02:05 -07:00
arduino: farmbot_arduino_firmware_build_dirs $(ARDUINO_FW)
farmduino: farmbot_arduino_firmware_build_dirs $(FARMDUINO_FW)
2018-03-19 11:35:37 -06:00
farmduino_k14: farmbot_arduino_firmware_build_dirs $(FARMDUINO_V14_FW)
2018-02-15 09:27:11 -07:00
2018-02-09 11:55:07 -07:00
blink: farmbot_arduino_firmware_build_dirs $(BLINK_FW)
clear_eeprom: farmbot_arduino_firmware_build_dirs $(CLEAR_EEPROM_FW)
2018-01-05 11:02:05 -07:00
priv:
mkdir -p priv
$(NIF): c_src/build_calendar.c
$(CC) $(ERL_CFLAGS) $(NIF_CFLAGS) $(ERL_LDFLAGS) $(NIF_LDFLAGS) -o $@ $<
$(ARDUINO_FW):
2018-04-09 08:48:57 -06:00
$(info Building arduino fw)
@$(shell echo \#define RAMPS_V14 > c_src/farmbot-arduino-firmware/src/Board.h)
@rm -rf $(ARDUINO_BUILD_DIR)/*
@rm -rf $(ARDUINO_CACHE_DIR)/*
@$(ARDUINO_BUILD)
@cp $(ARDUINO_BUILD_DIR)/src.ino.hex $@
2018-01-05 11:02:05 -07:00
$(FARMDUINO_FW):
2018-04-09 08:48:57 -06:00
$(info Building Farmduino v10 fw)
@$(shell echo \#define FARMDUINO_V10 > c_src/farmbot-arduino-firmware/src/Board.h)
@rm -rf $(ARDUINO_BUILD_DIR)/*
@rm -rf $(ARDUINO_CACHE_DIR)/*
@$(ARDUINO_BUILD)
@cp $(ARDUINO_BUILD_DIR)/src.ino.hex $@
2017-12-22 20:15:11 -07:00
2018-02-15 09:27:11 -07:00
$(FARMDUINO_V14_FW):
2018-04-09 08:48:57 -06:00
$(info Building Farmduino v14 fw)
2018-02-15 09:27:11 -07:00
$(shell echo \#define FARMDUINO_V14 > c_src/farmbot-arduino-firmware/src/Board.h)
2018-04-09 08:48:57 -06:00
@rm -rf $(ARDUINO_BUILD_DIR)/*
@rm -rf $(ARDUINO_CACHE_DIR)/*
@$(ARDUINO_BUILD)
@cp $(ARDUINO_BUILD_DIR)/src.ino.hex $@
2018-02-15 09:27:11 -07:00
$(BLINK_FW):
2018-04-09 08:48:57 -06:00
$(info Building Blink)
@$(BLINK_BUILD)
@cp $(ARDUINO_BUILD_DIR)/Blink.ino.hex $@
2018-02-09 11:55:07 -07:00
$(CLEAR_EEPROM_FW):
2018-04-09 08:48:57 -06:00
$(info Building clear eeprom utility)
@$(CLEAR_EEPROM_BUILD)
@cp $(ARDUINO_BUILD_DIR)/eeprom_clear.ino.hex $@
2018-02-09 11:55:07 -07:00
2017-12-22 20:15:11 -07:00
clean:
$(RM) $(ENV_STATE_FILE)
2018-01-05 11:02:05 -07:00
$(RM) $(NIF)
rm -rf $(ARDUINO_BUILD_DIR) $(ARDUINO_CACHE_DIR)
rm -rf priv/*.hex