diff --git a/cpu/cc2538/Makefile.cc2538 b/cpu/cc2538/Makefile.cc2538 index b8230448b..f37e34d90 100644 --- a/cpu/cc2538/Makefile.cc2538 +++ b/cpu/cc2538/Makefile.cc2538 @@ -77,6 +77,8 @@ CPU_STARTFILES = ${addprefix $(OBJECTDIR)/,${call oname, $(CPU_START_SOURCEFILES CONTIKI_SOURCEFILES += $(CONTIKI_CPU_SOURCEFILES) $(DEBUG_IO_SOURCEFILES) CONTIKI_SOURCEFILES += $(USB_CORE_SOURCEFILES) $(USB_ARCH_SOURCEFILES) +.SECONDEXPANSION: + ### Don't treat the .elf as intermediate .PRECIOUS: %.elf %.hex %.bin @@ -90,7 +92,7 @@ $(OBJECTDIR)/ieee-addr.o: ieee-addr.c FORCE | $(OBJECTDIR) ### Compilation rules CUSTOM_RULE_LINK=1 -%.elf: $(CPU_STARTFILES) %.co $(PROJECT_OBJECTFILES) $(PROJECT_LIBRARIES) contiki-$(TARGET).a $(LDSCRIPT) +%.elf: $(CPU_STARTFILES) $$(CONTIKI_OBJECTFILES) %.co $(PROJECT_OBJECTFILES) $(PROJECT_LIBRARIES) $(LDSCRIPT) $(TRACE_LD) $(Q)$(LD) $(LDFLAGS) ${filter-out $(LDSCRIPT) %.a,$^} ${filter %.a,$^} $(TARGET_LIBFILES) -o $@ diff --git a/cpu/cc2538/startup-gcc.c b/cpu/cc2538/startup-gcc.c index d01aefa50..231b83f18 100644 --- a/cpu/cc2538/startup-gcc.c +++ b/cpu/cc2538/startup-gcc.c @@ -46,8 +46,6 @@ /*---------------------------------------------------------------------------*/ extern int main(void); /*---------------------------------------------------------------------------*/ -#define WEAK_ALIAS(x) __attribute__ ((weak, alias(#x))) -/*---------------------------------------------------------------------------*/ /* System handlers provided here */ void reset_handler(void); void nmi_handler(void); @@ -64,12 +62,25 @@ void cc2538_rf_rx_tx_isr(void); void cc2538_rf_err_isr(void); void udma_isr(void); void udma_err_isr(void); -void usb_isr(void) WEAK_ALIAS(default_handler); -void uart0_isr(void) WEAK_ALIAS(default_handler); -void uart1_isr(void) WEAK_ALIAS(default_handler); void crypto_isr(void); void pka_isr(void); +/* Link in the USB ISR only if USB is enabled */ +#if USB_SERIAL_CONF_ENABLE +void usb_isr(void); +#else +#define usb_isr default_handler +#endif + +/* Likewise for the UART[01] ISRs */ +#if UART_CONF_ENABLE +void uart0_isr(void); +void uart1_isr(void); +#else /* UART_CONF_ENABLE */ +#define uart0_isr default_handler +#define uart1_isr default_handler +#endif /* UART_CONF_ENABLE */ + /* Boot Loader Backdoor selection */ #if FLASH_CCA_CONF_BOOTLDR_BACKDOOR /* Backdoor enabled */