Browse Source

Add the linker generator makefile

Example of use is included in the file header
pull/179/merge
BuFran 12 years ago
committed by Piotr Esden-Tempski
parent
commit
19fbf4e582
  1. 68
      ld/Makefile.linker

68
ld/Makefile.linker

@ -0,0 +1,68 @@
##
## 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 $(TOOLCHAIN_DIR)/scripts/genlink.awk $(TOOLCHAIN_DIR)/ld/devices.data 2>/dev/null)
$(LDSCRIPT):$(TOOLCHAIN_DIR)/lib/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
Loading…
Cancel
Save