openwrt/package/libs/libevent2/Makefile
Liu Dongmiao 51752fa14b libevent2: make cmake use relative imported path
libevent2's cmake use absolute path, then cmake cannot find it when cross compiling:

```
-- Found libevent include directory: /builder/staging_dir/target-mips_24kc_musl/usr/include
-- Found libevent component: /builder/staging_dir/target-mips_24kc_musl/usr/lib/libevent_core.so
-- Found libevent component: /builder/staging_dir/target-mips_24kc_musl/usr/lib/libevent_extra.so
-- Found libevent component: /builder/staging_dir/target-mips_24kc_musl/usr/lib/libevent_openssl.so
-- Found libevent 2.1.12 in /builder/staging_dir/target-mips_24kc_musl/usr
CMake Error at /builder/staging_dir/target-mips_24kc_musl/usr/lib/cmake/libevent/LibeventTargets-shared.cmake:102 (message):
  The imported target "libevent::core" references the file

     "/usr/lib/libevent_core-2.1.so.7.0.1"

  but this file does not exist.  Possible reasons include:

  * The file was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and contained

     "/builder/staging_dir/target-mips_24kc_musl/usr/lib/cmake/libevent/LibeventTargets-shared.cmake"

  but not all the files it references.

Call Stack (most recent call first):
  /builder/staging_dir/target-mips_24kc_musl/usr/lib/cmake/libevent/LibeventConfig.cmake:168 (include)
  CMakeLists.txt:34 (find_package)
```

This patch make cmake use relative imported path, so it can find libevent.

Signed-off-by: Liu Dongmiao <liudongmiao@gmail.com>
2024-03-13 00:24:43 +00:00

166 lines
4.8 KiB
Makefile

#
# 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))