Makefile.in 9.19 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)
#

PACKAGE_NAME=@PACKAGE_NAME@
SOURCES=main.cc info.cc connect.cc getset.cc cursor.cc keyboard.cc actions.cc field.cc dialog.cc clipboard.cc
PLUGIN_SRC=plugin.cc startstop.cc call.cc

#---[ Paths ]------------------------------------------------------------------

prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
sbindir=@sbindir@
libdir=@libdir@
datadir=@datadir@
includedir=@includedir@
sysconfdir=@sysconfdir@
jnidir=@jnidir@
jvmjardir=@jvmjardir@
javadocdir=@javadocdir@

#---[ Tools ]------------------------------------------------------------------

CXX=@CXX@
MKDIR=@MKDIR_P@
INSTALL=@INSTALL@
INSTALL_DATA=@INSTALL_DATA@
INSTALL_PROGRAM=@INSTALL_PROGRAM@
JAVAC=@JAVAC@
JAVAH=@JAVAH@
JAR=@JAR@
JAVADOC=@JAVADOC@
JDK_HOME=@JDK_HOME@
JRE_HOME=@JRE_HOME@
JVMDIR=@JVMDIR@

#---[ Paths ]------------------------------------------------------------------

ROOTDIR ?= .
OBJDIR  ?= $(ROOTDIR)/.obj
BINDIR  ?= $(ROOTDIR)/.bin

BINDBG  ?= $(BINDIR)/Debug
BINRLS  ?= $(BINDIR)/Release

OBJDBG	?= $(OBJDIR)/Debug
OBJRLS	?= $(OBJDIR)/Release

#---[ lib3270 common class ]---------------------------------------------------

DEBUG_CFLAGS=-DDEBUG=1 -g -Wall
PW3270_CFLAGS=-I../include
CLASSLIBDIR=../classlib
include $(CLASSLIBDIR)/class.mak

#---[ Build options ]----------------------------------------------------------

CXXFLAGS=@CFLAGS@ @CXXFLAGS@ @DLL_CFLAGS@ @JNI_CPPFLAGS@ -I../include

# PW3270_LIBS		?= -L../../.bin/Debug@DLLDIR@ -l3270 -lpw3270
PW3270_CFLAGS	?= -I../include

PLUGIN_CFLAGS=@CXXFLAGS@ -DPW3270_PLUGIN -Wno-deprecated-declarations @DLL_CFLAGS@ @JNI_CPPFLAGS@ -DJNIDIR="\"$(jnidir)\"" \
				-DJARDIR="\"$(jvmjardir)\"" @GTK_CFLAGS@ @GTKMAC_CFLAGS@ $(PW3270_CFLAGS)

PLUGIN_LIBS=@GTK_LIBS@ @GTKMAC_LIBS@ @INTL_LIBS@ @JVM_LIBS@

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

$(OBJDBG)/%.o: %.cc Makefile private.h jni3270.h
	@echo "  CC   `basename $@`"
	@mkdir -p `dirname $@`
	@$(CXX) -DDEBUG=1 $(CXXFLAGS) -o $@ -c $<

$(OBJDBG)/j3270/%.o: %.cc Makefile private.h
	@echo "  CC   `basename $@`"
	@mkdir -p `dirname $@`
	@$(CXX) -DDEBUG=1 $(PLUGIN_CFLAGS) -o $@ -c $<

$(OBJRLS)/%.o: %.cc Makefile private.h jni3270.h
	@echo "  CC   `basename $@`"
	@mkdir -p `dirname $@`
	@$(CXX) -DNDEBUG=1 $(CXXFLAGS) -o $@ -c $<

$(OBJRLS)/j3270/%.o: %.cc Makefile private.h
	@echo "  CC   `basename $@`"
	@mkdir -p `dirname $@`
	@$(CXX) -DNDEBUG=1 $(PLUGIN_CFLAGS) -o $@ -c $<

$(BINDIR)/java/%.class: %.java $(BINDIR)/java/$(PACKAGE_NAME)/terminal.class
	@echo $< ...
	@mkdir -p `dirname $@`
	@$(JAVAC) -encoding utf-8 -cp $(BINDIR)/java -d $(BINDIR)/java $<

