ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/package/libs/libevent2/Makefile b/package/libs/libevent2/Makefile
new file mode 100644
index 0000000..e0a080d
--- /dev/null
+++ b/package/libs/libevent2/Makefile
@@ -0,0 +1,165 @@
+#
+# Copyright (C) 2011-2015 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:=libevent2
+PKG_VERSION:=2.1.12
+PKG_RELEASE:=2
+
+PKG_SOURCE:=libevent-$(PKG_VERSION)-stable.tar.gz
+PKG_SOURCE_URL:=https://github.com/libevent/libevent/releases/download/release-$(PKG_VERSION)-stable
+PKG_HASH:=92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb
+PKG_BUILD_DIR:=$(BUILD_DIR)/libevent-$(PKG_VERSION)-stable
+
+PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+PKG_CPE_ID:=cpe:/a:libevent_project:libevent
+
+PKG_CONFIG_DEPENDS:= \
+ CONFIG_PACKAGE_libevent2-openssl \
+ CONFIG_PACKAGE_libevent2-pthreads \
+ CONFIG_PACKAGE_libevent2-mbedtls
+
+PKG_BUILD_FLAGS:=gc-sections lto
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/libevent2/Default
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Event notification
+ URL:=http://libevent.org
+ ABI_VERSION:=7
+endef
+
+define Package/libevent2/Default/description
+ The libevent API provides a mechanism to execute a callback function
+ when a specific event occurs on a file descriptor or after a timeout
+ has been reached. Furthermore, libevent also support callbacks due
+ to signals or regular timeouts.
+
+ libevent is meant to replace the event loop found in event driven
+ network servers. An application just needs to call event_dispatch()
+ and then add or remove events dynamically without having to change
+ the event loop.
+endef
+
+define Package/libevent2
+ $(call Package/libevent2/Default)
+ TITLE+= library (version 2.1)
+endef
+
+define Package/libevent2/description
+ $(call Package/libevent2/Default/description)
+
+ This package contains the libevent shared library historically
+ containing both the core & extra libraries.
+endef
+
+define Package/libevent2-core
+ $(call Package/libevent2/Default)
+ TITLE+= core library (version 2.1)
+endef
+
+define Package/libevent2-core/description
+ $(call Package/libevent2/Default/description)
+
+ This package contains the libevent core shared library for the event,
+ buffer & utility functions.
+endef
+
+define Package/libevent2-extra
+ $(call Package/libevent2/Default)
+ TITLE+= extra library (version 2.1)
+ DEPENDS+=+libevent2-core
+endef
+
+define Package/libevent2-extra/description
+ $(call Package/libevent2/Default/description)
+
+ This package contains the libevent extra shared library for specific
+ protocols including HTTP, DNS & RPC.
+endef
+
+define Package/libevent2-openssl
+ $(call Package/libevent2/Default)
+ TITLE+= OpenSSL library (version 2.1)
+ DEPENDS+=+libopenssl +libevent2-core
+endef
+
+define Package/libevent2-openssl/description
+ $(call Package/libevent2/Default/description)
+
+ This package contains the libevent OpenSSL shared library for encrypted
+ bufferevents.
+endef
+
+define Package/libevent2-pthreads
+ $(call Package/libevent2/Default)
+ TITLE+= Pthreads library (version 2.1)
+ DEPENDS+=+libpthread +libevent2-core
+endef
+
+define Package/libevent2-pthreads/description
+ $(call Package/libevent2/Default/description)
+
+ This package contains the libevent Pthreads shared library for
+ threading & locking.
+endef
+
+TARGET_CFLAGS += $(FPIC)
+TARGET_LDFLAGS += -Wl,--as-needed
+
+CMAKE_OPTIONS += \
+ -DEVENT__DISABLE_BENCHMARK:BOOL=ON \
+ -DEVENT__DISABLE_DEBUG_MODE:BOOL=ON \
+ -DEVENT__DISABLE_REGRESS:BOOL=ON \
+ -DEVENT__DISABLE_SAMPLES:BOOL=ON \
+ $(if $(CONFIG_PACKAGE_libevent2-openssl),-DEVENT__DISABLE_OPENSSL:BOOL=OFF,-DEVENT__DISABLE_OPENSSL:BOOL=ON) \
+ $(if $(CONFIG_PACKAGE_libevent2-pthreads),-DEVENT__DISABLE_THREAD_SUPPORT:BOOL=OFF,-DEVENT__DISABLE_THREAD_SUPPORT:BOOL=ON) \
+ -DEVENT__DISABLE_TESTS:BOOL=ON \
+ -DBUILD_TESTING:BOOL=OFF
+
+define Build/InstallDev
+ $(call Build/InstallDev/cmake,$(1))
+ $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libevent*.pc
+ $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libevent*.pc
+endef
+
+define Package/libevent2/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libevent-2.1.so.* $(1)/usr/lib/
+endef
+
+define Package/libevent2-core/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libevent_core-2.1.so.* $(1)/usr/lib/
+endef
+
+define Package/libevent2-extra/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libevent_extra-2.1.so.* $(1)/usr/lib/
+endef
+
+define Package/libevent2-openssl/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libevent_openssl-2.1.so.* $(1)/usr/lib/
+endef
+
+define Package/libevent2-pthreads/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libevent_pthreads-2.1.so.* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libevent2))
+$(eval $(call BuildPackage,libevent2-core))
+$(eval $(call BuildPackage,libevent2-extra))
+$(eval $(call BuildPackage,libevent2-openssl))
+$(eval $(call BuildPackage,libevent2-pthreads))
diff --git a/package/libs/libevent2/patches/001-relative-cmake.patch b/package/libs/libevent2/patches/001-relative-cmake.patch
new file mode 100644
index 0000000..38dc187
--- /dev/null
+++ b/package/libs/libevent2/patches/001-relative-cmake.patch
@@ -0,0 +1,58 @@
+From 81c6b8823c1b58d7837e827bb1098aa5f9e5956b Mon Sep 17 00:00:00 2001
+From: "Jeremy W. Murphy" <jeremy.william.murphy@gmail.com>
+Date: Tue, 16 May 2023 05:07:36 +1000
+Subject: [PATCH] cmake: Only use relative paths for install DESTINATION option
+ (#1405)
+
+As described in #1404, the explicit use of CMAKE_INSTALL_PREFIX conflicts with using command-line --prefix.
+
+This simply removes all explicit use of CMAKE_INSTALL_PREFIX.
+
+Otherwise this path will be duplicated:
+
+ $ cmake -DCMAKE_BUILD_TYPE=debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_INSTALL_PREFIX=inst ..
+ $ DESTDIR=inst ninja install
+ ...
+ -- Installing: inst/src/le/libevent/.cmake-debug/inst/include/event2/util.h
+ -- Installing: inst/src/le/libevent/.cmake-debug/inst/include/event2/ws.h
+ ...
+
+Fixes: #1404
+Co-authored-by: Jeremy Murphy <jeremymu@blackmagicdesign.com>
+---
+ CMakeLists.txt | 3 +--
+ cmake/AddEventLibrary.cmake | 4 ++--
+ 2 files changed, 3 insertions(+), 4 deletions(-)
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1452,8 +1452,7 @@ endif()
+ # Installation preparation.
+ #
+
+-set(EVENT_INSTALL_CMAKE_DIR
+- "${CMAKE_INSTALL_PREFIX}/lib/cmake/libevent")
++set(EVENT_INSTALL_CMAKE_DIR "lib/cmake/libevent")
+
+ export(PACKAGE libevent)
+
+--- a/cmake/AddEventLibrary.cmake
++++ b/cmake/AddEventLibrary.cmake
+@@ -31,7 +31,7 @@ macro(generate_pkgconfig LIB_NAME)
+ configure_file("lib${LIB_NAME}.pc.in" "lib${LIB_NAME}.pc" @ONLY)
+ install(
+ FILES "${CMAKE_CURRENT_BINARY_DIR}/lib${LIB_NAME}.pc"
+- DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig"
++ DESTINATION "lib/pkgconfig"
+ )
+ endmacro()
+
+@@ -150,7 +150,7 @@ macro(add_event_library LIB_NAME)
+ set_target_properties(
+ "${LIB_NAME}_shared" PROPERTIES
+ OUTPUT_NAME "${LIB_NAME}-${EVENT_PACKAGE_RELEASE}.${CURRENT_MINUS_AGE}"
+- INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib"
++ INSTALL_NAME_DIR "lib"
+ LINK_FLAGS "-compatibility_version ${COMPATIBILITY_VERSION} -current_version ${COMPATIBILITY_VERSION}.${EVENT_ABI_LIBVERSION_REVISION}")
+ else()
+ math(EXPR CURRENT_MINUS_AGE "${EVENT_ABI_LIBVERSION_CURRENT}-${EVENT_ABI_LIBVERSION_AGE}")