include $(TOPDIR)/rules.mk

PKG_NAME:=jemalloc
PKG_VERSION:=5.3.1
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/jemalloc/jemalloc/archive/refs/tags/
PKG_SOURCE_URL_FILE:=$(PKG_VERSION).tar.gz
PKG_HASH:=7b30f6116f11d736badd48c903cba2b3344a88d62e3a7b892434f870e860b1c0

PKG_FIXUP:=autoreconf
PKG_BUILD_PARALLEL:=1

PKG_LICENSE:=BSD-2-Clause
PKG_LICENSE_FILES:=COPYING
PKG_MAINTAINER:=Philip Prindeville <philipp@redfish-solutions.com>

include $(INCLUDE_DIR)/package.mk

define Package/libjemalloc
  SECTION:=libs
  CATEGORY:=Libraries
  TITLE:=Jemalloc general purpose allocator
  URL:=https://github.com/jemalloc/jemalloc
  DEPENDS:= +libunwind +libstdcpp
  ABI_VERSION:=2
endef

define Package/libjemalloc/Description
  Jemalloc is a general purpose malloc(3) implementation that emphasizes
  fragmentation avoidance and scalable concurrency support.
endef

CONFIGURE_ARGS += \
	--enable-shared \
	--disable-static \
	--enable-prof \
	--enable-prof-libunwind \
	--enable-readlinkat

MAKE_FLAGS += enable_doc=0

define Build/InstallDev
	$(INSTALL_DIR) $(1)/usr/lib
	$(CP) $(PKG_BUILD_DIR)/lib/libjemalloc.so* $(1)/usr/lib/
	$(INSTALL_DIR) $(1)/usr/include/jemalloc
	$(CP) $(PKG_BUILD_DIR)/include/jemalloc/*.h $(1)/usr/include/jemalloc
	$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
	$(CP) $(PKG_BUILD_DIR)/jemalloc.pc $(1)/usr/lib/pkgconfig/
endef

define Package/libjemalloc/install
	$(INSTALL_DIR) $(1)/usr/lib
	$(CP) $(PKG_BUILD_DIR)/lib/libjemalloc.so.$(ABI_VERSION) $(1)/usr/lib
	$(LN) libjemalloc.so.$(ABI_VERSION) $(1)/usr/lib/libjemalloc.so
	$(INSTALL_DIR) $(1)/usr/bin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/{jemalloc-config,jemalloc.sh,jeprof} $(1)/usr/bin/
endef

$(eval $(call BuildPackage,libjemalloc))
