#!/bin/bash # # "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 # (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a # aplicativos mainframe. Registro no INPI sob o nome G3270. # # Copyright (C) <2008> # # Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob # os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela # Free Software Foundation. # # Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER # GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO # A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para # obter mais detalhes. # # Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este # programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple # Place, Suite 330, Boston, MA, 02111-1307, USA # # Contatos: # # perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) # erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça) # # # Referencias: # # https://www.gtk.org/docs/installations/windows/ # http://drup.org/gtk-warning-error-loading-icon-couldnt-recognize-image-file-format # # Get myDIR myDIR=$(dirname $(readlink -f "${0}")) # Disable i18n export LANG=C prefix="@prefix@" PKG_CONFIG="@PKG_CONFIG@" GTK_VERSION="gtk+-@GTK_VERSION@" GTK_PREFIX=$($PKG_CONFIG --variable=prefix ${GTK_VERSION}) GDK_LOADERS=$(${PKG_CONFIG} --variable=gdk_pixbuf_binarydir gdk-pixbuf-2.0 | sed -e "s@${prefix}@@g") TARGET="@BUILDDIR@/.bin/runtime" BINDIR="@BUILDDIR@/.bin/Release/" SCHEMADIR="@BUILDDIR@/schemas/" # Change to bin path mkdir -p ${TARGET} rm -fr ${TARGET}/* copy_dll() { AGAIN=1 until [ $AGAIN = 0 ]; do SOURCES=$(mktemp) REQUIRES=$(mktemp) find "${BINDIR}" -iname "*.dll" > ${SOURCES} find "${BINDIR}" -iname "*.exe" >> ${SOURCES} find "${TARGET}" -iname *.dll >> ${SOURCES} while read FILENAME do objdump -p ${FILENAME} | grep "DLL Name:" | cut -d: -f2 | tr "[:upper:]" "[:lower:]" >> ${REQUIRES} done < ${SOURCES} libs_to_exclude=" advapi32 cfgmgr32 comctl32 comdlg32 crypt32 d3d8 d3d9 ddraw dnsapi dsound dwmapi gdi32 gdiplus glu32 glut32 imm32 iphlpapi kernel32 ksuser mpr mscms mscoree msimg32 msvcr71 msvcr80 msvcr90 msvcrt mswsock netapi32 odbc32 ole32 oleacc oleaut32 opengl32 psapi rpcrt4 secur32 setupapi shell32 shlwapi user32 usp10 version wininet winmm wldap32 ws2_32 wsock32 winspool.drv ntdll winhttp " # Excluo DLLs do sistema for i in $libs_to_exclude; do sed -i -e "/${i}/d" ${REQUIRES} done # Procuro pelas DLLs que faltam AGAIN=0 while read FILENAME do if [ ! -e "${TARGET}/${FILENAME}" ]; then COUNT=$(find "${BINDIR}" -iname ${FILENAME} | wc --lines) if [ "${COUNT}" == "0" ]; then echo ${FILENAME} if [ -e ${prefix}/bin/${FILENAME} ]; then echo "Copiando $(basename ${FILENAME})..." AGAIN=1 cp -v "${prefix}/bin/${FILENAME}" "${TARGET}/${FILENAME}" if [ "$?" != "0" ]; then exit -1 fi elif [ -e ${prefix}/lib/${FILENAME} ]; then echo "Copiando $(basename ${FILENAME})..." AGAIN=1 cp -v "${prefix}/lib/${FILENAME}" "${TARGET}/${FILENAME}" if [ "$?" != "0" ]; then exit -1 fi else echo "Can't find ${FILENAME}" exit -1 fi fi fi done < ${REQUIRES} rm -f ${SOURCES} rm -f ${REQUIRES} done } copy_locale() { rm -fr ${TARGET}/share/locale/pt_BR/LC_MESSAGES mkdir -p ${TARGET}/share/locale/pt_BR/LC_MESSAGES locales=" gettext-runtime.mo gettext-tools.mo glib20.mo gtk30.mo gtk30-properties.mo " for i in $locales; do if [ -e "${GTK_PREFIX}/share/locale/pt_BR/LC_MESSAGES/${i}" ]; then echo "${GTK_PREFIX}/share/locale/pt_BR/LC_MESSAGES/${i} ..." cp "${GTK_PREFIX}/share/locale/pt_BR/LC_MESSAGES/${i}" "${TARGET}/share/locale/pt_BR/LC_MESSAGES" if [ "$?" != "0" ]; then exit -1 fi fi done } copy_loaders() { mkdir -p "${TARGET}/${GDK_LOADERS}" cp -rv "${prefix}/${GDK_LOADERS}/loaders" "${TARGET}/${GDK_LOADERS}" if [ "$?" != "0" ]; then exit -1 fi } copy_schemes() { mkdir -p "${TARGET}/share/glib-2.0/schemas" cp -v \ ${SCHEMADIR}/windows/*.xml \ "${TARGET}/share/glib-2.0/schemas" if [ "$?" != "0" ]; then exit -1 fi cp -rv \ "${prefix}/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml" \ "${TARGET}/share/glib-2.0/schemas" if [ "$?" != "0" ]; then exit -1 fi cp -rv \ "${prefix}/share/glib-2.0/schemas/gschema.dtd" \ "${TARGET}/share/glib-2.0/schemas" if [ "$?" != "0" ]; then exit -1 fi glib-compile-schemas \ --targetdir="${TARGET}/share/glib-2.0/schemas" \ "${TARGET}/share/glib-2.0/schemas" if [ "$?" != "0" ]; then exit -1 fi } copy_theme() { mkdir -p "${TARGET}/etc" cp -rv "${prefix}/etc/gtk-3.0" "${TARGET}/etc" # https://stackoverflow.com/questions/37035936/how-to-get-native-windows-decorations-on-gtk3-on-windows-7-and-msys2 mkdir -p ${TARGET}/etc/gtk-3.0 rm -f ${TARGET}/etc/gtk-3.0/settings.ini rm -f ${TARGET}/etc/gtk-3.0/gtkrc mkdir -p ${TARGET}/share/icons if [ "$?" != 0 ]; then echo "Can´t create icons folder" exit -1 fi cp -rv /usr/share/icons/${1} ${TARGET}/share/icons if [ "$?" != 0 ]; then echo "Can´t copy ${1} icons" exit -1 fi mkdir -p ${TARGET}/share/themes if [ "$?" != 0 ]; then echo "Can´t create themes folder" exit -1 fi # cp -rv /usr/share/themes/${1} ${TARGET}/share/themes # if [ "$?" != 0 ]; then # echo "Can´t copy ${1} theme" # exit -1 # fi echo "${myDIR}/gtk.css" if [ -e "${myDIR}/gtk.css" ]; then cp "${myDIR}/gtk.css" "${TARGET}/share/themes/${1}/gtk-3.0/gtk.css" fi } # # Check command line parameters # until [ -z "$1" ] do if [ ${1:0:2} = '--' ]; then tmp=${1:2} parameter=${tmp%%=*} parameter=$(echo $parameter | tr "[:lower:]" "[:upper:]") value=${tmp##*=} case "$parameter" in OUTPUT-DIR) TARGET=$value ;; BINDIR) BINDIR=$value ;; HELP) echo "${0} [options]" echo "" echo "Options:" echo "" echo " --path Set runtime instalation path (default is $TARGET)" echo " --bindir Set binaries source path (default is $BINDIR)" echo "" exit 0 ;; esac fi shift done # # Make runtime # copy_dll copy_locale copy_loaders copy_schemes copy_theme "Adwaita" # Otimiza todos os pngs #echo "Optimizing..." #find ${TARGET} -iname *.png -exec optipng -o7 -quiet {} \; 2>&1 > /dev/null echo "Runtime ok"