From 9c5553fbd041724c09f5e602be4b37f5bc61b1d7 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Sun, 28 May 2017 20:33:43 +0100 Subject: uart: Make the uart module optional Making the uart module optional makes an -Os compile much smaller. --- Makefile | 9 +++++++-- uart.c | 1 + uart.h | 8 +++++++- weak.c | 3 +++ 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 weak.c diff --git a/Makefile b/Makefile index ea5d872..ef5ba35 100644 --- a/Makefile +++ b/Makefile @@ -17,12 +17,17 @@ CFLAGS = -std=c11 $(WARNINGS) -O2 -flto -MMD -MP -ffreestanding -nostdlib LDFLAGS = -T layout.ld -O2 -flto -ffreestanding -nostdlib ASFLAGS = $(TARGET_ARCH) -OBJ := vectors.o flashconf.o crt0.o setup.o fmk.o lib/le.o pit.o uart.o \ - usb/endpt0.o usb/endpt1.o usb/txhandler.o usb/usb.o +OBJ := vectors.o flashconf.o crt0.o setup.o fmk.o lib/le.o pit.o \ + usb/endpt0.o usb/endpt1.o usb/txhandler.o usb/usb.o weak.o include $(MK20DX256)/mk20dx256.mk CPPFLAGS += $(mk20dx256_CPPFLAGS) +ifeq ("$(WITH_UART)", "yes") + CPPFLAGS += -DWITH_UART + OBJ += uart.o +endif + %.bin: % $(OBJCOPY) -O binary $< $@ diff --git a/uart.c b/uart.c index 3ead880..ab3ca89 100644 --- a/uart.c +++ b/uart.c @@ -212,6 +212,7 @@ void uart_printf(const char *fmt, ...) va_end(ap); } +void uart0_isr(void); void uart0_isr(void) { int avail, start, end, tosend; diff --git a/uart.h b/uart.h index 5ff2d79..b60b250 100644 --- a/uart.h +++ b/uart.h @@ -19,10 +19,16 @@ #ifndef FMK_UART_H #define FMK_UART_H +#ifdef WITH_UART void uart_setup(void); void uart_putchar(int c); void uart_printf(const char *fmt, ...); void uart_puts(const char *s); -void uart0_isr(void); +#else +static inline void uart_setup(void) { } +static inline void uart_putchar(int c) { (void)c; } +static inline void uart_printf(const char *fmt, ...) { (void)fmt; } +static inline void uart_puts(const char *s) { (void)s; } +#endif #endif /* FMK_UART_H */ diff --git a/weak.c b/weak.c new file mode 100644 index 0000000..8d8a726 --- /dev/null +++ b/weak.c @@ -0,0 +1,3 @@ +void uart0_isr(void); +__attribute__ ((weak)) +void uart0_isr(void) { } -- cgit v1.2.3-54-g00ecf