diff --git a/.gitignore b/.gitignore index 4d0f783..6947ade 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,12 @@ *.bak *.depend *.layout - +*.m4 +*.cache +*.log +*.status +configure +scripts +config.h +stamp-h1 +Makefile diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..61996f7 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,294 @@ +# +# "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) +# + +#---[ Library configuration ]------------------------------------------------------------ + +MODULE_NAME=ipc3270 + +SOURCES= \ + $(wildcard src/plugin/*.c) \ + $(wildcard src/@OSNAME@/*.c) \ + $(wildcard src/@OSNAME@/*.rc) + +TEST_SOURCES= \ + $(wildcard src/testprogram/*.c) + +#---[ Tools ]---------------------------------------------------------------------------- + +CC=@CC@ +LD=@CC@ +LN_S=@LN_S@ +MKDIR=@MKDIR_P@ +INSTALL=@INSTALL@ +INSTALL_DATA=@INSTALL_DATA@ +INSTALL_PROGRAM=@INSTALL_PROGRAM@ +XGETTEXT=@XGETTEXT@ +MSGCAT=@MSGCAT@ +WINDRES=@WINDRES@ + +#---[ Paths ]---------------------------------------------------------------------------- + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +bindir=@bindir@ +sbindir=@sbindir@ +libdir=@libdir@ +includedir=@includedir@ +datarootdir=@datarootdir@ +localedir=@localedir@ +docdir=@docdir@ +sysconfdir=@sysconfdir@ + +BASEDIR=@BASEDIR@ + +POTDIR=$(BASEDIR)/.pot + +OBJDIR=$(BASEDIR)/.obj/$(MODULE_NAME) +OBJDBG=$(OBJDIR)/Debug +OBJRLS=$(OBJDIR)/Release + +BINDIR=$(BASEDIR)/.bin +BINDBG=$(BINDIR)/Debug +BINRLS=$(BINDIR)/Release + +#---[ Rules ]---------------------------------------------------------------------------- + +DEPENDS= \ + Makefile \ + src/include/*.h \ + src/include/lib3270/*.h \ + src/linux/*.h + +CFLAGS= \ + @CFLAGS@ \ + -g \ + -Isrc/include \ + -DBUILD_DATE=`date +%Y%m%d` \ + @LIB3270_CFLAGS@ \ + @V3270_CFLAGS@ \ + @GTK_CFLAGS@ \ + @GLIB_CFLAGS@ + +LIBS= \ + @LIBS@ \ + @GTK_LIBS@ \ + @GLIB_LIBS@ \ + @LIBICONV@ \ + @INTL_LIBS@ \ + @LIB3270_LIBS@ \ + @V3270_LIBS@ + +#---[ Debug Rules ]---------------------------------------------------------------------- + +$(OBJDBG)/%.o: \ + %.c \ + $(DEPENDS) + + @echo $< ... + @$(MKDIR) `dirname $@` + + @$(CC) \ + $(CFLAGS) \ + -Wall -Wextra -fstack-check \ + -DDEBUG=1 \ + -o $@ -c $< + +$(OBJDBG)/%.o: \ + %.rc + + @echo $< ... + @$(MKDIR) `dirname $@` + @$(WINDRES) $< -O coff -o $@ + +#---[ Release Rules ]-------------------------------------------------------------------- + +$(OBJRLS)/%.o: \ + %.c \ + $(DEPENDS) + + @echo $< ... + @$(MKDIR) `dirname $@` + @$(CC) \ + $(CFLAGS) \ + -DNDEBUG=1 \ + -o $@ -c $< + +$(OBJRLS)/%.o: \ + %.rc + + @echo $< ... + @$(MKDIR) `dirname $@` + @$(WINDRES) $< -O coff -o $@ + +#---[ Misc Rules ]----------------------------------------------------------------------- + +$(POTDIR)/$(MODULE_NAME)/%.pot: \ + %.c + + @echo $(notdir $@) ... + @$(MKDIR) `dirname $@` + @$(XGETTEXT) \ + --language=C \ + --keyword=_ \ + --keyword=N_ \ + --keyword=MSG_:2 \ + --output=$@ \ + $< + @touch $@ + +$(POTDIR)/$(MODULE_NAME)/%.pot: \ + %.rc + + @echo $< ... + @$(MKDIR) `dirname $@` + @touch $@ + + +#---[ Release Targets ]------------------------------------------------------------------ + +all: \ + $(BINRLS)/$(MODULE_NAME)@DLLEXT@ \ + $(POTDIR)/$(MODULE_NAME).pot + +Release: \ + $(BINRLS)/$(MODULE_NAME)@DLLEXT@ + +$(BINRLS)/$(MODULE_NAME)@DLLEXT@: \ + $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o) + + @$(MKDIR) `dirname $@` + @echo $< ... + @$(LD) \ + -shared -Wl,-soname,$(@F) \ + -o $@ \ + $(LDFLAGS) \ + $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o) \ + -L$(BINRLS) \ + $(LIBS) + +#---[ Install Targets ]------------------------------------------------------------------ + + +#---[ Misc Targets ]--------------------------------------------------------------------- + +$(POTDIR)/$(MODULE_NAME).pot: \ + $(foreach SRC, $(basename $(SOURCES)), $(POTDIR)/$(MODULE_NAME)/$(SRC).pot) + + @rm -f $@ + @mkdir -p `dirname $@` + @$(MSGCAT) --sort-output $^ > $@ + +locale: \ + $(POTDIR)/$(MODULE_NAME).pot + + +#---[ Debug Targets ]-------------------------------------------------------------------- + +Debug: \ + $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@ \ + $(BINDBG)/$(MODULE_NAME)@EXEEXT@ + +$(BINDBG)/$(MODULE_NAME)@EXEEXT@: \ + $(foreach SRC, $(basename $(TEST_SOURCES)), $(OBJDBG)/$(SRC).o) \ + $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@ + + @$(MKDIR) `dirname $@` + @echo $< ... + @$(LD) \ + -o $@ \ + $^ \ + -L$(BINDBG) \ + -Wl,-rpath,$(BINDBG) \ + $(LDFLAGS) \ + $(LIBS) \ + -l$(MODULE_NAME) + +run: \ + $(BINDBG)/$(MODULE_NAME)@EXEEXT@ + + @LD_LIBRARY_PATH=$(BINDBG) \ + $(BINDBG)/$(MODULE_NAME)@EXEEXT@ + +$(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@: \ + $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@ + + @echo $< ... + @rm -f $@ + @$(LN_S) \ + @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@ \ + $@ + +$(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@: \ + $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@ + + @rm -f $@ + @$(LN_S) \ + @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@ \ + $@ + +$(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@: \ + $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC).o) + + @$(MKDIR) `dirname $@` + @echo $< ... + @$(LD) \ + -shared -Wl,-soname,$(@F) \ + -o $@ \ + -L$(BINDBG) \ + $(LDFLAGS) \ + $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC).o) \ + $(LIBS) + +#---[ Clean Targets ]-------------------------------------------------------------------- + +clean: \ + cleanDebug \ + cleanRelease + + @rm -fr $(BASEDIR)/.tmp/$(MODULE_NAME) + @rm -fr $(POTDIR)/$(MODULE_NAME) + @rm -fr src/include/marshal + +cleanDebug: + + @rm -fr $(OBJDBG) + @rm -fr $(BINDBG) + @rm -fr $(OBJDIR)/marshal + @rm -f src/v3270/marshal.h + @rm -f src/v3270ft/marshal.h + +cleanRelease: + + @rm -fr $(OBJRLS) + @rm -fr $(BINRLS) + @rm -fr $(POTDIR) + @rm -f $(MODULE_NAME).pot + +clean: \ + cleanDebug \ + cleanRelease + + diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..dc2863e --- /dev/null +++ b/autogen.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +test -n "$srcdir" || srcdir=`dirname "$0"` +test -n "$srcdir" || srcdir=. + +olddir=`pwd` +cd "$srcdir" + +aclocal +if test $? != 0 ; then + echo "aclocal failed." + exit -1 +fi + +autoconf +if test $? != 0 ; then + echo "autoconf failed." + exit -1 +fi + +mkdir -p scripts +automake --add-missing 2> /dev/null | true + +cd "$olddir" +test -n "$NOCONFIGURE" || "$srcdir/configure" "$@" + + + + diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..3a9e597 --- /dev/null +++ b/configure.ac @@ -0,0 +1,258 @@ +dnl +dnl Software pw3270, desenvolvido com base nos códigos fontes do C3270 e X3270 +dnl (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a +dnl aplicativos mainframe. Registro no INPI sob o nome G3270. +dnl +dnl Copyright (C) <2008> +dnl +dnl Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob +dnl os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela +dnl Free Software Foundation. +dnl +dnl Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER +dnl GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO +dnl A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para +dnl obter mais detalhes. +dnl +dnl Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este +dnl programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple +dnl Place, Suite 330, Boston, MA, 02111-1307, USA +dnl +dnl Contatos: +dnl +dnl perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) +dnl erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça) +dnl + +dnl Process this file with autoconf to produce a configure script. + +dnl The minimum version of autoconf required. +AC_PREREQ(2.61) + +dnl Initialise automake with the package name, version and +dnl bug-reporting address. +AC_INIT([pw3270], [5.2], [perry.werneck@gmail.com]) + +dnl Place auxilliary scripts here. +AC_CONFIG_AUX_DIR([scripts]) + +dnl Compute the canonical host-system type +AC_CANONICAL_HOST + +dnl Put macro definitions here (though they aren't used). +AC_CONFIG_HEADER([src/include/config.h]) + +dnl Initialise automake stuff. +AM_INIT_AUTOMAKE + +dnl Check for iconv +AM_ICONV + +dnl Checks for programs. +AC_PROG_CC +AC_PROG_SED +AC_PROG_LN_S + +AC_LANG([C]) + +dnl --------------------------------------------------------------------------- +dnl Initialize defaults +dnl --------------------------------------------------------------------------- + +DBG_CFLAGS="-g -fstack-check -DDEBUG=1" +RLS_CFLAGS="-DNDEBUG=1" +PLUGINS="" +APP_RESOURCES="" +APP_LDFLAGS="" +DLL_LDFLAGS="-shared" +STATIC_LDFLAGS="" + +dnl --------------------------------------------------------------------------- +dnl Check for OS specifics +dnl --------------------------------------------------------------------------- + +DLLPREFIX="lib" + +case "$host" in + *-mingw32) + app_cv_osname="windows" + CFLAGS="$CFLAGS -pthread -D_WIN32_WINNT=0x0600" + LIBS="$LIBS -lws2_32 -lwtsapi32 -lcomdlg32" + LDFLAGS="$LDFLAGS -pthread -static-libgcc -static-libstdc++" + DLLEXT=".dll" + DLLPREFIX="" + + app_win32_revision=$(date +%y.%m.%d.%H) + AC_SUBST(WIN32_VERSION,$app_win32_revision) + AC_CONFIG_FILES(src/windows/resources.rc) + ;; + + s390x-*) + CFLAGS="$CFLAGS -pthread" + LDFLAGS="$LDFLAGS -pthread" + app_cv_datadir="/usr/share" + app_cv_confdir="/etc" + app_cv_osname="linux" + LOGDIR="/var/log" + ;; + + *) + CFLAGS="$CFLAGS -pthread" + LDFLAGS="$LDFLAGS -pthread" + app_cv_datadir="/usr/share" + app_cv_confdir="/etc" + app_cv_osname="linux" + LOGDIR="/var/log" + DLLEXT=".so" + +esac + +AC_SUBST(DATADIR,$app_cv_datadir) +AC_SUBST(CONFDIR,$app_cv_confdir) +AC_SUBST(OSNAME,$app_cv_osname) +AC_SUBST(LIBS) +AC_SUBST(LOGDIR) +AC_SUBST(DLLEXT) +AC_SUBST(DLLPREFIX) + +dnl --------------------------------------------------------------------------- +dnl Check for other programs +dnl --------------------------------------------------------------------------- + +AC_PATH_TOOL([AR], [ar], [ar]) +AC_PATH_TOOL([WINDRES], [windres], [no]) + +PKG_CHECK_EXISTS + +dnl --------------------------------------------------------------------------- +dnl Version info +dnl --------------------------------------------------------------------------- + +AC_SUBST(PACKAGE_DESCRIPTION,"PW3270 IPC Module") + +app_vrs_major=$(echo $VERSION | cut -d. -f1) +app_vrs_minor=$(echo $VERSION | cut -d. -f2) + +AC_DEFINE_UNQUOTED(PACKAGE_MAJOR_VERSION, $app_vrs_major) +AC_DEFINE_UNQUOTED(PACKAGE_MINOR_VERSION, $app_vrs_minor) + +AC_SUBST(PACKAGE_MAJOR_VERSION,$app_vrs_major) +AC_SUBST(PACKAGE_MINOR_VERSION,$app_vrs_minor) + +AC_ARG_WITH([release], [AS_HELP_STRING([--with-release], [Set release])], [ app_cv_release="$withval" ],[ app_cv_release="`date +%y`.`date +%m`.`date +%d`" ]) + +app_rls_major=$(echo $app_cv_release.0.0 | cut -d. -f1) +app_rls_minor=$(echo $app_cv_release.0.0 | cut -d. -f2) + +AC_DEFINE_UNQUOTED(PACKAGE_RELEASE, $app_cv_release) +AC_DEFINE_UNQUOTED(PACKAGE_MAJOR_RELEASE, $app_rls_major) +AC_DEFINE_UNQUOTED(PACKAGE_MINOR_RELEASE, $app_rls_minor) + +AC_SUBST(PACKAGE_RELEASE,$app_cv_release) +AC_SUBST(PACKAGE_MAJOR_RELEASE,$app_rls_major) +AC_SUBST(PACKAGE_MINOR_RELEASE,$app_rls_minor) + +dnl --------------------------------------------------------------------------- +dnl Check for libintl +dnl --------------------------------------------------------------------------- + +INTL_LIBS="" + +AC_PATH_TOOL([XGETTEXT], [xgettext], [no]) +AC_PATH_TOOL([MSGCAT], [msgcat], [no]) +AC_PATH_TOOL([MSGINIT], [msginit], [no]) +AC_PATH_TOOL([MSGMERGE], [msgmerge], [no]) +AC_PATH_TOOL([MSGFMT], [msgfmt], [no]) + +AC_SUBST(INTL_LIBS) + +dnl --------------------------------------------------------------------------- +dnl Check for LIB3270 +dnl --------------------------------------------------------------------------- + +PKG_CHECK_MODULES( [LIB3270], [lib3270], AC_DEFINE(HAVE_LIB3270), AC_MSG_ERROR([LIB3270 not present.])) + +AC_SUBST(LIB3270_LIBS) +AC_SUBST(LIB3270_CFLAGS) + +dnl --------------------------------------------------------------------------- +dnl Check for LIBV3270 +dnl --------------------------------------------------------------------------- + +PKG_CHECK_MODULES( [V3270], [v3270], AC_DEFINE(HAVE_V3270), AC_MSG_ERROR([V3270 not present.])) + +AC_SUBST(V3270_LIBS) +AC_SUBST(V3270_CFLAGS) + +dnl --------------------------------------------------------------------------- +dnl Check for GTK +dnl --------------------------------------------------------------------------- + +PKG_CHECK_MODULES( [GTK], [gtk+-3.0 gmodule-2.0], AC_DEFINE(HAVE_GTK), AC_MSG_ERROR([GTK not present.])) + +AC_SUBST(GTK_LIBS) +AC_SUBST(GTK_CFLAGS) + +dnl --------------------------------------------------------------------------- +dnl Check for GLIB +dnl --------------------------------------------------------------------------- + +PKG_CHECK_MODULES( [GLIB], [glib-2.0], AC_DEFINE(HAVE_GLIB), AC_MSG_ERROR([GLIB not present.] )) +AC_SUBST(GLIB_LIBS) +AC_SUBST(GLIB_CFLAGS) + +dnl --------------------------------------------------------------------------- +dnl Check for D-Bus +dnl --------------------------------------------------------------------------- + +PKG_CHECK_MODULES( [DBUS], [dbus-1], app_cv_libdbus=yes, AC_MSG_NOTICE([ No DBUS support.]) ) +AC_SUBST(DBUS_LIBS) +AC_SUBST(DBUS_CFLAGS) + +PKG_CHECK_MODULES( [GDBUS], [dbus-glib-1], app_cv_dbus=yes, AC_MSG_NOTICE([No GDBUS support.]) ) +AC_SUBST(GDBUS_LIBS) +AC_SUBST(GDBUS_CFLAGS) + +dnl --------------------------------------------------------------------------- +dnl Check for pic +dnl --------------------------------------------------------------------------- +AC_ARG_ENABLE([pic], + [AS_HELP_STRING([--disable-pic], [disable support for PIC libraries (required to compile on 64bits)])], +[ + app_cv_pic="$enableval" +],[ + + case "$host_cpu" in + x86_64) + app_cv_pic="yes" + ;; + + aarch64) + app_cv_pic="yes" + ;; + + *) + app_cv_pic="no" + esac + +]) + +if test "$app_cv_pic" == "yes"; then + CFLAGS="$CFLAGS -fPIC" + CXXFLAGS="$CXXFLAGS -fPIC" +fi + +dnl --------------------------------------------------------------------------- +dnl Configure which files to generate. +dnl --------------------------------------------------------------------------- + +AC_CONFIG_FILES(Makefile) + +dnl --------------------------------------------------------------------------- +dnl Output the generated config.status script. +dnl --------------------------------------------------------------------------- +AC_SUBST(BASEDIR,$ac_pwd) + +AC_OUTPUT + + diff --git a/pw3270-plugin-ipc.cbp b/pw3270-plugin-ipc.cbp index 6a309ee..70589e0 100644 --- a/pw3270-plugin-ipc.cbp +++ b/pw3270-plugin-ipc.cbp @@ -3,6 +3,7 @@