From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from ptx.hi.pengutronix.de ([2001:6f8:1178:2:5054:ff:fec0:8e10] ident=Debian-exim) by metis.ext.pengutronix.de with esmtp (Exim 4.72) (envelope-from ) id 1WvKuf-0006Ox-JE for ptxdist@pengutronix.de; Fri, 13 Jun 2014 08:24:33 +0200 Received: from mol by ptx.hi.pengutronix.de with local (Exim 4.80) (envelope-from ) id 1WvKuf-00084k-Hb for ptxdist@pengutronix.de; Fri, 13 Jun 2014 08:24:33 +0200 Date: Fri, 13 Jun 2014 08:24:33 +0200 From: Michael Olbrich Message-ID: <20140613062433.GF23595@pengutronix.de> References: <1402186032-3968-1-git-send-email-m.grzeschik@pengutronix.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1402186032-3968-1-git-send-email-m.grzeschik@pengutronix.de> Subject: Re: [ptxdist] [PATCH] bare_metal: add libopencm3 support Reply-To: ptxdist@pengutronix.de List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: ptxdist-bounces@pengutronix.de Errors-To: ptxdist-bounces@pengutronix.de To: ptxdist@pengutronix.de 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 > --- > 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 > +# > +# 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 > ptxdist@pengutronix.de > -- 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 ptxdist@pengutronix.de