Skip to content
Snippets Groups Projects
Makefile 6.31 KiB
Newer Older
Jiri Slachta's avatar
Jiri Slachta committed
#
Jiri Slachta's avatar
Jiri Slachta committed
# Copyright (C) 2010-2017 OpenWrt.org
Jiri Slachta's avatar
Jiri Slachta committed
# Copyright (C) 2010 Alfred E. Heggestad
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk

PKG_NAME:=baresip
Jiri Slachta's avatar
Jiri Slachta committed
PKG_VERSION:=0.5.6
PKG_RELEASE:=3
Jiri Slachta's avatar
Jiri Slachta committed

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.creytiv.com/pub
Jiri Slachta's avatar
Jiri Slachta committed
PKG_HASH:=148defef160842e0247af92c84bb0c8de4b36ffa68cf3a87c4cd7e510cddd00c
Jiri Slachta's avatar
Jiri Slachta committed

PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=docs/COPYING
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
Jiri Slachta's avatar
Jiri Slachta committed
baresip-mods:= \
	alsa \
	avcodec \
	avformat \
	cons \
	evdev \
	g711 \
	g722 \
	opus \
Jiri Slachta's avatar
Jiri Slachta committed
	oss \
Sebastian Kemper's avatar
Sebastian Kemper committed
	plc \
	portaudio \
	pulse \
	sndfile \
	speex \
	speex_aec \
	speex_pp \
	srtp \
Jiri Slachta's avatar
Jiri Slachta committed
	stdio \
	v4l \
Jiri Slachta's avatar
Jiri Slachta committed
	v4l2
Jiri Slachta's avatar
Jiri Slachta committed

PKG_CONFIG_DEPENDS:= \
	$(patsubst %,CONFIG_PACKAGE_baresip-mod-%,$(baresip-mods)) \

include $(INCLUDE_DIR)/package.mk

define Package/baresip/Default
  SECTION:=net
  CATEGORY:=Network
  SUBMENU:=Telephony
  URL:=http://www.creytiv.com
Jiri Slachta's avatar
Jiri Slachta committed
endef

define Package/baresip
$(call Package/baresip/Default)
  TITLE:=Portable and modular SIP User-Agent with A/V support
  DEPENDS:=+libre +librem
Jiri Slachta's avatar
Jiri Slachta committed
endef

baresip-mod-alsa      := USE_ALSA
baresip-mod-avcodec   := USE_AVCODEC
baresip-mod-avformat  := USE_AVFORMAT
Jiri Slachta's avatar
Jiri Slachta committed
baresip-mod-cons      := USE_CONS
baresip-mod-evdev     := USE_EVDEV
baresip-mod-g711      := USE_G711
baresip-mod-g722      := USE_G722
baresip-mod-g726      := USE_G726
baresip-mod-opus      := USE_OPUS
Jiri Slachta's avatar
Jiri Slachta committed
baresip-mod-oss       := USE_OSS
Sebastian Kemper's avatar
Sebastian Kemper committed
baresip-mod-plc       := USE_PLC
baresip-mod-portaudio := USE_PORTAUDIO
baresip-mod-pulse     := USE_PULSE
baresip-mod-sndfile   := USE_SNDFILE
baresip-mod-speex     := USE_SPEEX
baresip-mod-speex_aec := USE_SPEEX_AEC
baresip-mod-speex_pp  := USE_SPEEX_PP
baresip-mod-srtp      := USE_SRTP
Jiri Slachta's avatar
Jiri Slachta committed
baresip-mod-stdio     := USE_STDIO
baresip-mod-v4l       := USE_V4L
baresip-mod-v4l2      := USE_V4L2

BARESIP_MOD_OPTIONS:= \
	MOD_AUTODETECT= \
	EXTRA_MODULES="dtmfio" \
