Created
August 31, 2016 07:58
-
-
Save h-nari/66cb3e6b4b0dd13282f39ab0938a716c to your computer and use it in GitHub Desktop.
modified esp8266Arduino.mk , just comment out ULIBDIRS parts, original (https://github.com/thunderace/Esp8266-Arduino-Makefile)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
TARGET = $(notdir $(realpath .)) | |
ARCH = $(shell uname) | |
ifeq ($(ARCH), Linux) | |
ROOT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST)))) | |
else | |
# The extensa tools cannot use cygwin paths, so convert /cygdrive/c/abc/... to c:/cygwin64/abc/... | |
ROOT_DIR_RAW := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST)))) | |
ROOT_DIR := $(shell cygpath -m $(ROOT_DIR_RAW)) | |
EXEC_EXT = ".exe" | |
endif | |
SERIAL_PORT ?= /dev/tty.nodemcu | |
ARDUINO_HOME ?= $(ROOT_DIR)/esp8266 | |
ARDUINO_ARCH = esp8266 | |
ARDUINO_VARIANT ?= nodemcu | |
ARDUINO_VERSION ?= 10605 | |
BOARDS_TXT = $(ARDUINO_HOME)/boards.txt | |
PARSE_BOARD = $(ROOT_DIR)/bin/ard-parse-boards | |
PARSE_BOARD_OPTS = --boards_txt=$(BOARDS_TXT) | |
PARSE_BOARD_CMD = $(PARSE_BOARD) $(PARSE_BOARD_OPTS) | |
ARDUINO_BOARD = $(shell $(PARSE_BOARD_CMD) $(ARDUINO_VARIANT) build.board) | |
VARIANT = $(shell $(PARSE_BOARD_CMD) $(ARDUINO_VARIANT) build.variant) | |
EAGLE_FILE_4M3M = $(shell $(PARSE_BOARD_CMD) $(ARDUINO_VARIANT) menu.FlashSize.4M3M.build.flash_ld) | |
EAGLE_FILE_4M1M = $(shell $(PARSE_BOARD_CMD) $(ARDUINO_VARIANT) menu.FlashSize.4M1M.build.flash_ld) | |
MCU = $(shell $(PARSE_BOARD_CMD) $(ARDUINO_VARIANT) build.mcu) | |
SERIAL_BAUD ?= 115200 | |
F_CPU = $(shell $(PARSE_BOARD_CMD) $(ARDUINO_VARIANT) build.f_cpu) | |
FLASH_SIZE ?= $(shell $(PARSE_BOARD_CMD) $(ARDUINO_VARIANT) build.flash_size) | |
FLASH_MODE ?= $(shell $(PARSE_BOARD_CMD) $(ARDUINO_VARIANT) build.flash_mode) | |
FLASH_FREQ ?= $(shell $(PARSE_BOARD_CMD) $(ARDUINO_VARIANT) build.flash_freq) | |
UPLOAD_RESETMETHOD = $(shell $(PARSE_BOARD_CMD) $(ARDUINO_VARIANT) upload.resetmethod) | |
UPLOAD_SPEED = $(shell $(PARSE_BOARD_CMD) $(ARDUINO_VARIANT) upload.speed) | |
XTENSA_TOOLCHAIN ?= $(ROOT_DIR)/xtensa-lx106-elf/bin/ | |
ESPRESSIF_SDK = $(ARDUINO_HOME)/tools/sdk | |
ESPTOOL ?= $(ROOT_DIR)/bin/esptool$(EXEC_EXT) | |
ESPOTA ?= $(ARDUINO_HOME)/tools/espota.py | |
CAT := cat$(EXEC_EXT) | |
SED := sed$(EXEC_EXT) | |
rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d)) | |
get_library_files = $(if $(and $(wildcard $(1)/src), $(wildcard $(1)/library.properties)), \ | |
$(call rwildcard,$(1)/src/,*.$(2)), \ | |
$(wildcard $(1)/*.$(2) $(1)/utility/*.$(2))) | |
FLASH_LD ?= $(EAGLE_FILE_4M3M) | |
ifdef SPIFFS_SIZE | |
ifeq ($(SPIFFS_SIZE),1) | |
FLASH_LD = $(EAGLE_FILE_4M1M) | |
endif | |
endif | |
LOCAL_USER_LIBDIR ?= ./libraries | |
GLOBAL_USER_LIBDIR ?= $(ROOT_DIR)/libraries | |
ifndef TAG | |
TAG := $(shell date --iso=seconds) | |
endif | |
ifdef NODENAME | |
BUILD_OUT ?= ./build.$(ARDUINO_VARIANT).$(NODENAME) | |
else | |
BUILD_OUT ?= ./build.$(ARDUINO_VARIANT) | |
endif | |
### ESP8266 CORE | |
CORE_SSRC = $(wildcard $(ARDUINO_HOME)/cores/$(ARDUINO_ARCH)/*.S) | |
CORE_SRC = $(wildcard $(ARDUINO_HOME)/cores/$(ARDUINO_ARCH)/*.c) | |
CORE_SRC += $(wildcard $(ARDUINO_HOME)/cores/$(ARDUINO_ARCH)/*/*.c) | |
CORE_CXXSRC = $(wildcard $(ARDUINO_HOME)/cores/$(ARDUINO_ARCH)/*.cpp) | |
CORE_OBJS = $(addprefix $(BUILD_OUT)/core/, \ | |
$(notdir $(CORE_SSRC:.S=.S.o) $(CORE_CXXSRC:.cpp=.cpp.o))) \ | |
$(addprefix $(BUILD_OUT)/core/, $(patsubst $(ARDUINO_HOME)/cores/$(ARDUINO_ARCH)/%.c,%.c.o,$(CORE_SRC))) | |
CORE_DIRS = $(sort $(dir $(CORE_OBJS))) | |
USRCDIRS = . | |
USER_SRC := $(wildcard $(addsuffix /*.c,$(USRCDIRS))) | |
USER_CXXSRC := $(wildcard $(addsuffix /*.cpp,$(USRCDIRS))) | |
USER_HSRC := $(wildcard $(addsuffix /*.h,$(USRCDIRS))) | |
USER_HPPSRC := $(wildcard $(addsuffix /*.hpp,$(USRCDIRS))) | |
USER_INOSRC := $(wildcard $(addsuffix /*.ino,$(USRCDIRS))) | |
LOCAL_SRCS = $(USER_SRC) $(USER_CXXSRC) $(USER_INOSRC) $(USER_HSRC) $(USER_HPPSRC) | |
#autodetect arduino libs and user libs | |
ifndef ARDUINO_LIBS | |
# automatically determine included libraries | |
ARDUINO_LIBS = $(sort $(filter $(notdir $(wildcard $(ARDUINO_HOME)/libraries/*)), \ | |
$(shell $(SED) -ne 's/^ *\# *include *[<\"]\(.*\)\.h[>\"]/\1/p' $(LOCAL_SRCS)))) | |
endif | |
ifndef USER_LIBS | |
# automatically determine included user libraries | |
USER_LIBS = $(sort $(filter $(notdir $(wildcard $(LOCAL_USER_LIBDIR)/*)), \ | |
$(shell $(SED) -ne 's/^ *\# *include *[<\"]\(.*\)\.h[>\"]/\1/p' $(LOCAL_SRCS)))) | |
USER_LIBS += $(sort $(filter $(notdir $(wildcard $(GLOBAL_USER_LIBDIR)/*)), \ | |
$(shell $(SED) -ne 's/^ *\# *include *[<\"]\(.*\)\.h[>\"]/\1/p' $(LOCAL_SRCS)))) | |
endif | |
# arduino libraries | |
ALIBDIRS = $(sort $(dir $(wildcard \ | |
$(ARDUINO_LIBS:%=$(ARDUINO_HOME)/libraries/%/*.c) \ | |
$(ARDUINO_LIBS:%=$(ARDUINO_HOME)/libraries/%/*.cpp) \ | |
$(ARDUINO_LIBS:%=$(ARDUINO_HOME)/libraries/%/src/*.c) \ | |
$(ARDUINO_LIBS:%=$(ARDUINO_HOME)/libraries/%/src/*.cpp)))) | |
# user libraries and sketch code | |
# ULIBDIRS = $(sort $(dir $(wildcard \ | |
# $(USER_LIBS:%=$(LOCAL_USER_LIBDIR)/%/*.c) \ | |
# $(USER_LIBS:%=$(LOCAL_USER_LIBDIR)/%/src/*.c) \ | |
# $(USER_LIBS:%=$(LOCAL_USER_LIBDIR)/%/src/*/*.c) \ | |
# $(USER_LIBS:%=$(LOCAL_USER_LIBDIR)/%/src/*/*/*.c) \ | |
# $(USER_LIBS:%=$(LOCAL_USER_LIBDIR)/%/*.cpp) \ | |
# $(USER_LIBS:%=$(LOCAL_USER_LIBDIR)/%/src/*.cpp) \ | |
# $(USER_LIBS:%=$(LOCAL_USER_LIBDIR)/%/src/*/*.cpp) \ | |
# $(USER_LIBS:%=$(LOCAL_USER_LIBDIR)/%/src/*/*/*.cpp) \ | |
# $(USER_LIBS:%=$(GLOBAL_USER_LIBDIR)/%/*.c) \ | |
# $(USER_LIBS:%=$(GLOBAL_USER_LIBDIR)/%/src/*.c) \ | |
# $(USER_LIBS:%=$(GLOBAL_USER_LIBDIR)/%/src/*/*.c) \ | |
# $(USER_LIBS:%=$(GLOBAL_USER_LIBDIR)/%/src/*/*/*.c) \ | |
# $(USER_LIBS:%=$(GLOBAL_USER_LIBDIR)/%/*.cpp) \ | |
# $(USER_LIBS:%=$(GLOBAL_USER_LIBDIR)/%/src/*.cpp) \ | |
# $(USER_LIBS:%=$(GLOBAL_USER_LIBDIR)/%/src/*/*.cpp) \ | |
# $(USER_LIBS:%=$(GLOBAL_USER_LIBDIR)/%/src/*/*/*.cpp)))) | |
LIB_SRC = $(wildcard $(addsuffix /*.c,$(ULIBDIRS))) \ | |
$(wildcard $(addsuffix /*.c,$(ALIBDIRS))) | |
LIB_CXXSRC = $(wildcard $(addsuffix /*.cpp,$(ULIBDIRS))) \ | |
$(wildcard $(addsuffix /*.cpp,$(ALIBDIRS))) | |
# object files | |
OBJ_FILES = $(addprefix $(BUILD_OUT)/,$(notdir $(LIB_SRC:.c=.c.o) $(LIB_CXXSRC:.cpp=.cpp.o) $(TARGET).fullino.o $(USER_SRC:.c=.c.o) $(USER_CXXSRC:.cpp=.cpp.o))) | |
CPREPROCESSOR_FLAGS = -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -I$(ESPRESSIF_SDK)/include -I$(ESPRESSIF_SDK)/lwip/include | |
DEFINES = $(CPREPROCESSOR_FLAGS) -DLWIP_OPEN_SRC \ | |
-DF_CPU=$(F_CPU) -DARDUINO=$(ARDUINO_VERSION) \ | |
-DARDUINO_$(ARDUINO_BOARD) -DESP8266 \ | |
-DARDUINO_ARCH_$(shell echo "$(ARDUINO_ARCH)" | tr '[:lower:]' '[:upper:]') \ | |
CORE_INC = $(ARDUINO_HOME)/cores/$(ARDUINO_ARCH) \ | |
$(ARDUINO_HOME)/variants/$(VARIANT) | |
INCLUDES = -include Arduino.h $(CORE_INC:%=-I%) $(ALIBDIRS:%=-I%) $(ULIBDIRS:%=-I%) $(USRCDIRS:%=-I%) | |
VPATH = . $(CORE_INC) $(ALIBDIRS) $(ULIBDIRS) | |
ASFLAGS = -c -g -x assembler-with-cpp -MMD -mlongcalls $(DEFINES) | |
CFLAGS = -c -Os -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL \ | |
-fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals \ | |
-falign-functions=4 -MMD -std=gnu99 -ffunction-sections -fdata-sections | |
CXXFLAGS = -c -Os -mlongcalls -mtext-section-literals -fno-exceptions \ | |
-fno-rtti -falign-functions=4 -std=c++11 -MMD -ffunction-sections -fdata-sections | |
ELFLIBS = -lm -lgcc -lhal -lphy -lpp -lnet80211 -lwpa -lcrypto -lmain -lwps -laxtls -lsmartconfig -lmesh -lwpa2 -llwip_gcc -lstdc++ | |
ELFFLAGS = -g -w -Os -nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static \ | |
-L$(ESPRESSIF_SDK)/lib -L$(ESPRESSIF_SDK)/ld \ | |
-T$(ESPRESSIF_SDK)/ld/$(FLASH_LD) \ | |
-Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,register_chipv6_phy | |
CC := $(XTENSA_TOOLCHAIN)xtensa-lx106-elf-gcc | |
CXX := $(XTENSA_TOOLCHAIN)xtensa-lx106-elf-g++ | |
AR := $(XTENSA_TOOLCHAIN)xtensa-lx106-elf-ar | |
LD := $(XTENSA_TOOLCHAIN)xtensa-lx106-elf-gcc | |
OBJDUMP := $(XTENSA_TOOLCHAIN)xtensa-lx106-elf-objdump | |
SIZE := $(XTENSA_TOOLCHAIN)xtensa-lx106-elf-size | |
.PHONY: all dirs clean upload | |
all: show_variables dirs core libs bin size | |
show_variables: | |
$(info [ARDUINO_LIBS] : $(ARDUINO_LIBS)) | |
$(info [USER_LIBS] : $(USER_LIBS)) | |
$(info [ALIBDIRS] : $(ALIBDIRS)) | |
$(info [ULIBDIRS] : $(ULIBDIRS)) | |
dirs: | |
@mkdir -p $(CORE_DIRS) | |
clean: | |
rm -rf $(BUILD_OUT) | |
core: dirs $(BUILD_OUT)/core/core.a | |
libs: dirs $(OBJ_FILES) | |
bin: $(BUILD_OUT)/$(TARGET).bin | |
$(BUILD_OUT)/core/%.S.o: $(ARDUINO_HOME)/cores/$(ARDUINO_ARCH)/%.S | |
$(CC) $(ASFLAGS) -o $@ $< | |
$(BUILD_OUT)/core/core.a: $(CORE_OBJS) | |
$(AR) cru $@ $(CORE_OBJS) | |
$(BUILD_OUT)/core/%.c.o: %.c | |
$(CC) $(CORE_DEFINE) $(DEFINES) $(CORE_INC:%=-I%) $(CFLAGS) -o $@ $< | |
$(BUILD_OUT)/core/%.cpp.o: %.cpp | |
$(CXX) $(CORE_DEFINE) $(DEFINES) $(CORE_INC:%=-I%) $(CXXFLAGS) $< -o $@ | |
$(BUILD_OUT)/%.c.o: %.c | |
$(CXX) -x c++ -D_TAG_=\"$(TAG)\" $(USER_DEFINE) $(DEFINES) $(CXXFLAGS) $(INCLUDES) $< -o $@ | |
# $(CC) -D_TAG_=\"$(TAG)\" $(DEFINES) $(CFLAGS) $(INCLUDES) -o $@ $< | |
$(BUILD_OUT)/%.cpp.o: %.cpp | |
$(CXX) -D_TAG_=\"$(TAG)\" $(USER_DEFINE) $(DEFINES) $(CXXFLAGS) $(INCLUDES) $< -o $@ | |
$(BUILD_OUT)/%.fullino: $(USER_INOSRC) | |
-cat $(TARGET).ino $(filter-out $(TARGET).ino,$^) > $@ | |
$(BUILD_OUT)/%.fullino.o: $(BUILD_OUT)/%.fullino | |
$(CXX) -x c++ -D_TAG_=\"$(TAG)\" $(USER_DEFINE) $(DEFINES) $(CXXFLAGS) $(INCLUDES) $< -o $@ | |
$(BUILD_OUT)/$(TARGET).elf: core libs | |
$(LD) $(ELFFLAGS) -o $@ \ | |
-Wl,--start-group $(OBJ_FILES) $(BUILD_OUT)/core/core.a \ | |
$(ELFLIBS) \ | |
-Wl,--end-group -L$(BUILD_OUT) | |
size: $(BUILD_OUT)/$(TARGET).elf | |
@$(SIZE) -A $(BUILD_OUT)/$(TARGET).elf | grep -E '^(?:\.text|\.data|\.rodata|\.irom0\.text|)\s+([0-9]+).*' | |
$(BUILD_OUT)/$(TARGET).bin: $(BUILD_OUT)/$(TARGET).elf | |
$(ESPTOOL) -eo $(ARDUINO_HOME)/bootloaders/eboot/eboot.elf -bo $(BUILD_OUT)/$(TARGET).bin \ | |
-bm $(FLASH_MODE) -bf $(FLASH_FREQ) -bz $(FLASH_SIZE) \ | |
-bs .text -bp 4096 -ec -eo $(BUILD_OUT)/$(TARGET).elf -bs .irom0.text -bs .text -bs .data -bs .rodata -bc -ec | |
upload: $(BUILD_OUT)/$(TARGET).bin size | |
$(ESPTOOL) $(ESPTOOL_VERBOSE) -cd $(UPLOAD_RESETMETHOD) -cb $(UPLOAD_SPEED) -cp $(SERIAL_PORT) -ca 0x00000 -cf $(BUILD_OUT)/$(TARGET).bin | |
ota: $(BUILD_OUT)/$(TARGET).bin | |
$(ESPOTA) -i $(OTA_IP) -p $(OTA_PORT) -a $(OTA_AUTH) -f $(BUILD_OUT)/$(TARGET).bin | |
term: | |
minicom -D $(SERIAL_PORT) -b $(SERIAL_BAUD) | |
print-%: ; @echo $* = $($*) | |
-include $(OBJ_FILES:.o=.d) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
自分の cygwin上の環境で動くように、修正しました。
といっても、111行目からのULIBDIRSの定義をコメントアウトしたたけです。
インクルードするライブラリのパス等は、すべてMakefile側で定義するようにしました。
オリジナルは、以下です。
https://github.com/thunderace/Esp8266-Arduino-Makefile