xref: /OK3568_Linux_fs/buildroot/package/ncurses/ncurses.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun################################################################################
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# ncurses
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun################################################################################
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunNCURSES_VERSION = 6.1
8*4882a593SmuzhiyunNCURSES_SITE = $(BR2_GNU_MIRROR)/ncurses
9*4882a593SmuzhiyunNCURSES_INSTALL_STAGING = YES
10*4882a593SmuzhiyunNCURSES_DEPENDENCIES = host-ncurses
11*4882a593SmuzhiyunNCURSES_LICENSE = MIT with advertising clause
12*4882a593SmuzhiyunNCURSES_LICENSE_FILES = COPYING
13*4882a593SmuzhiyunNCURSES_CPE_ID_VENDOR = gnu
14*4882a593Smuzhiyun# Commit 4b21273d71d09 added upstream (security) patches up to 20200118
15*4882a593SmuzhiyunNCURSES_IGNORE_CVES += CVE-2018-10754
16*4882a593SmuzhiyunNCURSES_IGNORE_CVES += CVE-2018-19211
17*4882a593SmuzhiyunNCURSES_IGNORE_CVES += CVE-2018-19217
18*4882a593SmuzhiyunNCURSES_IGNORE_CVES += CVE-2019-17594
19*4882a593SmuzhiyunNCURSES_IGNORE_CVES += CVE-2019-17595
20*4882a593SmuzhiyunNCURSES_CONFIG_SCRIPTS = ncurses$(NCURSES_LIB_SUFFIX)6-config
21*4882a593SmuzhiyunNCURSES_PATCH = \
22*4882a593Smuzhiyun	$(addprefix https://invisible-mirror.net/archives/ncurses/$(NCURSES_VERSION)/, \
23*4882a593Smuzhiyun		ncurses-6.1-20190609-patch.sh.bz2 \
24*4882a593Smuzhiyun		ncurses-6.1-20190615.patch.gz \
25*4882a593Smuzhiyun		ncurses-6.1-20190623.patch.gz \
26*4882a593Smuzhiyun		ncurses-6.1-20190630.patch.gz \
27*4882a593Smuzhiyun		ncurses-6.1-20190706.patch.gz \
28*4882a593Smuzhiyun		ncurses-6.1-20190713.patch.gz \
29*4882a593Smuzhiyun		ncurses-6.1-20190720.patch.gz \
30*4882a593Smuzhiyun		ncurses-6.1-20190727.patch.gz \
31*4882a593Smuzhiyun		ncurses-6.1-20190728.patch.gz \
32*4882a593Smuzhiyun		ncurses-6.1-20190803.patch.gz \
33*4882a593Smuzhiyun		ncurses-6.1-20190810.patch.gz \
34*4882a593Smuzhiyun		ncurses-6.1-20190817.patch.gz \
35*4882a593Smuzhiyun		ncurses-6.1-20190824.patch.gz \
36*4882a593Smuzhiyun		ncurses-6.1-20190831.patch.gz \
37*4882a593Smuzhiyun		ncurses-6.1-20190907.patch.gz \
38*4882a593Smuzhiyun		ncurses-6.1-20190914.patch.gz \
39*4882a593Smuzhiyun		ncurses-6.1-20190921.patch.gz \
40*4882a593Smuzhiyun		ncurses-6.1-20190928.patch.gz \
41*4882a593Smuzhiyun		ncurses-6.1-20191005.patch.gz \
42*4882a593Smuzhiyun		ncurses-6.1-20191012.patch.gz \
43*4882a593Smuzhiyun		ncurses-6.1-20191015.patch.gz \
44*4882a593Smuzhiyun		ncurses-6.1-20191019.patch.gz \
45*4882a593Smuzhiyun		ncurses-6.1-20191026.patch.gz \
46*4882a593Smuzhiyun		ncurses-6.1-20191102.patch.gz \
47*4882a593Smuzhiyun		ncurses-6.1-20191109.patch.gz \
48*4882a593Smuzhiyun		ncurses-6.1-20191116.patch.gz \
49*4882a593Smuzhiyun		ncurses-6.1-20191123.patch.gz \
50*4882a593Smuzhiyun		ncurses-6.1-20191130.patch.gz \
51*4882a593Smuzhiyun		ncurses-6.1-20191207.patch.gz \
52*4882a593Smuzhiyun		ncurses-6.1-20191214.patch.gz \
53*4882a593Smuzhiyun		ncurses-6.1-20191221.patch.gz \
54*4882a593Smuzhiyun		ncurses-6.1-20191228.patch.gz \
55*4882a593Smuzhiyun		ncurses-6.1-20200104.patch.gz \
56*4882a593Smuzhiyun		ncurses-6.1-20200111.patch.gz \
57*4882a593Smuzhiyun		ncurses-6.1-20200118.patch.gz \
58*4882a593Smuzhiyun	)
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun# ncurses-6.1-20191012.patch.gz
61*4882a593SmuzhiyunNCURSES_IGNORE_CVES += CVE-2019-17594 CVE-2019-17595
62*4882a593Smuzhiyun
63*4882a593SmuzhiyunNCURSES_CONF_OPTS = \
64*4882a593Smuzhiyun	--without-cxx \
65*4882a593Smuzhiyun	--without-cxx-binding \
66*4882a593Smuzhiyun	--without-ada \
67*4882a593Smuzhiyun	--without-tests \
68*4882a593Smuzhiyun	--disable-big-core \
69*4882a593Smuzhiyun	--without-profile \
70*4882a593Smuzhiyun	--disable-rpath \
71*4882a593Smuzhiyun	--disable-rpath-hack \
72*4882a593Smuzhiyun	--enable-echo \
73*4882a593Smuzhiyun	--enable-const \
74*4882a593Smuzhiyun	--enable-overwrite \
75*4882a593Smuzhiyun	--enable-pc-files \
76*4882a593Smuzhiyun	--disable-stripping \
77*4882a593Smuzhiyun	--with-pkg-config-libdir="/usr/lib/pkgconfig" \
78*4882a593Smuzhiyun	$(if $(BR2_PACKAGE_NCURSES_TARGET_PROGS),,--without-progs) \
79*4882a593Smuzhiyun	--without-manpages
80*4882a593Smuzhiyun
81*4882a593Smuzhiyunifneq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_NCURSES_STATIC),)
82*4882a593SmuzhiyunNCURSES_CONF_OPTS += --without-shared --with-normal
83*4882a593Smuzhiyunelse ifeq ($(BR2_SHARED_LIBS),y)
84*4882a593SmuzhiyunNCURSES_CONF_OPTS += --with-shared --without-normal
85*4882a593Smuzhiyunelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)
86*4882a593SmuzhiyunNCURSES_CONF_OPTS += --with-shared --with-normal
87*4882a593Smuzhiyunendif
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun# configure can't find the soname for libgpm when cross compiling
90*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_GPM),y)
91*4882a593SmuzhiyunNCURSES_CONF_OPTS += --with-gpm=libgpm.so.2
92*4882a593SmuzhiyunNCURSES_DEPENDENCIES += gpm
93*4882a593Smuzhiyunelse
94*4882a593SmuzhiyunNCURSES_CONF_OPTS += --without-gpm
95*4882a593Smuzhiyunendif
96*4882a593Smuzhiyun
97*4882a593SmuzhiyunNCURSES_TERMINFO_FILES = \
98*4882a593Smuzhiyun	a/ansi \
99*4882a593Smuzhiyun	d/dumb \
100*4882a593Smuzhiyun	l/linux \
101*4882a593Smuzhiyun	p/putty \
102*4882a593Smuzhiyun	p/putty-256color \
103*4882a593Smuzhiyun	p/putty-vt100 \
104*4882a593Smuzhiyun	s/screen \
105*4882a593Smuzhiyun	s/screen-256color \
106*4882a593Smuzhiyun	v/vt100 \
107*4882a593Smuzhiyun	v/vt100-putty \
108*4882a593Smuzhiyun	v/vt102 \
109*4882a593Smuzhiyun	v/vt200 \
110*4882a593Smuzhiyun	v/vt220 \
111*4882a593Smuzhiyun	x/xterm \
112*4882a593Smuzhiyun	x/xterm+256color \
113*4882a593Smuzhiyun	x/xterm-256color \
114*4882a593Smuzhiyun	x/xterm-color \
115*4882a593Smuzhiyun	x/xterm-xfree86 \
116*4882a593Smuzhiyun	$(call qstrip,$(BR2_PACKAGE_NCURSES_ADDITIONAL_TERMINFO))
117*4882a593Smuzhiyun
118*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)
119*4882a593SmuzhiyunNCURSES_CONF_OPTS += --enable-widec
120*4882a593SmuzhiyunNCURSES_LIB_SUFFIX = w
121*4882a593SmuzhiyunNCURSES_LIBS = ncurses menu panel form
122*4882a593Smuzhiyun
123*4882a593Smuzhiyundefine NCURSES_LINK_LIBS_STATIC
124*4882a593Smuzhiyun	$(foreach lib,$(NCURSES_LIBS:%=lib%), \
125*4882a593Smuzhiyun		ln -sf $(lib)$(NCURSES_LIB_SUFFIX).a $(STAGING_DIR)/usr/lib/$(lib).a
126*4882a593Smuzhiyun	)
127*4882a593Smuzhiyun	ln -sf libncurses$(NCURSES_LIB_SUFFIX).a \
128*4882a593Smuzhiyun		$(STAGING_DIR)/usr/lib/libcurses.a
129*4882a593Smuzhiyunendef
130*4882a593Smuzhiyun
131*4882a593Smuzhiyundefine NCURSES_LINK_LIBS_SHARED
132*4882a593Smuzhiyun	$(foreach lib,$(NCURSES_LIBS:%=lib%), \
133*4882a593Smuzhiyun		ln -sf $(lib)$(NCURSES_LIB_SUFFIX).so $(STAGING_DIR)/usr/lib/$(lib).so
134*4882a593Smuzhiyun	)
135*4882a593Smuzhiyun	ln -sf libncurses$(NCURSES_LIB_SUFFIX).so \
136*4882a593Smuzhiyun		$(STAGING_DIR)/usr/lib/libcurses.so
137*4882a593Smuzhiyunendef
138*4882a593Smuzhiyun
139*4882a593Smuzhiyundefine NCURSES_LINK_PC
140*4882a593Smuzhiyun	$(foreach pc,$(NCURSES_LIBS), \
141*4882a593Smuzhiyun		ln -sf $(pc)$(NCURSES_LIB_SUFFIX).pc \
142*4882a593Smuzhiyun			$(STAGING_DIR)/usr/lib/pkgconfig/$(pc).pc
143*4882a593Smuzhiyun	)
144*4882a593Smuzhiyunendef
145*4882a593Smuzhiyun
146*4882a593SmuzhiyunNCURSES_LINK_STAGING_LIBS = \
147*4882a593Smuzhiyun	$(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS)$(BR2_PACKAGE_NCURSES_STATIC),$(call NCURSES_LINK_LIBS_STATIC);) \
148*4882a593Smuzhiyun	$(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_SHARED))
149*4882a593Smuzhiyun
150*4882a593SmuzhiyunNCURSES_LINK_STAGING_PC = $(call NCURSES_LINK_PC)
151*4882a593Smuzhiyun
152*4882a593SmuzhiyunNCURSES_CONF_OPTS += --enable-ext-colors
153*4882a593Smuzhiyun
154*4882a593SmuzhiyunNCURSES_POST_INSTALL_STAGING_HOOKS += NCURSES_LINK_STAGING_LIBS
155*4882a593SmuzhiyunNCURSES_POST_INSTALL_STAGING_HOOKS += NCURSES_LINK_STAGING_PC
156*4882a593Smuzhiyun
157*4882a593Smuzhiyunendif # BR2_PACKAGE_NCURSES_WCHAR
158*4882a593Smuzhiyun
159*4882a593Smuzhiyunifneq ($(BR2_ENABLE_DEBUG),y)
160*4882a593SmuzhiyunNCURSES_CONF_OPTS += --without-debug
161*4882a593Smuzhiyunendif
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun# ncurses breaks with parallel build, but takes quite a while to
164*4882a593Smuzhiyun# build single threaded. Work around it similar to how Gentoo does
165*4882a593Smuzhiyundefine NCURSES_BUILD_CMDS
166*4882a593Smuzhiyun	$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(STAGING_DIR) sources
167*4882a593Smuzhiyun	rm -rf $(@D)/misc/pc-files
168*4882a593Smuzhiyun	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR)
169*4882a593Smuzhiyunendef
170*4882a593Smuzhiyun
171*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_NCURSES_TARGET_PROGS),y)
172*4882a593Smuzhiyundefine NCURSES_TARGET_SYMLINK_RESET
173*4882a593Smuzhiyun	ln -sf tset $(TARGET_DIR)/usr/bin/reset
174*4882a593Smuzhiyunendef
175*4882a593SmuzhiyunNCURSES_POST_INSTALL_TARGET_HOOKS += NCURSES_TARGET_SYMLINK_RESET
176*4882a593Smuzhiyunendif
177*4882a593Smuzhiyun
178*4882a593Smuzhiyundefine NCURSES_TARGET_CLEANUP_TERMINFO
179*4882a593Smuzhiyun	$(RM) -rf $(TARGET_DIR)/usr/share/terminfo $(TARGET_DIR)/usr/share/tabset
180*4882a593Smuzhiyun	$(foreach t,$(NCURSES_TERMINFO_FILES), \
181*4882a593Smuzhiyun		$(INSTALL) -D -m 0644 $(STAGING_DIR)/usr/share/terminfo/$(t) \
182*4882a593Smuzhiyun			$(TARGET_DIR)/usr/share/terminfo/$(t)
183*4882a593Smuzhiyun	)
184*4882a593Smuzhiyunendef
185*4882a593SmuzhiyunNCURSES_POST_INSTALL_TARGET_HOOKS += NCURSES_TARGET_CLEANUP_TERMINFO
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun#
188*4882a593Smuzhiyun# On systems with an older version of tic, the installation of ncurses hangs
189*4882a593Smuzhiyun# forever. To resolve the problem, build a static version of tic on host
190*4882a593Smuzhiyun# ourselves, and use that during installation.
191*4882a593Smuzhiyun#
192*4882a593Smuzhiyundefine HOST_NCURSES_BUILD_CMDS
193*4882a593Smuzhiyun	$(HOST_MAKE_ENV) $(MAKE1) -C $(@D) sources
194*4882a593Smuzhiyun	$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/progs tic
195*4882a593Smuzhiyunendef
196*4882a593Smuzhiyun
197*4882a593SmuzhiyunHOST_NCURSES_CONF_ENV = \
198*4882a593Smuzhiyun	ac_cv_path_LDCONFIG=""
199*4882a593Smuzhiyun
200*4882a593SmuzhiyunHOST_NCURSES_CONF_OPTS = \
201*4882a593Smuzhiyun	--with-shared \
202*4882a593Smuzhiyun	--without-gpm \
203*4882a593Smuzhiyun	--without-manpages \
204*4882a593Smuzhiyun	--without-cxx \
205*4882a593Smuzhiyun	--without-cxx-binding \
206*4882a593Smuzhiyun	--without-ada \
207*4882a593Smuzhiyun	--with-default-terminfo-dir=/usr/share/terminfo \
208*4882a593Smuzhiyun	--disable-db-install \
209*4882a593Smuzhiyun	--without-normal
210*4882a593Smuzhiyun
211*4882a593Smuzhiyun$(eval $(autotools-package))
212*4882a593Smuzhiyun$(eval $(host-autotools-package))
213