Merge pull request #164 from nickaknudson/feature/buildroot

added client compilation support for TARGET=BUILDROOT
This commit is contained in:
Johannes Pohl 2017-01-17 14:51:55 +01:00 committed by GitHub
commit 98be8a58d9
9 changed files with 112 additions and 0 deletions

View file

@ -35,6 +35,7 @@ Please follow this [guide](doc/build.md) to build Snapcast for
* [macOS](doc/build.md#macos-native) * [macOS](doc/build.md#macos-native)
* [Android](doc/build.md#android-cross-compile) * [Android](doc/build.md#android-cross-compile)
* [OpenWrt](doc/build.md#openwrt-cross-compile) * [OpenWrt](doc/build.md#openwrt-cross-compile)
* [Buildroot](doc/build.md#buildroot-cross-compile)
###Install debian packages ###Install debian packages
Download the debian package for your CPU architecture from the [latest release page](https://github.com/badaix/snapcast/releases/latest), e.g. for Raspberry pi `snapclient_0.x.x_armhf.deb` Download the debian package for your CPU architecture from the [latest release page](https://github.com/badaix/snapcast/releases/latest), e.g. for Raspberry pi `snapclient_0.x.x_armhf.deb`

1
buildroot/Config.in Normal file
View file

@ -0,0 +1 @@
source "$BR2_EXTERNAL_SNAPCAST_PATH/package/snapcast/Config.in"

1
buildroot/external.desc Normal file
View file

@ -0,0 +1 @@
name: SNAPCAST

1
buildroot/external.mk Normal file
View file

@ -0,0 +1 @@
include $(sort $(wildcard $(BR2_EXTERNAL_SNAPCAST_PATH)/package/*/*.mk))

View file

@ -0,0 +1,4 @@
config BR2_PACKAGE_SNAPCAST
bool "snapcast"
help
Synchronous multi-room audio player

View file

@ -0,0 +1,35 @@
#! /bin/sh
start() {
echo -n "Starting snapclient: "
start-stop-daemon -S -q -b -x snapclient
[ $? = 0 ] && echo "OK" || echo "FAIL"
}
stop() {
echo -n "Stopping snapclient: "
start-stop-daemon -K -q -x snapclient
[ $? = 0 ] && echo "OK" || echo "FAIL"
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?

View file

@ -0,0 +1,32 @@
################################################################################
#
# snapcast
#
################################################################################
SNAPCAST_VERSION = master
SNAPCAST_SITE = https://github.com/badaix/snapcast
SNAPCAST_SITE_METHOD = git
SNAPCAST_DEPENDENCIES = libogg alsa-lib # libstdcpp libavahi-client libatomic libflac libvorbisidec
SNAPCAST_LICENSE = GPLv3
SNAPCAST_LICENSE_FILES = COPYING
# http://lists.busybox.net/pipermail/buildroot/2013-March/069811.html
define SNAPCAST_EXTRACT_CMDS
rm -rf $(@D)
(git clone --depth 1 $(SNAPCAST_SITE) $(@D) && \
cd $(@D)/externals && \
git submodule update --init --recursive)
touch $(@D)/.stamp_downloaded
endef
define SNAPCAST_BUILD_CMDS
$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/client TARGET=BUILDROOT
endef
define SNAPCAST_INSTALL_TARGET_CMDS
$(INSTALL) -m 0755 -D $(@D)/client/snapclient $(TARGET_DIR)/usr/sbin/snapclient
$(INSTALL) -m 0755 -D $(SNAPCAST_PKGDIR)/S99snapclient $(TARGET_DIR)/etc/init.d/S99snapclient
endef
$(eval $(generic-package))

View file

@ -36,6 +36,12 @@ CXXFLAGS += -pthread -DNO_CPP11_STRING -DHAS_TREMOR -DHAS_ALSA -DHAS_AVAHI -DHAS
LDFLAGS = -lasound -lvorbisidec -logg -lFLAC -lavahi-client -lavahi-common -latomic LDFLAGS = -lasound -lvorbisidec -logg -lFLAC -lavahi-client -lavahi-common -latomic
OBJ += player/alsaPlayer.o browseZeroConf/browseAvahi.o OBJ += player/alsaPlayer.o browseZeroConf/browseAvahi.o
else ifeq ($(TARGET), BUILDROOT)
CXXFLAGS += -pthread -DNO_CPP11_STRING -DHAS_TREMOR -DHAS_ALSA -DHAS_AVAHI -DHAS_DAEMON
LDFLAGS += -lasound -lvorbisidec -logg -lFLAC -lavahi-client -lavahi-common -latomic
OBJ += player/alsaPlayer.o browseZeroConf/browseAvahi.o
else ifeq ($(TARGET), MACOS) else ifeq ($(TARGET), MACOS)
CXX = /usr/bin/g++ CXX = /usr/bin/g++

View file

@ -200,3 +200,34 @@ Build Snapcast:
$ make package/sxx/snapcast/compile $ make package/sxx/snapcast/compile
The packaged `ipk` files are in `<buildroot dir>/bin/ar71xx/packages/base/snap[client|server]_x.x.x_ar71xx.ipk` The packaged `ipk` files are in `<buildroot dir>/bin/ar71xx/packages/base/snap[client|server]_x.x.x_ar71xx.ipk`
##Buildroot (Cross compile)
This example will show you how to add snapcast to [Buildroot](https://buildroot.org/).
###Buildroot setup
Buildroot recommends [keeping customizations outside of the main Buildroot directory](https://buildroot.org/downloads/manual/manual.html#outside-br-custom) which is what this example will walk through.
Clone Buildroot to some place in your home directory (`<buildroot dir>`):
$ git clone --branch BUILDROOT_VERSION --depth=1 git://git.buildroot.net/buildroot
The `<snapcast dir>/buildroot` is currently setup as an external Buildroot folder following the [recommended structure](https://buildroot.org/downloads/manual/manual.html#customize-dir-structure). As of [Buildroot 2016.11](https://git.buildroot.net/buildroot/tag/?h=2016.11) you may specify multiple BR2_EXTERNAL trees. If you are using a version of Buildroot prior to this, then you will need to manually merge `<snapcast dir>/buildroot` with your existing Buildroot external tree.
Now add the following packages to your Buildroot `.config` file:
BR2_PACKAGE_FLAC=y
BR2_PACKAGE_LIBOGG=y
BR2_PACKAGE_TREMOR=y
BR2_PACKAGE_SNAPCAST=y
Or use `menuconfig` to add them graphically:
$ cd <buildroot dir> && make BR2_EXTERNAL=<snapcast dir>/buildroot menuconfig
Or if you have another Buildroot external tree (`<buildroot external dir>`):
$ cd <buildroot dir> && make BR2_EXTERNAL=<snapcast dir>/buildroot:<buildroot external dir> menuconfig
And finally run the build:
$ cd <buildroot dir> && make BR2_EXTERNAL=<snapcast dir>/buildroot:<buildroot external dir>