Jiri Slachta's avatar
Jiri Slachta committed
	$(foreach m,$(baresip-mods),$(baresip-mod-$(m))=$(if $(CONFIG_PACKAGE_baresip-mod-$(m)),1))

MAKE_FLAGS+= \
	EXTRA_LFLAGS="$(TARGET_LDFLAGS)" \
	LIBRE_MK="$(STAGING_DIR)/usr/share/re/re.mk" \
	LIBRE_INC="$(STAGING_DIR)/usr/include/re" \
	LIBRE_SO="$(STAGING_DIR)/usr/lib" \
	LIBREM_PATH="$(STAGING_DIR)/usr" \
	SYSROOT="$(shell $(FIND) $(TOOLCHAIN_DIR) -path '*/include/pthread.h' | sed -ne '1s|/include/pthread.h||p')" \
	SYSROOT_ALT="$(STAGING_DIR)/usr" \
	RELEASE=1 \
	$(BARESIP_MOD_OPTIONS)
Jiri Slachta's avatar
Jiri Slachta committed

TARGET_CFLAGS+=-D_GNU_SOURCE

Jiri Slachta's avatar
Jiri Slachta committed
define Package/baresip/install
	$(INSTALL_DIR) $(1)/usr/bin
	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/baresip $(1)/usr/bin
Jiri Slachta's avatar
Jiri Slachta committed
	$(INSTALL_DIR) $(1)/usr/lib/baresip/modules
Jiri Slachta's avatar
Jiri Slachta committed
	$(INSTALL_BIN) \
Jiri Slachta's avatar
Jiri Slachta committed
		$(PKG_INSTALL_DIR)/usr/lib/baresip/modules/{account,auloop,contact,ice,menu,stun,turn}.so \
		$(1)/usr/lib/baresip/modules
