# # "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) # #---[ Paths ]---------------------------------------------------------------------------- prefix=@prefix@ exec_prefix=@exec_prefix@ bindir=@bindir@ srcdir=@srcdir@ sbindir=@sbindir@ libdir=@libdir@ includedir=@includedir@ datarootdir=@datarootdir@ localedir=@localedir@ docdir=@docdir@ sysconfdir=@sysconfdir@ #---[ Library configuration ]------------------------------------------------------------ SONAME=@SONAME@ LIBNAME=libv3270 PACKAGE_NAME=@PACKAGE_NAME@ PRODUCT_NAME=@PRODUCT_NAME@ INSTALL_PACKAGES=@INSTALL_PACKAGES@ GETTEXT_PACKAGE=@GETTEXT_PACKAGE@ COMMON_SOURCES= \ $(wildcard $(srcdir)/src/terminal/*.c) \ $(wildcard $(srcdir)/src/terminal/properties/*.c) \ $(wildcard $(srcdir)/src/terminal/drawing/*.c) \ $(wildcard $(srcdir)/src/terminal/font/*.c) \ $(wildcard $(srcdir)/src/terminal/keyboard/*.c) \ $(wildcard $(srcdir)/src/terminal/actions/*.c) \ $(wildcard $(srcdir)/src/filetransfer/*.c) \ $(wildcard $(srcdir)/src/selection/*.c) \ $(wildcard $(srcdir)/src/trace/*.c) \ $(wildcard $(srcdir)/src/dialogs/*.c) \ $(wildcard $(srcdir)/src/dialogs/print/*.c) \ $(wildcard $(srcdir)/src/dialogs/save/*.c) \ $(wildcard $(srcdir)/src/dialogs/font/*.c) \ $(wildcard $(srcdir)/src/dialogs/settings/*.c) \ $(wildcard $(srcdir)/src/tools/*.c) SOURCES= \ $(COMMON_SOURCES) \ $(wildcard $(srcdir)/src/terminal/@OSNAME@/*.rc) \ $(wildcard $(srcdir)/src/terminal/@OSNAME@/*.c) \ $(wildcard $(srcdir)/src/selection/@OSNAME@/*.c) \ $(wildcard $(srcdir)/src/dialogs/@OSNAME@/*.c) \ TEST_SOURCES= \ $(wildcard $(srcdir)/src/testprogram/*.c) #---[ Tools ]---------------------------------------------------------------------------- CC=@CC@ HOST_CC=@HOST_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@ AR=@AR@ VALGRIND=@VALGRIND@ GENMARSHAL=@GENMARSHAL@ ZIP=@ZIP@ DLLTOOL=@DLLTOOL@ STRIP=@STRIP@ #---[ Build Paths ]---------------------------------------------------------------------- BUILDDIR=@BUILDDIR@ POTDIR=$(BUILDDIR)/.pot OBJDIR=$(BUILDDIR)/.obj/$(LIBNAME) OBJDBG=$(OBJDIR)/Debug OBJRLS=$(OBJDIR)/Release BINDIR=$(BUILDDIR)/.bin BINDBG=$(BINDIR)/Debug BINRLS=$(BINDIR)/Release #---[ Rules ]---------------------------------------------------------------------------- DEPENDS= \ src/include/config.h \ src/include/marshal/filetransfer.h \ src/include/marshal/terminal.h \ src/include/marshal/trace.h \ src/include/marshal/dialogs.h DATE_FMT = +%Y%m%d ifdef SOURCE_DATE_EPOCH BUILD_DATE ?= $(shell date -u -d "@$(SOURCE_DATE_EPOCH)" "$(DATE_FMT)" 2>/dev/null || date -u -r "$(SOURCE_DATE_EPOCH)" "$(DATE_FMT)" 2>/dev/null || date -u "$(DATE_FMT)") else BUILD_DATE ?= $(shell date "$(DATE_FMT)") endif CFLAGS= \ @CFLAGS@ \ -g \ -Isrc/include \ -I$(srcdir)/src/include \ -DBUILD_DATE=$(BUILD_DATE) \ -DLOCALEDIR=$(localedir) \ @LIB3270_CFLAGS@ \ @GTK_CFLAGS@ \ @GLIB_CFLAGS@ LIBS= \ @LIBS@ \ @GTK_LIBS@ \ @GLIB_LIBS@ \ @LIBICONV@ \ @INTL_LIBS@ \ @LIB3270_LIBS@ LDFLAGS= \ @LDFLAGS@ #---[ Debug Rules ]---------------------------------------------------------------------- $(OBJDBG)/%.o: \ %.c \ $(DEPENDS) @echo $< ... @$(MKDIR) $(@D) @$(CC) \ $(CFLAGS) \ -DDEBUG=1 \ -MM -MT $@ -MF $(patsubst %.o,%.d,$@) $< @$(CC) \ $(CFLAGS) \ -Wall -Wextra -fstack-check \ -DDEBUG=1 \ -o $@ -c $< $(OBJDBG)/%.o: \ %.rc @echo $< ... @$(MKDIR) $(@D) @$(WINDRES) $< -O coff -o $@ %.dll.a: \ %.def @$(DLLTOOL) \ --input-def $(BINRLS)/$(LIBNAME).def \ --dllname $(LIBNAME).dll \ --kill-at \ --output-lib $@ #---[ Release Rules ]-------------------------------------------------------------------- $(OBJRLS)/%.o: \ %.c \ $(DEPENDS) @echo $< ... @$(MKDIR) $(dir $@) @$(CC) \ $(CFLAGS) \ -DNDEBUG=1 \ -MM -MT $@ -MF $(patsubst %.o,%.d,$@) $< @$(CC) \ $(CFLAGS) \ -DNDEBUG=1 \ -o $@ -c $< $(OBJRLS)/%.o: \ %.rc @echo $< ... @$(MKDIR) $(@D) @$(WINDRES) $< -O coff -o $@ #---[ Misc Rules ]----------------------------------------------------------------------- $(POTDIR)/%.pot: \ %.c @echo $(notdir $@) ... @$(MKDIR) $(@D) @$(XGETTEXT) \ --language=C \ --keyword=_ \ --keyword=N_ \ --keyword=MSG_:2 \ --output=$@ \ $< @touch $@ $(POTDIR)/%.pot: \ %.rc @echo $< ... @$(MKDIR) $(dir $@) @touch $@ install-%: \ %/Makefile @$(MAKE) -C `dirname $<` DESTDIR=$(DESTDIR) install #---[ Main Target ]---------------------------------------------------------------------- all: \ $(BINRLS)/$(SONAME) \ $(BINRLS)/static/$(LIBNAME).a \ locale/$(GETTEXT_PACKAGE).pot #---[ Marshal Targets ]------------------------------------------------------------------ src/include/marshal/terminal.h: \ $(srcdir)/src/terminal/marshal @echo $@ ... @$(MKDIR) $(@D) @$(GENMARSHAL) --prefix=v3270 --header $< > $@ src/include/marshal/dialogs.h: \ $(srcdir)/src/dialogs/settings/marshal @echo $@ ... @$(MKDIR) $(@D) @$(GENMARSHAL) --prefix=v3270 --header $< > $@ $(OBJDIR)/marshal/v3270.c: \ $(srcdir)/src/terminal/marshal @echo $@ ... @$(MKDIR) $(@D) @$(GENMARSHAL) --prefix=v3270 --body $< > $@ src/include/marshal/filetransfer.h: \ $(srcdir)/src/filetransfer/marshal @echo $@ ... @$(MKDIR) $(@D) @$(GENMARSHAL) --prefix=v3270ft --header $< > $@ $(OBJDIR)/marshal/v3270ft.c: \ $(srcdir)/src/filetransfer/marshal @echo $@ ... @$(MKDIR) $(@D) @$(GENMARSHAL) --prefix=v3270ft --body $< > $@ src/include/marshal/trace.h: \ $(srcdir)/src/trace/marshal @echo $@ ... @$(MKDIR) $(@D) @$(GENMARSHAL) --prefix=v3270trace --header $< > $@ $(OBJDIR)/marshal/trace.c: \ $(srcdir)/src/trace/marshal @echo $@ ... @$(MKDIR) $(@D) @$(GENMARSHAL) --prefix=v3270trace --body $< > $@ $(OBJDIR)/marshal/%.o: \ $(OBJDIR)/marshal/%.c \ $(DEPENDS) @echo $< ... @$(MKDIR) $(@D) @$(CC) \ $(CFLAGS) \ -Wall -Wextra -fstack-check \ -DDEBUG=1 \ -o $@ -c $< #---[ Release Targets ]------------------------------------------------------------------ Release: \ $(BINRLS)/$(SONAME) \ $(BINRLS)/static/$(LIBNAME).a $(BINRLS)/$(SONAME): \ $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o) \ $(OBJDIR)/marshal/v3270.o \ $(OBJDIR)/marshal/v3270ft.o \ $(OBJDIR)/marshal/trace.o @$(MKDIR) $(@D) @echo $< ... @$(LD) \ @DLL_LDFLAGS@ \ -o $@ \ $(LDFLAGS) \ $^ \ -L$(BINRLS) \ $(LIBS) strip: \ $(BINRLS)/$(SONAME) @$(STRIP) --discard-all $(BINRLS)/$(SONAME) $(BINRLS)/static/$(LIBNAME).a: \ $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o) @echo $@ ... @$(MKDIR) $(@D) @$(AR) rcs $@ $^ #---[ Install Targets ]------------------------------------------------------------------ install: \ locale/$(GETTEXT_PACKAGE).pot \ $(foreach PKG, $(INSTALL_PACKAGES), install-$(PKG)) install-linux-lib: \ $(BINRLS)/$(SONAME) \ install-conf \ install-locale # Install library @$(MKDIR) $(DESTDIR)$(libdir) @$(INSTALL_PROGRAM) \ $(BINRLS)/$(SONAME) \ $(DESTDIR)$(libdir)/$(LIBNAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@ install-macos-lib: \ $(BINRLS)/$(SONAME) \ install-conf \ install-locale # Install library @$(MKDIR) $(DESTDIR)$(libdir) @$(INSTALL_PROGRAM) \ $(BINRLS)/$(SONAME) \ $(DESTDIR)$(libdir)/$(LIBNAME)@DLLEXT@ install-windows-lib: \ $(BINRLS)/$(SONAME) \ install-conf \ install-locale @$(MKDIR) \ $(DESTDIR)$(bindir) @$(INSTALL_PROGRAM) \ $(BINRLS)/$(SONAME) \ $(DESTDIR)$(bindir)/$(SONAME) zip: \ $(BINRLS)/$(SONAME) @$(ZIP) -9 -j $(BUILDDIR)/@PACKAGE_NAME@-@PACKAGE_VERSION@-@PACKAGE_RELEASE@-@host_cpu@.zip $(BINRLS)/$(SONAME) install-static: \ $(BINRLS)/static/$(LIBNAME).a # Install static library @$(MKDIR) \ $(DESTDIR)$(libdir) @$(INSTALL_DATA) \ $(BINRLS)/static/$(LIBNAME).a \ $(DESTDIR)$(libdir)/$(LIBNAME)-static.a install-conf: # Install remaps @$(MKDIR) \ $(DESTDIR)$(datarootdir)/$(PRODUCT_NAME)/remap @$(INSTALL_DATA) \ $(srcdir)/remap/*.xml \ $(DESTDIR)$(datarootdir)/$(PRODUCT_NAME)/remap # Install default configs @$(MKDIR) \ $(DESTDIR)$(datarootdir)/$(PRODUCT_NAME) @$(INSTALL_DATA) \ $(srcdir)/conf/colors.conf \ $(DESTDIR)$(datarootdir)/$(PRODUCT_NAME)/colors.conf install-dev: \ locale/$(GETTEXT_PACKAGE).pot \ install-@OSNAME@-dev @mkdir -p $(DESTDIR)$(includedir)/v3270 @$(INSTALL_DATA) \ $(srcdir)/src/include/v3270/*.h \ $(DESTDIR)$(includedir)/v3270 @$(INSTALL_DATA) \ $(srcdir)/src/include/v3270.h \ $(DESTDIR)$(includedir)/v3270.h # Install PKG-CONFIG files @mkdir -p $(DESTDIR)$(libdir)/pkgconfig @$(INSTALL_DATA) \ sdk/libv3270.pc \ $(DESTDIR)$(libdir)/pkgconfig/libv3270.pc # Install translation files @$(MKDIR) $(DESTDIR)$(datarootdir)/$(PRODUCT_NAME)/pot @$(INSTALL_DATA) locale/$(GETTEXT_PACKAGE).pot $(DESTDIR)$(datarootdir)/$(PRODUCT_NAME)/pot install-linux-dev: @$(MKDIR) \ $(DESTDIR)$(libdir) @$(LN_S) \ $(LIBNAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@ \ $(DESTDIR)$(libdir)/$(LIBNAME)@DLLEXT@ install-macos-dev: @$(MKDIR) \ $(DESTDIR)$(libdir) install-windows-dev: \ strip \ $(BINRLS)/$(LIBNAME).dll.a @$(MKDIR) \ $(DESTDIR)$(libdir) @$(INSTALL_DATA) \ $(BINRLS)/$(LIBNAME).dll.a \ $(DESTDIR)$(libdir) @$(MKDIR) \ $(DESTDIR)$(datarootdir)/$(PRODUCT_NAME)/def @$(INSTALL_DATA) \ $(BINRLS)/$(LIBNAME).def \ $(DESTDIR)$(datarootdir)/$(PRODUCT_NAME)/def @$(INSTALL_DATA) \ CHANGELOG \ $(DESTDIR)$(datarootdir)/$(PACKAGE_NAME).changes install-glade: @mkdir -p $(DESTDIR)$(datarootdir)/glade/catalogs @mkdir -p $(DESTDIR)$(datarootdir)/glade/pixmaps/hicolor/16x16/actions @mkdir -p $(DESTDIR)$(datarootdir)/glade/pixmaps/hicolor/22x22/actions @$(INSTALL_DATA) \ glade/v3270.xml \ $(DESTDIR)$(datarootdir)/glade/catalogs/v3270.xml @$(INSTALL_DATA) \ $(srcdir)/branding/icon-16x16.png \ $(DESTDIR)$(datarootdir)/glade/pixmaps/hicolor/16x16/actions/widget-v3270-terminal.png @$(INSTALL_DATA) \ $(srcdir)/branding/icon-22x22.png \ $(DESTDIR)$(datarootdir)/glade/pixmaps/hicolor/22x22/actions/widget-v3270-terminal.png #---[ Misc Targets ]--------------------------------------------------------------------- $(POTDIR)/$(GETTEXT_PACKAGE).pot: \ $(foreach SRC, $(basename $(COMMON_SOURCES)), $(POTDIR)/$(SRC).pot) \ $(foreach SRC, $(basename $(wildcard $(srcdir)/src/terminal/linux/*.c)), $(POTDIR)/$(SRC).pot) \ $(foreach SRC, $(basename $(wildcard $(srcdir)/src/selection/linux/*.c)), $(POTDIR)/$(SRC).pot) \ $(foreach SRC, $(basename $(wildcard $(srcdir)/src/dialogs/linux/*.c)), $(POTDIR)/$(SRC).pot) \ $(foreach SRC, $(basename $(wildcard $(srcdir)/src/terminal/windows/*.c)), $(POTDIR)/$(SRC).pot) \ $(foreach SRC, $(basename $(wildcard $(srcdir)/src/selection/windows/*.c)), $(POTDIR)/$(SRC).pot) \ $(foreach SRC, $(basename $(wildcard $(srcdir)/src/dialogs/windows/*.c)), $(POTDIR)/$(SRC).pot) \ $(foreach SRC, $(basename $(wildcard $(srcdir)/src/terminal/macos/*.c)), $(POTDIR)/$(SRC).pot) \ $(foreach SRC, $(basename $(wildcard $(srcdir)/src/selection/macos/*.c)), $(POTDIR)/$(SRC).pot) \ $(foreach SRC, $(basename $(wildcard $(srcdir)/src/dialogs/macos/*.c)), $(POTDIR)/$(SRC).pot) @rm -f $@ @$(MKDIR) $(@D) @$(MSGCAT) --sort-output $^ > $@ locale: \ locale/$(GETTEXT_PACKAGE).pot @$(MAKE) -C locale all locale/$(GETTEXT_PACKAGE).pot: \ $(POTDIR)/$(GETTEXT_PACKAGE).pot @rm -f $@ @$(MKDIR) $(@D) @$(MSGCAT) --sort-output $^ > $@ #---[ Debug Targets ]-------------------------------------------------------------------- Debug: \ $(BINDBG)/$(LIBNAME)@EXEEXT@ $(BINDBG)/$(LIBNAME)@EXEEXT@: \ $(foreach SRC, $(basename $(TEST_SOURCES)), $(OBJDBG)/$(SRC).o) \ $(BINDBG)/$(SONAME) @$(MKDIR) $(@D) @echo $< ... @$(LD) \ -o $@ \ $^ \ -L$(BINDBG) \ -Wl,-rpath,$(BINDBG) \ $(LDFLAGS) \ $(LIBS) run: \ $(BINDBG)/$(LIBNAME)@EXEEXT@ @G_DEBUG=fatal-warnings \ $(BINDBG)/$(LIBNAME)@EXEEXT@ mem-check: \ $(BINDBG)/$(LIBNAME)@EXEEXT@ ifeq ($(VALGRIND),no) @LD_LIBRARY_PATH=$(BINDBG) \ $(BINDBG)/$(LIBNAME)@EXEEXT@ else @touch valgrind.suppression @LD_LIBRARY_PATH=$(BINDBG) \ $(VALGRIND) --leak-check=full --track-origins=yes --gen-suppressions=all --suppressions=valgrind.suppression \ $(BINDBG)/$(LIBNAME)@EXEEXT@ endif $(BINDBG)/$(SONAME): \ $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC).o) \ $(OBJDIR)/marshal/v3270.o \ $(OBJDIR)/marshal/v3270ft.o \ $(OBJDIR)/marshal/trace.o @$(MKDIR) $(@D) @echo $< ... @$(LD) \ @DLL_LDFLAGS@ \ -o $@ \ -L$(BINDBG) \ $(LDFLAGS) \ $^ \ $(LIBS) #---[ Clean Targets ]-------------------------------------------------------------------- clean: \ cleanDebug \ cleanRelease @rm -fr $(BUILDDIR)/.tmp/$(LIBNAME) @rm -fr $(POTDIR)/$(LIBNAME) @rm -fr src/include/marshal @rm -fr locale/$(LIBNAME).pot cleanDebug: @rm -fr $(OBJDBG) @rm -fr $(BINDBG) @rm -fr $(OBJDIR)/marshal @rm -f src/terminal/marshal.h @rm -f src/filetransfer/marshal.h cleanRelease: @rm -fr $(OBJRLS) @rm -fr $(BINRLS) @rm -fr $(POTDIR) @rm -fr $(OBJDIR)/marshal @rm -f src/terminal/marshal.h @rm -f src/filetransfer/marshal.h @rm -f $(GETTEXT_PACKAGE).pot clean: \ cleanDebug \ cleanRelease -include $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC).d) -include $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).d)