Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v2] libiio: new package
Date: Sun, 21 Sep 2014 21:41:18 +0200	[thread overview]
Message-ID: <20140921214118.69e7d5f1@free-electrons.com> (raw)
In-Reply-To: <1411033467-7919-1-git-send-email-paul.cercueil@analog.com>

Dear Paul Cercueil,

On Thu, 18 Sep 2014 11:44:27 +0200, Paul Cercueil wrote:
> Libiio is a library to ease the development of software interfacing
> Linux Industrial I/O (IIO) devices.
> 
> http://wiki.analog.com/resources/tools-software/linux-software/libiio
> 
> Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
> ---
>  package/Config.in        |  1 +
>  package/libiio/Config.in | 42 ++++++++++++++++++++++++++
>  package/libiio/libiio.mk | 76 ++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 119 insertions(+)
>  create mode 100644 package/libiio/Config.in
>  create mode 100644 package/libiio/libiio.mk

Thanks. However, I tested your package, and it fails to build:

make[1]: entrant dans le r?pertoire ? /home/thomas/projets/buildroot/output/build/libiio-2014_R1/iiod ?
install --strip-program=/home/thomas/projets/buildroot/output/host/usr/bin/arm-linux-strip -D -s -m 0755 \
		iiod /home/thomas/projets/buildroot/output/target/usr/sbin/iiod
install -m 0755 iiod.sh /home/thomas/projets/buildroot/output/target/etc/init.d/iiod.sh
update-rc.d iiod.sh defaults 99 01
update-rc.d: /etc/init.d/iiod.sh: file does not exist
make[1]: *** [install] Erreur 1

First, the Makefile should not be calling update-rc.d, and also the
init script in /etc/init.d/ should not be named iiod.sh in Buildroot,
but directly S<number><name>.

Also, is the install command with stripping is not good for Buildroot:
we want to control whether stripping happens or not.


> +# Avahi support in libiio requires avahi-client,
> +# which needs avahi-daemon and dbus
> +ifeq ($(BR2_PACKAGE_AVAHI)$(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yyy)
> +	LIBIIO_DEPENDENCIES += avahi
> +else
> +	LIBIIO_MAKE_OPTS += WITH_AVAHI=no
> +endif
> +
> +ifneq ($(BR2_PACKAGE_LIBIIO_LOCAL_BACKEND),y)
> +	LIBIIO_MAKE_OPTS += WITH_LOCAL_BACKEND=no
> +endif
> +
> +ifeq ($(BR2_PACKAGE_LIBIIO_NETWORK_BACKEND),y)
> +	LIBIIO_DEPENDENCIES += libxml2
> +else
> +	LIBIIO_MAKE_OPTS += WITH_NETWORK_BACKEND=no
> +endif
> +
> +# Libiio can run without threads
> +ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
> +	LIBIIO_MAKE_OPTS += WITH_PTHREAD=no
> +endif
> +
> +ifeq ($(BR2_PACKAGE_LIBIIO_IIOD),y)
> +define LIBIIO_BUILD_IIOD
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/iiod $(LIBIIO_MAKE_OPTS)
> +endef
> +define LIBIIO_INSTALL_IIOD
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/iiod install \
> +		$(LIBIIO_MAKE_OPTS) DESTDIR=$(TARGET_DIR)
> +endef
> +endif
> +
> +ifeq ($(BR2_PACKAGE_LIBIIO_TESTS),y)
> +define LIBIIO_BUILD_TESTS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/tests $(LIBIIO_MAKE_OPTS)
> +endef
> +define LIBIIO_INSTALL_TESTS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/tests install \
> +		$(LIBIIO_MAKE_OPTS) DESTDIR=$(TARGET_DIR)
> +endef
> +endif

Now that I think of it, you could also do:

ifeq ($(BR2_PACKAGE_LIBIIO_IIOD),y)
LIBIIO_MAKE_DIRS += iiod
endif

ifeq ($(BR2_PACKAGE_LIBIIO_TESTS),y)
LIBIIO_MAKE_DIRS += tests
endif

> +define LIBIIO_BUILD_CMDS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) libiio $(LIBIIO_MAKE_OPTS)
> +	$(LIBIIO_BUILD_IIOD)
> +	$(LIBIIO_BUILD_TESTS)

Replace those last two lines with:

	for d in $(LIBIIO_MAKE_DIRS); do \
		$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/$$d $(LIBIIO_MAKE_OPTS) || break ; \
	done

> +define LIBIIO_INSTALL_STAGING_CMDS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install-sysroot \
> +		$(LIBIIO_MAKE_OPTS) DESTDIR=$(STAGING_DIR)
> +endef
> +
> +define LIBIIO_INSTALL_TARGET_CMDS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install-lib \
> +		$(LIBIIO_MAKE_OPTS) DESTDIR=$(TARGET_DIR)
> +	$(LIBIIO_INSTALL_IIOD)
> +	$(LIBIIO_INSTALL_TESTS)

And ditto here.

Note that the Makefile of libiio could make this a little bit nicer by
having a build and installation scheme that is easy to work with
several make targets.

Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

  reply	other threads:[~2014-09-21 19:41 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-18  9:44 [Buildroot] [PATCH v2] libiio: new package Paul Cercueil
2014-09-21 19:41 ` Thomas Petazzoni [this message]
2014-09-22  7:49   ` Paul Cercueil
  -- strict thread matches above, loose matches on Subject: below --
2014-11-07 13:49 Paul Cercueil

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140921214118.69e7d5f1@free-electrons.com \
    --to=thomas.petazzoni@free-electrons.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox