On Sun, Jun 08, 2014 at 02:07:12AM +0200, Michael Grzeschik wrote:
> This patch adds support for the libopencm3 for bare metal
> systems. With this library it is possible to build single
> applications for cortexm3 companion systems, that
> needs to be deployed with the bsp.
>
> Signed-off-by: Michael Grzeschik <[email protected]>
> ---
> rules/bare_metal.in | 7 +++++
> rules/bare_metal_cm3.in | 12 ++++++++
> rules/libopencm3.in | 11 ++++++++
> rules/libopencm3.make | 75
> +++++++++++++++++++++++++++++++++++++++++++++++++
> 4 files changed, 105 insertions(+)
> create mode 100644 rules/bare_metal_cm3.in
> create mode 100644 rules/libopencm3.in
> create mode 100644 rules/libopencm3.make
>
> diff --git a/rules/bare_metal.in b/rules/bare_metal.in
> index 1292a34..e5c15c5 100644
> --- a/rules/bare_metal.in
> +++ b/rules/bare_metal.in
> @@ -6,3 +6,10 @@ menuconfig STELLARIS
> if STELLARIS
> source "generated/bare_metal_stellaris.in"
> endif
> +
> +menuconfig OPENCM3
> + bool "OpenCM3 "
> +
> +if OPENCM3
> +source "generated/bare_metal_cm3.in"
> +endif
> diff --git a/rules/bare_metal_cm3.in b/rules/bare_metal_cm3.in
> new file mode 100644
> index 0000000..a912c9e
> --- /dev/null
> +++ b/rules/bare_metal_cm3.in
> @@ -0,0 +1,12 @@
> +## SECTION=bare_metal_cm3
> +
> +config CM3_GNU_TARGET
> + string
> + prompt "stellaris gnu target"
I think this should be 'cm3' not 'stellaris', right?
> + default "arm-cortexm3-eabi"
> + help
> + configure the cm3 gnu target
> +
> +config CM3_CC
> + string
> + default "${PTXCONF_CM3_GNU_TARGET}-gcc"
> diff --git a/rules/libopencm3.in b/rules/libopencm3.in
> new file mode 100644
> index 0000000..69276b7
> --- /dev/null
> +++ b/rules/libopencm3.in
> @@ -0,0 +1,11 @@
> +## SECTION=bare_metal_cm3
> +
> +config LIBOPENCM3
> + tristate
> + prompt "libopencm3"
> + help
> + The libopencm3 project (previously known as libopenstm32) aims
> + to create a free/libre/open-source (LGPL v3, or later) firmware
> + library for various ARM Cortex-M0(+)/M3/M4 microcontrollers,
> + including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx,
> + 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others.
> diff --git a/rules/libopencm3.make b/rules/libopencm3.make
> new file mode 100644
> index 0000000..8ceb1a1
> --- /dev/null
> +++ b/rules/libopencm3.make
> @@ -0,0 +1,75 @@
> +# -*-makefile-*-
> +#
> +# Copyright (C) 2013 by Michael Grzeschik <[email protected]>
> +#
> +# See CREDITS for details about who has contributed to this project.
> +#
> +# For further information about the PTXdist project and license conditions
> +# see the README file.
> +#
> +
> +ifdef PTXCONF_LIBOPENCM3
> +ifneq ($(shell test -h $(PTXDIST_WORKSPACE)/selected_toolchain_cm3 && echo
> ok),ok)
> + $(warning *** selected_toolchain_cm3 must point to a valid cortexm3
> toolchain)
> + $(error )
> +endif
> +ifneq ($(shell test -x
> $(PTXDIST_WORKSPACE)/selected_toolchain_cm3/$(PTXCONF_CM3_CC) && echo ok),ok)
> + $(warning ***
> $(PTXDIST_WORKSPACE)/selected_toolchain_cm3/$(PTXCONF_CM3_CC) not found)
> + $(error )
> +endif
> +endif
I don't really like this, but I have no better idea either :-/
> +
> +#
> +# We provide this package
> +#
> +PACKAGES-$(PTXCONF_LIBOPENCM3) += libopencm3
> +
> +#
> +# Paths and names
> +#
> +LIBOPENCM3_VERSION := 67b538a5
> +LIBOPENCM3_MD5 := 7d40cc7bcd3a5e852d0b37572655b9b5
> +LIBOPENCM3 := libopencm3-$(LIBOPENCM3_VERSION)
> +LIBOPENCM3_SUFFIX := tar.bz2
> +LIBOPENCM3_URL :=
> https://github.com/libopencm3/libopencm3.git;tag=67b538a5
> +LIBOPENCM3_SOURCE := $(SRCDIR)/$(LIBOPENCM3).$(LIBOPENCM3_SUFFIX)
> +LIBOPENCM3_DIR := $(BUILDDIR)/$(LIBOPENCM3)
> +LIBOPENCM3_LICENSE := LGPLv3+
> +
> +#
> ----------------------------------------------------------------------------
> +# Prepare
> +#
> ----------------------------------------------------------------------------
> +
> +LIBOPENCM3_MAKEVARS := \
> +
> PREFIX=$(PTXDIST_WORKSPACE)/selected_toolchain_cm3/$(PTXCONF_CM3_GNU_TARGET)
_MAKEVARS is deprecated. use _MAKE_OPT / _INSTALL_OPT
Also, I think you should expand PATH and then use
PREFIX=$(PTXCONF_CM3_GNU_TARGET)
> +
> +#
> ----------------------------------------------------------------------------
> +# Install
> +#
> ----------------------------------------------------------------------------
> +
> +$(STATEDIR)/libopencm3.install:
> + @$(call targetinfo)
> +
> +# # install static libraries
> + mkdir -p $(PTXDIST_PLATFORMDIR)/sysroot-cm3/lib
> + cp $(LIBOPENCM3_DIR)/lib/*.a \
> + $(PTXDIST_PLATFORMDIR)/sysroot-cm3/lib/
c$(LIBOPENCM3_DIR) && \
for i in lib/*.a; do \
install -D -m644 $$i $(PTXDIST_PLATFORMDIR)/sysroot-cm3/$$i; \
done
or something like that.
-> no need for mkdir
-> strange umasks wont cause problems
> +
> +# # install header files
> + mkdir -p $(PTXDIST_PLATFORMDIR)/sysroot-cm3/include
> + cd $(LIBOPENCM3_DIR) && \
> + for i in `find . -name "*.h"`; do \
> + mkdir -p $(PTXDIST_PLATFORMDIR)/sysroot-cm3/include/`dirname
> $$i`; \
> + cp $$i $(PTXDIST_PLATFORMDIR)/sysroot-cm3/include/$$i; \
> + done
same here.
> + @$(call touch)
> +
> +#
> ----------------------------------------------------------------------------
> +# Target-Install
> +#
> ----------------------------------------------------------------------------
> +
> +$(STATEDIR)/libopencm3.targetinstall:
> + @$(call targetinfo)
> + @$(call touch)
The default targetinstall is empty, so this can be removed.
Michael
> +
> +# vim: syntax=make
> --
> 2.0.0.rc2
>
>
> --
> ptxdist mailing list
> [email protected]
>
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
--
ptxdist mailing list
[email protected]