1################################################################################ 2# 3# zstd 4# 5################################################################################ 6 7ZSTD_VERSION = 1.5.5 8ZSTD_SITE = https://github.com/facebook/zstd/releases/download/v$(ZSTD_VERSION) 9ZSTD_INSTALL_STAGING = YES 10ZSTD_LICENSE = BSD-3-Clause or GPL-2.0 11ZSTD_LICENSE_FILES = LICENSE COPYING 12ZSTD_CPE_ID_VENDOR = facebook 13ZSTD_CPE_ID_PRODUCT = zstandard 14 15ZSTD_OPTS += PREFIX=/usr 16ZSTD_OPTS += ZSTD_LEGACY_SUPPORT=0 17ifeq ($(BR2_PACKAGE_ZLIB),y) 18ZSTD_DEPENDENCIES += zlib 19ZSTD_OPTS += HAVE_ZLIB=1 20else 21ZSTD_OPTS += HAVE_ZLIB=0 22endif 23 24ifeq ($(BR2_PACKAGE_XZ),y) 25ZSTD_DEPENDENCIES += xz 26ZSTD_OPTS += HAVE_LZMA=1 27else 28ZSTD_OPTS += HAVE_LZMA=0 29endif 30 31ifeq ($(BR2_PACKAGE_LZ4),y) 32ZSTD_DEPENDENCIES += lz4 33ZSTD_OPTS += HAVE_LZ4=1 34else 35ZSTD_OPTS += HAVE_LZ4=0 36endif 37 38# zstd will append -O3 after $(CFLAGS), use MOREFLAGS to override again 39ZSTD_OPTS += MOREFLAGS="$(TARGET_OPTIMIZATION)" 40 41ZSTD_BUILD_LIBS_BASENAMES = libzstd.pc 42ifeq ($(BR2_STATIC_LIBS),y) 43ZSTD_BUILD_LIBS_BASENAMES += libzstd.a 44ZSTD_INSTALL_LIBS = install-static 45else ifeq ($(BR2_SHARED_LIBS),y) 46ZSTD_BUILD_LIBS_BASENAMES += lib 47ZSTD_INSTALL_LIBS = install-shared 48else 49ZSTD_BUILD_LIBS_BASENAMES += lib 50ZSTD_INSTALL_LIBS = install-static install-shared 51endif 52 53# prefer zstd-dll unless no library is available 54ifeq ($(BR2_STATIC_LIBS),y) 55ZSTD_BUILD_PROG_TARGET = zstd-release 56else 57ZSTD_BUILD_PROG_TARGET = zstd-dll 58endif 59 60# The HAVE_THREAD flag is read by the 'programs' makefile but not by the 'lib' 61# one. Building a multi-threaded binary with a static library (which defaults 62# to single-threaded) gives a runtime error when compressing files. 63# The 'lib' makefile provides specific '%-mt' and '%-nomt' targets for this 64# purpose. 65ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) 66ZSTD_OPTS += HAVE_THREAD=1 67ZSTD_BUILD_LIBS_THREAD_SUFFIX = -mt 68else 69ZSTD_OPTS += HAVE_THREAD=0 70ZSTD_BUILD_LIBS_THREAD_SUFFIX = -nomt 71endif 72# check-package disable OverriddenVariable - override intended 73ZSTD_BUILD_LIBS = \ 74 $(addsuffix -release, \ 75 $(addsuffix $(ZSTD_BUILD_LIBS_THREAD_SUFFIX), \ 76 $(ZSTD_BUILD_LIBS_BASENAMES))) 77 78define ZSTD_BUILD_CMDS 79 $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \ 80 -C $(@D)/lib $(ZSTD_BUILD_LIBS) 81 $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \ 82 -C $(@D)/programs $(ZSTD_BUILD_PROG_TARGET) 83endef 84 85define ZSTD_INSTALL_STAGING_CMDS 86 $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \ 87 DESTDIR=$(STAGING_DIR) PREFIX=/usr -C $(@D)/lib \ 88 install-pc install-includes $(ZSTD_INSTALL_LIBS) 89endef 90 91define ZSTD_INSTALL_TARGET_CMDS 92 $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \ 93 DESTDIR=$(TARGET_DIR) -C $(@D)/programs install 94 $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \ 95 DESTDIR=$(TARGET_DIR) -C $(@D)/lib $(ZSTD_INSTALL_LIBS) 96endef 97 98HOST_ZSTD_OPTS += PREFIX=$(HOST_DIR) 99HOST_ZSTD_ENV = $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) 100 101# We are a ccache dependency, so we can't use ccache 102HOST_ZSTD_ENV += CC="$(HOSTCC_NOCCACHE)" CXX="$(HOSTCXX_NOCCACHE)" 103 104define HOST_ZSTD_BUILD_CMDS 105 $(HOST_ZSTD_ENV) $(MAKE) $(HOST_ZSTD_OPTS) \ 106 -C $(@D) zstd-release lib-release 107endef 108 109define HOST_ZSTD_INSTALL_CMDS 110 $(HOST_ZSTD_ENV) $(MAKE) $(HOST_ZSTD_OPTS) \ 111 -C $(@D) install 112endef 113 114$(eval $(generic-package)) 115$(eval $(host-generic-package)) 116