ncurses: split libtinfo from libncurses

many external program expects libncurses to not be provided as a single
library. Instead of fixing all ports, distribute ncurses the way
upstream distributes it

Turn libncursesw.so into a ldscript which will link automatically as
needed to libtinfow so so this change is seamless at compile time.

Differential Revision:	https://reviews.freebsd.org/D32098
This commit is contained in:
Baptiste Daroussin 2021-09-23 03:49:51 +02:00
parent 8bc5971be1
commit 396851c20a
10 changed files with 1151 additions and 989 deletions

View file

@ -1,11 +1,11 @@
# $FreeBSD$
SUBDIR= ncurses form menu panel
SUBDIR= tinfo ncurses form menu panel
SUBDIR_PARALLEL=
.for subdir in ${SUBDIR:Nncurses*}
SUBDIR_DEPEND_${subdir}= ncurses
.for subdir in ${SUBDIR:Ntinfo*}
SUBDIR_DEPEND_${subdir}= tinfo
.endfor
.include <bsd.subdir.mk>

View file

@ -11,14 +11,14 @@ CFLAGS+= -D_XOPEN_SOURCE_EXTENDED
NCURSES_CFG_H= ${.CURDIR}/ncurses_cfg.h
CFLAGS+= -I.
CFLAGS+= -I${.CURDIR:H}/ncurses
CFLAGS+= -I${.CURDIR:H}/tinfo
# for ${NCURSES_CFG_H}
CFLAGS+= -I${.CURDIR:H}/ncurses
CFLAGS+= -I${NCURSES_DIR}/include
CFLAGS+= -I${NCURSES_DIR}/ncurses
CFLAGS+= -I${.OBJDIR:H}/ncurses/
CFLAGS+= -I${.OBJDIR:H}/tinfo/
CFLAGS+= -Wall
@ -28,6 +28,7 @@ CFLAGS+= -DHAVE_CONFIG_H
# everyone needs this
.PATH: ${NCURSES_DIR}/include
.PATH: ${.OBJDIR:H}/tinfo/
# tools and directories
AWK?= awk

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
INPUT(@@SHLIB@@ AS_NEEDED(-ltinfow))

1066
lib/ncurses/tinfo/Makefile Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,18 @@
# $FreeBSD$
# Autogenerated - do NOT edit!
DIRDEPS = \
gnu/lib/csu \
include \
include/xlocale \
lib/${CSU_DIR} \
lib/libc \
lib/libcompiler_rt \
lib/ncurses/ncursesw \
.include <dirdeps.mk>
.if ${DEP_RELDIR} == ${_DEP_RELDIR}
# local dependencies - needed for -jN in clean tree
.endif

View file

@ -0,0 +1,36 @@
/*-
* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)pathnames.h 8.1 (Berkeley) 6/4/93
* $FreeBSD$
*/
#define _PATH_DEF ".termcap /usr/share/misc/termcap /etc/termcap.small"
#define _PATH_DEF_SEC "/usr/share/misc/termcap"

View file

@ -147,7 +147,7 @@ LIBTACPLUS?= ${LIBDESTDIR}${LIBDIR_BASE}/libtacplus.a
LIBTERMCAP?= ${LIBDESTDIR}${LIBDIR_BASE}/libtermcap.a
LIBTERMCAPW?= ${LIBDESTDIR}${LIBDIR_BASE}/libtermcapw.a
LIBTERMLIB?= "don't use LIBTERMLIB, use LIBTERMCAP"
LIBTINFO?= "don't use LIBTINFO, use LIBNCURSES"
LIBTINFOW= ${LIBDESTDIR}${LIBDIR_BASE}/libtinfow.a
LIBTPOOL?= ${LIBDESTDIR}${LIBDIR_BASE}/libtpool.a
LIBUFS?= ${LIBDESTDIR}${LIBDIR_BASE}/libufs.a
LIBUGIDFW?= ${LIBDESTDIR}${LIBDIR_BASE}/libugidfw.a

View file

@ -193,6 +193,7 @@ _LIBRARIES= \
sysdecode \
tacplus \
termcapw \
tinfow \
tpool \
ufs \
ugidfw \
@ -375,6 +376,7 @@ _DP_c+= ssp_nonshared
_DP_stats= sbuf pthread
_DP_stdthreads= pthread
_DP_tacplus= md
_DP_ncursesw= tinfow
_DP_panelw= ncursesw
_DP_rpcsec_gss= gssapi
_DP_smb= kiconv
@ -692,6 +694,7 @@ LIBMDIR= ${OBJTOP}/lib/msun
LIBFORMWDIR= ${OBJTOP}/lib/ncurses/form
LIBMENUWDIR= ${OBJTOP}/lib/ncurses/menu
LIBNCURSESWDIR= ${OBJTOP}/lib/ncurses/ncurses
LIBTINFOWDIR= ${OBJTOP}/lib/ncurses/tinfo
LIBPANELWDIR= ${OBJTOP}/lib/ncurses/panel
LIBCRYPTODIR= ${OBJTOP}/secure/lib/libcrypto
LIBSPLDIR= ${OBJTOP}/cddl/lib/libspl
@ -701,7 +704,7 @@ LIBTEKENDIR= ${OBJTOP}/sys/teken/libteken
LIBEGACYDIR= ${OBJTOP}/tools/build
LIBLNDIR= ${OBJTOP}/usr.bin/lex/lib
LIBTERMCAPWDIR= ${LIBNCURSESWDIR}
LIBTERMCAPWDIR= ${LIBTINFOWDIR}
# Default other library directories to lib/libNAME.
.for lib in ${_LIBRARIES}