mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-28 21:54:40 +03:00
98 lines
3.2 KiB
Bash
Executable File
98 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env -S bash ../.port_include.sh
|
|
port='ncurses'
|
|
version='6.4'
|
|
useconfigure='true'
|
|
configopts=(
|
|
'--enable-pc-files'
|
|
'--enable-sigwinch'
|
|
'--enable-term-driver'
|
|
'--with-pkg-config=/usr/local/lib/pkgconfig'
|
|
'--with-pkg-config-libdir=/usr/local/lib/pkgconfig'
|
|
'--with-shared'
|
|
'--without-ada'
|
|
'--enable-widec'
|
|
)
|
|
files=(
|
|
"https://invisible-mirror.net/archives/ncurses/ncurses-${version}.tar.gz#6931283d9ac87c5073f30b6290c4c75f21632bb4fc3603ac8100812bed248159"
|
|
)
|
|
|
|
check_tic_version() {
|
|
local tic_path="$1"
|
|
|
|
# "ncurses A.B.C" -> "A.B.C" -> "A"
|
|
local major_version="$("${tic_path}" -V | cut -d ' ' -f2 | cut -d '.' -f1)"
|
|
|
|
[ "$major_version" -ge 6 ]
|
|
}
|
|
|
|
get_tic_path() {
|
|
# Installation involves generating terminfo files using `tic`.
|
|
# It seems MacOS ships with an older version of ncurses which has a
|
|
# `tic` binary that cannot properly parse the `terminfo.src` that ships
|
|
# with the version we build.
|
|
# So ensure that at least tic 6.0 is available.
|
|
# See https://github.com/termux/termux-packages/issues/4487#issuecomment-626277493
|
|
# and https://lists.gnu.org/archive/html/bug-ncurses/2019-07/msg00020.html.
|
|
|
|
if command -v tic >/dev/null; then
|
|
if check_tic_version 'tic'; then
|
|
echo 'tic'
|
|
return 0
|
|
else
|
|
# Check for Homebrew installation.
|
|
if command -v brew >/dev/null; then
|
|
local cellar_path="$(brew --cellar ncurses)"
|
|
local highest_version="$(ls "${cellar_path}" | head -1)"
|
|
local tic_path="${cellar_path}/${highest_version}/bin/tic"
|
|
|
|
if check_tic_version "${tic_path}"; then
|
|
echo "${tic_path}"
|
|
return 0
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
return 1
|
|
}
|
|
|
|
pre_configure() {
|
|
export CPPFLAGS='-P'
|
|
}
|
|
|
|
install() {
|
|
local tic_path="$(get_tic_path)"
|
|
if [ ! $? ]; then
|
|
echo 'Error: installing cross-compiled ncurses requires locally installed ncurses >= 6.0'
|
|
exit 1
|
|
fi
|
|
|
|
echo "Using ${tic_path} from $(${tic_path} -V)"
|
|
|
|
export TIC_PATH="${tic_path}"
|
|
run make DESTDIR="${DESTDIR}" "${installopts[@]}" install
|
|
}
|
|
|
|
post_install() {
|
|
# Compatibility symlinks for merged libraries.
|
|
for lib in tinfo tic curses; do
|
|
ln -svf libncursesw.so "${SERENITY_INSTALL_ROOT}/usr/local/lib/lib${lib}w.so"
|
|
done
|
|
|
|
# Compatibility symlinks for non-w libraries.
|
|
for lib in form menu ncurses ncurses++ panel tinfo tic curses; do
|
|
ln -svf "lib${lib}w.so" "${SERENITY_INSTALL_ROOT}/usr/local/lib/lib${lib}.so"
|
|
done
|
|
|
|
# Compatibility symlink for the include folder.
|
|
# Target folder has to be removed, otherwise we will get `/usr/local/include/ncurses/ncursesw`.
|
|
rm -rf "${SERENITY_INSTALL_ROOT}/usr/local/include/ncurses"
|
|
ln -svf ncursesw "${SERENITY_INSTALL_ROOT}/usr/local/include/ncurses"
|
|
|
|
# Compatibility symlink for ports that expect `/usr/local/include/curses.h` and friends.
|
|
# FIXME: Is there a logical explanation for all of this? If so, we should clean it up at some point.
|
|
for file in $(ls "${SERENITY_INSTALL_ROOT}/usr/local/include/ncursesw"); do
|
|
ln -svf "ncursesw/${file}" "${SERENITY_INSTALL_ROOT}/usr/local/include/${file}"
|
|
done
|
|
}
|