Jiri Slachta's avatar
Jiri Slachta committed
	$(INSTALL_DIR) $(1)/usr/share/baresip
	$(CP) $(PKG_INSTALL_DIR)/usr/share/baresip/* $(1)/usr/share/baresip
Jiri Slachta's avatar
Jiri Slachta committed
	$(INSTALL_DIR) $(1)/etc/init.d
	$(INSTALL_BIN) ./files/baresip.init $(1)/etc/init.d/baresip
endef

##################
Jiri Slachta's avatar
Jiri Slachta committed
# 1. Name
# 2. Title
# 3. Files
# 4. Dependencies
##################

Jiri Slachta's avatar
Jiri Slachta committed
define BuildPlugin

  define Package/baresip-mod-$(1)
    $$(call Package/baresip/Default)
    TITLE:=$(2)
    DEPENDS:=baresip $(patsubst +%,+PACKAGE_$(PKG_NAME)-mod-$(1):%,$(4))
Jiri Slachta's avatar
Jiri Slachta committed
  endef

  define Package/baresip-mod-$(1)/install
	[ -z "$(3)" ] || $(INSTALL_DIR) $$(1)/usr/lib/baresip/modules
	for f in $(3); do \
		$(INSTALL_DATA) \
Jiri Slachta's avatar
Jiri Slachta committed
			$(PKG_INSTALL_DIR)/usr/lib/baresip/modules/$$$$$$$${f}.so \
			$$(1)/usr/lib/baresip/modules; \
Jiri Slachta's avatar
Jiri Slachta committed
	done
  endef

  $$(eval $$(call BuildPackage,baresip-mod-$(1)))
endef

$(eval $(call BuildPackage,baresip))

$(eval $(call BuildPlugin,alsa,ALSA audio driver,alsa,+alsa-lib))
Sebastian Kemper's avatar
Sebastian Kemper committed
$(eval $(call BuildPlugin,aubridge,Audio bridge module,aubridge,))
$(eval $(call BuildPlugin,aufile,Audio module for using a WAV-file as audio input,aufile,))
$(eval $(call BuildPlugin,avcodec,Video codec using FFmpeg,avcodec,+libffmpeg-full +libx264))
$(eval $(call BuildPlugin,avformat,Video source using FFmpeg,avformat,+libffmpeg-full))
$(eval $(call BuildPlugin,cons,UDP/TCP console UI driver,cons,))
Sebastian Kemper's avatar
Sebastian Kemper committed
$(eval $(call BuildPlugin,debug_cmd,Debug commands,debug_cmd,))
$(eval $(call BuildPlugin,dtls_srtp,DTLS-SRTP end-to-end encryption,dtls_srtp,))
$(eval $(call BuildPlugin,dtmfio,DTMF input/output,dtmfio,))
$(eval $(call BuildPlugin,evdev,Linux input driver,evdev,))
Sebastian Kemper's avatar
Sebastian Kemper committed
$(eval $(call BuildPlugin,fakevideo,Fake video input/output driver,fakevideo,))
Jiri Slachta's avatar
Jiri Slachta committed
$(eval $(call BuildPlugin,g711,G.711 audio codec,g711,))
$(eval $(call BuildPlugin,g722,G.722 audio codec,g722,+libspandsp))
$(eval $(call BuildPlugin,g726,G.726 audio codec,g726,+libspandsp))
$(eval $(call BuildPlugin,httpd,HTTP webserver UI-module,httpd,))
Sebastian Kemper's avatar
Sebastian Kemper committed
$(eval $(call BuildPlugin,mwi,Message Waiting Indication,mwi,))
$(eval $(call BuildPlugin,natbd,NAT Behavior Discovery Module,natbd,))
$(eval $(call BuildPlugin,natpmp,NAT Port Mapping Protocol module,natpmp,))
$(eval $(call BuildPlugin,opus,OPUS Interactive audio codec,opus,+libopus))
Jiri Slachta's avatar
Jiri Slachta committed
$(eval $(call BuildPlugin,oss,OSS audio driver,oss,))
Sebastian Kemper's avatar
Sebastian Kemper committed
$(eval $(call BuildPlugin,plc,Packet Loss Concealment,plc,+libspandsp))
$(eval $(call BuildPlugin,portaudio,Portaudio audio driver,portaudio,+portaudio))
$(eval $(call BuildPlugin,presence,Presence module,presence,))
$(eval $(call BuildPlugin,pulse,Pulseaudio audio driver,pulse,+pulseaudio-daemon))
$(eval $(call BuildPlugin,selfview,Video selfview module,selfview,))
$(eval $(call BuildPlugin,sndfile,Audio dumper using libsndfile,sndfile,+libsndfile))
$(eval $(call BuildPlugin,speex,Speex audio codec,speex,+libspeex))
$(eval $(call BuildPlugin,speex_aec,Speex Acoustic Echo Canceller,speex_aec,+libspeex +libspeexdsp))
$(eval $(call BuildPlugin,speex_pp,Speex preprocessor,speex_pp,+libspeex +libspeexdsp))
$(eval $(call BuildPlugin,srtp,Secure RTP module using libre,srtp,))
$(eval $(call BuildPlugin,stdio,Standard input/output UI driver,stdio,))
Sebastian Kemper's avatar
Sebastian Kemper committed
$(eval $(call BuildPlugin,uuid,UUID generator and loader,uuid,))
$(eval $(call BuildPlugin,v4l,Video4Linux video source,v4l,+libv4l))
$(eval $(call BuildPlugin,v4l2,Video4Linux2 video source,v4l2,+libv4l))
Sebastian Kemper's avatar
Sebastian Kemper committed
$(eval $(call BuildPlugin,v4l2_codec,Video4Linux2 video codec module,v4l2_codec,))
$(eval $(call BuildPlugin,vidbridge,Video bridge module,vidbridge,))
$(eval $(call BuildPlugin,vidloop,Video-loop test module,vidloop,))
$(eval $(call BuildPlugin,vumeter,Display audio levels in console,vumeter,))