Until https://github.com/libopencm3/libopencm3/issues/732 has been fixed, it's not enough to just have it in the README that you need GNU awk. Explicitly use the "gawk" command name. This exists on (sane) systems that have gawk as awk, and for systems that use mawk as default, the gawk name should also exist. This should make it significantly easier to diagnost the cause of build problems.
72 lines
2.2 KiB
Makefile
72 lines
2.2 KiB
Makefile
##
|
|
## 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 gawk -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
|