Handle cases where ASM files have the same name as c, cpp files, leading to overriden .o

pull/4/head
Acanthostega 8 years ago
parent f2aa032de2
commit 22d757227d

@ -257,6 +257,7 @@ endif
# Arduino core sources.
CORESRC = $(wildcard $(ARDUINO_CORE)/*.c)
CORECXXSRC = $(wildcard $(ARDUINO_CORE)/*.cpp)
COREASMSRC = $(wildcard $(ARDUINO_CORE)/*.S)
# Arduino official library sources.
# 1.0.x: search in root and utility folders
@ -275,6 +276,7 @@ ALIBDIRS = $(wildcard \
)
ALIBSRC = $(wildcard $(ALIBDIRS:%=%/*.c))
ALIBCXXSRC = $(wildcard $(ALIBDIRS:%=%/*.cpp))
ALIBASMSRC = $(wildcard $(ALIBDIRS:%=%/*.S))
# All Arduino library sources.
ARDUINO_ALL_LIBS = $(notdir $(wildcard $(ARDUINO_DIR)/libraries/*))
@ -284,6 +286,7 @@ ALIBALLDIRS = $(wildcard \
)
ALIBALLSRC = $(wildcard $(ALIBALLDIRS:%=%/*.c))
ALIBALLCXXSRC = $(wildcard $(ALIBALLDIRS:%=%/*.cpp))
ALIBALLASMSRC = $(wildcard $(ALIBALLDIRS:%=%/*.S))
# User library sources.
ULIBDIRS = $(wildcard \
@ -292,6 +295,7 @@ ULIBDIRS = $(wildcard \
)
ULIBSRC = $(wildcard $(ULIBDIRS:%=%/*.c))
ULIBCXXSRC = $(wildcard $(ULIBDIRS:%=%/*.cpp))
ULIBASMSRC = $(wildcard $(ULIBDIRS:%=%/*.S))
# User program sources.
SRC = $(wildcard *.c)
@ -347,33 +351,37 @@ CINCS = \
# Arduino core.
COREOBJ = $(addprefix $(OUTPUT)/,$(notdir \
$(CORESRC:.c=.o) \
$(CORECXXSRC:.cpp=.o) \
$(CORESRC:.c=.c.o) \
$(CORECXXSRC:.cpp=.cpp.o) \
$(COREASMSRC:.S=.S.o) \
))
# Arduino libraries used.
ALIBOBJ = $(addprefix $(OUTPUT)/,$(notdir \
$(ALIBSRC:.c=.o) \
$(ALIBCXXSRC:.cpp=.o) \
$(ALIBSRC:.c=.c.o) \
$(ALIBCXXSRC:.cpp=.cpp.o) \
$(ALIBASMSRC:.S=.S.o) \
))
# All Arduino libraries.
ALIBALLOBJ = $(addprefix $(OUTPUT)/,$(notdir \
$(ALIBALLSRC:.c=.o) \
$(ALIBALLCXXSRC:.cpp=.o) \
$(ALIBALLSRC:.c=.c.o) \
$(ALIBALLCXXSRC:.cpp=.cpp.o) \
$(ALIBALLASMSRC:.S=.S.o) \
))
# User libraries used.
ULIBOBJ = $(addprefix $(OUTPUT)/,$(notdir \
$(ULIBSRC:.c=.o) \
$(ULIBCXXSRC:.cpp=.o) \
$(ULIBSRC:.c=.c.o) \
$(ULIBCXXSRC:.cpp=.cpp.o) \
$(ULIBASMSRC:.S=.S.o) \
))
# User program.
OBJ = $(addprefix $(OUTPUT)/,$(notdir \
$(SRC:.c=.o) \
$(CXXSRC:.cpp=.o) \
$(ASRC:.S=.o) \
$(SRC:.c=.c.o) \
$(CXXSRC:.cpp=.cpp.o) \
$(ASRC:.S=.S.o) \
))
# All object files.
@ -461,6 +469,7 @@ OPT_OTHER =
# Automatically enable build.extra_flags if needed
# Used by Micro and other devices to fill in USB_PID and USB_VID
OPT_OTHER += -DUSB_VID=$(VID) -DUSB_PID=$(PID)
OPT_OTHER += -fno-use-cxa-atexit
endif
# Final combined.
@ -516,7 +525,7 @@ AVRDUDE_FLAGS+= -P $(PORT)
# avrdude config file
AVRDUDE_FLAGS+= -C /etc/avrdude.conf
#AVRDUDE_FLAGS+= -C $(ARDUINO_DIR)/hardware/tools/avrdude.conf
#AVRDUDE_FLAGS+= -C $(ARDUINO_DIR)/hardware/tools/avr/etc/avrdude.conf
AVRDUDE_WRITE_FLASH = -U flash:w:$(OUTPUT)/$(PROJECT).hex:i
@ -550,24 +559,24 @@ endif
.SUFFIXES: .cpp .c .S .o .a
# Compile: create object files from C++ source files.
%.o $(OUTPUT)/%.o: %.cpp
%.cpp.o $(OUTPUT)/%.cpp.o: %.cpp
$(CXX) -o $@ -c $(CXXFLAGS) $< \
-MMD -MP -MF"$(@:%.o=%.d)" -MT"$@ $(@:%.o=%.S) $(@:%.o=%.d)" \
-MMD -MP -MF"$(@:%.cpp.o=%.d)" -MT"$@ $(@:%.cpp.o=%.S) $(@:%.cpp.o=%.d)" \
$(CINCS)
if [ -f "$(notdir $(@:.o=.s))" -a ! -f "$(@:.o=.s)" ]; then \
mv "$(notdir $(@:.o=.s))" "$(dir $@)"; fi
if [ -f "$(notdir $(@:.o=.ii))" -a ! -f "$(@:.o=.ii)" ]; then \
mv "$(notdir $(@:.o=.ii))" "$(dir $@)"; fi
if [ -f "$(notdir $(@:.cpp.o=.s))" -a ! -f "$(@:.cpp.o=.s)" ]; then \
mv "$(notdir $(@:.cpp.o=.s))" "$(dir $@)"; fi
if [ -f "$(notdir $(@:.cpp.o=.ii))" -a ! -f "$(@:.cpp.o=.ii)" ]; then \
mv "$(notdir $(@:.cpp.o=.ii))" "$(dir $@)"; fi
# Compile: create object files from C source files.
%.o $(OUTPUT)/%.o: %.c
%.c.o $(OUTPUT)/%.c.o: %.c
$(CC) -o $@ -c $(CFLAGS) $< \
-MMD -MP -MF"$(@:%.o=%.d)" -MT"$@ $(@:%.o=%.S) $(@:%.o=%.d)" \
-MMD -MP -MF"$(@:%.c.o=%.d)" -MT"$@ $(@:%.c.o=%.S) $(@:%.c.o=%.d)" \
$(CINCS)
if [ -f "$(notdir $(@:.o=.s))" -a ! -f "$(@:.o=.s)" ]; then \
mv "$(notdir $(@:.o=.s))" "$(dir $@)"; fi
if [ -f "$(notdir $(@:.o=.i))" -a ! -f "$(@:.o=.i)" ]; then \
mv "$(notdir $(@:.o=.i))" "$(dir $@)"; fi
if [ -f "$(notdir $(@:.c.o=.s))" -a ! -f "$(@:.c.o=.s)" ]; then \
mv "$(notdir $(@:.c.o=.s))" "$(dir $@)"; fi
if [ -f "$(notdir $(@:.c.o=.i))" -a ! -f "$(@:.c.o=.i)" ]; then \
mv "$(notdir $(@:.c.o=.i))" "$(dir $@)"; fi
# Compile: create assembler files from C++ source files.
%.S $(OUTPUT)/%.S: %.cpp
@ -582,9 +591,9 @@ endif
$(CINCS)
# Assemble: create object files from assembler source files.
%.o $(OUTPUT)/%.o: %.S
%.S.o $(OUTPUT)/%.S.o: %.S
$(CC) -o $@ -c $(ASFLAGS) $< \
-MMD -MP -MF"$(@:%.o=%.d)" -MT"$@ $(@:%.o=%.S) $(@:%.o=%.d)" \
-MMD -MP -MF"$(@:%.S.o=%.d)" -MT"$@ $(@:%.S.o=%.S) $(@:%.S.o=%.d)" \
$(CINCS)
# Create extended listing file from object file.

Loading…
Cancel
Save