| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- PROJECT_NAME := ext_micro_ecc_nrf51_library_armgcc
- export OUTPUT_FILENAME
- #MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
- MAKEFILE_NAME := $(MAKEFILE_LIST)
- MAKEFILE_DIR := $(dir $(MAKEFILE_NAME) )
- TEMPLATE_PATH = ../../../../components/toolchain/gcc
- ifeq ($(OS),Windows_NT)
- include $(TEMPLATE_PATH)/Makefile.windows
- else
- include $(TEMPLATE_PATH)/Makefile.posix
- endif
- MK := mkdir
- RM := rm -rf
- #echo suspend
- ifeq ("$(VERBOSE)","1")
- NO_ECHO :=
- else
- NO_ECHO := @
- endif
- # Toolchain commands
- CC := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-gcc'
- AS := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-as'
- AR := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-ar' -r
- LD := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-ld'
- NM := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-nm'
- OBJDUMP := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-objdump'
- OBJCOPY := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-objcopy'
- SIZE := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-size'
- #function for removing duplicates in a list
- remduplicates = $(strip $(if $1,$(firstword $1) $(call remduplicates,$(filter-out $(firstword $1),$1))))
- #source common to all targets
- C_SOURCE_FILES += \
- $(abspath ../../micro-ecc/uECC.c) \
- #includes common to all targets
- INC_PATHS = -I$(abspath ../../config)
- OBJECT_DIRECTORY = _build
- LISTING_DIRECTORY = $(OBJECT_DIRECTORY)
- OUTPUT_BINARY_DIRECTORY = $(OBJECT_DIRECTORY)
- # Sorting removes duplicates
- BUILD_DIRECTORIES := $(sort $(OBJECT_DIRECTORY) $(OUTPUT_BINARY_DIRECTORY) $(LISTING_DIRECTORY) )
- #flags common to all targets
- CFLAGS = -DuECC_ENABLE_VLI_API
- CFLAGS += -DuECC_VLI_NATIVE_LITTLE_ENDIAN=1
- CFLAGS += -DuECC_SUPPORTS_secp256r1=1
- CFLAGS += -DuECC_SQUARE_FUNC=1
- CFLAGS += -DuECC_SUPPORT_COMPRESSED_POINT=0
- CFLAGS += -DuECC_OPTIMIZATION_LEVEL=3
- CFLAGS += -mcpu=cortex-m0
- CFLAGS += -mthumb -mabi=aapcs --std=gnu99
- CFLAGS += -Wall -Werror -O2 -g3
- CFLAGS += -mfloat-abi=soft
- # keep every function in separate section. This will allow linker to dump unused functions
- CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing
- CFLAGS += -fno-builtin --short-enums
- # Assembler flags
- ASMFLAGS += -x assembler-with-cpp
- ASMFLAGS += -DuECC_ENABLE_VLI_API
- ASMFLAGS += -DuECC_VLI_NATIVE_LITTLE_ENDIAN=1
- ASMFLAGS += -DuECC_SUPPORTS_secp256r1=1
- ASMFLAGS += -DuECC_SQUARE_FUNC=1
- ASMFLAGS += -DuECC_SUPPORT_COMPRESSED_POINT=0
- ASMFLAGS += -DuECC_OPTIMIZATION_LEVEL=3
- #default target - first one defined
- default: clean micro_ecc_lib
- #building all targets
- all: clean
- $(NO_ECHO)$(MAKE) -f $(MAKEFILE_NAME) -C $(MAKEFILE_DIR) -e cleanobj
- $(NO_ECHO)$(MAKE) -f $(MAKEFILE_NAME) -C $(MAKEFILE_DIR) -e micro_ecc_lib
- #target for printing all targets
- help:
- @echo following targets are available:
- @echo micro_ecc_lib
- C_SOURCE_FILE_NAMES = $(notdir $(C_SOURCE_FILES))
- C_PATHS = $(call remduplicates, $(dir $(C_SOURCE_FILES) ) )
- C_OBJECTS = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILE_NAMES:.c=.o) )
- ASM_SOURCE_FILE_NAMES = $(notdir $(ASM_SOURCE_FILES))
- ASM_PATHS = $(call remduplicates, $(dir $(ASM_SOURCE_FILES) ))
- ASM_OBJECTS = $(addprefix $(OBJECT_DIRECTORY)/, $(ASM_SOURCE_FILE_NAMES:.s=.o) )
- vpath %.c $(C_PATHS)
- vpath %.s $(ASM_PATHS)
- OBJECTS = $(C_OBJECTS) $(ASM_OBJECTS)
- micro_ecc_lib: OUTPUT_FILENAME := micro_ecc_lib
- micro_ecc_lib: $(BUILD_DIRECTORIES) $(OBJECTS)
- @echo Starting compilation
- $(NO_ECHO)$(MAKE) -f $(MAKEFILE_NAME) -C $(MAKEFILE_DIR) -e finalize
- ## Create build directories
- $(BUILD_DIRECTORIES):
- echo $(MAKEFILE_NAME)
- $(MK) $@
- # Create objects from C SRC files
- $(OBJECT_DIRECTORY)/%.o: %.c
- @echo Compiling file: $(notdir $<)
- $(NO_ECHO)$(CC) $(CFLAGS) $(INC_PATHS) -c -o $@ $<
- # Assemble files
- $(OBJECT_DIRECTORY)/%.o: %.s
- @echo Assembly file: $(notdir $<)
- $(NO_ECHO)$(CC) $(ASMFLAGS) $(INC_PATHS) -c -o $@ $<
- finalize:
- @echo Creating library $(OUTPUT_FILENAME).a
- $(NO_ECHO)$(AR) ..\micro_ecc_lib_nrf51.a $(C_OBJECTS)
- @echo Done
- clean:
- $(RM) $(BUILD_DIRECTORIES)
- cleanobj:
- $(RM) $(BUILD_DIRECTORIES)/*.o
|