xref: /OK3568_Linux_fs/buildroot/package/zstd/zstd.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun################################################################################
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# zstd
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun################################################################################
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunZSTD_VERSION = 1.5.0
8*4882a593SmuzhiyunZSTD_SITE = https://github.com/facebook/zstd/releases/download/v$(ZSTD_VERSION)
9*4882a593SmuzhiyunZSTD_INSTALL_STAGING = YES
10*4882a593SmuzhiyunZSTD_LICENSE = BSD-3-Clause or GPL-2.0
11*4882a593SmuzhiyunZSTD_LICENSE_FILES = LICENSE COPYING
12*4882a593SmuzhiyunZSTD_CPE_ID_VENDOR = facebook
13*4882a593SmuzhiyunZSTD_CPE_ID_PRODUCT = zstandard
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunZSTD_OPTS += PREFIX=/usr
16*4882a593SmuzhiyunZSTD_OPTS += ZSTD_LEGACY_SUPPORT=0
17*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_ZLIB),y)
18*4882a593SmuzhiyunZSTD_DEPENDENCIES += zlib
19*4882a593SmuzhiyunZSTD_OPTS += HAVE_ZLIB=1
20*4882a593Smuzhiyunelse
21*4882a593SmuzhiyunZSTD_OPTS += HAVE_ZLIB=0
22*4882a593Smuzhiyunendif
23*4882a593Smuzhiyun
24*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XZ),y)
25*4882a593SmuzhiyunZSTD_DEPENDENCIES += xz
26*4882a593SmuzhiyunZSTD_OPTS += HAVE_LZMA=1
27*4882a593Smuzhiyunelse
28*4882a593SmuzhiyunZSTD_OPTS += HAVE_LZMA=0
29*4882a593Smuzhiyunendif
30*4882a593Smuzhiyun
31*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LZ4),y)
32*4882a593SmuzhiyunZSTD_DEPENDENCIES += lz4
33*4882a593SmuzhiyunZSTD_OPTS += HAVE_LZ4=1
34*4882a593Smuzhiyunelse
35*4882a593SmuzhiyunZSTD_OPTS += HAVE_LZ4=0
36*4882a593Smuzhiyunendif
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun# zstd will append -O3 after $(CFLAGS), use MOREFLAGS to override again
39*4882a593SmuzhiyunZSTD_OPTS += MOREFLAGS="$(TARGET_OPTIMIZATION)"
40*4882a593Smuzhiyun
41*4882a593Smuzhiyunifeq ($(BR2_STATIC_LIBS),y)
42*4882a593SmuzhiyunZSTD_BUILD_LIBS = libzstd.a
43*4882a593SmuzhiyunZSTD_INSTALL_LIBS = install-static
44*4882a593Smuzhiyunelse ifeq ($(BR2_SHARED_LIBS),y)
45*4882a593SmuzhiyunZSTD_BUILD_LIBS = lib
46*4882a593SmuzhiyunZSTD_INSTALL_LIBS = install-shared
47*4882a593Smuzhiyunelse
48*4882a593SmuzhiyunZSTD_BUILD_LIBS = lib
49*4882a593SmuzhiyunZSTD_INSTALL_LIBS = install-static install-shared
50*4882a593Smuzhiyunendif
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun# prefer zstd-dll unless no library is available
53*4882a593Smuzhiyunifeq ($(BR2_STATIC_LIBS),y)
54*4882a593SmuzhiyunZSTD_BUILD_PROG_TARGET = zstd-release
55*4882a593Smuzhiyunelse
56*4882a593SmuzhiyunZSTD_BUILD_PROG_TARGET = zstd-dll
57*4882a593Smuzhiyunendif
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun# The HAVE_THREAD flag is read by the 'programs' makefile but not by  the 'lib'
60*4882a593Smuzhiyun# one. Building a multi-threaded binary with a static library (which defaults
61*4882a593Smuzhiyun# to single-threaded) gives a runtime error when compressing files.
62*4882a593Smuzhiyun# The 'lib' makefile provides specific '%-mt' and '%-nomt' targets for this
63*4882a593Smuzhiyun# purpose.
64*4882a593Smuzhiyunifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
65*4882a593SmuzhiyunZSTD_OPTS += HAVE_THREAD=1
66*4882a593SmuzhiyunZSTD_BUILD_LIBS := $(addsuffix -mt,$(ZSTD_BUILD_LIBS))
67*4882a593Smuzhiyunelse
68*4882a593SmuzhiyunZSTD_OPTS += HAVE_THREAD=0
69*4882a593SmuzhiyunZSTD_BUILD_LIBS := $(addsuffix -nomt,$(ZSTD_BUILD_LIBS))
70*4882a593Smuzhiyunendif
71*4882a593Smuzhiyun# check-package disable OverriddenVariable - override intended
72*4882a593SmuzhiyunZSTD_BUILD_LIBS := $(addsuffix -release,$(ZSTD_BUILD_LIBS))
73*4882a593Smuzhiyun
74*4882a593Smuzhiyundefine ZSTD_BUILD_CMDS
75*4882a593Smuzhiyun	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \
76*4882a593Smuzhiyun		-C $(@D)/lib $(ZSTD_BUILD_LIBS) libzstd.pc
77*4882a593Smuzhiyun	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \
78*4882a593Smuzhiyun		-C $(@D)/programs $(ZSTD_BUILD_PROG_TARGET)
79*4882a593Smuzhiyunendef
80*4882a593Smuzhiyun
81*4882a593Smuzhiyundefine ZSTD_INSTALL_STAGING_CMDS
82*4882a593Smuzhiyun	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \
83*4882a593Smuzhiyun		DESTDIR=$(STAGING_DIR) PREFIX=/usr -C $(@D)/lib \
84*4882a593Smuzhiyun		install-pc install-includes $(ZSTD_INSTALL_LIBS)
85*4882a593Smuzhiyunendef
86*4882a593Smuzhiyun
87*4882a593Smuzhiyundefine ZSTD_INSTALL_TARGET_CMDS
88*4882a593Smuzhiyun	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \
89*4882a593Smuzhiyun		DESTDIR=$(TARGET_DIR) -C $(@D)/programs install
90*4882a593Smuzhiyun	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \
91*4882a593Smuzhiyun		DESTDIR=$(TARGET_DIR) -C $(@D)/lib $(ZSTD_INSTALL_LIBS)
92*4882a593Smuzhiyunendef
93*4882a593Smuzhiyun
94*4882a593SmuzhiyunHOST_ZSTD_OPTS += PREFIX=$(HOST_DIR)
95*4882a593Smuzhiyun
96*4882a593Smuzhiyundefine HOST_ZSTD_BUILD_CMDS
97*4882a593Smuzhiyun	$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) $(HOST_ZSTD_OPTS) \
98*4882a593Smuzhiyun		-C $(@D) zstd-release lib-release
99*4882a593Smuzhiyunendef
100*4882a593Smuzhiyun
101*4882a593Smuzhiyundefine HOST_ZSTD_INSTALL_CMDS
102*4882a593Smuzhiyun	$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) $(HOST_ZSTD_OPTS) \
103*4882a593Smuzhiyun		-C $(@D) install
104*4882a593Smuzhiyunendef
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun$(eval $(generic-package))
107*4882a593Smuzhiyun$(eval $(host-generic-package))
108