From a298c5521bbfc808ee232d119a9681eb43e0863e Mon Sep 17 00:00:00 2001 From: Jeremy Townson Date: Sun, 27 Jan 2019 23:41:24 +0100 Subject: [PATCH 1/4] Update swig interface files for librina and librinad to bring up to date with header files. Set enable-java-bindings in configure. --- configure | 4 +- librina/wrap/librina.i | 50 +++++- rinad/wrap/librinad.i | 358 ++++++++++++++++++++++------------------- 3 files changed, 239 insertions(+), 173 deletions(-) diff --git a/configure b/configure index af56d450b2..8e3d7790ec 100755 --- a/configure +++ b/configure @@ -100,7 +100,7 @@ echo "Starting librina phase" echo "Cannot bootstrap" exit 1 } -(mkdir -p $BUILDDIR/librina && cd $BUILDDIR/librina && $SRCDIR/librina/configure --disable-java-bindings $FLAGS --prefix=$INSTALL_PREFIX && make clean install) || { +(mkdir -p $BUILDDIR/librina && cd $BUILDDIR/librina && $SRCDIR/librina/configure --enable-java-bindings $FLAGS --prefix=$INSTALL_PREFIX && make clean install) || { echo "Cannot complete librina phase" exit 1 } @@ -110,7 +110,7 @@ echo "Starting rinad phase" echo "Cannot bootstrap" exit 1 } -(mkdir -p $BUILDDIR/rinad && cd $BUILDDIR/rinad && PKG_CONFIG_PATH=$INSTALL_PREFIX/lib/pkgconfig LD_LIBRARY_PATH=$INSTALL_PREFIX/lib:$LD_LIBRARY_PATH $SRCDIR/rinad/configure --prefix=$INSTALL_PREFIX --disable-java-bindings $FLAGS && make clean install) || { +(mkdir -p $BUILDDIR/rinad && cd $BUILDDIR/rinad && PKG_CONFIG_PATH=$INSTALL_PREFIX/lib/pkgconfig LD_LIBRARY_PATH=$INSTALL_PREFIX/lib:$LD_LIBRARY_PATH $SRCDIR/rinad/configure --prefix=$INSTALL_PREFIX --enable-java-bindings $FLAGS && make clean install) || { echo "Cannot complete rinad phase" echo "LIBRINA Version =" pkg-config --modversion librina diff --git a/librina/wrap/librina.i b/librina/wrap/librina.i index fdaf3b2318..2d5dbfe765 100644 --- a/librina/wrap/librina.i +++ b/librina/wrap/librina.i @@ -414,7 +414,8 @@ SWIG_JAVABODY_TYPEWRAPPER(public, public, public, SWIGTYPE) $result = jenv->NewObject(clazz, mid, cptr, false); } } - } else if ($1->eventType == rina::DEALLOCATE_FLOW_RESPONSE_EVENT) { + } + /*else if ($1->eventType == rina::DEALLOCATE_FLOW_RESPONSE_EVENT) { rina::DeallocateFlowResponseEvent *flowReqEvent = dynamic_cast($1); jclass clazz = jenv->FindClass("eu/irati/librina/DeallocateFlowResponseEvent"); if (clazz) { @@ -425,7 +426,8 @@ SWIG_JAVABODY_TYPEWRAPPER(public, public, public, SWIGTYPE) $result = jenv->NewObject(clazz, mid, cptr, false); } } - } else if ($1->eventType == rina::GET_DIF_PROPERTIES_RESPONSE_EVENT) { + }*/ + else if ($1->eventType == rina::GET_DIF_PROPERTIES_RESPONSE_EVENT) { rina::GetDIFPropertiesResponseEvent *flowReqEvent = dynamic_cast($1); jclass clazz = jenv->FindClass("eu/irati/librina/GetDIFPropertiesResponseEvent"); if (clazz) { @@ -503,6 +505,50 @@ DOWNCAST_IPC_EVENT_CONSUMER(eventTimedWait); %rename(equals) rina::QoSCube::operator==(const QoSCube &other) const; %rename(differs) rina::QoSCube::operator!=(const QoSCube &other) const; %rename(assign) rina::EFCPConfiguration::operator=(const EFCPConfiguration &other); +%rename(equals) rina::DTCPWindowBasedFlowControlConfig::operator==(const DTCPWindowBasedFlowControlConfig &other) const; +%rename(differs) rina::DTCPWindowBasedFlowControlConfig::operator!=(const DTCPWindowBasedFlowControlConfig &other) const; +%rename(equals) rina::DTCPRateBasedFlowControlConfig::operator==(const DTCPRateBasedFlowControlConfig &other) const; +%rename(differs) rina::DTCPRateBasedFlowControlConfig::operator!=(const DTCPRateBasedFlowControlConfig &other) const; +%rename(equals) rina::DTCPFlowControlConfig::operator==(const DTCPFlowControlConfig &other) const; +%rename(differs) rina::DTCPFlowControlConfig::operator!=(const DTCPFlowControlConfig &other) const; +%rename(equals) rina::DTCPRtxControlConfig::operator==(const DTCPRtxControlConfig &other) const; +%rename(differs) rina::DTCPRtxControlConfig::operator!=(const DTCPRtxControlConfig &other) const; +%rename(equals) rina::DTCPConfig::operator==(const DTCPConfig &other) const; +%rename(differs) rina::DTCPConfig::operator!=(const DTCPConfig &other) const; +%rename(equals) rina::DTPConfig::operator==(const DTPConfig &other) const; +%rename(differs) rina::DTPConfig::operator!=(const DTPConfig &other) const; +%rename(equals) rina::QoSCube::operator==(const QoSCube &other) const; +%rename(differs) rina::QoSCube::operator!=(const QoSCube &other) const; +%rename(equals) rina::DataTransferConstants::operator==(const DataTransferConstants &other) const; +%rename(differs) rina::DataTransferConstants::operator!=(const DataTransferConstants &other) const; +%rename(equals) rina::EFCPConfiguration::operator==(const EFCPConfiguration &other) const; +%rename(differs) rina::EFCPConfiguration::operator!=(const EFCPConfiguration &other) const; +%rename(equals) rina::FlowAllocatorConfiguration::operator==(const FlowAllocatorConfiguration &other) const; +%rename(differs) rina::FlowAllocatorConfiguration::operator!=(const FlowAllocatorConfiguration &other) const; +%rename(equals) rina::PDUFTGConfiguration::operator==(const PDUFTGConfiguration &other) const; +%rename(differs) rina::PDUFTGConfiguration::operator!=(const PDUFTGConfiguration &other) const; +%rename(equals) rina::ResourceAllocatorConfiguration::operator==(const ResourceAllocatorConfiguration &other) const; +%rename(differs) rina::ResourceAllocatorConfiguration::operator!=(const ResourceAllocatorConfiguration &other) const; +%rename(equals) rina::PFTConfiguration::operator==(const PFTConfiguration &other) const; +%rename(differs) rina::PFTConfiguration::operator!=(const PFTConfiguration &other) const; +%rename(equals) rina::RMTConfiguration::operator==(const RMTConfiguration &other) const; +%rename(differs) rina::RMTConfiguration::operator!=(const RMTConfiguration &other) const; +%rename(equals) rina::EnrollmentTaskConfiguration::operator==(const EnrollmentTaskConfiguration &other) const; +%rename(differs) rina::EnrollmentTaskConfiguration::operator!=(const EnrollmentTaskConfiguration &other) const; +%rename(equals) rina::AddressingConfiguration::operator==(const AddressingConfiguration &other) const; +%rename(differs) rina::AddressingConfiguration::operator!=(const AddressingConfiguration &other) const; +%rename(equals) rina::NamespaceManagerConfiguration::operator==(const NamespaceManagerConfiguration &other) const; +%rename(differs) rina::NamespaceManagerConfiguration::operator!=(const NamespaceManagerConfiguration &other) const; +%rename(equals) rina::AuthSDUProtectionProfile::operator==(const AuthSDUProtectionProfile &other) const; +%rename(differs) rina::AuthSDUProtectionProfile::operator!=(const AuthSDUProtectionProfile &other) const; +%rename(equals) rina::SecurityManagerConfiguration::operator==(const SecurityManagerConfiguration &other) const; +%rename(differs) rina::SecurityManagerConfiguration::operator!=(const SecurityManagerConfiguration &other) const; +%rename(equals) rina::RoutingConfiguration::operator==(const RoutingConfiguration &other) const; +%rename(differs) rina::RoutingConfiguration::operator!=(const RoutingConfiguration &other) const; +%rename(equals) rina::DIFConfiguration::operator==(const DIFConfiguration &other) const; +%rename(differs) rina::DIFConfiguration::operator!=(const DIFConfiguration &other) const; + + /* This is for separating rib::init and rib::fini from cdap::init and cdap::fini */ %rename(cdap_init) rina::cdap::init(cdap::CDAPCallbackInterface *callback, cdap_rib::concrete_syntax_t& syntax, int fd); diff --git a/rinad/wrap/librinad.i b/rinad/wrap/librinad.i index 99312862ec..fa198c7217 100644 --- a/rinad/wrap/librinad.i +++ b/rinad/wrap/librinad.i @@ -1,169 +1,189 @@ -/* - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ - -%module rinad - -%include -%include "enums.swg" -%include -%include - -%include "stdlist.i" -%import "librina.i" - -#ifdef SWIGJAVA -#endif - -%pragma(java) jniclassimports=%{ -import eu.irati.librina.ser_obj_t; -import eu.irati.librina.ApplicationProcessNamingInformation; -import eu.irati.librina.FlowSpecification; -import eu.irati.librina.Neighbor; -import eu.irati.librina.ADataObject; -import eu.irati.librina.DataTransferConstants; -import eu.irati.librina.DTCPConfig; -import eu.irati.librina.DIFInformation; -import eu.irati.librina.QoSCube; -import eu.irati.librina.RIBObjectData; -%} - -/** - * void * typemaps. - * These are input typemaps for mapping a Java byte[] array to a C void array. - * Note that as a Java array is used and thus passeed by reference, the C - * routine can return data to Java via the parameter. - * - * Example usage wrapping: - * void foo(void *array); - * - * Java usage: - * byte b[] = new byte[20]; - * modulename.foo(b); - */ -%typemap(jni) void * "jbyteArray" -%typemap(jtype) void * "byte[]" -%typemap(jstype) void * "byte[]" - -%typemap(in) void * { - $1 = (void *) JCALL2(GetByteArrayElements, jenv, $input, 0); -} - -%typemap(argout) void * { - JCALL3(ReleaseByteArrayElements, jenv, $input, (jbyte *) $1, 0); -} - -%typemap(javain) void * "$javainput" - -%typemap(javaout) void * { - return $jnicall; - } - -%typemap(javaimports) SWIGTYPE -%{ -import eu.irati.librina.ser_obj_t; -import eu.irati.librina.ApplicationProcessNamingInformation; -import eu.irati.librina.FlowSpecification; -import eu.irati.librina.Neighbor; -import eu.irati.librina.ADataObject; -import eu.irati.librina.DataTransferConstants; -import eu.irati.librina.DTCPConfig; -import eu.irati.librina.DIFInformation; -import eu.irati.librina.QoSCube; -import eu.irati.librina.RIBObjectData; -%} - -%{ -#include "librina/common.h" -#include "configuration.h" -#include "librina/cdap_rib_structures.h" -#include "encoder.h" -#include -%} - - -%include "configuration.h" - -namespace rina{ -%template(TempDTEncoder) Encoder< rina::DataTransferConstants >; -%template(TempDFTEncoder) Encoder; -%template(TempDFTLEncoder) Encoder >; -%template(TempQOSCEncoder) Encoder; -%template(TempQOSCLEncoder) Encoder >; -%template(TempWNEncoder) Encoder; -%template(TempWNLEncoder) Encoder >; -%template(TempNeEncoder) Encoder; -%template(TempNeLEncoder) Encoder >; -%template(TempADOEncoder) Encoder; -%template(TempIPCPConfigEncoder) Encoder; -%template(TempIPCPEncoder) Encoder; -%template(TempEIREncoder) Encoder; -%template(TempFEncoder) Encoder; -%template(TempRTEncoder) Encoder; -%template(TempPDUFTEncoder) Encoder; -%template(TempDTPIEncoder) Encoder; -%template(TempDTCPCEncoder) Encoder; -%template(TempRIBObjectDataListEncoder) rina::Encoder< std::list< rina::rib::RIBObjectData > >; -} - -%include "encoder.h" - - -/* Macro for defining collection iterators */ -%define MAKE_COLLECTION_ITERABLE( ITERATORNAME, JTYPE, CPPCOLLECTION, CPPTYPE ) -%typemap(javainterfaces) ITERATORNAME "java.util.Iterator" -%typemap(javacode) ITERATORNAME %{ - public void remove() throws UnsupportedOperationException { - throw new UnsupportedOperationException(); - } - - public JTYPE next() throws java.util.NoSuchElementException { - if (!hasNext()) { - throw new java.util.NoSuchElementException(); - } - - return nextImpl(); - } -%} -%javamethodmodifiers ITERATORNAME::nextImpl "private"; -%inline %{ - struct ITERATORNAME { - typedef CPPCOLLECTION collection_t; - ITERATORNAME(const collection_t& t) : it(t.begin()), collection(t) {} - bool hasNext() const { - return it != collection.end(); - } - - const CPPTYPE& nextImpl() { - const CPPTYPE& type = *it++; - return type; - } - private: - collection_t::const_iterator it; - const collection_t& collection; - }; -%} -%typemap(javainterfaces) CPPCOLLECTION "Iterable" -%newobject CPPCOLLECTION::iterator() const; -%extend CPPCOLLECTION { - ITERATORNAME *iterator() const { - return new ITERATORNAME(*$self); - } -} -%enddef - -%template(StringList) std::list; -%template(RIBObjectDataList) std::list; +/* + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ + +%module rinad + +%include +%include "enums.swg" +%include +%include + +%include "stdlist.i" +%import "librina.i" + +#ifdef SWIGJAVA +#endif + +%pragma(java) jniclassimports=%{ +import eu.irati.librina.ser_obj_t; +import eu.irati.librina.ApplicationProcessNamingInformation; +import eu.irati.librina.FlowSpecification; +import eu.irati.librina.Neighbor; +import eu.irati.librina.ADataObject; +import eu.irati.librina.DataTransferConstants; +import eu.irati.librina.DTCPConfig; +import eu.irati.librina.DIFInformation; +import eu.irati.librina.QoSCube; +import eu.irati.librina.RIBObjectData; +import eu.irati.librina.RMTConfiguration; +import eu.irati.librina.EnrollmentTaskConfiguration; +import eu.irati.librina.SecurityManagerConfiguration; +import eu.irati.librina.FlowAllocatorConfiguration; +import eu.irati.librina.NamespaceManagerConfiguration; +import eu.irati.librina.ResourceAllocatorConfiguration; +import eu.irati.librina.RoutingConfiguration; +%} + +/** + * void * typemaps. + * These are input typemaps for mapping a Java byte[] array to a C void array. + * Note that as a Java array is used and thus passeed by reference, the C + * routine can return data to Java via the parameter. + * + * Example usage wrapping: + * void foo(void *array); + * + * Java usage: + * byte b[] = new byte[20]; + * modulename.foo(b); + */ +%typemap(jni) void * "jbyteArray" +%typemap(jtype) void * "byte[]" +%typemap(jstype) void * "byte[]" + +%typemap(in) void * { + $1 = (void *) JCALL2(GetByteArrayElements, jenv, $input, 0); +} + +%typemap(argout) void * { + JCALL3(ReleaseByteArrayElements, jenv, $input, (jbyte *) $1, 0); +} + +%typemap(javain) void * "$javainput" + +%typemap(javaout) void * { + return $jnicall; + } + +%typemap(javaimports) SWIGTYPE +%{ +import eu.irati.librina.ser_obj_t; +import eu.irati.librina.ApplicationProcessNamingInformation; +import eu.irati.librina.FlowSpecification; +import eu.irati.librina.Neighbor; +import eu.irati.librina.ADataObject; +import eu.irati.librina.DataTransferConstants; +import eu.irati.librina.DTCPConfig; +import eu.irati.librina.DIFInformation; +import eu.irati.librina.QoSCube; +import eu.irati.librina.RIBObjectData; +import eu.irati.librina.RMTConfiguration; +import eu.irati.librina.EnrollmentTaskConfiguration; +import eu.irati.librina.SecurityManagerConfiguration; +import eu.irati.librina.FlowAllocatorConfiguration; +import eu.irati.librina.NamespaceManagerConfiguration; +import eu.irati.librina.ResourceAllocatorConfiguration; +import eu.irati.librina.RoutingConfiguration; +import eu.irati.librina.FlowInformation; +%} + +%{ +#include "librina/common.h" +#include "configuration.h" +#include "librina/cdap_rib_structures.h" +#include "encoder.h" +#include "rina-configuration.h" +#include +%} + + +%include "configuration.h" +%include "rina-configuration.h" + +namespace rina{ +%template(TempDTEncoder) Encoder< rina::DataTransferConstants >; +%template(TempDFTEncoder) Encoder; +%template(TempDFTLEncoder) Encoder >; +%template(TempQOSCEncoder) Encoder; +%template(TempQOSCLEncoder) Encoder >; +%template(TempWNEncoder) Encoder; +%template(TempWNLEncoder) Encoder >; +%template(TempNeEncoder) Encoder; +%template(TempNeLEncoder) Encoder >; +%template(TempADOEncoder) Encoder; +%template(TempIPCPConfigEncoder) Encoder; +%template(TempIPCPEncoder) Encoder; +%template(TempEIREncoder) Encoder; +%template(TempFEncoder) Encoder; +%template(TempRTEncoder) Encoder; +%template(TempPDUFTEncoder) Encoder; +%template(TempDTPIEncoder) Encoder; +%template(TempDTCPCEncoder) Encoder; +%template(TempRIBObjectDataListEncoder) Encoder< std::list< rina::rib::RIBObjectData > >; +%template(TempAppDIFMappingEncoder) Encoder< rinad::AppToDIFMapping >; +%template(TempAppDIFMappingListEncoder) Encoder >; + +} + +%include "encoder.h" + + +/* Macro for defining collection iterators */ +%define MAKE_COLLECTION_ITERABLE( ITERATORNAME, JTYPE, CPPCOLLECTION, CPPTYPE ) +%typemap(javainterfaces) ITERATORNAME "java.util.Iterator" +%typemap(javacode) ITERATORNAME %{ + public void remove() throws UnsupportedOperationException { + throw new UnsupportedOperationException(); + } + + public JTYPE next() throws java.util.NoSuchElementException { + if (!hasNext()) { + throw new java.util.NoSuchElementException(); + } + + return nextImpl(); + } +%} +%javamethodmodifiers ITERATORNAME::nextImpl "private"; +%inline %{ + struct ITERATORNAME { + typedef CPPCOLLECTION collection_t; + ITERATORNAME(const collection_t& t) : it(t.begin()), collection(t) {} + bool hasNext() const { + return it != collection.end(); + } + + const CPPTYPE& nextImpl() { + const CPPTYPE& type = *it++; + return type; + } + private: + collection_t::const_iterator it; + const collection_t& collection; + }; +%} +%typemap(javainterfaces) CPPCOLLECTION "Iterable" +%newobject CPPCOLLECTION::iterator() const; +%extend CPPCOLLECTION { + ITERATORNAME *iterator() const { + return new ITERATORNAME(*$self); + } +} +%enddef + +%template(StringList) std::list; +%template(RIBObjectDataList) std::list; From 544420ebfd8da853479ad2e7c4d01616884bd2c9 Mon Sep 17 00:00:00 2001 From: Jeremy Townson Date: Sat, 2 Feb 2019 17:35:48 +0100 Subject: [PATCH 2/4] Add -I flag for librina/wrap/java to include kucommon.h Fixed libtool error building java bindings. --- librina/wrap/java/Makefile.am | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/librina/wrap/java/Makefile.am b/librina/wrap/java/Makefile.am index 7bc3b3fc0e..cb48156cee 100644 --- a/librina/wrap/java/Makefile.am +++ b/librina/wrap/java/Makefile.am @@ -5,7 +5,7 @@ # if BUILD_BINDINGS_JAVA - + JAVA_DIR = $(top_builddir)/../java SWIG_DEBUG = -v SWIG_CPPFLAGS = -I$(top_srcdir)/include @@ -38,7 +38,7 @@ CLEANFILES += librina_java.cc+ librina-java-classes: wrap.stamp $(JAVAC) $(JAVA_DIR)/eu/irati/librina/*.java -librina.jar: librina-java-classes +librina.jar: librina-java-classes cd $(JAVA_DIR) && \ $(JAR) -cvf librina.jar eu/irati/librina/*.class mv $(JAVA_DIR)/librina.jar $(builddir) @@ -54,7 +54,7 @@ librina_java.cc: wrap.stamp librina_java_la_SOURCES = librina_java.cc librina_java_la_LDFLAGS = -module librina_java_la_LIBADD = $(top_builddir)/src/librina.la -librina_java_la_CPPFLAGS = -I$(top_srcdir)/include $(JNI_CPPFLAGS) +librina_java_la_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src $(JNI_CPPFLAGS) lib_LTLIBRARIES = librina_java.la From 21090452e66b62d62fb508339c41517babbd691a Mon Sep 17 00:00:00 2001 From: Jeremy Townson Date: Sat, 2 Feb 2019 23:57:04 +0100 Subject: [PATCH 3/4] Add --enable-java-bindings to top-level configure args. Disabled by default. --- configure | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 8e3d7790ec..311bfdc37a 100755 --- a/configure +++ b/configure @@ -7,6 +7,7 @@ TCP_UDP_BUFFER_SIZE=1500 INSTALL_PREFIX="/" KERNBUILDDIR="/lib/modules/`uname -r`/build" BUILD_USER="y" +JAVA_BINDINGS_OPTION="--disable-java-bindings" # Option parsing while [[ $# > 0 ]] @@ -47,6 +48,10 @@ do BUILD_USER="n" ;; + "--enable-java-bindings") + JAVA_BINDINGS_OPTION="$1" + ;; + *) echo "Unknown option '$key'" exit 255 @@ -100,7 +105,7 @@ echo "Starting librina phase" echo "Cannot bootstrap" exit 1 } -(mkdir -p $BUILDDIR/librina && cd $BUILDDIR/librina && $SRCDIR/librina/configure --enable-java-bindings $FLAGS --prefix=$INSTALL_PREFIX && make clean install) || { +(mkdir -p $BUILDDIR/librina && cd $BUILDDIR/librina && $SRCDIR/librina/configure $JAVA_BINDINGS_OPTION $FLAGS --prefix=$INSTALL_PREFIX && make clean install) || { echo "Cannot complete librina phase" exit 1 } @@ -110,7 +115,7 @@ echo "Starting rinad phase" echo "Cannot bootstrap" exit 1 } -(mkdir -p $BUILDDIR/rinad && cd $BUILDDIR/rinad && PKG_CONFIG_PATH=$INSTALL_PREFIX/lib/pkgconfig LD_LIBRARY_PATH=$INSTALL_PREFIX/lib:$LD_LIBRARY_PATH $SRCDIR/rinad/configure --prefix=$INSTALL_PREFIX --enable-java-bindings $FLAGS && make clean install) || { +(mkdir -p $BUILDDIR/rinad && cd $BUILDDIR/rinad && PKG_CONFIG_PATH=$INSTALL_PREFIX/lib/pkgconfig LD_LIBRARY_PATH=$INSTALL_PREFIX/lib:$LD_LIBRARY_PATH $SRCDIR/rinad/configure --prefix=$INSTALL_PREFIX $JAVA_BINDINGS_OPTION $FLAGS && make clean install) || { echo "Cannot complete rinad phase" echo "LIBRINA Version =" pkg-config --modversion librina From 6994bbcccd801cc589850727f8240ebc43e9509b Mon Sep 17 00:00:00 2001 From: Jeremy Townson Date: Tue, 5 Feb 2019 16:49:13 +0100 Subject: [PATCH 4/4] Remove redundant comment from java/Makefile.am --- rinad/wrap/java/Makefile.am | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/rinad/wrap/java/Makefile.am b/rinad/wrap/java/Makefile.am index 42b553ea84..4d4164fdf4 100644 --- a/rinad/wrap/java/Makefile.am +++ b/rinad/wrap/java/Makefile.am @@ -14,42 +14,41 @@ SWIG_JAVA_FLAGS = -java -package eu.irati.librinad CLEANFILES = -# XXX FIXME: Prerequisites for this rule are broken ... wrap.stamp: $(top_srcdir)/wrap/*.i $(top_srcdir)/src/common/*.h - rm -f wrap.tmp + rm -f wrap.tmp touch wrap.tmp rm -r -f $(JAVA_DIR)/eu/irati/librinad && \ - $(MKDIR_P) $(JAVA_DIR)/eu/irati/librinad && \ - $(SWIG) $(SWIG_FLAGS) $(SWIG_JAVA_FLAGS) \ + $(MKDIR_P) $(JAVA_DIR)/eu/irati/librinad && \ + $(SWIG) $(SWIG_FLAGS) $(SWIG_JAVA_FLAGS) \ -c++ \ -o librinad_java.cc \ -outdir $(JAVA_DIR)/eu/irati/librinad \ $(top_srcdir)/wrap/librinad.i || { \ - echo "Cannot wrap input file" ; \ + echo "Cannot wrap input file" ; \ rm -f wrap.tmp ; \ - rm -r -f $(JAVA_DIR)/eu/irati/librinad ; \ + rm -r -f $(JAVA_DIR)/eu/irati/librinad ; \ exit 1 ; \ } mv -f wrap.tmp $@ CLEANFILES += wrap.stamp wrap.tmp CLEANFILES += librinad_java.cc - -librinad-java-classes: wrap.stamp + +librinad-java-classes: wrap.stamp $(JAVAC) -cp $(JAVA_DIR) $(JAVA_DIR)/eu/irati/librinad/*.java librinad.jar: librinad-java-classes cd $(JAVA_DIR) && \ $(JAR) -cvf librinad.jar eu/irati/librinad/*.class - mv $(JAVA_DIR)/librinad.jar $(builddir) + mv $(JAVA_DIR)/librinad.jar $(builddir) CLEANFILES += librinad.jar pkgdata_DATA = librinad.jar -clean-local: - rm -r -f $(JAVA_DIR)/eu/irati/librinad - +clean-local: + rm -r -f $(JAVA_DIR)/eu/irati/librinad + librinad_java.cc: wrap.stamp librinad_java_la_SOURCES = librinad_java.cc @@ -69,7 +68,7 @@ install-data-local-maven: librinad.jar echo "Cannot install librinad jar into maven ..." ; \ exit 1 ; \ } - -install-data-local: install-data-local-maven + +install-data-local: install-data-local-maven endif \ No newline at end of file