summaryrefslogtreecommitdiffstats
path: root/libopencm3/ld/Makefile.linker
diff options
context:
space:
mode:
Diffstat (limited to 'libopencm3/ld/Makefile.linker')
-rw-r--r--libopencm3/ld/Makefile.linker71
1 files changed, 71 insertions, 0 deletions
diff --git a/libopencm3/ld/Makefile.linker b/libopencm3/ld/Makefile.linker
new file mode 100644
index 0000000..ae730a9
--- /dev/null
+++ b/libopencm3/ld/Makefile.linker
@@ -0,0 +1,71 @@
+##
+## 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