You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.2 KiB
71 lines
2.2 KiB
##
|
|
## This file is part of the libopencm3 project.
|
|
##
|
|
## Copyright (C) 2013 Frantisek Burian <BuFran@seznam.cz>
|
|
##
|
|
## Linker script generator feature
|
|
## -------------------------------
|
|
##
|
|
## This generator will generate <chipname>.ld linker script file in the project
|
|
## directory for the specified device, and this script will be automatically
|
|
## used as main linker script during the build process.
|
|
##
|
|
## WARNING: You must include this file after all shared variables are setup,
|
|
## and before the command section begins. Ideal place of the include is exactly
|
|
## after the all: rule in Your makefile.
|
|
##
|
|
## Options
|
|
## -------
|
|
##
|
|
## This feature is configured by specifying variable DEVICE=<device part name>
|
|
## in the makefile of Your project.
|
|
##
|
|
## WARNING Please don't forget to specify full name of the chip you are using.
|
|
## Many chip families have device specific letters specified on the end of
|
|
## device name string.
|
|
##
|
|
## Example:
|
|
## --------
|
|
##
|
|
## @code
|
|
## DEVICE=stm32f407vgt6
|
|
## <... common makefile code ...>
|
|
## all: images
|
|
##
|
|
## include <libopencm3 dir>/ld/Makefile.linker
|
|
##
|
|
## images: <....>
|
|
## @endcode
|
|
|
|
##
|
|
## This library is free software: you can redistribute it and/or modify
|
|
## it under the terms of the GNU Lesser General Public License as published by
|
|
## the Free Software Foundation, either version 3 of the License, or
|
|
## (at your option) any later version.
|
|
##
|
|
## This library is distributed in the hope that it will be useful,
|
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
## GNU Lesser General Public License for more details.
|
|
##
|
|
## You should have received a copy of the GNU Lesser General Public License
|
|
## along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
##
|
|
|
|
ifneq ($(DEVICE),)
|
|
|
|
LDSCRIPT=$(DEVICE).ld
|
|
LD_PARAMS=$(shell awk -v PAT="$(DEVICE)" -f $(SRCLIBDIR)/scripts/genlink.awk $(SRCLIBDIR)/ld/devices.data 2>/dev/null)
|
|
CFLAGS+=$(LD_PARAMS)
|
|
LDFLAGS+=$(LD_PARAMS)
|
|
ARCH_FLAGS=
|
|
|
|
$(LDSCRIPT):$(SRCLIBDIR)/ld/linker.ld.S
|
|
ifeq ($(LD_PARAMS),)
|
|
$(error unknown device $(DEVICE) for the linker. Cannot generate ldscript)
|
|
endif
|
|
@#printf " GENLNK $(subst $(shell pwd)/,,$(@))\n"
|
|
$(Q)$(CC) $(LD_PARAMS) -P -E $< > $@
|
|
|
|
GENFILES += $(LDSCRIPT)
|
|
endif
|
|
|