# Thanks to tmn505
# https://aur.archlinux.org/packages/p7zip-gui/
#
# p7zip 16.02 GUI compiler B12092021 for Debian/*buntu/mint/and other forks
#
# Tested under Linux Mint cinnamon 19.3 GLIBC 2.27
#
# KAPITALSIN 2021
#
# WxWidgets are integrated in the binary files
#
glibc="$(ldd --version | awk '/ldd/{print $NF}')"

sudo apt-get install gcc g++ yasm libgtk2.0-dev libwxgtk3.0-dev

time_start=`date +%s`
wget https://fossies.org/linux/misc/p7zip_16.02_src_all.tar.xz
tar xvfa p7zip_16.02_src_all.tar.xz

cd p7zip_16.02
wget https://src.fedoraproject.org/rpms/p7zip/raw/rawhide/f/14-Fix-g++-warning.patch
wget https://raw.githubusercontent.com/archlinux/svntogit-packages/a82b67f5d36f374afd154e7648bb13ec38a3c497/trunk/CVE-2016-9296.patch
wget https://raw.githubusercontent.com/archlinux/svntogit-packages/a82b67f5d36f374afd154e7648bb13ec38a3c497/trunk/CVE-2017-17969.patch
wget https://raw.githubusercontent.com/archlinux/svntogit-packages/a82b67f5d36f374afd154e7648bb13ec38a3c497/trunk/CVE-2018-5996.patch
wget https://raw.githubusercontent.com/archlinux/svntogit-packages/a82b67f5d36f374afd154e7648bb13ec38a3c497/trunk/CVE-2018-10115.patch
wget https://src.fedoraproject.org/rpms/p7zip/raw/rawhide/f/gcc10-conversion.patch

patch -p1 -i 14-Fix-g++-warning.patch
patch -p1 -i CVE-2016-9296.patch
patch -p1 -i CVE-2017-17969.patch
patch -p1 -i CVE-2018-5996.patch
patch -p1 -i CVE-2018-10115.patch
patch -p1 -i gcc10-conversion.patch

cp makefile.linux_amd64_asm makefile.machine
sed -i 's/-O -s/-O3 -s/g' makefile.machine
sed -i 's/x86_64-linux-gnu//g' CPP/7zip/*/*/*.depend
rm GUI/kde4/p7zip_compress.desktop

PATH=$PWD/wx3:$PATH
wget https://github.com/johna23-lab/filezilla/raw/main/wx3.7z
7z x wx3.7z
rm wx3.7z
cd wx3
cp -r -n /usr/include/wx-3.0/wx .
./configure --prefix=$(pwd) --enable-monolithic  --disable-shared --enable-static --enable-unicode --with-libpng=builtin   --with-libjpeg=builtin  --with-libtiff=builtin  --with-zlib=builtin --with-expat=builtin
make -j$(nproc)
cd ..

cd Utils
sed -i 's/_do_not_use//g' generate.py
./generate.py
cd ..

make -j$(nproc) 7zFM 7zG
cd bin
strip 7zFM 7zG 7z.so
mkdir p7zip.16.02.gui

echo '#!/bin/sh' > p7zip.16.02.gui/7zf.sh
echo '   BIN=./7zFM' >> p7zip.16.02.gui/7zf.sh
echo 'export LD_LIBRARY_PATH=lib/x86_64-linux-gnu:/lib64:usr/lib/x86_64-linux-gnu/' >> p7zip.16.02.gui/7zf.sh
echo 'exec $BIN $@' >> p7zip.16.02.gui/7zf.sh
chmod a+x p7zip.16.02.gui/7zf.sh

for library in $(ldd "7zFM" "7zG" "7z.so"  | cut -d '>' -f 2 | awk '{print $1}')
do
	[ -f "${library}" ] && cp --verbose --parents "${library}" "p7zip.16.02.gui"
done

cp 7zFM 7zG 7z.so "p7zip.16.02.gui"
cp -r Codecs "p7zip.16.02.gui"

mv  "p7zip.16.02.gui"  "../../p7zip.16.02.gui_GLIBC_"$glibc""

echo "p7zip.16.02.gui COMPILED AT p7zip.16.02.gui_GLIBC_"$glibc""

time_end=`date +%s`
time_exec=`expr $(( $time_end - $time_start ))`
echo "EL PROCESO DE COMPILADO HA TARDADO UN TOTAL DE $(($time_exec / 60)) minutos y $(($time_exec % 60)) segundos."
