#!/bin/bash # ============================================================================ # DarkForge Linux — Phase 0, Chapter 6: Ncurses # ============================================================================ # Purpose: Cross-compile the ncurses library (terminal handling). Required # by bash, many TUI programs, and the installer. # Inputs: ${LFS}/sources/ncurses-6.5.tar.gz # Outputs: ncurses libraries and tic utility in ${LFS}/usr/ # Assumes: Cross-toolchain (Ch.5) complete # Ref: LFS 13.0 §6.3 # ============================================================================ set -euo pipefail source "${LFS}/sources/darkforge-env.sh" PACKAGE="ncurses" VERSION="6.5" SRCDIR="${LFS}/sources" echo "=== Building ${PACKAGE}-${VERSION} (Temporary Tool) ===" cd "${SRCDIR}" tar -xf "${PACKAGE}-${VERSION}.tar.gz" cd "${PACKAGE}-${VERSION}" # First, build the tic program that runs on the host # This is needed to create the terminal database during install sed -i s/mawk// configure mkdir build pushd build ../configure make -C include make -C progs tic popd # Now cross-compile ncurses for the target ./configure \ --prefix=/usr \ --host="${LFS_TGT}" \ --build="$(./config.guess)" \ --mandir=/usr/share/man \ --with-manpage-format=normal \ --with-shared \ --without-normal \ --with-cxx-shared \ --without-debug \ --without-ada \ --disable-stripping make make DESTDIR="${LFS}" TIC_PATH="$(pwd)/build/progs/tic" install # Fix library so that it can be found by linker ln -sv libncursesw.so "${LFS}/usr/lib/libncurses.so" # Create pkg-config compatibility for programs that look for -lncurses sed -e 's/^#if.*XOPEN.*$/#if 1/' -i "${LFS}/usr/include/curses.h" cd "${SRCDIR}" rm -rf "${PACKAGE}-${VERSION}" echo "=== ${PACKAGE}-${VERSION} complete ==="