##
##  readline.spec -- OpenPKG RPM Package Specification
##  Copyright (c) 2000-2025 OpenPKG Project <http://openpkg.org/>
##
##  Permission to use, copy, modify, and distribute this software for
##  any purpose with or without fee is hereby granted, provided that
##  the above copyright notice and this permission notice appear in all
##  copies.
##
##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR
##  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.
##

#   package version
%define       V_base_real 8.2
%define       V_base_comp 82
%define       V_plvl_raw  13
%define       V_plvl_pad  013

#   package information
Name:         readline
Summary:      Terminal Line Editing Library
URL:          https://tiswww.case.edu/php/chet/readline/rltop.html
Vendor:       Free Software Foundation
Packager:     OpenPKG Project
Distribution: OpenPKG Community
Class:        BASE
Group:        Terminal
License:      GPL
Version:      %{V_base_real}.%{V_plvl_raw}
Release:      20240804

#   package options
%option       with_ncurses   yes
%option       with_multibyte yes

#   list of sources
Source0:      https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}.tar.gz
Source1:      readline.pc
Patch0:       readline.patch
Patch1:       https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/readline%{V_base_comp}-001
Patch2:       https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/readline%{V_base_comp}-002
Patch3:       https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/readline%{V_base_comp}-003
Patch4:       https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/readline%{V_base_comp}-004
Patch5:       https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/readline%{V_base_comp}-005
Patch6:       https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/readline%{V_base_comp}-006
Patch7:       https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/readline%{V_base_comp}-007
Patch8:       https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/readline%{V_base_comp}-008
Patch9:       https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/readline%{V_base_comp}-009
Patch10:      https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/readline%{V_base_comp}-010
Patch11:      https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/readline%{V_base_comp}-011
Patch12:      https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/readline%{V_base_comp}-012
Patch13:      https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/readline%{V_base_comp}-013

#   build information
BuildPreReq:  OpenPKG, openpkg >= 20160101
PreReq:       OpenPKG, openpkg >= 20160101
%if "%{with_ncurses}" == "yes"
BuildPreReq:  ncurses
PreReq:       ncurses
%endif
%if "%{with_multibyte}" == "yes"
BuildPreReq:  libiconv
PreReq:       libiconv
%endif

%description
    Readline is a full-featured text terminal line editing library.

%track
    prog readline = {
        version   = %{V_base_real}
        url       = https://ftp.gnu.org/gnu/readline/
        regex     = readline-(\d+\.\d+)\.tar\.gz
    }
    prog readline:patches = {
        version   = %{V_base_comp}-%{V_plvl_pad}
        url       = https://ftp.gnu.org/gnu/readline/readline-%{V_base_real}-patches/
        regex     = readline(\d+-\d+)
    }

%prep
    %setup -q -n readline-%{V_base_real}
    %patch -p0
    %patch -p0 -P 1
    %patch -p0 -P 2
    %patch -p0 -P 3
    %patch -p0 -P 4
    %patch -p0 -P 5
    %patch -p0 -P 6
    %patch -p0 -P 7
    %patch -p0 -P 8
    %patch -p0 -P 9
    %patch -p0 -P 10
    %patch -p0 -P 11
    %patch -p0 -P 12
    %patch -p0 -P 13

%build
    #   configure package
    CC="%{l_cc}" \
    CPPFLAGS="%{l_cppflags}" \
    CFLAGS="%{l_cflags -O}" \
    GREP="grep" \
    ./configure \
        --prefix=%{l_prefix} \
        --mandir=%{l_prefix}/man \
        --infodir=%{l_prefix}/info \
%if "%{with_ncurses}" == "yes"
        --with-curses \
%endif
%if "%{with_multibyte}" == "yes"
        --enable-multibyte \
%else
        --disable-multibyte \
%endif
        --disable-shared

    #   build package
    %{l_make} %{l_mflags -O}

%install
    #   install package
    %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT

    #   strip down installation
    rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/*.s[ol]*
    rm -f $RPM_BUILD_ROOT%{l_prefix}/info/dir
    rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/doc
    rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/readline

    #   install pkg-config(1) configuration file
    %{l_shtool} mkdir -f -p -m 755 \
        $RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig
    cp %{SOURCE readline.pc} readline.pc.in
    export CONFIG_FILES="readline.pc"
    export CONFIG_HEADERS=""
    export CONFIG_LINKS=""
    export CONFIG_COMMANDS=""
    ./config.status
    %{l_shtool} install -c -m 644 \
        readline.pc $RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig/

    #   determine installation files
    %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
        %{l_files_std}

%files -f files

%clean

