# SPDX-FileCopyrightText: 2025 Samuel Tyler <samuel@samuelt.me>
#
# SPDX-License-Identifier: GPL-3.0-or-later

src_prepare() {
    default

    chmod 644 cpan/Compress-Raw-Zlib/config.in
    sed "s:%LIBDIR%:${LIBDIR}:" Compress-Raw-Zlib_config.in > cpan/Compress-Raw-Zlib/config.in

    # Remove miscellaneous pregenerated files
    rm -f Porting/Glossary \
        dist/Devel-PPPort/parts/apidoc.fnc Configure config_h.SH \
        cpan/Win32API-File/cFile.pc cpan/Sys-Syslog/win32/Win32.pm \
        dist/ExtUtils-CBuilder/Makefile.PL \
        cpan/Test-Simple/lib/Test2/Util/HashBase.pm \
        cpan/Term-Table/lib/Term/Table/HashBase.pm \
        dist/Tie-File/Makefile.PL
    rm win32/perlexe.ico
    rm -r cpan/Compress-Raw-Zlib/zlib-src

    # Generated tests
    rm cpan/Unicode-Collate/Collate/keys.txt

    # Regenerate other prebuilt header files
    # Taken from headers of regen scripts
    rm -f lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c \
          overload.h opcode.h opnames.h pp_proto.h \
          keywords.h embed.h embedvar.h perlapi.{c,h} \
          proto.h lib/overload/numbers.pm regcharclass.h perly.{tab,h,act} \
          mg_{raw.h,vtable.h} keywords.c l1_char_class_tab.h \
          lib/feature.pm lib/B/Op_private.pm lib/unicore/uni_keywords.pl \
          miniperlmain.c unicode_constants.h uni_keywords.h \
          charclass_invlists.h ebcdic_tables.h mg_names.inc overload.inc \
          packsizetables.inc regexp_constants.h locale_table.h scope_types.h \
          charclass_invlists.inc
    # If an input file does not exist, the "digest" of the input file (used as
    # a manifest of inputs) in the generated file is a random number, which is
    # not reproducible
    touch lib/unicore/mktables.lst

    perl regen.pl
    perl regen_perly.pl
    perl regen/keywords.pl
    perl regen/mk_PL_charclass.pl
    perl regen/regcharclass.pl
    perl regen/genpacksizetables.pl
    perl regen/ebcdic.pl
    perl regen/miniperlmain.pl
    perl regen/unicode_constants.pl
    perl lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p
    mkdir lib_unicore
    ln -s ../lib/unicore lib_unicore/
    perl -Ilib_unicore regen/mk_invlists.pl

    # regenerate configure
    mconf_dir=$(echo ../metaconfig*)
    ln -s "$mconf_dir"/.package .
    ln -s "$mconf_dir"/U .
    touch U/modified/{d_openat.U,d_vsnprintf.U,d_sched_yield.U} # null it
    metaconfig -m

    # Glossary
    ln -s ../perl-* "$mconf_dir"/perl
    "$mconf_dir"/U/mkglossary > Porting/Glossary

    # Remove lines from MANIFEST that we have deleted
    while read -r line; do
        f="$(echo "${line}" | cut -d' ' -f1)"
        if [ -e "${f}" ]; then
            echo "${line}"
        fi
    done < MANIFEST > MANIFEST.new
    mv MANIFEST.new MANIFEST
}

src_configure() {
    ./Configure -des \
        -Dprefix="${PREFIX}" \
        -Dcc=gcc \
        -Dusedl=false \
        -Ddate=':' \
        -Dccflags="-U__DATE__ -U__TIME__" \
        -Darchname="i686-linux" \
        -Dmyhostname="(none)" \
        -Dmaildomain="(none)" \
        -Dccflags='-DPERL_BUILD_DATE="null"'
}

src_compile() {
    make "${MAKEJOBS}" pod/perlapi.pod

    pushd dist/Devel-PPPort
    perl devel/mkapidoc.pl
    popd

    default
}

src_install() {
    default

    # Remove messed up manpages
    rm "${DESTDIR}/"*.0
}
