Makefile.in 7.84 KB
#
# "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> <Banco do Brasil S.A.>
#
# 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)
#

#---[ Configuration ]--------------------------------------------------------------------

PACKAGE_NAME=@PACKAGE_NAME@
PRODUCT_NAME=@PRODUCT_NAME@

SOURCES= \
	$(wildcard src/objects/actions/*.c) \
	$(wildcard src/objects/application/*.c) \
	$(wildcard src/objects/application/actions/*.c) \
	$(wildcard src/objects/window/*.c) \
	$(wildcard src/objects/window/actions/*.c) \
	$(wildcard src/objects/terminal/*.c) \
	$(wildcard src/objects/toolbar/*.c) \
	$(wildcard src/objects/settings/*.c) \
	$(wildcard src/objects/@OSNAME@/*.c) \
	$(wildcard src/main/*.c) \
	$(wildcard src/main/@OSNAME@/*.c) \
	$(wildcard src/main/@OSNAME@/*.rc) \
	$(wildcard src/objects/keypad/*.c)

SCHEMAS= \
	$(wildcard schemas/@OSNAME@/*.gschema.xml) \
	$(wildcard schemas/common/*.gschema.xml)

#---[ 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@
AR=@AR@
VALGRIND=@VALGRIND@
CONVERT=@CONVERT@

#---[ 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/$(PACKAGE_NAME)
OBJDBG=$(OBJDIR)/Debug
OBJRLS=$(OBJDIR)/Release

BINDIR=$(BASEDIR)/.bin
BINDBG=$(BINDIR)/Debug
BINRLS=$(BINDIR)/Release

#---[ Rules ]----------------------------------------------------------------------------

DEPENDS= \
	Makefile \
	src/include/*.h \
	src/include/pw3270/*.h \
	src/objects/toolbar/private.h \
	src/objects/window/private.h \
	src/objects/actions/private.h \
	src/main/private.h

CFLAGS= \
	@CFLAGS@ \
	-g \
	-Isrc/include \
	-DBUILD_DATE=`date +%Y%m%d` \
	@LIBV3270_CFLAGS@ \
	@GTK_CFLAGS@

LIBS= \
	@LIBS@ \
	@GTK_LIBS@ \
	@LIBV3270_LIBS@

LDFLAGS= \
	@LDFLAGS@

#---[ Debug Rules ]----------------------------------------------------------------------

$(OBJDBG)/%.o: \
	%.c \
	$(DEPENDS)

	@echo $< ...
	@$(MKDIR) $(@D)

	@$(CC) \
		$(CFLAGS) \
		-Wall -Wextra -fstack-check \
		-DDEBUG=1 \
		-o $@ -c $<

$(OBJDBG)/%.o: \
	%.rc \
	$(PRODUCT_NAME).ico

	@echo $< ...
	@$(MKDIR) $(@D)
	@$(WINDRES) $< -O coff -o $@

gschemas.compiled: \
	$(foreach SCHEMA, $(notdir $(SCHEMAS)), $(OBJDIR)/schemas/$(SCHEMA))

	@glib-compile-schemas \
		--targetdir=$(@D) \
		$(OBJDIR)/schemas

#---[ Release Rules ]--------------------------------------------------------------------

$(OBJRLS)/%.o: \
	%.c \
	$(DEPENDS)

	@echo $< ...
	@$(MKDIR) $(dir $@)
	@$(CC) \
		$(CFLAGS) \
		-DNDEBUG=1 \
		-o $@ -c $<

$(OBJRLS)/%.o: \
	%.rc \
	$(PRODUCT_NAME).ico

	@echo $< ...
	@$(MKDIR) $(@D)
	@$(WINDRES) $< -O coff -o $@

#---[ Misc Rules ]-----------------------------------------------------------------------

$(POTDIR)/$(PACKAGE_NAME)/%.pot: \
	%.c

	@echo $(notdir $@) ...
	@$(MKDIR) $(@D)
	@$(XGETTEXT) \
		--language=C \
		--keyword=_ \
		--keyword=N_ \
		--keyword=MSG_:2 \
		--keyword=NC_:1c,2 \
		--output=$@ \
		$<
	@touch $@

$(POTDIR)/$(PACKAGE_NAME)/%.pot: \
	%.xml

	@echo $(notdir $@) ...
	@$(MKDIR) $(@D)
	@$(XGETTEXT) \
		--language=glade \
		--output=$@ \
		$<
	@touch $@

$(POTDIR)/$(PACKAGE_NAME)/%.pot: \
	%.rc

	@echo $< ...
	@$(MKDIR) $(@D)
	@touch $@


$(OBJDIR)/schemas/%.xml:\
	schemas/@OSNAME@/%.xml

	@$(MKDIR) $(@D)
	@cp "$^" "$@"

$(OBJDIR)/schemas/%.xml:\
	schemas/common/%.xml

	@$(MKDIR) $(@D)
	@cp "$^" "$@"

install-%: \
	%/Makefile

	@$(MAKE) -C `dirname $<` DESTDIR=$(DESTDIR) install

%.ico: \
	branding/%.svg

	@echo $@ ...
	@$(MKDIR) $(@D)
	@$(CONVERT) \
		-density 384 \
		-background transparent \
		$< \
		-define icon:auto-resize \
		-colors 256 \
		$@


#---[ Release Targets ]------------------------------------------------------------------

all: \
	$(BINRLS)/$(PACKAGE_NAME)@EXEEXT@ \
	locale

locale: \
	locale/$(PACKAGE_NAME).pot

	@$(MAKE) -C locale all

Release: \
	$(BINRLS)/$(PACKAGE_NAME)@EXEEXT@

$(BINRLS)/$(PACKAGE_NAME)@EXEEXT@: \
	$(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o)

	@$(MKDIR) $(@D)
	@echo $< ...
	@$(LD) \
		-o $@ \
		$(LDFLAGS) @RLS_LDFLAGS@ \
		$^ \
		$(LIBS)


#---[ Install Targets ]------------------------------------------------------------------

install: \
	install-application \
	install-keypads

install-application: \
	$(BINRLS)/$(PACKAGE_NAME)@EXEEXT@ \
	install-locale \
	install-schemas \
	install-branding

	@$(MKDIR) \
		$(DESTDIR)/$(bindir)

	@$(INSTALL_PROGRAM) \
		$(BINRLS)/$(PACKAGE_NAME)@EXEEXT@ \
		$(DESTDIR)/$(bindir)/$(PRODUCT_NAME)@EXEEXT@


	@$(MKDIR) \
		$(DESTDIR)/$(libdir)/$(PRODUCT_NAME)-plugins

	@$(MKDIR) \
		$(DESTDIR)/$(datarootdir)/$(PRODUCT_NAME)/ui

	@$(INSTALL_DATA) \
		ui/*.xml \
		$(DESTDIR)/$(datarootdir)/$(PRODUCT_NAME)/ui

	@$(MKDIR) \
		$(DESTDIR)/$(datarootdir)/$(PRODUCT_NAME)/keypad

install-keypads:

	@$(MKDIR) \
		$(DESTDIR)/$(datarootdir)/$(PRODUCT_NAME)/keypad

	@$(INSTALL_DATA) \
		keypad/*.xml \
		$(DESTDIR)/$(datarootdir)/$(PRODUCT_NAME)/keypad

#---[ Misc Targets ]---------------------------------------------------------------------

locale/$(PACKAGE_NAME).pot: \
	$(foreach SRC, $(basename $(SOURCES)), $(POTDIR)/$(PACKAGE_NAME)/$(SRC).pot) \
	$(foreach SRC, $(basename $(wildcard ui/*.xml)), $(POTDIR)/$(PACKAGE_NAME)/$(SRC).pot) \
	$(foreach SRC, $(basename $(wildcard keypad/*.xml)), $(POTDIR)/$(PACKAGE_NAME)/$(SRC).pot) 

	@rm -f $@
	@$(MKDIR) $(@D)
	@$(MSGCAT) --sort-output $^ > $@

#---[ Debug Targets ]--------------------------------------------------------------------

Debug: \
	$(BINDBG)/$(PACKAGE_NAME)@EXEEXT@

$(BINDBG)/$(PACKAGE_NAME)@EXEEXT@: \
	$(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC).o)

	@$(MKDIR) $(@D)
	@echo $< ...
	@$(LD) \
		-o $@ \
		$^ \
		$(LDFLAGS) \
		$(LIBS)
 
run: \
	$(BINDBG)/$(PACKAGE_NAME)@EXEEXT@ \
	gschemas.compiled

	@G_DEBUG=fatal-warnings \
		$(BINDBG)/$(PACKAGE_NAME)@EXEEXT@

mem-check: \
	$(BINDBG)/$(PACKAGE_NAME)@EXEEXT@

ifeq ($(VALGRIND),no)

	@LD_LIBRARY_PATH=$(BINDBG) \
		$(BINDBG)/$(PACKAGE_NAME)@EXEEXT@

else
	@touch valgrind.suppression

	@LD_LIBRARY_PATH=$(BINDBG) \
		$(VALGRIND) --leak-check=full --track-origins=yes --gen-suppressions=all --suppressions=valgrind.suppression \
			$(BINDBG)/$(PACKAGE_NAME)@EXEEXT@
endif



#---[ Clean Targets ]--------------------------------------------------------------------

clean: \
	cleanDebug \
	cleanRelease

	@rm -fr $(BASEDIR)/.tmp/$(PACKAGE_NAME)
	@rm -fr $(POTDIR)/$(PACKAGE_NAME)
	@rm -fr src/include/marshal
	@rm -f $(PRODUCT_NAME).ico

cleanDebug:

	@rm -fr $(OBJDBG)
	@rm -fr $(OBJDIR)/schemas
	@rm -fr $(BINDBG)
	@rm -f gschemas.compiled

cleanRelease:

	@rm -fr $(OBJRLS)
	@rm -fr $(OBJDIR)/schemas
	@rm -fr $(BINRLS)
	@rm -fr $(POTDIR)

clean: \
	cleanDebug \
	cleanRelease