| 
									
										
										
										
											2023-06-24 17:35:37 +07:00
										 |  |  | # makefile for arm gcc toolchain
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CC = $(CROSS_COMPILE)gcc | 
					
						
							|  |  |  | CXX = $(CROSS_COMPILE)g++ | 
					
						
							|  |  |  | AS = $(CC) -x assembler-with-cpp | 
					
						
							|  |  |  | LD = $(CC) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | GDB = $(CROSS_COMPILE)gdb | 
					
						
							|  |  |  | OBJCOPY = $(CROSS_COMPILE)objcopy | 
					
						
							|  |  |  | SIZE = $(CROSS_COMPILE)size | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-23 11:44:14 +07:00
										 |  |  | CC_VERSION := $(shell $(CC) -dumpversion) | 
					
						
							| 
									
										
										
										
											2023-11-23 12:07:59 +07:00
										 |  |  | CC_VERSION_MAJOR = $(firstword $(subst ., ,$(CC_VERSION))) | 
					
						
							| 
									
										
										
										
											2023-11-23 11:44:14 +07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-24 17:35:37 +07:00
										 |  |  | # ---------------------------------------
 | 
					
						
							|  |  |  | # Compiler Flags
 | 
					
						
							|  |  |  | # ---------------------------------------
 | 
					
						
							|  |  |  | CFLAGS += \
 | 
					
						
							|  |  |  |   -MD \
 | 
					
						
							|  |  |  |   -ggdb \
 | 
					
						
							|  |  |  |   -fdata-sections \
 | 
					
						
							|  |  |  |   -ffunction-sections \
 | 
					
						
							|  |  |  |   -fsingle-precision-constant \
 | 
					
						
							|  |  |  |   -fno-strict-aliasing \
 | 
					
						
							|  |  |  |   -Wall \
 | 
					
						
							|  |  |  |   -Wextra \
 | 
					
						
							|  |  |  |   -Werror \
 | 
					
						
							|  |  |  |   -Wfatal-errors \
 | 
					
						
							|  |  |  |   -Wdouble-promotion \
 | 
					
						
							|  |  |  |   -Wstrict-prototypes \
 | 
					
						
							|  |  |  |   -Wstrict-overflow \
 | 
					
						
							|  |  |  |   -Werror-implicit-function-declaration \
 | 
					
						
							|  |  |  |   -Wfloat-equal \
 | 
					
						
							|  |  |  |   -Wundef \
 | 
					
						
							|  |  |  |   -Wshadow \
 | 
					
						
							|  |  |  |   -Wwrite-strings \
 | 
					
						
							|  |  |  |   -Wsign-compare \
 | 
					
						
							|  |  |  |   -Wmissing-format-attribute \
 | 
					
						
							|  |  |  |   -Wunreachable-code \
 | 
					
						
							|  |  |  |   -Wcast-align \
 | 
					
						
							|  |  |  |   -Wcast-function-type \
 | 
					
						
							|  |  |  |   -Wcast-qual \
 | 
					
						
							|  |  |  |   -Wnull-dereference \
 | 
					
						
							|  |  |  |   -Wuninitialized \
 | 
					
						
							|  |  |  |   -Wunused \
 | 
					
						
							|  |  |  |   -Wreturn-type \
 | 
					
						
							|  |  |  |   -Wredundant-decls \
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # conversion is too strict for most mcu driver, may be disable sign/int/arith-conversion
 | 
					
						
							|  |  |  | #  -Wconversion
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Size Optimization as default
 | 
					
						
							|  |  |  | CFLAGS_OPTIMIZED ?= -Os | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Debugging/Optimization
 | 
					
						
							|  |  |  | ifeq ($(DEBUG), 1) | 
					
						
							|  |  |  |   CFLAGS += -O0 | 
					
						
							|  |  |  |   NO_LTO = 1 | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   CFLAGS += $(CFLAGS_OPTIMIZED) | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # ---------------------------------------
 | 
					
						
							|  |  |  | # Linker Flags
 | 
					
						
							|  |  |  | # ---------------------------------------
 | 
					
						
							|  |  |  | LDFLAGS += \
 | 
					
						
							|  |  |  |   -Wl,-Map=$@.map \
 | 
					
						
							|  |  |  |   -Wl,-cref \
 | 
					
						
							|  |  |  |   -Wl,-gc-sections \
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-23 11:44:14 +07:00
										 |  |  | # renesas rx does not support --print-memory-usage flags
 | 
					
						
							| 
									
										
										
										
											2023-06-24 17:35:37 +07:00
										 |  |  | ifneq ($(FAMILY),rx) | 
					
						
							|  |  |  | LDFLAGS += -Wl,--print-memory-usage | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2023-11-23 11:44:14 +07:00
										 |  |  | 
 | 
					
						
							|  |  |  | # from version 12
 | 
					
						
							| 
									
										
										
										
											2023-11-23 12:07:59 +07:00
										 |  |  | ifeq ($(shell expr $(CC_VERSION_MAJOR) \>= 12),1) | 
					
						
							| 
									
										
										
										
											2023-11-23 11:44:14 +07:00
										 |  |  | LDFLAGS += -Wl,--no-warn-rwx-segment | 
					
						
							|  |  |  | endif |