diff --git a/cpu/cc2538/Makefile.cc2538 b/cpu/cc2538/Makefile.cc2538 index 29795111c..56ce4a2c9 100644 --- a/cpu/cc2538/Makefile.cc2538 +++ b/cpu/cc2538/Makefile.cc2538 @@ -70,6 +70,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 @@ -83,7 +85,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 2aa82894e..944c6a6e9 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,11 +62,24 @@ 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); +/* 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 */