include $(TOPDIR)/rules.mk
PKG_NAME:=libupnp
-PKG_VERSION:=1.6.25
+PKG_VERSION:=1.8.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/pupnp
-PKG_HASH:=c5a300b86775435c076d58a79cc0d5a977d76027d2a7d721590729b7f369fa43
+PKG_HASH:=188d3f786d92fe14191f17634d2d87847eee7d2b568a5257ea23262fec9973d6
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_FIXUP:=autoreconf
TVcontrolpoint & tvdevice sample applications run inside /etc/upnp-tvdevice/
endef
+TARGET_CFLAGS += -flto
+TARGET_LDFLAGS += -flto
+
+CONFIGURE_VARS += ac_cv_lib_compat_ftime=no
+
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/upnp $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{ixml,threadutil,upnp}.{a,so*,la} $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{ixml,upnp}.{a,so*,la} $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libupnp.pc $(1)/usr/lib/pkgconfig/
endef
define Package/libupnp/install
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{ixml,threadutil,upnp}.so.* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{ixml,upnp}.so.* $(1)/usr/lib/
endef
define Package/libupnp-sample/install
--- /dev/null
+From 386b7ed79146ecf7a3bba49f48cb8f41a9b49170 Mon Sep 17 00:00:00 2001
+From: Jean-Francois Dockes <jf@dockes.org>
+Date: Sun, 27 Jan 2019 10:44:17 +0100
+Subject: [PATCH] Do not try to detach detached thread, the result is
+ undefined. Fixes issue #102
+
+---
+ upnp/src/threadutil/ThreadPool.c | 5 -----
+ 1 file changed, 5 deletions(-)
+
+--- a/upnp/src/threadutil/ThreadPool.c
++++ b/upnp/src/threadutil/ThreadPool.c
+@@ -651,11 +651,6 @@ static int CreateWorker(
+ rc = ithread_create(&temp, &attr, WorkerThread, tp);
+ ithread_attr_destroy(&attr);
+ if (rc == 0) {
+- rc = ithread_detach(temp);
+- /* ithread_detach will return EINVAL if thread has been
+- successfully detached by ithread_create */
+- if (rc == EINVAL)
+- rc = 0;
+ tp->pendingWorkerThreadStart = 1;
+ /* wait until the new worker thread starts */
+ while (tp->pendingWorkerThreadStart) {