$(BINDIR)/java/%.class: sample/%.java $(BINDIR)/java/$(PACKAGE_NAME)/terminal.class
	@echo $< ...
	@mkdir -p `dirname $@`
	@$(JAVAC) -encoding utf-8 -cp $(BINDIR)/java -d $(BINDIR)/java $<

$(BINDIR)/%.class: sample/%.java $(BINDIR)/java/$(PACKAGE_NAME)/terminal.class
	@echo $< ...
	@mkdir -p `dirname $@`
	@$(JAVAC) -encoding utf-8 -cp $(BINDIR)/java -d $(BINDIR)/java $<

%.class: sample/%.java $(BINDIR)/java/$(PACKAGE_NAME)/terminal.class
	@echo $< ...
	@mkdir -p `dirname $@`
	@$(JAVAC) -encoding utf-8 -cp $(BINDIR)/java -d `dirname $@` $<

$(BINDIR)/java/$(PACKAGE_NAME)/%.class: %.java
	@echo $< ...
	@mkdir -p `dirname $@`
	@$(JAVAC) -encoding utf-8 -d $(BINDIR)/java $^

$(BINRLS)/$(PACKAGE_NAME).jar: $(BINDIR)/java/$(PACKAGE_NAME)/terminal.class
	@echo $@ ...
	@mkdir -p `dirname $@`
	@$(JAR) -cvf "$@" -C "$(BINDIR)/java" "$(PACKAGE_NAME)"

#---[ Release targets ]--------------------------------------------------------

all: \
	@PACKAGE_NAME@-java-@PACKAGE_VERSION@.@PACKAGE_REVISION@.@jvm_arch@.zip

