1
0
mirror of https://git.openwrt.org/feed/packages.git synced 2024-06-14 11:23:57 +02:00
openwrt-packages/net/znc/Makefile
Jonas Gorski 6fccd8801e znc: allow running without modules
Now that we don't ship any modules by default, znc might be started
without any modules. Unfortunately znc refuses to start without any
modules, so patch out the appropriate check.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
2016-12-03 17:52:28 +01:00

314 lines
9.3 KiB
Makefile

#
# Copyright (C) 2009-2010 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=znc
PKG_VERSION:=1.6.3
PKG_RELEASE:=5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://znc.in/releases \
http://znc.in/releases/archive
PKG_MD5SUM:=0dad0307e2faea26b9e304e308f7ec63
PKG_MAINTAINER:=Jonas Gorski <jogo@openwrt.org>
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
PKG_USE_MIPS16:=0
PKG_BUILD_PARALLEL:=1
PKG_CONFIG_DEPENDS := CONFIG_ZNC_ICU
define Package/znc/default
SUBMENU:=Instant Messaging
SECTION:=net
CATEGORY:=Network
TITLE:=ZNC
URL:=http://en.znc.in/
USERID:=znc:znc
endef
define Package/znc
$(Package/znc/default)
DEPENDS:=+libopenssl +libpthread +libstdcpp +ZNC_ICU:icu +zlib
MENU:=1
endef
define Package/znc/description
ZNC is an IRC bouncer with many advanced features like detaching,
multiple users, per channel playback buffer, SSL, IPv6, transparent DCC
bouncing, and c++ module support to name a few.
endef
define Package/znc/config
source "$(SOURCE)/Config.in"
endef
define Package/znc/conffiles
/etc/config/znc
endef
define Package/znc/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/znc $(1)/usr/bin/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/znc.init $(1)/etc/init.d/znc
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DATA) ./files/znc.conf $(1)/etc/config/znc
$(INSTALL_DIR) $(1)/usr/lib/znc/
endef
ZNC_MODULES :=
ZNC_MODULE_TARGETS :=
define module
define Package/znc-mod-$(strip $(1))
$(Package/znc/default)
TITLE+= ($(strip $(1)) plugin)
DEPENDS:=znc
endef
define Package/znc-mod-$(strip $(1))/description
$(strip $(2))
endef
define Package/znc-mod-$(strip $(1))/install
$(INSTALL_DIR) $$(1)/usr/lib/znc/
$(INSTALL_BIN) $$(PKG_BUILD_DIR)/modules/$(subst -,_,$(strip $(1))).so $$(1)/usr/lib/znc/
# include webadmin page templates if existing
if [ -d $$(PKG_BUILD_DIR)/modules/data/$(subst -,_,$(strip $(1))) ]; then \
$(INSTALL_DIR) $$(1)/usr/share/znc/modules ;\
$(CP) $$(PKG_BUILD_DIR)/modules/data/$(subst -,_,$(strip $(1))) $$(1)/usr/share/znc/modules ;\
fi
endef
ZNC_MODULES += znc-mod-$(strip $(1))
$(if $(CONFIG_PACKAGE_znc-mod-$(strip $(1))),ZNC_MODULE_TARGETS += $(subst -,_,$(strip $(1))).so)
endef
define webadmin
define Package/znc-mod-webadmin
$(Package/znc/default)
TITLE+= (webadmin plugin)
DEPENDS:=znc
endef
define Package/znc-mod-webadmin/description
Allows you to add/remove/edit users and settings on the fly via a web browser.
endef
define Package/znc-mod-webadmin/install
$(INSTALL_DIR) $$(1)/usr/lib/znc/
$(INSTALL_BIN) $$(PKG_BUILD_DIR)/modules/webadmin.so $$(1)/usr/lib/znc/
$(INSTALL_DIR) $$(1)/usr/share/znc/modules
$(CP) $$(PKG_BUILD_DIR)/modules/data/webadmin $$(1)/usr/share/znc/modules
$(INSTALL_DIR) $$(1)/usr/share/znc/webskins/
$(CP) $$(PKG_BUILD_DIR)/webskins/_default_ $$(1)/usr/share/znc/webskins/
endef
ZNC_MODULES += znc-mod-webadmin
$(if $(CONFIG_PACKAGE_znc-mod-webadmin),ZNC_MODULE_TARGETS += webadmin.so)
endef
define webskin
define Package/znc-webskin-$(strip $(1))
$(Package/znc/default)
TITLE+= ($(strip $(1)) webskin)
DEPENDS:=znc-mod-webadmin
endef
define Package/znc-webskin-$(strip $(1))/description
$(strip $(1)) webskin for webadmin
endef
define Package/znc-webskin-$(strip $(1))/install
$(INSTALL_DIR) $$(1)/usr/share/znc/webskins/
$(CP) $$(PKG_BUILD_DIR)/webskins/$(strip $(1)) $$(1)/usr/share/znc/webskins/
endef
ZNC_MODULES += znc-webskin-$(strip $(1))
endef
, := ,
$(eval $(call module,adminlog,Log user connects and disconnects and failed \
logins to file or syslog.))
$(eval $(call module,alias,Provides bouncer-side command alias support.))
$(eval $(call module,autoattach,Reattaches you to channels on activity.))
$(eval $(call module,autocycle,Cycles a channel when you are the only one in \
there and you don't have op.))
$(eval $(call module,autoop,Auto op the good guys.))
$(eval $(call module,autoreply,Gives a automatic reply if someone messages you \
if you are away.))
$(eval $(call module,autovoice,Autovoices everyone who joins some channel.))
$(eval $(call module,awaynick,Change your nick while you are away.))
$(eval $(call module,awaystore,Stores messages while away$(,) also auto away.))
$(eval $(call module,block-motd,This module blocks the server's Message of the \
Day.))
$(eval $(call module,blockuser,Blocks certain users from using ZNC saying \
their account was disabled.))
$(eval $(call module,bouncedcc,Bounces dcc transfers through the znc server \
instead of sending them directly to the user.))
$(eval $(call module,buffextras,Add nick changes$(,) joins$(,) parts$(,) topic \
changes etc. to your playback buffer.))
$(eval $(call module,cert,Use a SSL certificate for connecting to a server.))
$(eval $(call module,certauth,This module allows users to log in to ZNC via \
SSL client keys.))
$(eval $(call module,chansaver,Keeping config up to date when user joins and \
parts.))
$(eval $(call module,clearbufferonmsg,This module keeps the buffer until the \
next message from the client.))
$(eval $(call module,clientnotify,Notify about new incoming connections to \
your user.))
$(eval $(call module,controlpanel,Allows you to add/remove/edit users and \
settings on the fly via IRC messages.))
$(eval $(call module,crypt,Encryption for channel/private messages.))
$(eval $(call module,ctcpflood,This module tries to block ctcp floods.))
$(eval $(call module,dcc,Allows you to transfer files to and from ZNC.))
$(eval $(call module,disconkick,This module will kick your client from all \
channels where you are$(,) in case if ZNC disconnects from server.))
$(eval $(call module,fail2ban,Block IPs for some time after a failed login.))
$(eval $(call module,flooddetach,This module detaches you from channels which \
are flooded.))
$(eval $(call module,identfile,Places the ident of a user to a file when they \
are trying to connect.))
$(eval $(call module,imapauth,Allow users to authenticate via IMAP.))
$(eval $(call module,keepnick,Tries to get you your primary nick.))
$(eval $(call module,kickrejoin,Implements auto-rejoin-on-kick.))
$(eval $(call module,lastseen,Logs when a user last logged in to ZNC.))
$(eval $(call module,listsockets,This module displays a list of all open \
sockets in ZNC.))
$(eval $(call module,log,Log conversations to file.))
$(eval $(call module,missingmotd,Sends 422 to clients when they login.))
$(eval $(call module,modules_online,This module fakes the online status of \
ZNC-*users.))
$(eval $(call module,nickserv,Auths you with NickServ.))
$(eval $(call module,notes,This modules stores and displays short notes using \
a key/note pairs and shows them to you on connect.))
$(eval $(call module,notify-connect,Sends a notice to all admins when a user \
logs in or out.))
$(eval $(call module,partyline,Allows ZNC users to join internal channels and \
query other ZNC users on the same ZNC.))
$(eval $(call module,perform,Performs commands on connect.))
$(eval $(call module,playback,Avoid repetitive playback buffers on re-connect \
with supported clients (e.g. mutter, colluquy)))
$(eval $(call module,q,Auths you with Q (and a little more).))
$(eval $(call module,raw,View all of the raw traffic.))
$(eval $(call module,route-replies,Routes back answers to the right client \
when connected with multiple clients.))
$(eval $(call module,sasl,The SASL module allows you to authenticate to an \
IRC network via SASL.))
$(eval $(call module,savebuff,Saves your channel buffers into an encrypted \
file so they can survive restarts and reboots.))
$(eval $(call module,schat,SSL (encrypted) DCC chats.))
$(eval $(call module,send-raw,Allows you to send raw traffic to IRC from \
other users.))
$(eval $(call module,simple-away,This module will automatically set you away \
on IRC while you are disconnected from the bouncer.))
$(eval $(call module,shell,Have your unix shell in a query window right inside \
of your IRC client.))
$(eval $(call module,stickychan,Keeps you sticked to specific channels.))
$(eval $(call module,watch,Monitor activity for specific text patterns from \
specific users and have the text sent to a special query window.))
$(eval $(call webadmin))
$(eval $(call webskin,dark-clouds))
$(eval $(call webskin,forest))
$(eval $(call webskin,ice))
PKG_CONFIG_DEPENDS += $(patsubst %,CONFIG_PACKAGE_%,$(ZNC_MODULES))
include $(INCLUDE_DIR)/package.mk
CONFIGURE_VARS += \
CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -fno-rtti" \
CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
LDFLAGS="-nodefaultlibs -lc -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
LIBS="-lstdc++ -lm -lssl -lcrypto $(LIBGCC_S) -lc"
CONFIGURE_ARGS += \
$(if $(CONFIG_ZNC_ICU), --enable-charset, --disable-charset) \
--disable-cyrus \
--disable-debug \
--enable-largefile \
--disable-perl \
--enable-poll \
--disable-python \
--enable-ssl \
--disable-swig \
--disable-tcl \
--enable-tdns \
--enable-zlib
define Build/Configure
$(call Build/Configure/Default,)
$(call libtool_disable_rpath)
endef
define Build/Compile
$(call Build/Compile/Default,znc)
+$(MAKE_VARS) $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/modules \
$(MAKE_FLAGS) $(ZNC_MODULE_TARGETS)
endef
$(eval $(call BuildPackage,znc))
$(foreach m,$(ZNC_MODULES),$(eval $(call BuildPackage,$(m))))