Preserve source extension for object files.
Needed to fix the new wiring_pulse.S in IDE 1.6.5 which also has a wiring_pulse.c source file. Mostly rebased @peplin's PR #266, so should allow us to support newer chipKIT builds too.
This commit is contained in:
parent
e3d97f76f5
commit
abbd020bf4
2 changed files with 37 additions and 34 deletions
68
Arduino.mk
68
Arduino.mk
|
@ -763,9 +763,9 @@ LOCAL_AS_SRCS ?= $(wildcard *.S)
|
|||
LOCAL_SRCS = $(LOCAL_C_SRCS) $(LOCAL_CPP_SRCS) \
|
||||
$(LOCAL_CC_SRCS) $(LOCAL_PDE_SRCS) \
|
||||
$(LOCAL_INO_SRCS) $(LOCAL_AS_SRCS)
|
||||
LOCAL_OBJ_FILES = $(LOCAL_C_SRCS:.c=.o) $(LOCAL_CPP_SRCS:.cpp=.o) \
|
||||
$(LOCAL_CC_SRCS:.cc=.o) $(LOCAL_PDE_SRCS:.pde=.o) \
|
||||
$(LOCAL_INO_SRCS:.ino=.o) $(LOCAL_AS_SRCS:.S=.o)
|
||||
LOCAL_OBJ_FILES = $(LOCAL_C_SRCS:.c=.c.o) $(LOCAL_CPP_SRCS:.cpp=.cpp.o) \
|
||||
$(LOCAL_CC_SRCS:.cc=.cc.o) $(LOCAL_PDE_SRCS:.pde=.pde.o) \
|
||||
$(LOCAL_INO_SRCS:.ino=.ino.o) $(LOCAL_AS_SRCS:.S=.S.o)
|
||||
LOCAL_OBJS = $(patsubst %,$(OBJDIR)/%,$(LOCAL_OBJ_FILES))
|
||||
|
||||
ifeq ($(words $(LOCAL_SRCS)), 0)
|
||||
|
@ -797,13 +797,14 @@ ifeq ($(strip $(NO_CORE)),)
|
|||
CORE_C_SRCS = $(wildcard $(ARDUINO_CORE_PATH)/*.c)
|
||||
CORE_C_SRCS += $(wildcard $(ARDUINO_CORE_PATH)/avr-libc/*.c)
|
||||
CORE_CPP_SRCS = $(wildcard $(ARDUINO_CORE_PATH)/*.cpp)
|
||||
CORE_AS_SRCS = $(wildcard $(ARDUINO_CORE_PATH)/*.S)
|
||||
|
||||
ifneq ($(strip $(NO_CORE_MAIN_CPP)),)
|
||||
CORE_CPP_SRCS := $(filter-out %main.cpp, $(CORE_CPP_SRCS))
|
||||
$(call show_config_info,NO_CORE_MAIN_CPP set so core library will not include main.cpp,[MANUAL])
|
||||
endif
|
||||
|
||||
CORE_OBJ_FILES = $(CORE_C_SRCS:.c=.o) $(CORE_CPP_SRCS:.cpp=.o) $(CORE_AS_SRCS:.S=.o)
|
||||
CORE_OBJ_FILES = $(CORE_C_SRCS:.c=.c.o) $(CORE_CPP_SRCS:.cpp=.cpp.o) $(CORE_AS_SRCS:.S=.S.o)
|
||||
CORE_OBJS = $(patsubst $(ARDUINO_CORE_PATH)/%, \
|
||||
$(OBJDIR)/core/%,$(CORE_OBJ_FILES))
|
||||
endif
|
||||
|
@ -811,6 +812,7 @@ else
|
|||
$(call show_config_info,NO_CORE set so core library will not be built,[MANUAL])
|
||||
endif
|
||||
|
||||
|
||||
########################################################################
|
||||
# Determine ARDUINO_LIBS automatically
|
||||
|
||||
|
@ -953,21 +955,21 @@ LIB_AS_SRCS := $(foreach lib, $(SYS_LIBS), $(call get_library_files,$(l
|
|||
USER_LIB_CPP_SRCS := $(foreach lib, $(USER_LIBS), $(call get_library_files,$(lib),cpp))
|
||||
USER_LIB_C_SRCS := $(foreach lib, $(USER_LIBS), $(call get_library_files,$(lib),c))
|
||||
USER_LIB_AS_SRCS := $(foreach lib, $(USER_LIBS), $(call get_library_files,$(lib),S))
|
||||
LIB_OBJS = $(patsubst $(ARDUINO_LIB_PATH)/%.c,$(OBJDIR)/libs/%.o,$(LIB_C_SRCS)) \
|
||||
$(patsubst $(ARDUINO_LIB_PATH)/%.cpp,$(OBJDIR)/libs/%.o,$(LIB_CPP_SRCS)) \
|
||||
$(patsubst $(ARDUINO_LIB_PATH)/%.S,$(OBJDIR)/libs/%.o,$(LIB_AS_SRCS))
|
||||
USER_LIB_OBJS = $(patsubst $(USER_LIB_PATH)/%.cpp,$(OBJDIR)/userlibs/%.o,$(USER_LIB_CPP_SRCS)) \
|
||||
$(patsubst $(USER_LIB_PATH)/%.c,$(OBJDIR)/userlibs/%.o,$(USER_LIB_C_SRCS)) \
|
||||
$(patsubst $(USER_LIB_PATH)/%.S,$(OBJDIR)/userlibs/%.o,$(USER_LIB_AS_SRCS))
|
||||
LIB_OBJS = $(patsubst $(ARDUINO_LIB_PATH)/%.c,$(OBJDIR)/libs/%.c.o,$(LIB_C_SRCS)) \
|
||||
$(patsubst $(ARDUINO_LIB_PATH)/%.cpp,$(OBJDIR)/libs/%.cpp.o,$(LIB_CPP_SRCS)) \
|
||||
$(patsubst $(ARDUINO_LIB_PATH)/%.S,$(OBJDIR)/libs/%.S.o,$(LIB_AS_SRCS))
|
||||
USER_LIB_OBJS = $(patsubst $(USER_LIB_PATH)/%.cpp,$(OBJDIR)/userlibs/%.cpp.o,$(USER_LIB_CPP_SRCS)) \
|
||||
$(patsubst $(USER_LIB_PATH)/%.c,$(OBJDIR)/userlibs/%.c.o,$(USER_LIB_C_SRCS)) \
|
||||
$(patsubst $(USER_LIB_PATH)/%.S,$(OBJDIR)/userlibs/%.S.o,$(USER_LIB_AS_SRCS))
|
||||
|
||||
ifdef ARDUINO_PLATFORM_LIB_PATH
|
||||
PLATFORM_INCLUDES := $(foreach lib, $(PLATFORM_LIBS), $(call get_library_includes,$(lib)))
|
||||
PLATFORM_LIB_CPP_SRCS := $(foreach lib, $(PLATFORM_LIBS), $(call get_library_files,$(lib),cpp))
|
||||
PLATFORM_LIB_C_SRCS := $(foreach lib, $(PLATFORM_LIBS), $(call get_library_files,$(lib),c))
|
||||
PLATFORM_LIB_AS_SRCS := $(foreach lib, $(PLATFORM_LIBS), $(call get_library_files,$(lib),S))
|
||||
PLATFORM_LIB_OBJS := $(patsubst $(ARDUINO_PLATFORM_LIB_PATH)/%.cpp,$(OBJDIR)/platformlibs/%.o,$(PLATFORM_LIB_CPP_SRCS)) \
|
||||
$(patsubst $(ARDUINO_PLATFORM_LIB_PATH)/%.c,$(OBJDIR)/platformlibs/%.o,$(PLATFORM_LIB_C_SRCS)) \
|
||||
$(patsubst $(ARDUINO_PLATFORM_LIB_PATH)/%.S,$(OBJDIR)/platformlibs/%.o,$(PLATFORM_LIB_AS_SRCS))
|
||||
PLATFORM_LIB_OBJS := $(patsubst $(ARDUINO_PLATFORM_LIB_PATH)/%.cpp,$(OBJDIR)/platformlibs/%.cpp.o,$(PLATFORM_LIB_CPP_SRCS)) \
|
||||
$(patsubst $(ARDUINO_PLATFORM_LIB_PATH)/%.c,$(OBJDIR)/platformlibs/%.c.o,$(PLATFORM_LIB_C_SRCS)) \
|
||||
$(patsubst $(ARDUINO_PLATFORM_LIB_PATH)/%.S,$(OBJDIR)/platformlibs/%.S.o,$(PLATFORM_LIB_AS_SRCS))
|
||||
|
||||
endif
|
||||
|
||||
|
@ -989,7 +991,7 @@ ifndef DEBUG_FLAGS
|
|||
endif
|
||||
|
||||
# SoftwareSerial requires -Os (some delays are tuned for this optimization level)
|
||||
%SoftwareSerial.o : OPTIMIZATION_FLAGS = -Os
|
||||
%SoftwareSerial.cpp.o : OPTIMIZATION_FLAGS = -Os
|
||||
|
||||
ifndef MCU_FLAG_NAME
|
||||
MCU_FLAG_NAME = mmcu
|
||||
|
@ -1142,39 +1144,39 @@ $(call show_separator)
|
|||
# easy to change the build options in future
|
||||
|
||||
# library sources
|
||||
$(OBJDIR)/libs/%.o: $(ARDUINO_LIB_PATH)/%.c
|
||||
$(OBJDIR)/libs/%.c.o: $(ARDUINO_LIB_PATH)/%.c
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CC) -MMD -c $(CPPFLAGS) $(CFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/libs/%.o: $(ARDUINO_LIB_PATH)/%.cpp
|
||||
$(OBJDIR)/libs/%.cpp.o: $(ARDUINO_LIB_PATH)/%.cpp
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CXX) -MMD -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/libs/%.o: $(ARDUINO_LIB_PATH)/%.S
|
||||
$(OBJDIR)/libs/%.S.o: $(ARDUINO_LIB_PATH)/%.S
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CC) -MMD -c $(CPPFLAGS) $(ASFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/platformlibs/%.o: $(ARDUINO_PLATFORM_LIB_PATH)/%.c
|
||||
$(OBJDIR)/platformlibs/%.c.o: $(ARDUINO_PLATFORM_LIB_PATH)/%.c
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CC) -MMD -c $(CPPFLAGS) $(CFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/platformlibs/%.o: $(ARDUINO_PLATFORM_LIB_PATH)/%.cpp
|
||||
$(OBJDIR)/platformlibs/%.cpp.o: $(ARDUINO_PLATFORM_LIB_PATH)/%.cpp
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CXX) -MMD -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/platformlibs/%.o: $(ARDUINO_PLATFORM_LIB_PATH)/%.S
|
||||
$(OBJDIR)/platformlibs/%.S.o: $(ARDUINO_PLATFORM_LIB_PATH)/%.S
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CC) -MMD -c $(CPPFLAGS) $(ASFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/userlibs/%.o: $(USER_LIB_PATH)/%.cpp
|
||||
$(OBJDIR)/userlibs/%.cpp.o: $(USER_LIB_PATH)/%.cpp
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CXX) -MMD -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/userlibs/%.o: $(USER_LIB_PATH)/%.c
|
||||
$(OBJDIR)/userlibs/%.c.o: $(USER_LIB_PATH)/%.c
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CC) -MMD -c $(CPPFLAGS) $(CFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/userlibs/%.o: $(USER_LIB_PATH)/%.S
|
||||
$(OBJDIR)/userlibs/%.S.o: $(USER_LIB_PATH)/%.S
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CC) -MMD -c $(CPPFLAGS) $(ASFLAGS) $< -o $@
|
||||
|
||||
|
@ -1185,33 +1187,33 @@ else
|
|||
endif
|
||||
|
||||
# normal local sources
|
||||
$(OBJDIR)/%.o: %.c $(COMMON_DEPS) | $(OBJDIR)
|
||||
$(OBJDIR)/%.c.o: %.c $(COMMON_DEPS) | $(OBJDIR)
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CC) -MMD -c $(CPPFLAGS) $(CFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/%.o: %.cc $(COMMON_DEPS) | $(OBJDIR)
|
||||
$(OBJDIR)/%.cc.o: %.cc $(COMMON_DEPS) | $(OBJDIR)
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CXX) -MMD -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/%.o: %.cpp $(COMMON_DEPS) | $(OBJDIR)
|
||||
$(OBJDIR)/%.cpp.o: %.cpp $(COMMON_DEPS) | $(OBJDIR)
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CXX) -MMD -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/%.o: %.S $(COMMON_DEPS) | $(OBJDIR)
|
||||
$(OBJDIR)/%.S.o: %.S $(COMMON_DEPS) | $(OBJDIR)
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CC) -MMD -c $(CPPFLAGS) $(ASFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/%.o: %.s $(COMMON_DEPS) | $(OBJDIR)
|
||||
$(OBJDIR)/%.s.o: %.s $(COMMON_DEPS) | $(OBJDIR)
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CC) -c $(CPPFLAGS) $(ASFLAGS) $< -o $@
|
||||
|
||||
# the pde -> o file
|
||||
$(OBJDIR)/%.o: %.pde $(COMMON_DEPS) | $(OBJDIR)
|
||||
$(OBJDIR)/%.pde.o: %.pde $(COMMON_DEPS) | $(OBJDIR)
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CXX) -x c++ -include $(ARDUINO_HEADER) -MMD -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
# the ino -> o file
|
||||
$(OBJDIR)/%.o: %.ino $(COMMON_DEPS) | $(OBJDIR)
|
||||
$(OBJDIR)/%.ino.o: %.ino $(COMMON_DEPS) | $(OBJDIR)
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CXX) -x c++ -include $(ARDUINO_HEADER) -MMD -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
|
@ -1229,15 +1231,15 @@ $(OBJDIR)/%.s: %.cpp $(COMMON_DEPS) | $(OBJDIR)
|
|||
$(CXX) -x c++ -include $(ARDUINO_HEADER) -MMD -S -fverbose-asm $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
# core files
|
||||
$(OBJDIR)/core/%.o: $(ARDUINO_CORE_PATH)/%.c $(COMMON_DEPS) | $(OBJDIR)
|
||||
$(OBJDIR)/core/%.c.o: $(ARDUINO_CORE_PATH)/%.c $(COMMON_DEPS) | $(OBJDIR)
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CC) -MMD -c $(CPPFLAGS) $(CFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/core/%.o: $(ARDUINO_CORE_PATH)/%.cpp $(COMMON_DEPS) | $(OBJDIR)
|
||||
$(OBJDIR)/core/%.cpp.o: $(ARDUINO_CORE_PATH)/%.cpp $(COMMON_DEPS) | $(OBJDIR)
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CXX) -MMD -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/core/%.o: $(ARDUINO_CORE_PATH)/%.S $(COMMON_DEPS) | $(OBJDIR)
|
||||
$(OBJDIR)/core/%.S.o: $(ARDUINO_CORE_PATH)/%.S $(COMMON_DEPS) | $(OBJDIR)
|
||||
@$(MKDIR) $(dir $@)
|
||||
$(CC) -MMD -c $(CPPFLAGS) $(ASFLAGS) $< -o $@
|
||||
|
||||
|
|
|
@ -9,12 +9,13 @@ I tried to give credit whenever possible. If I have missed anyone, kindly add it
|
|||
- New: Add more board examples to Blink demo (https://github.com/sej7278)
|
||||
- New: Add option to split avrdude MCU from avr-gcc MCU (Issue #357) (https://github.com/hhgarnes)
|
||||
- New: Add support for /dev/tty.wchusbserial* (comes with cheap clones - DCCduino) (https://github.com/biesiad)
|
||||
- New: Add support for picocom as serial monitor(https://github.com/biesiad)
|
||||
- New: Add support for picocom as serial monitor (https://github.com/biesiad)
|
||||
- Tweak: Looks for submenu items first when parsing BOARDS_TXT (Issue #347) (https://github.com/sej7278)
|
||||
- Tweak: Various spelling/grammar/typo fixes (https://github.com/dcousens)
|
||||
- Tweak: Clarified some 1.5+ issues in docs (Issue #352) (https://github.com/sej7278)
|
||||
- Tweak: Added some more Continuous Integration tests (https://github.com/sej7278)
|
||||
- Tweak: Updated Fedora instructions (https://github.com/sej7278)
|
||||
- Fix: Preserve original extension for object files, fixes parseIntASM (Issue #255, #364) (https://github.com/sej7278)
|
||||
|
||||
### 1.5 (2015-04-07)
|
||||
- New: Add support for new 1.5.x library layout (Issue #275) (https://github.com/lukasz-e)
|
||||
|
|
Loading…
Reference in a new issue