Release: \
	$(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ \
	$(BINDIR)/java/testprogram.class \
	$(BINRLS)/plugins/j3270@DLLEXT@

zip: \
	jni3270-@PACKAGE_VERSION@.@PACKAGE_REVISION@.@jvm_arch@.zip

@PACKAGE_NAME@-java-@PACKAGE_VERSION@.@PACKAGE_REVISION@.@jvm_arch@.zip: \
	$(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ \
	$(BINRLS)/plugins/j3270@DLLEXT@ \
	$(BINRLS)/$(PACKAGE_NAME).jar \
	javadoc

	@rm -f $@

	@rm -fr jvm-exports
	@mkdir jvm-exports
	@cp $(BINRLS)/$(PACKAGE_NAME).jar jvm-exports/$(PACKAGE_NAME).jar
	@zip -9 -m -r $@ jvm-exports
	@rm -fr jvm-exports

	@rm -fr ui
	@mkdir ui
	@cp ../../ui/*java*.xml ui
	@zip -9 -m -r $@ ui
	@rm -fr ui

	@rm -fr plugins
	@mkdir plugins
	@cp $(BINRLS)/plugins/j3270@DLLEXT@ plugins
	@zip -9 -m -r $@ plugins
	@rm -fr plugins

	@zip -9 -j $@ \
		$(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@
	
	@zip -9 -r $@ \
		javadoc sample/efglobe.java sample/popup.java


jni3270-@PACKAGE_VERSION@.@PACKAGE_REVISION@.@jvm_arch@.zip: \
	$(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ \
	$(BINRLS)/$(PACKAGE_NAME).jar \
	testprogram.java \
	javadoc \
	Makefile

	@rm -f $@

	@rm -fr jvm-exports
	@mkdir jvm-exports
	@cp $(BINRLS)/$(PACKAGE_NAME).jar jvm-exports/$(PACKAGE_NAME).jar
	@zip -9 -m -r $@ jvm-exports
	@rm -fr jvm-exports

	@rm -fr ui
	@mkdir ui
	@cp ../../ui/*java*.xml ui
	@zip -9 -m -r $@ ui
	@rm -fr ui

	@zip -9 -j $@ $(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@
	@zip -9 -r $@ javadoc sample/efglobe.java sample/popup.java

javadoc: terminal.java
	@$(JAVADOC) -encoding utf-8 -d $@ $^

$(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@: \
		$(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC)@OBJEXT@) \
		$(CLASS_RELEASE_OBJECTS)

	@echo "  LD   `basename $@`"
	@$(MKDIR) `dirname $@`
	@$(CXX) @SYSDLL_FLAGS@ $(LDFLAGS) -Wl,-soname,`basename $@` -o $@ $^ $(CLASS_LIBS) @INTL_LIBS@

$(BINRLS)/plugins/j3270@DLLEXT@: \
	$(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJRLS)/j3270/$(SRC)@OBJEXT@) \
	$(CLASS_RELEASE_OBJECTS)

	@echo "  LD   `basename $@`"
	@$(MKDIR) `dirname $@`
	@$(CXX) @SYSDLL_FLAGS@ \
		-Wl,--rpath,$(jnidir) $(LDFLAGS) -Wl,-soname,`basename $@` \
		-o $@ $^ \
		$(CLASS_LIBS) \
		$(PLUGIN_LIBS) \
		-L../../.bin/Release@DLLDIR@ -l3270 -lpw3270 \
		-L$(BINRLS)@DLLDIR@ -ljni3270

#---[ Debug targets ]----------------------------------------------------------

Debug:	$(BINDBG)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ \
		$(BINDIR)/java/testprogram.class \
		$(BINDBG)/plugins/j3270@DLLEXT@

$(BINDBG)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@: \
	$(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) \
	$(CLASS_DEBUG_OBJECTS)

	@echo "  LD   `basename $@`"
	@$(MKDIR) `dirname $@`
	@$(CXX) @SYSDLL_FLAGS@ $(LDFLAGS) -Wl,-soname,`basename $@` -o $@ $^ $(CLASS_LIBS) @INTL_LIBS@

$(BINDBG)/plugins/j3270@DLLEXT@: \
	$(BINDBG)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ \
	$(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJDBG)/j3270/$(SRC)@OBJEXT@) \
	$(CLASS_DEBUG_OBJECTS)

	@echo "  LD   `basename $@`"
	@$(MKDIR) `dirname $@`

	@$(CXX) @SYSDLL_FLAGS@ \
	-Wl,--rpath,.bin/Debug@DLLDIR@ $(LDFLAGS) -Wl,-soname,`basename $@` \
	-o $@ $^ \
	$(CLASS_LIBS) \
	$(PLUGIN_LIBS) \
	-L../../.bin/Debug@DLLDIR@ -l3270 -lpw3270 \
	-L$(BINDBG)@DLLDIR@ -ljni3270

run: \
	$(BINDBG)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ \
	$(BINDIR)/java/testprogram.class

	@LD_LIBRARY_PATH=../../.bin/Debug@DLLDIR@/ java -Djava.library.path=$(BINDBG)@DLLDIR@ -cp .bin/java/ testprogram

#---[ Misc targets ]-----------------------------------------------------------

install-plugin: \
	$(BINRLS)/plugins/j3270@DLLEXT@

	@$(MKDIR) $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins
	@$(INSTALL_PROGRAM) $(BINRLS)/plugins/j3270@DLLEXT@ $(DESTDIR)$(libdir)/$(PACKAGE_NAME)-plugins

install-extension: \
	$(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ \
	$(BINRLS)/$(PACKAGE_NAME).jar \

	@$(MKDIR) $(DESTDIR)/$(jnidir)
	@$(INSTALL_PROGRAM) $(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ $(DESTDIR)/$(jnidir)

	@mkdir -p $(DESTDIR)/$(jvmjardir)
	@$(INSTALL_DATA) $(BINRLS)/$(PACKAGE_NAME).jar $(DESTDIR)/$(jvmjardir)

install-doc: \
	javadoc

	@echo "javadocdir=$(javadocdir)"

	@$(MKDIR) $(DESTDIR)/$(javadocdir)/$(PACKAGE_NAME)
	@cp -r javadoc/* $(DESTDIR)/$(javadocdir)/$(PACKAGE_NAME)
	@find $(DESTDIR)/$(javadocdir)/$(PACKAGE_NAME) -type f -exec chmod 644 {} \;
	@find $(DESTDIR)/$(javadocdir)/$(PACKAGE_NAME) -type d -exec chmod 755 {} \;

install: \
	install-extension \
	install-plugin \
	install-doc

jni3270.h: $(BINDIR)/java/$(PACKAGE_NAME)/terminal.class
	@echo $< ...
	@mkdir -p `dirname $@`
	@$(JAVAH) -o $@ -classpath $(BINDIR)/java $(PACKAGE_NAME).terminal

cleanDebug: clean

clean:
	@rm -fr $(OBJDIR)
	@rm -fr $(BINDIR)
	@rm -fr javadoc
	@rm -f jni3270.h