################################################################################
#
# prosody
#
################################################################################

PROSODY_VERSION = 0.9.14
PROSODY_SITE = https://prosody.im/downloads/source
PROSODY_LICENSE = MIT
PROSODY_LICENSE_FILES = COPYING
PROSODY_DEPENDENCIES = openssl libidn

ifeq ($(BR2_PACKAGE_LUA_5_1),y)
PROSODY_DEPENDENCIES += lua
endif

ifeq ($(BR2_PACKAGE_LUAJIT),y)
PROSODY_DEPENDENCIES += luajit
endif

PROSODY_CONF_OPTS = \
	--with-lua=$(STAGING_DIR)/usr \
	--c-compiler=$(TARGET_CC) \
	--cflags="$(TARGET_CFLAGS) -fPIC" \
	--linker=$(TARGET_CC) \
	--ldflags="$(TARGET_LDFLAGS) -shared" \
	--sysconfdir=/etc/prosody \
	--prefix=/usr

define PROSODY_CONFIGURE_CMDS
	cd $(@D) && \
		$(TARGET_CONFIGURE_OPTS) \
		./configure $(PROSODY_CONF_OPTS)
endef

define PROSODY_BUILD_CMDS
	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
endef

define PROSODY_INSTALL_TARGET_CMDS
	$(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install
endef

define PROSODY_INSTALL_INIT_SYSV
	$(INSTALL) -D -m 0755 package/prosody/S50prosody \
		$(TARGET_DIR)/etc/init.d/S50prosody
endef

define PROSODY_USERS
	prosody -1 prosody -1 * - - - Prosody user
endef

# make install installs a Makefile and meta data to generate certs
define PROSODY_REMOVE_CERT_GENERATOR
	rm -f $(TARGET_DIR)/etc/prosody/certs/Makefile
	rm -f $(TARGET_DIR)/etc/prosody/certs/*.cnf
endef

PROSODY_POST_INSTALL_TARGET_HOOKS += PROSODY_REMOVE_CERT_GENERATOR

# 1. Enable posix functionality
# 2. Log to syslog
# 3. Specify pid file write location
# 4. Enable virtual host example.com
define PROSODY_TWEAK_DEFAULT_CONF
	$(INSTALL) -D package/prosody/prosody.cfg.lua \
		$(TARGET_DIR)/etc/prosody/prosody.cfg.lua
endef

PROSODY_POST_INSTALL_TARGET_HOOKS += PROSODY_TWEAK_DEFAULT_CONF

$(eval $(generic-package))
