RCF: a RMI framework library for C++
authorMartin Dietze <di@fh-wedel.de>
Thu, 2 Nov 2006 13:47:02 +0000 (13:47 +0000)
committerMartin Dietze <di@fh-wedel.de>
Thu, 2 Nov 2006 13:47:02 +0000 (13:47 +0000)
packages/librcf/.mtn2git_empty [new file with mode: 0644]
packages/librcf/files/.mtn2git_empty [new file with mode: 0644]
packages/librcf/files/rcf-0.4-g++-4.1.diff [new file with mode: 0644]
packages/librcf/files/rcf-0.4-openembedded.diff [new file with mode: 0644]
packages/librcf/librcf_0.4.bb [new file with mode: 0644]

diff --git a/packages/librcf/.mtn2git_empty b/packages/librcf/.mtn2git_empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/librcf/files/.mtn2git_empty b/packages/librcf/files/.mtn2git_empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/librcf/files/rcf-0.4-g++-4.1.diff b/packages/librcf/files/rcf-0.4-g++-4.1.diff
new file mode 100644 (file)
index 0000000..8316d99
--- /dev/null
@@ -0,0 +1,1241 @@
+diff -uNr RCF-0.4-orig/Makefile RCF-0.4/Makefile
+--- RCF-0.4-orig/Makefile      1970-01-01 01:00:00.000000000 +0100
++++ RCF-0.4/Makefile   2006-10-24 16:08:00.799705810 +0200
+@@ -0,0 +1,32 @@
++#
++# Top level Makefile for RCF library and test programs
++#
++# Martin Dietze <dietze@4g-systems.com>
++#
++
++SUBDIRS = src test
++DESTDIR =
++prefix = /usr/local
++
++.PHONY: all clean test syntax shared install uninstall
++
++all:
++      @for i in $(SUBDIRS); do $(MAKE) -C $$i $@ || exit 1; done
++
++shared:
++      @for i in $(SUBDIRS); do $(MAKE) -C $$i $@ || exit 1; done
++
++install:
++      $(MAKE) -C src $@
++
++uninstall:
++      $(MAKE) -C src $@
++
++syntax:
++      @for i in $(SUBDIRS); do $(MAKE) -C $$i $@ || exit 1; done
++
++test:
++      $(MAKE) -C $@ $@
++
++clean:
++      @for i in $(SUBDIRS); do $(MAKE) -C $$i $@ || exit 1; done
+diff -uNr RCF-0.4-orig/include/RCF/CheckRtti.hpp RCF-0.4/include/RCF/CheckRtti.hpp
+--- RCF-0.4-orig/include/RCF/CheckRtti.hpp     2006-01-11 01:06:52.000000000 +0100
++++ RCF-0.4/include/RCF/CheckRtti.hpp  2006-10-19 10:03:09.000000000 +0200
+@@ -24,7 +24,7 @@
+             {}\r
+         };\r
\r
+-        struct B\r
++        struct B : public A\r
+         {\r
+             virtual ~B()\r
+             {}\r
+@@ -35,7 +35,7 @@
+             B b;\r
+             // RTTI support not detected!\r
+             // If you're using Visual C++, set "Enable Run-Time Type Info" to true, in the Project Properties | C/C++ | Language options,\r
+-            dynamic_cast<A &>(b);\r
++            (void)dynamic_cast<A &>(b);\r
+         }\r
+     };\r
\r
+diff -uNr RCF-0.4-orig/include/RCF/EndpointBrokerService.hpp RCF-0.4/include/RCF/EndpointBrokerService.hpp
+--- RCF-0.4-orig/include/RCF/EndpointBrokerService.hpp 2006-01-11 01:06:52.000000000 +0100
++++ RCF-0.4/include/RCF/EndpointBrokerService.hpp      2006-10-19 10:16:40.000000000 +0200
+@@ -49,12 +49,12 @@
+         friend class EndpointBrokerService;\r
+         typedef RcfClient<I_EndpointServer> Client;\r
+         typedef boost::shared_ptr<Client> ClientPtr;\r
++        ServerTransportPtr mServerTransportPtr;\r
+         std::string mEndpointName;\r
+-        std::string mEndpointServerPassword;\r
+         std::string mEndpointClientPassword;\r
++        std::string mEndpointServerPassword;\r
+         std::vector<SessionPtr> mConnections;\r
+         ClientPtr mMasterConnection;\r
+-        ServerTransportPtr mServerTransportPtr;\r
+     };\r
\r
+     class EndpointBrokerService : \r
+diff -uNr RCF-0.4-orig/include/RCF/IpServerTransport.hpp RCF-0.4/include/RCF/IpServerTransport.hpp
+--- RCF-0.4-orig/include/RCF/IpServerTransport.hpp     2006-02-04 01:01:22.000000000 +0100
++++ RCF-0.4/include/RCF/IpServerTransport.hpp  2006-10-19 10:17:56.000000000 +0200
+@@ -87,10 +87,10 @@
+         }\r
\r
+     private:\r
++        mutable ReadWriteMutex mReadWriteMutex;\r
+         std::string mNetworkInterface;\r
+         std::vector<std::string> mAllowedIps;\r
+         std::vector<u_long> mAllowedAddrs;\r
+-        mutable ReadWriteMutex mReadWriteMutex;\r
+     };\r
\r
+ } // namespace RCF\r
+diff -uNr RCF-0.4-orig/include/RCF/OpenSslEncryptionFilter.hpp RCF-0.4/include/RCF/OpenSslEncryptionFilter.hpp
+--- RCF-0.4-orig/include/RCF/OpenSslEncryptionFilter.hpp       2006-01-11 01:06:54.000000000 +0100
++++ RCF-0.4/include/RCF/OpenSslEncryptionFilter.hpp    2006-10-19 10:44:20.000000000 +0200
+@@ -28,6 +28,8 @@
+         SslClient\r
+     };\r
\r
++    class OpenSslEncryptionFilterImpl;\r
++\r
+     /// Filter implementing the SSL encryption protocol, through the OpenSSL library.\r
+     class OpenSslEncryptionFilter : public IdentityFilter, boost::noncopyable\r
+     {\r
+diff -uNr RCF-0.4-orig/include/RCF/PublishingService.hpp RCF-0.4/include/RCF/PublishingService.hpp
+--- RCF-0.4-orig/include/RCF/PublishingService.hpp     2006-07-27 23:30:10.000000000 +0200
++++ RCF-0.4/include/RCF/PublishingService.hpp  2006-10-19 16:24:36.000000000 +0200
+@@ -15,6 +15,7 @@
+ #include <boost/shared_ptr.hpp>\r
+ #include <boost/utility.hpp>\r
\r
++#include <RCF/ClientStub.hpp>\r
+ #include <RCF/GetInterfaceName.hpp>\r
+ #include <RCF/Service.hpp>\r
+ #include <RCF/ThreadLibrary.hpp>\r
+diff -uNr RCF-0.4-orig/include/RCF/RcfServer.hpp RCF-0.4/include/RCF/RcfServer.hpp
+--- RCF-0.4-orig/include/RCF/RcfServer.hpp     2006-04-02 21:39:32.000000000 +0200
++++ RCF-0.4/include/RCF/RcfServer.hpp  2006-10-19 16:26:26.000000000 +0200
+@@ -214,12 +214,12 @@
+         ThreadSpecificSessionQueuePtr mThreadSpecificSessionQueuePtr;\r
+         // eventually other specialized session queues...\r
\r
+-        volatile bool mServerThreadsStopFlag;\r
+         Mutex mOpenedMutex;\r
+         bool mOpened;\r
+         \r
+         Mutex mStartedMutex;\r
+         bool mStarted;\r
++        volatile bool mServerThreadsStopFlag;\r
\r
+     public:\r
+         \r
+diff -uNr RCF-0.4-orig/include/RCF/StubFactory.hpp RCF-0.4/include/RCF/StubFactory.hpp
+--- RCF-0.4-orig/include/RCF/StubFactory.hpp   2006-01-11 01:06:54.000000000 +0100
++++ RCF-0.4/include/RCF/StubFactory.hpp        2006-10-19 10:28:45.000000000 +0200
+@@ -9,6 +9,7 @@
+ #ifndef INCLUDE_RCF_STUBFACTORY_HPP\r
+ #define INCLUDE_RCF_STUBFACTORY_HPP\r
\r
++#include <RCF/ServerStub.hpp>\r
+ #include <boost/shared_ptr.hpp>\r
\r
+ namespace RCF {\r
+diff -uNr RCF-0.4-orig/include/RCF/SubscriptionService.hpp RCF-0.4/include/RCF/SubscriptionService.hpp
+--- RCF-0.4-orig/include/RCF/SubscriptionService.hpp   2006-07-27 23:30:10.000000000 +0200
++++ RCF-0.4/include/RCF/SubscriptionService.hpp        2006-10-23 11:43:31.826971900 +0200
+@@ -19,6 +19,7 @@
\r
+ #include <RCF/GetInterfaceName.hpp>\r
+ #include <RCF/Service.hpp>\r
++#include <RCF/ServerStub.hpp>\r
\r
+ namespace RCF {\r
\r
+diff -uNr RCF-0.4-orig/include/RCF/TcpClientTransport.hpp RCF-0.4/include/RCF/TcpClientTransport.hpp
+--- RCF-0.4-orig/include/RCF/TcpClientTransport.hpp    2006-02-05 05:52:38.000000000 +0100
++++ RCF-0.4/include/RCF/TcpClientTransport.hpp 2006-10-20 16:59:45.000000000 +0200
+@@ -93,7 +93,7 @@
+     class TcpClientTransport : public I_ClientTransport\r
+     {\r
+     public:\r
+-        TcpClientTransport::TcpClientTransport(const TcpClientTransport &rhs);\r
++        TcpClientTransport(const TcpClientTransport &rhs);\r
+         TcpClientTransport(const std::string &ip, int port);\r
+         TcpClientTransport(sockaddr_in remoteAddr);\r
+         TcpClientTransport(int fd);\r
+@@ -131,8 +131,8 @@
+         int fd;\r
+         bool own;\r
\r
+-        std::size_t mBytesTransferred;\r
+         int mError;\r
++        std::size_t mBytesTransferred;\r
\r
+         boost::shared_ptr< CloseFunctor > mCloseFunctor;\r
+         std::vector<FilterPtr> mTransportFilters;\r
+diff -uNr RCF-0.4-orig/include/RCF/TcpServerTransport.hpp RCF-0.4/include/RCF/TcpServerTransport.hpp
+--- RCF-0.4-orig/include/RCF/TcpServerTransport.hpp    2006-02-07 21:37:16.000000000 +0100
++++ RCF-0.4/include/RCF/TcpServerTransport.hpp 2006-10-20 17:27:25.000000000 +0200
+@@ -59,12 +59,12 @@
+                 WritingData,\r
+             };\r
\r
++            Fd                  fd;\r
+             State               state;\r
+             std::vector<char>   readBuffer;\r
+             std::size_t         readBufferRemaining;\r
+             std::vector<char>   writeBuffer;\r
+             std::size_t         writeBufferRemaining;\r
+-            Fd                  fd;\r
+         };\r
\r
+         typedef boost::shared_ptr<I_Session>        SessionPtr;\r
+diff -uNr RCF-0.4-orig/include/RCF/ZlibCompressionFilter.hpp RCF-0.4/include/RCF/ZlibCompressionFilter.hpp
+--- RCF-0.4-orig/include/RCF/ZlibCompressionFilter.hpp 2006-01-11 01:06:54.000000000 +0100
++++ RCF-0.4/include/RCF/ZlibCompressionFilter.hpp      2006-10-23 16:29:58.698611358 +0200
+@@ -21,6 +21,9 @@
+     static const int RCF_FILTER_ZLIB_COMPRESSION_STATELESS = 3;\r
\r
+     static const int RCF_FILTER_ZLIB_COMPRESSION_STATEFUL = 4;\r
++    \r
++    class ZlibCompressionReadFilter;\r
++    class ZlibCompressionWriteFilter;\r
\r
+     class ZlibCompressionFilter : public IdentityFilter, boost::noncopyable\r
+     {\r
+diff -uNr RCF-0.4-orig/include/RCF/util/Platform/Machine/ByteOrder.hpp RCF-0.4/include/RCF/util/Platform/Machine/ByteOrder.hpp
+--- RCF-0.4-orig/include/RCF/util/Platform/Machine/ByteOrder.hpp       2006-09-13 17:02:32.000000000 +0200
++++ RCF-0.4/include/RCF/util/Platform/Machine/ByteOrder.hpp    2006-10-24 17:40:39.917363264 +0200
+@@ -14,6 +14,8 @@
+ #include "x86/ByteOrder.hpp"\r
+ #elif defined(_M_IA64) || defined(_M_AMD64) || defined(_M_X64)\r
+ #include "x86/ByteOrder.hpp"\r
++#elif defined(_MIPSEL) && _MIPSEL == 1\r
++#include "x86/ByteOrder.hpp"\r
+ #else\r
+ #include "UnknownMachine/ByteOrder.hpp"\r
+ #endif\r
+diff -uNr RCF-0.4-orig/include/RCF/util/UnusedVariable.hpp RCF-0.4/include/RCF/util/UnusedVariable.hpp
+--- RCF-0.4-orig/include/RCF/util/UnusedVariable.hpp   2006-01-11 01:06:56.000000000 +0100
++++ RCF-0.4/include/RCF/util/UnusedVariable.hpp        2006-10-20 17:40:00.000000000 +0200
+@@ -9,6 +9,10 @@
+ #define INCLUDE_UTIL_UNUSEDVARIABLE_HPP\r
\r
+ // Eliminate unused variable warnings, eg for scoped lock objects\r
++#ifndef __GNUC__\r
+ #define RCF_UNUSED_VARIABLE(x) ((void) x)\r
++#else\r
++#define RCF_UNUSED_VARIABLE(x)\r
++#endif\r
\r
+ #endif // ! INCLUDE_UTIL_UNUSEDVARIABLE_HPP\r
+diff -uNr RCF-0.4-orig/include/SF/I_Stream.hpp RCF-0.4/include/SF/I_Stream.hpp
+--- RCF-0.4-orig/include/SF/I_Stream.hpp       2006-01-11 01:07:00.000000000 +0100
++++ RCF-0.4/include/SF/I_Stream.hpp    2006-10-19 10:12:54.000000000 +0200
+@@ -19,6 +19,7 @@
+     class I_ContextRead\r
+     {\r
+     public:\r
++        virtual ~I_ContextRead(void) {}\r
+         virtual void add(SF::UInt32 nid, const ObjectId &id) = 0;\r
+         virtual void add(void *ptr, const std::type_info &objType, void *pObj ) = 0;\r
+         virtual bool query(SF::UInt32 nid, ObjectId &id) = 0;\r
+@@ -29,6 +30,7 @@
+     class I_ContextWrite\r
+     {\r
+     public:\r
++        virtual ~I_ContextWrite(void) {}\r
+         virtual void setEnabled(bool enable) = 0;\r
+         virtual bool getEnabled() = 0;\r
+         virtual void add(const ObjectId &id, SF::UInt32 &nid) = 0;\r
+@@ -38,28 +40,33 @@
\r
+     class I_WithContextRead {\r
+     public:\r
++        virtual ~I_WithContextRead(void) {}\r
+         virtual I_ContextRead &getContext() = 0;\r
+     };\r
\r
+     class I_WithContextWrite {\r
+     public:\r
++        virtual ~I_WithContextWrite(void) {}\r
+         virtual I_ContextWrite &getContext() = 0;\r
+     };\r
\r
+     class I_LocalStorage {\r
+     public:\r
++        virtual ~I_LocalStorage(void) {}\r
+         virtual void set(const std::type_info &objType, void *) = 0;\r
+         virtual void *get(const std::type_info &objType) = 0;\r
+     };\r
\r
+     class I_WithLocalStorage {\r
+     public:\r
++        virtual ~I_WithLocalStorage(void) {}\r
+         virtual I_LocalStorage &getLocalStorage() = 0;\r
+     };\r
\r
+     class I_Encoding\r
+     {\r
+     public:\r
++        virtual ~I_Encoding(void) {}\r
+         virtual UInt32 getCount(DataPtr &data, const std::type_info &type) = 0;\r
+         virtual void toData(DataPtr &data, void *pvObject, const std::type_info &type, int nCount) = 0;\r
+         virtual void toObject(DataPtr &data, void *pvObject, const std::type_info &type, int nCount) = 0;\r
+@@ -68,6 +75,7 @@
+     class I_WithEncoding\r
+     {\r
+     public:\r
++        virtual ~I_WithEncoding(void) {}\r
+         virtual I_Encoding &getEncoding() = 0;\r
+     };\r
\r
+@@ -80,6 +88,7 @@
+     class WithFormatWrite\r
+     {\r
+     public:\r
++        virtual ~WithFormatWrite(void) {}\r
+         virtual void begin(const Node &) = 0;\r
+         virtual void put(const DataPtr &) = 0;\r
+         virtual void end() = 0;\r
+@@ -88,6 +97,7 @@
+     class WithFormatRead\r
+     {\r
+     public:\r
++        virtual ~WithFormatRead(void) {}\r
+         virtual bool begin(Node &) = 0;\r
+         virtual bool get(DataPtr &) = 0;\r
+         virtual void end() = 0;\r
+diff -uNr RCF-0.4-orig/include/SF/SerializeSmartPtr.hpp RCF-0.4/include/SF/SerializeSmartPtr.hpp
+--- RCF-0.4-orig/include/SF/SerializeSmartPtr.hpp      2006-01-19 07:44:30.000000000 +0100
++++ RCF-0.4/include/SF/SerializeSmartPtr.hpp   2006-10-24 12:50:50.039809323 +0200
+@@ -20,7 +20,6 @@
+     template< template<typename> class SmartPtr, typename T >\r
+     inline bool serializeSimpleSmartPtr(SmartPtr<T> **pps, SF::Archive &ar)\r
+     {\r
+-        bool bRet = false;\r
+         if (ar.isRead()) {\r
+             if (ar.isFlagSet(Archive::POINTER)) *pps = new SmartPtr<T>;\r
+             T *pt = NULL;\r
+diff -uNr RCF-0.4-orig/include/SF/SerializeStaticArray.hpp RCF-0.4/include/SF/SerializeStaticArray.hpp
+--- RCF-0.4-orig/include/SF/SerializeStaticArray.hpp   2006-01-11 01:07:00.000000000 +0100
++++ RCF-0.4/include/SF/SerializeStaticArray.hpp        2006-10-23 17:02:39.489476120 +0200
+@@ -2,6 +2,8 @@
+ #ifndef INCLUDE_SF_SERIALIZESTATICARRAY_HPP\r
+ #define INCLUDE_SF_SERIALIZESTATICARRAY_HPP\r
\r
++#include <boost/type_traits.hpp>\r
++\r
+ #include <SF/Archive.hpp>\r
\r
+ namespace SF {\r
+diff -uNr RCF-0.4-orig/include/SF/Stream.hpp RCF-0.4/include/SF/Stream.hpp
+--- RCF-0.4-orig/include/SF/Stream.hpp 2006-09-19 11:53:44.000000000 +0200
++++ RCF-0.4/include/SF/Stream.hpp      2006-10-19 10:14:35.000000000 +0200
+@@ -221,7 +221,7 @@
+     {\r
+     public:\r
+         OStream(std::ostream &os);\r
+-        UInt32 OStream::writeRaw(const Byte8 *pBytes, UInt32 nLength);\r
++        UInt32 writeRaw(const Byte8 *pBytes, UInt32 nLength);\r
+         \r
+     private:\r
+         void begin(const Node &node);\r
+diff -uNr RCF-0.4-orig/include/SF/vector.hpp RCF-0.4/include/SF/vector.hpp
+--- RCF-0.4-orig/include/SF/vector.hpp 2006-09-19 11:53:46.000000000 +0200
++++ RCF-0.4/include/SF/vector.hpp      2006-10-23 17:05:37.129355307 +0200
+@@ -7,6 +7,7 @@
+ #include <SF/SerializeDynamicArray.hpp>\r
+ #include <SF/SerializeStl.hpp>\r
+ #include <SF/Tools.hpp>\r
++#include <SF/Stream.hpp>\r
\r
+ namespace SF {\r
\r
+diff -uNr RCF-0.4-orig/src/Makefile RCF-0.4/src/Makefile
+--- RCF-0.4-orig/src/Makefile  1970-01-01 01:00:00.000000000 +0100
++++ RCF-0.4/src/Makefile       2006-10-24 16:08:09.684099349 +0200
+@@ -0,0 +1,29 @@
++#
++# Makefile for RCF library
++#
++# Martin Dietze <dietze@4g-systems.com>
++#
++
++SUBDIRS = SF RCF
++DESTDIR =
++prefix = /usr/local
++
++.PHONY: all clean syntax shared install uninstall
++
++all:
++      $(MAKE) -C RCF $@
++
++shared:
++      $(MAKE) -C RCF $@
++
++install:
++      $(MAKE) -C RCF $@
++
++uninstall:
++      $(MAKE) -C RCF $@
++
++syntax:
++      @for i in $(SUBDIRS); do $(MAKE) -C $$i $@ || exit 1; done
++
++clean:
++      @for i in $(SUBDIRS); do $(MAKE) -C $$i $@ || exit 1; done
+diff -uNr RCF-0.4-orig/src/RCF/AsyncFilter.cpp RCF-0.4/src/RCF/AsyncFilter.cpp
+--- RCF-0.4-orig/src/RCF/AsyncFilter.cpp       2006-01-11 01:07:02.000000000 +0100
++++ RCF-0.4/src/RCF/AsyncFilter.cpp    2006-10-19 10:00:18.000000000 +0200
+@@ -149,8 +149,8 @@
+         ReadProxy(const std::string &buffer, FilterPtr filterPtr) : \r
+             mBuffer(buffer), \r
+             mchBuffer(mBuffer.c_str()),\r
+-            mchBufferLength( static_cast<int>(mBuffer.length()) ),\r
+             mchBufferPos(), \r
++            mchBufferLength( static_cast<int>(mBuffer.length()) ),\r
+             mFilterPtr(filterPtr)\r
+         {}\r
\r
+diff -uNr RCF-0.4-orig/src/RCF/Makefile RCF-0.4/src/RCF/Makefile
+--- RCF-0.4-orig/src/RCF/Makefile      1970-01-01 01:00:00.000000000 +0100
++++ RCF-0.4/src/RCF/Makefile   2006-10-26 16:22:54.175209260 +0200
+@@ -0,0 +1,123 @@
++#
++# Makefile for RCF library
++#
++# Martin Dietze <dietze@4g-systems.com>
++#
++
++MAJOR = 0
++VERSION = $(MAJOR).4
++
++O = .o
++A = .a
++D = .so
++
++.PHONY: all clean shared install uninstall mt st shared-st shared-mt
++
++CXX = g++
++#HAS_MM = yes
++AR = ar
++CDEFINES = -DRCF_USE_OPENSSL -DRCF_USE_ZLIB -DRCF_USE_SF_SERIALIZATION \
++      -DRCF_USE_BOOST_ASIO
++CPPFLAGS = -I../../include
++CXXTHREADS = -DRCF_USE_BOOST_THREADS
++CSHARED =
++CXXFLAGS = -ansi -Wall -Werror -O3
++DESTDIR =
++prefix = /usr/local
++
++OBJS = AsyncFilter.o ByteOrdering.o CheckRtti.o ClientInfo.o ClientStub.o \
++      ClientTransport.o CurrentSession.o EncodeMessage.o Endpoint.o \
++      EndpointBrokerService.o EndpointServerService.o Exception.o \
++      FilterService.o Idl.o InitDeinit.o IpAddress.o IpServerTransport.o \
++      Marshal.o MethodInvocation.o MulticastClientTransport.o \
++      ObjectFactoryService.o OpenSslEncryptionFilter.o Protocol/Protocol.o \
++      PublishingService.o Random.o RcfClient.o RcfServer.o \
++      SerializationProtocol.o ServerInterfaces.o ServerStub.o ServerTask.o \
++      ServerTransport.o Service.o Session.o StubEntry.o StubFactory.o \
++      SubscriptionService.o TcpAsioClientTransport.o \
++      TcpAsioServerTransport.o TcpAsioSynchronizedSocket.o \
++      TcpClientTransport.o TcpEndpoint.o \
++      TcpServerTransport.o ThreadLibrary.o TimedBsdSockets.o Token.o \
++      Tools.o UdpClientTransport.o UdpEndpoint.o UdpServerTransport.o \
++      UsingBsdSockets.o UsingOpenSsl.o ZlibCompressionFilter.o
++SOURCES = $(OBJS:%.o=%.cpp) RCF.cpp
++NAME = libRCF
++LIBMT = $(NAME)mt$A
++LIBST = $(NAME)st$A
++
++all:
++      $(MAKE) mt
++      $(MAKE) st
++
++mt: $(LIBMT)
++
++st: $(LIBST)
++
++shared:
++      $(MAKE) shared-mt
++      $(MAKE) shared-st
++
++shared-mt:
++      $(MAKE) -e LIBMT=$(NAME)mt$D CSHARED=-fPIC $(NAME)mt$D
++
++shared-st:
++      $(MAKE) -e LIBST=$(NAME)st$D CSHARED=-fPIC $(NAME)st$D
++
++syntax: $(OBJS)
++
++install: $(LIBMT) $(LIBST)
++      install -d -m 775 $(DESTDIR)$(prefix)/lib
++      if [ -f $(NAME)mt$(A) ]; then \
++        install -m 664 $(NAME)mt$(A) $(DESTDIR)$(prefix)/lib; \
++      fi
++      if [ -f $(NAME)st$(A) ]; then \
++        install -m 664 $(NAME)st$(A) $(DESTDIR)$(prefix)/lib; \
++      fi
++      if [ -f $(NAME)mt$(D).$(VERSION) ]; then \
++        install -m 775 $(NAME)mt$(D).$(VERSION) $(DESTDIR)$(prefix)/lib; \
++        ln -sf $(NAME)mt$(D).$(VERSION) $(DESTDIR)$(prefix)/lib/$(NAME)mt$(D).$(MAJOR); \
++        ln -sf $(NAME)mt$(D).$(MAJOR) $(DESTDIR)$(prefix)/lib/$(NAME)mt$(D); \
++      fi
++      if [ -f $(NAME)st$(D).$(VERSION) ]; then \
++        install -m 775 $(NAME)st$(D).$(VERSION) $(DESTDIR)$(prefix)/lib; \
++        ln -sf $(NAME)st$(D).$(VERSION) $(DESTDIR)$(prefix)/lib/$(NAME)st$(D).$(MAJOR); \
++        ln -sf $(NAME)st$(D).$(MAJOR) $(DESTDIR)$(prefix)/lib/$(NAME)st$(D); \
++      fi
++      install -d -m 775 $(DESTDIR)$(prefix)/include
++      cp -dpR ../../include/RCF $(DESTDIR)$(prefix)/include
++      cp -dpR ../../include/SF $(DESTDIR)$(prefix)/include
++
++uninstall: $(PROGRAM)
++      rm -f $(DESTDIR)$(prefix)/lib/$(NAME)[ms]t$A
++      rm -f $(DESTDIR)$(prefix)/lib/$(NAME)[ms]t$D
++      rm -f $(DESTDIR)$(prefix)/lib/$(NAME)[ms]t$D.$(MAJOR)
++      rm -f $(DESTDIR)$(prefix)/lib/$(NAME)[ms]t$D.$(VERSION)
++      rm -rf $(DESTDIR)$(prefix)/include/RCF
++      rm -rf $(DESTDIR)$(prefix)/include/SF
++
++lib%$(A): %.o
++      $(AR) cr $@ $^
++
++lib%$(D): %.o
++      $(CXX) $^ -shared -Wl,-soname,$@.$(MAJOR) -o $@.$(VERSION)
++      ln -sf $@.$(VERSION) $@.$(MAJOR)
++      ln -sf $@.$(MAJOR) $@
++
++clean:
++      rm -f $(NAME)[ms]t$(A) $(NAME)[ms]t$(D)* $(OBJS) RCF[ms]t.o *~ .depend
++
++%st.o: %.cpp
++      $(CXX) -c $(CSHARED) $(CPPFLAGS) $(CDEFINES) $(CXXFLAGS) $< -o $@
++
++%mt.o: %.cpp
++      $(CXX) -c $(CSHARED) $(CPPFLAGS) $(CDEFINES) $(CXXTHREADS) $(CXXFLAGS) $< -o $@
++
++%.o: %.cpp
++      $(CXX) -c $(CSHARED) $(CPPFLAGS) $(CDEFINES) $(CXXTHREADS) $(CXXFLAGS) $< -o $@
++
++.depend: $(SOURCES)
++      $(CXX) $(CPPFLAGS) $(CDEFINES) -MM $(SOURCES) >$@
++
++ifeq (yes,$(HAS_MM))
++sinclude .depend
++endif
+diff -uNr RCF-0.4-orig/src/RCF/MulticastClientTransport.cpp RCF-0.4/src/RCF/MulticastClientTransport.cpp
+--- RCF-0.4-orig/src/RCF/MulticastClientTransport.cpp  2006-01-18 08:32:18.000000000 +0100
++++ RCF-0.4/src/RCF/MulticastClientTransport.cpp       2006-10-19 10:24:44.000000000 +0200
+@@ -25,11 +25,13 @@
+     std::auto_ptr<I_ClientTransport> MulticastClientTransport::clone() const\r
+     {\r
+         RCF_THROW( ClientTransportException, "clone() not supported for MulticastClientTransport" );\r
++        return std::auto_ptr<I_ClientTransport>(NULL); /* keep the compiler happy */\r
+     }\r
\r
+     EndpointPtr MulticastClientTransport::getEndpointPtr() const\r
+     {\r
+         RCF_THROW( ClientTransportException, "getEndpointPtr() not supported for MulticastClientTransport" );\r
++        return EndpointPtr(); /* keep the compiler happy */\r
+     }\r
+   \r
+     int MulticastClientTransport::send(const std::string &data, unsigned int timeoutMs)\r
+@@ -70,6 +72,7 @@
+     int MulticastClientTransport::receive(std::string &, unsigned int)\r
+     {\r
+         RCF_THROW( ClientTransportException, "receive() not supported for MulticastClientTransport" );\r
++        return -1; /* keep the compiler happy */\r
+     }\r
\r
+     bool MulticastClientTransport::isConnected()\r
+diff -uNr RCF-0.4-orig/src/RCF/ObjectFactoryService.cpp RCF-0.4/src/RCF/ObjectFactoryService.cpp
+--- RCF-0.4-orig/src/RCF/ObjectFactoryService.cpp      2006-04-03 14:49:40.000000000 +0200
++++ RCF-0.4/src/RCF/ObjectFactoryService.cpp   2006-10-19 10:30:26.000000000 +0200
+@@ -69,8 +69,8 @@
+     }\r
\r
+     ObjectFactoryService::ObjectFactoryService(unsigned int numberOfTokens, unsigned int clientStubTimeoutS) :\r
+-        mClientStubTimeoutS(clientStubTimeoutS),\r
+         mTokenFactory(numberOfTokens),\r
++        mClientStubTimeoutS(clientStubTimeoutS),\r
+         mStubFactoryMapMutex(WriterPriority),\r
+         mStopFlag()\r
+     {\r
+@@ -260,6 +260,7 @@
+             RcfClient<I_ObjectFactory> factory(clientStub.releaseTransport());\r
+             //ScopeGuard guard( boost::bind(&reinstateClientTransport, boost::ref(clientStub), boost::ref(factory)) );\r
+             ScopeGuard guard = MakeGuard(reinstateClientTransport, boost::ref(clientStub), boost::ref(factory));\r
++            (void)guard; /* suppress unused var warning */\r
+             RCF::Token token;\r
+             bool ok = factory.createObject(RCF::Twoway, objectName, token);\r
+             if (ok)\r
+diff -uNr RCF-0.4-orig/src/RCF/OpenSslEncryptionFilter.cpp RCF-0.4/src/RCF/OpenSslEncryptionFilter.cpp
+--- RCF-0.4-orig/src/RCF/OpenSslEncryptionFilter.cpp   2006-01-11 01:07:02.000000000 +0100
++++ RCF-0.4/src/RCF/OpenSslEncryptionFilter.cpp        2006-10-19 10:47:36.000000000 +0200
+@@ -145,6 +145,9 @@
+             sslRole(sslRole),\r
+             certificateFile(certificateFile),\r
+             certificateFilePassword(certificateFilePassword),\r
++            preState(Ready),\r
++            postState(Ready),\r
++            retry(),\r
+             preBuffer(),\r
+             preBufferOrig(),\r
+             preBufferLen(),\r
+@@ -152,11 +155,8 @@
+             postBuffer(),\r
+             postBufferLen(),\r
+             postBufferRequested(),\r
+-            preState(Ready),\r
+-            postState(Ready),\r
+-            bioBufferSize(bioBufferSize),\r
+-            retry(),\r
+             err(),\r
++            bioBufferSize(bioBufferSize),\r
+             openSslEncryptionFilter(openSslEncryptionFilter)\r
+     {\r
+         init();\r
+diff -uNr RCF-0.4-orig/src/RCF/TcpAsioServerTransport.cpp RCF-0.4/src/RCF/TcpAsioServerTransport.cpp
+--- RCF-0.4-orig/src/RCF/TcpAsioServerTransport.cpp    2006-07-28 23:10:12.000000000 +0200
++++ RCF-0.4/src/RCF/TcpAsioServerTransport.cpp 2006-10-20 17:43:44.000000000 +0200
+@@ -20,10 +20,10 @@
+ namespace RCF {\r
\r
+     TcpAsioServerTransport::SessionState::SessionState(TcpAsioServerTransport &transport, DemuxerPtr demuxerPtr, ReadWriteMutexPtr readWriteMutexPtr) : \r
+-        mSynchronizedSocketPtr( new TcpAsioSynchronizedSocket(demuxerPtr, readWriteMutexPtr) ),\r
+         mState(Ready),\r
+         mReadBufferRemaining(),\r
+         mWriteBufferRemaining(),\r
++        mSynchronizedSocketPtr( new TcpAsioSynchronizedSocket(demuxerPtr, readWriteMutexPtr) ),\r
+         mReflecting(),\r
+         mTransport(transport)\r
+     {\r
+@@ -596,11 +596,11 @@
\r
+     TcpAsioServerTransport::TcpAsioServerTransport(int port) :\r
+         mDemuxerPtr(),\r
+-        mCycleTimerPtr(),\r
+-        mInterrupt(),\r
+         mReadWriteMutexPtr( new ReadWriteMutex(ReaderPriority) ),\r
+         mPort(port),\r
+         mAcceptorPtr(),\r
++        mCycleTimerPtr(),\r
++        mInterrupt(),\r
+         mStopFlag(),\r
+         pServer()\r
+     {}\r
+diff -uNr RCF-0.4-orig/src/RCF/TcpClientTransport.cpp RCF-0.4/src/RCF/TcpClientTransport.cpp
+--- RCF-0.4-orig/src/RCF/TcpClientTransport.cpp        2006-07-27 23:30:14.000000000 +0200
++++ RCF-0.4/src/RCF/TcpClientTransport.cpp     2006-10-20 17:05:35.000000000 +0200
+@@ -336,7 +336,7 @@
+             bufferLen = static_cast<int>(vec.size());\r
+             ret = timedReceive(buffer, bufferLen);\r
\r
+-            if (ret == length)\r
++            if (ret == (int)length)\r
+             {\r
+                 data.clear();\r
+                 data.append(&vec[0], length);\r
+diff -uNr RCF-0.4-orig/src/RCF/TcpServerTransport.cpp RCF-0.4/src/RCF/TcpServerTransport.cpp
+--- RCF-0.4-orig/src/RCF/TcpServerTransport.cpp        2006-01-11 01:07:02.000000000 +0100
++++ RCF-0.4/src/RCF/TcpServerTransport.cpp     2006-10-20 17:38:55.000000000 +0200
+@@ -81,15 +81,15 @@
+     }\r
\r
+     TcpServerTransport::TcpServerTransport(int port /*= 0*/) :\r
+-        allowedIpsMutex(WriterPriority),\r
+         FdPartitionCount(10),\r
+         pSessionManager(),\r
+-        networkInterface("0.0.0.0"),\r
+-        maxPendingConnectionCount(100),\r
+-        port(port),\r
+-        selecting(),\r
++        acceptorFd(-1),\r
+         mStopFlag(),\r
+-        acceptorFd(-1)\r
++        selecting(),\r
++        allowedIpsMutex(WriterPriority),\r
++        port(port),\r
++        networkInterface("0.0.0.0"),\r
++        maxPendingConnectionCount(100)\r
+     {}\r
\r
+     void TcpServerTransport::setSessionManager(I_SessionManager &sessionManager)\r
+@@ -256,7 +256,7 @@
+             readBufferRemaining -= ret;\r
+             return 0;\r
+         }\r
+-        else if (ret == readBufferRemaining)\r
++        else if (ret == (int)readBufferRemaining)\r
+         {\r
+             // full packet has now been read\r
+             if (sessionState.state == SessionState::ReadingDataCount)\r
+diff -uNr RCF-0.4-orig/src/RCF/TimedBsdSockets.cpp RCF-0.4/src/RCF/TimedBsdSockets.cpp
+--- RCF-0.4-orig/src/RCF/TimedBsdSockets.cpp   2006-01-27 21:42:30.000000000 +0100
++++ RCF-0.4/src/RCF/TimedBsdSockets.cpp        2006-10-20 17:37:39.000000000 +0200
+@@ -81,7 +81,7 @@
+             RCF_ASSERT(ret != 0);\r
+             if (ret > 0)\r
+             {\r
+-                RCF_ASSERT(0 < ret && ret <= bytesRemaining);\r
++                RCF_ASSERT(0 < ret && ret <= (int)bytesRemaining);\r
+                 bytesRemaining -= ret;\r
+                 bytesSent += ret;\r
+                 if (bytesRemaining == 0)\r
+diff -uNr RCF-0.4-orig/src/RCF/UdpServerTransport.cpp RCF-0.4/src/RCF/UdpServerTransport.cpp
+--- RCF-0.4-orig/src/RCF/UdpServerTransport.cpp        2006-02-14 15:23:26.000000000 +0100
++++ RCF-0.4/src/RCF/UdpServerTransport.cpp     2006-10-20 17:40:22.000000000 +0200
+@@ -18,8 +18,8 @@
+         pSessionManager(),\r
+         port(port),\r
+         fd(-1),\r
+-        pollingDelayMs(),\r
+-        mStopFlag()\r
++        mStopFlag(),\r
++        pollingDelayMs()\r
+     {\r
+     }\r
\r
+@@ -193,7 +193,7 @@
+         *(int *)(&writeBuffer[0]) = dataLength;\r
+         const sockaddr_in &remoteAddr = sessionStatePtr->remoteAddress.getSockAddr();\r
+         int len = sendto(fd, &writeBuffer[0], static_cast<int>(writeBuffer.size()), 0, (const sockaddr *) &remoteAddr, sizeof(remoteAddr));\r
+-        if (len != writeBuffer.size())\r
++        if (len != (int)writeBuffer.size())\r
+         {\r
+             RCF_THROW(ServerTransportException, "sendto() failed")(fd)(len)(writeBuffer.size());\r
+         }\r
+diff -uNr RCF-0.4-orig/src/RCF/ZlibCompressionFilter.cpp RCF-0.4/src/RCF/ZlibCompressionFilter.cpp
+--- RCF-0.4-orig/src/RCF/ZlibCompressionFilter.cpp     2006-01-11 01:07:02.000000000 +0100
++++ RCF-0.4/src/RCF/ZlibCompressionFilter.cpp  2006-10-23 16:46:50.059387129 +0200
+@@ -67,14 +67,14 @@
\r
+     ZlibCompressionReadFilter::ZlibCompressionReadFilter(ZlibCompressionFilter &filter, int bufferSize) :\r
+         filter(filter),\r
++        d_stream_(),\r
++        mBuffer(bufferSize),\r
+         preBuffer(),\r
+         preBufferLen(),\r
+         preBufferOrig(),\r
+         preBufferLenOrig(),\r
+         postBuffer(),\r
+         postBufferLen(),\r
+-        mBuffer(bufferSize),\r
+-        d_stream_(),\r
+         zerr_(Z_OK),\r
+         err(),\r
+         decompressionStateInited()\r
+@@ -170,14 +170,14 @@
\r
+     ZlibCompressionWriteFilter::ZlibCompressionWriteFilter(ZlibCompressionFilter &filter, int bufferSize, bool stateful) :\r
+         filter(filter),\r
++        c_stream_(),\r
++        mBuffer(bufferSize),\r
+         preBuffer(),\r
+         preBufferLen(),\r
+         preBufferOrig(),\r
+         preBufferLenOrig(),\r
+         postBuffer(),\r
+         postBufferLen(),\r
+-        mBuffer(bufferSize),\r
+-        c_stream_(),\r
+         zerr_(Z_OK),\r
+         err(),\r
+         compressionStateInited(),\r
+diff -uNr RCF-0.4-orig/src/SF/Makefile RCF-0.4/src/SF/Makefile
+--- RCF-0.4-orig/src/SF/Makefile       1970-01-01 01:00:00.000000000 +0100
++++ RCF-0.4/src/SF/Makefile    2006-10-24 17:43:53.113922445 +0200
+@@ -0,0 +1,54 @@
++#
++# Makefile for SF source files
++# (for syntax check, i.e. to compile all sources separately)
++#
++# Martin Dietze <dietze@4g-systems.com>
++#
++
++O = .o
++A = .a
++D = .so
++
++.PHONY: all clean shared syntax
++
++CXX = g++
++#HAS_MM = yes
++AR = ar
++CDEFINES = -DRCF_USE_OPENSSL -DRCF_USE_ZLIB -DRCF_USE_SF_SERIALIZATION \
++      -DRCF_USE_BOOST_ASIO
++CPPFLAGS = -I../../include
++CXXTHREADS = -DRCF_USE_BOOST_THREADS
++CSHARED =
++CXXFLAGS = -ansi -Wall -Werror -O3
++prefix = /usr/local
++
++OBJS = Archive.o DataPtr.o deque.o Encoding.o Exception.o IBinaryStream.o \
++      INativeBinaryStream.o ITextStream.o I_Stream.o list.o map.o memory.o \
++      Node.o OBinaryStream.o ONativeBinaryStream.o OTextStream.o \
++      PortableTypes.o Registry.o scoped_ptr.o SerializeDynamicArray.o \
++      SerializeFundamental.o SerializePolymorphic.o Serializer.o \
++      SerializeSmartPtr.o SerializeStaticArray.o SerializeStl.o set.o \
++      SfNew.o shared_ptr.o Stream.o string.o Tools.o vector.o
++SOURCES = $(OBJS:%.o=%.cpp)
++
++all:
++      @echo "Nothing do be done for $@ in SF. Run $(MAKE) in the ../RCF directory."
++
++
++shared:
++      @echo "Nothing do be done for $@ in SF. Run $(MAKE) in the ../RCF directory."
++
++syntax: $(OBJS)
++
++clean:
++      rm -f $(OBJS) *~ .depend
++
++%.o: %.cpp
++      $(CXX) -c $(CSHARED) $(CPPFLAGS) $(CDEFINES) $(CXXTHREADS) $(CXXFLAGS) $< -o $@
++
++.depend: $(SOURCES)
++      $(CXX) $(CPPFLAGS) $(CDEFINES) -MM $(SOURCES) >$@
++
++ifeq (yes,$(HAS_MM))
++sinclude .depend
++endif
+Binary files RCF-0.4-orig/src/SF/libSF.a and RCF-0.4/src/SF/libSF.a differ
+diff -uNr RCF-0.4-orig/test/Makefile RCF-0.4/test/Makefile
+--- RCF-0.4-orig/test/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ RCF-0.4/test/Makefile      2006-10-24 17:44:01.690302364 +0200
+@@ -0,0 +1,163 @@
++#
++# Makefile for RCF test programs
++#
++# Martin Dietze <dietze@4g-systems.com>
++#
++
++O = .o
++A = .a
++D = .so
++
++.PHONY: all clean syntax test test-rcs-multi test-rcs-single test-rcs-filters
++
++CXX = g++
++#HAS_MM = yes
++AR = ar
++CDEFINES = -DRCF_USE_OPENSSL -DRCF_USE_ZLIB -DRCF_USE_SF_SERIALIZATION \
++      -DRCF_USE_BOOST_ASIO
++CPPFLAGS = -I../include
++CXXTHREADS = -DRCF_USE_BOOST_THREADS
++CXXFLAGS = -ansi -Wall -Wno-unused-function -Werror -O3
++LDFLAGS = -L../src/RCF
++LIBSMT = -lRCFmt -lboost_thread -lz -lssl
++LIBSST = -lRCFst -lboost_thread -lz -lssl
++
++PROGRAMS = Test_Binding Test_ClientConnectionDrop Test_ClientInfo \
++      Test_ClientTimeout Test_Client_Minimal Test_Client_Performance \
++      Test_CycleServer_St Test_CycleServer_Mt Test_Endpoint \
++      Test_FilterPerformance Test_Filters Test_General Test_Inheritance \
++      Test_InitDeinit Test_IpRestriction Test_Minimal \
++      Test_MultiThreadedServer Test_MultipleClient Test_NetworkPerformance \
++      Test_Notification Test_ObjectFactoryService Test_Performance \
++      Test_Polymorphic Test_Serialization Test_Server_Minimal \
++      Test_Server_Performance Test_SingleThreadedServer Test_StubSerialization
++OBJS = $(PROGRAMS:%=%.o) Test_SingleThreadedServer_St.o
++SOURCES = $(OBJS:%.o=%.cpp)
++NAME = libRCF
++LIB = $(NAME)$A
++
++test: all
++      @echo "From ze test its beginnink:"
++      $(MAKE) test-rcs-multi test-rcs-single
++      @if [ -f client.pem ] && [ -f server.pem ]; then \
++              echo $(MAKE) test-rcs-filters; \
++              $(MAKE) test-rcs-filters; \
++      else \
++              echo "client.pem and/or server.pem not found, skipping filter tests."; \
++      fi
++      @echo "Not run automatically:"
++      @echo "./Test_Client_Minimal"
++      @echo "./Test_Server_Minimal"
++      @echo "./Test_Client_Performance"
++      @echo "./Test_Server_Performance"
++      @echo "./Test_NetworkPerformance"
++      @echo "From ze test its end."
++
++
++test-rcs-multi:
++      ./Test_Binding
++      ./Test_ClientConnectionDrop
++      ./Test_ClientInfo
++      ./Test_ClientTimeout
++      ./Test_CycleServer_Mt
++      ./Test_Endpoint
++      ./Test_General
++      ./Test_Inheritance
++      ./Test_InitDeinit
++      ./Test_IpRestriction
++      ./Test_Minimal
++      ./Test_MultipleClient
++      ./Test_MultiThreadedServer
++      ./Test_Notification
++      ./Test_ObjectFactoryService
++      ./Test_Performance
++      ./Test_Polymorphic
++      ./Test_Serialization
++      ./Test_StubSerialization
++
++test-rcs-single:
++      ./Test_SingleThreadedServer
++      ./Test_CycleServer_St
++
++test-rcs-filters:
++      ./Test_FilterPerformance
++      ./Test_Filters
++
++all: $(PROGRAMS)
++
++Test_Binding: Test_Binding.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_ClientConnectionDrop: Test_ClientConnectionDrop.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_ClientInfo: Test_ClientInfo.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_ClientTimeout: Test_ClientTimeout.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_Client_Minimal: Test_Client_Minimal.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_Client_Performance: Test_Client_Performance.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_CycleServer_Mt: Test_CycleServer_Mt.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_Endpoint: Test_Endpoint.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_FilterPerformance: Test_FilterPerformance.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_Filters: Test_Filters.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_General: Test_General.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_Inheritance: Test_Inheritance.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_InitDeinit: Test_InitDeinit.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_IpRestriction: Test_IpRestriction.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_Minimal: Test_Minimal.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_MultiThreadedServer: Test_MultiThreadedServer.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_MultipleClient: Test_MultipleClient.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_NetworkPerformance: Test_NetworkPerformance.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_Notification: Test_Notification.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_ObjectFactoryService: Test_ObjectFactoryService.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_Performance: Test_Performance.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_Polymorphic: Test_Polymorphic.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_Serialization: Test_Serialization.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_Server_Minimal: Test_Server_Minimal.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_Server_Performance: Test_Server_Performance.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++Test_StubSerialization: Test_StubSerialization.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LIBSMT)
++
++Test_SingleThreadedServer: Test_SingleThreadedServer_St.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGSST) $(LIBSST)
++Test_CycleServer_St: Test_CycleServer_St.o
++      $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGSST) $(LIBSST)
++
++clean:
++      rm -f $(PROGRAMS) $(OBJS) *~ .depend
++
++%_St.o: %.cpp
++      $(CXX) -c $(CPPFLAGS) $(CDEFINES) $(CXXFLAGS) $< -o $@
++
++%_Mt.o: %.cpp
++      $(CXX) -c $(CPPFLAGS) $(CDEFINES) $(CXXFLAGS) $(CXXTHREADS) $< -o $@
++
++%.o: %.cpp
++      $(CXX) -c $(CPPFLAGS) $(CDEFINES) $(CXXFLAGS) $(CXXTHREADS) $< -o $@
++
++.depend: $(SOURCES)
++      $(CXX) $(CPPFLAGS) $(CDEFINES) -MM $(SOURCES) >$@
++
++ifeq (yes,$(HAS_MM))
++sinclude .depend
++endif
+diff -uNr RCF-0.4-orig/test/Test_Binding.cpp RCF-0.4/test/Test_Binding.cpp
+--- RCF-0.4-orig/test/Test_Binding.cpp 2006-02-07 21:37:18.000000000 +0100
++++ RCF-0.4/test/Test_Binding.cpp      2006-10-24 10:43:51.099624209 +0200
+@@ -25,7 +25,7 @@
\r
+     util::CommandLine::getSingleton().parse(argc, argv);\r
\r
+-    for (int i=0; i<RCF::getTransportFactories().size(); ++i)\r
++    for (int i=0; i<(int)RCF::getTransportFactories().size(); ++i)\r
+     {\r
+         RCF::TransportFactoryPtr transportFactoryPtr = RCF::getTransportFactories()[i];\r
+         std::pair<RCF::ServerTransportPtr, RCF::ClientTransportAutoPtrPtr> transports = transportFactoryPtr->createTransports();\r
+diff -uNr RCF-0.4-orig/test/Test_ClientConnectionDrop.cpp RCF-0.4/test/Test_ClientConnectionDrop.cpp
+--- RCF-0.4-orig/test/Test_ClientConnectionDrop.cpp    2006-07-30 12:03:52.000000000 +0200
++++ RCF-0.4/test/Test_ClientConnectionDrop.cpp 2006-10-24 11:08:26.273040553 +0200
+@@ -29,7 +29,7 @@
\r
+     util::CommandLine::getSingleton().parse(argc, argv);\r
\r
+-    for (int i=0; i<RCF::getTransportFactories().size(); ++i)\r
++    for (int i=0; i<(int)RCF::getTransportFactories().size(); ++i)\r
+     {\r
+         RCF::TransportFactoryPtr transportFactoryPtr = RCF::getTransportFactories()[i];\r
+         std::pair<RCF::ServerTransportPtr, RCF::ClientTransportAutoPtrPtr> transports = transportFactoryPtr->createTransports();\r
+diff -uNr RCF-0.4-orig/test/Test_ClientInfo.cpp RCF-0.4/test/Test_ClientInfo.cpp
+--- RCF-0.4-orig/test/Test_ClientInfo.cpp      2006-01-10 19:56:54.000000000 +0100
++++ RCF-0.4/test/Test_ClientInfo.cpp   2006-10-24 11:23:39.441333027 +0200
+@@ -35,7 +35,7 @@
\r
+     util::CommandLine::getSingleton().parse(argc, argv);\r
\r
+-    for (int i=0; i<RCF::getIpTransportFactories().size(); ++i)\r
++    for (int i=0; i<(int)RCF::getIpTransportFactories().size(); ++i)\r
+     {\r
+         RCF::TransportFactoryPtr transportFactoryPtr = RCF::getTransportFactories()[i];\r
+         std::pair<RCF::ServerTransportPtr, RCF::ClientTransportAutoPtrPtr> transports = transportFactoryPtr->createTransports();\r
+diff -uNr RCF-0.4-orig/test/Test_ClientTimeout.cpp RCF-0.4/test/Test_ClientTimeout.cpp
+--- RCF-0.4-orig/test/Test_ClientTimeout.cpp   2006-03-25 23:37:02.000000000 +0100
++++ RCF-0.4/test/Test_ClientTimeout.cpp        2006-10-24 11:25:10.069308213 +0200
+@@ -44,7 +44,7 @@
+ {\r
+     util::CommandLine::getSingleton().parse(argc, argv);\r
\r
+-    for (int i=0; i<RCF::getTransportFactories().size(); ++i)\r
++    for (int i=0; i<(int)RCF::getTransportFactories().size(); ++i)\r
+     {\r
+         RCF::TransportFactoryPtr transportFactoryPtr = RCF::getTransportFactories()[i];\r
+         std::pair<RCF::ServerTransportPtr, RCF::ClientTransportAutoPtrPtr> transports = transportFactoryPtr->createTransports();\r
+diff -uNr RCF-0.4-orig/test/Test_CycleServer.cpp RCF-0.4/test/Test_CycleServer.cpp
+--- RCF-0.4-orig/test/Test_CycleServer.cpp     2006-01-04 08:55:06.000000000 +0100
++++ RCF-0.4/test/Test_CycleServer.cpp  2006-10-24 11:36:36.003409416 +0200
+@@ -46,7 +46,7 @@
+ {\r
+     util::CommandLine::getSingleton().parse(argc, argv);\r
\r
+-    for (int i=0; i<RCF::getTransportFactories().size(); ++i)\r
++    for (int i=0; i<(int)RCF::getTransportFactories().size(); ++i)\r
+     {\r
\r
+         RCF::TransportFactoryPtr transportFactoryPtr = RCF::getTransportFactories()[i];\r
+@@ -107,7 +107,7 @@
+             serverThread.reset( new boost::thread( boost::bind(serverThreadTask, boost::ref(server)) ) );\r
+             server.addJoinFunctor(joinServerThread);\r
\r
+-            for (int i=0; i<numberOfTokens; ++i)\r
++            for (int i=0; i<(int)numberOfTokens; ++i)\r
+             {\r
+                 bool ok = RCF::createRemoteObject<I_Echo>(myClient);\r
+                 BOOST_CHECK(ok);\r
+@@ -118,7 +118,7 @@
\r
+             Platform::OS::Sleep(5);\r
\r
+-            for (int i=0; i<numberOfTokens; ++i)\r
++            for (int i=0; i<(int)numberOfTokens; ++i)\r
+             {\r
+                 bool ok = RCF::createRemoteObject<I_Echo>(myClient);\r
+                 BOOST_CHECK(ok);\r
+diff -uNr RCF-0.4-orig/test/Test_Endpoint.cpp RCF-0.4/test/Test_Endpoint.cpp
+--- RCF-0.4-orig/test/Test_Endpoint.cpp        2006-02-07 21:37:18.000000000 +0100
++++ RCF-0.4/test/Test_Endpoint.cpp     2006-10-24 11:25:06.821165733 +0200
+@@ -52,7 +52,7 @@
\r
+     util::CommandLine::getSingleton().parse(argc, argv);\r
\r
+-    for (int i=0; i<RCF::getTransportFactories().size(); ++i)\r
++    for (int i=0; i<(int)RCF::getTransportFactories().size(); ++i)\r
+     {\r
+         RCF::TransportFactoryPtr transportFactoryPtr = RCF::getTransportFactories()[i];\r
+         std::pair<RCF::ServerTransportPtr, RCF::ClientTransportAutoPtrPtr> transports;\r
+diff -uNr RCF-0.4-orig/test/Test_Filters.cpp RCF-0.4/test/Test_Filters.cpp
+--- RCF-0.4-orig/test/Test_Filters.cpp 2006-04-03 20:33:04.000000000 +0200
++++ RCF-0.4/test/Test_Filters.cpp      2006-10-24 11:53:08.334995214 +0200
+@@ -65,21 +65,21 @@
+     {\r
+         RcfClient<X> client(clientTransportAutoPtr->clone());\r
\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+1 );\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+2 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+1 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+2 );\r
\r
+         client.getClientStub().setTransportFilters(filterChains[i]);\r
\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+3 );\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+4 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+3 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+4 );\r
\r
+         if (removable)\r
+         {\r
+             client.getClientStub().setTransportFilters(std::vector<RCF::FilterPtr>());\r
+         }\r
\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+5 );\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+6 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+5 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+6 );\r
+     }\r
+     \r
+ }\r
+@@ -133,18 +133,18 @@
+         const std::vector<RCF::FilterPtr> &filterChain = filterChains[i];\r
\r
+         RcfClient<X> client(clientEndpoint);\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+1 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+1 );\r
\r
+         client.getClientStub().setPayloadFilters(filterChain);\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+2 );\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+3 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+2 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+3 );\r
\r
+         client.getClientStub().setPayloadFilters(std::vector<RCF::FilterPtr>());\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+4 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+4 );\r
\r
+         client.getClientStub().setPayloadFilters(filterChain);\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+5 );\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+6 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+5 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+6 );\r
+     }\r
\r
+ }\r
+@@ -186,18 +186,18 @@
+         const std::vector<RCF::FilterPtr> &filterChain = filterChains[i];\r
\r
+         RcfClient<X> client(clientEndpoint);\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+1 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+1 );\r
\r
+         client.getClientStub().setPayloadFilters(filterChain);\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+2 );\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+3 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+2 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+3 );\r
\r
+         client.getClientStub().setPayloadFilters(std::vector<RCF::FilterPtr>());\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+4 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+4 );\r
\r
+         client.getClientStub().setPayloadFilters(filterChain);\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+5 );\r
+-        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*i+6 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+5 );\r
++        ret = client.func(RCF::Twoway); BOOST_CHECK( ret == 6*(int)i+6 );\r
+     }\r
\r
+ }\r
+diff -uNr RCF-0.4-orig/test/Test_Inheritance.cpp RCF-0.4/test/Test_Inheritance.cpp
+--- RCF-0.4-orig/test/Test_Inheritance.cpp     2006-01-27 21:42:32.000000000 +0100
++++ RCF-0.4/test/Test_Inheritance.cpp  2006-10-24 12:20:07.734199170 +0200
+@@ -8,6 +8,7 @@
+ #include <RCF/util/CommandLine.hpp>\r
+ #include <RCF/util/PortNumbers.hpp>\r
\r
++/*\r
+ // interface inheritance hierarchies\r
+ //\r
+ //A1 <- B1 <- C1 <-\r
+@@ -23,6 +24,7 @@
+ //A1 <- Y <-\r
+ //\r
+ // I_E <- E\r
++*/\r
\r
+ RCF_BEGIN(A1, "A1")\r
+     RCF_METHOD_R0(std::string, funcA1)\r
+diff -uNr RCF-0.4-orig/test/Test_IpRestriction.cpp RCF-0.4/test/Test_IpRestriction.cpp
+--- RCF-0.4-orig/test/Test_IpRestriction.cpp   2006-02-07 21:37:18.000000000 +0100
++++ RCF-0.4/test/Test_IpRestriction.cpp        2006-10-24 12:27:45.390368243 +0200
+@@ -33,7 +33,6 @@
+     util::CommandLine::getSingleton().parse(argc, argv);\r
\r
+     std::string localIp = "localhost";\r
+-    int localPort = 0;\r
\r
+     for (unsigned int i=0; i<RCF::getIpTransportFactories().size(); ++i)\r
+     {\r
+diff -uNr RCF-0.4-orig/test/Test_NetworkPerformance.cpp RCF-0.4/test/Test_NetworkPerformance.cpp
+--- RCF-0.4-orig/test/Test_NetworkPerformance.cpp      2006-03-20 15:48:54.000000000 +0100
++++ RCF-0.4/test/Test_NetworkPerformance.cpp   2006-10-24 12:33:16.053031974 +0200
+@@ -222,4 +222,5 @@
+         RCF_VERIFY(0, "no protocol specified");\r
+     }\r
\r
+-}
+\ No newline at end of file
++}\r
++\r
+diff -uNr RCF-0.4-orig/test/Test_Notification.cpp RCF-0.4/test/Test_Notification.cpp
+--- RCF-0.4-orig/test/Test_Notification.cpp    2006-03-19 13:20:04.000000000 +0100
++++ RCF-0.4/test/Test_Notification.cpp 2006-10-24 12:34:35.896571773 +0200
+@@ -127,9 +127,9 @@
\r
+             for (unsigned int k=0; k<events.size(); ++k)\r
+             {\r
+-                BOOST_CHECK(events[k].nA == k);\r
+-                BOOST_CHECK(events[k].nB == k);\r
+-                BOOST_CHECK(events[k].nC == k);\r
++                BOOST_CHECK(events[k].nA == (int)k);\r
++                BOOST_CHECK(events[k].nB == (int)k);\r
++                BOOST_CHECK(events[k].nC == (int)k);\r
+             }\r
+         }\r
\r
+diff -uNr RCF-0.4-orig/test/Test_ObjectFactoryService.cpp RCF-0.4/test/Test_ObjectFactoryService.cpp
+--- RCF-0.4-orig/test/Test_ObjectFactoryService.cpp    2006-04-02 22:29:52.000000000 +0200
++++ RCF-0.4/test/Test_ObjectFactoryService.cpp 2006-10-24 12:37:14.587606124 +0200
+@@ -78,7 +78,7 @@
+         BOOST_CHECK( s == s0 );\r
+         BOOST_CHECK(token != RCF::Token());\r
\r
+-        for (int j=0; j<numberOfTokens-1;++j)\r
++        for (int j=0; j<(int)numberOfTokens-1;++j)\r
+         {\r
+             ok = RCF::createRemoteObject<I_Echo>(client);\r
+             BOOST_CHECK(ok);\r
+diff -uNr RCF-0.4-orig/test/Test_Polymorphic.cpp RCF-0.4/test/Test_Polymorphic.cpp
+--- RCF-0.4-orig/test/Test_Polymorphic.cpp     2006-04-03 14:33:42.000000000 +0200
++++ RCF-0.4/test/Test_Polymorphic.cpp  2006-10-24 12:45:11.860774284 +0200
+@@ -288,7 +288,7 @@
+                 spa = zClient.f2( typeid(C).name() ); BOOST_CHECK( dynamic_cast<C *>(spa.get()) != NULL );\r
+             }\r
+             {\r
+-                A *pa = NULL;\r
++                //A *pa = NULL;\r
+                 //xClient.f3(typeid(B).name(), pa); BOOST_CHECK( dynamic_cast<B *>(pa) != NULL );\r
+                 //xClient.f3(typeid(C).name(), pa); BOOST_CHECK( dynamic_cast<C *>(pa) != NULL );\r
\r
+diff -uNr RCF-0.4-orig/test/Test_Serialization.cpp RCF-0.4/test/Test_Serialization.cpp
+--- RCF-0.4-orig/test/Test_Serialization.cpp   2006-04-03 15:33:56.000000000 +0200
++++ RCF-0.4/test/Test_Serialization.cpp        2006-10-24 12:49:32.708372131 +0200
+@@ -507,7 +507,7 @@
\r
+     // Single dimensional static array\r
+     int pn1[SIZE];\r
+-    for (int i=0;i<SIZE;i++)\r
++    for (int i=0;i<(int)SIZE;i++)\r
+         pn1[i] = i-20;\r
\r
+     int pn2[SIZE];\r
+diff -uNr RCF-0.4-orig/test/port.txt RCF-0.4/test/port.txt
+--- RCF-0.4-orig/test/port.txt 1970-01-01 01:00:00.000000000 +0100
++++ RCF-0.4/test/port.txt      2006-10-24 15:51:18.531284783 +0200
+@@ -0,0 +1 @@
++50271
+\ No newline at end of file
diff --git a/packages/librcf/files/rcf-0.4-openembedded.diff b/packages/librcf/files/rcf-0.4-openembedded.diff
new file mode 100644 (file)
index 0000000..82f0ea0
--- /dev/null
@@ -0,0 +1,13 @@
+--- RCF-0.4/src/RCF/Makefile-orig      2006-10-26 13:51:43.197747615 +0200
++++ RCF-0.4/src/RCF/Makefile   2006-10-26 13:52:02.594606726 +0200
+@@ -16,8 +16,8 @@
+ CXX = g++
+ #HAS_MM = yes
+ AR = ar
+-CDEFINES = -DRCF_USE_OPENSSL -DRCF_USE_ZLIB -DRCF_USE_SF_SERIALIZATION \
+-      -DRCF_USE_BOOST_ASIO
++CDEFINES = -DRCF_USE_BOOST_ASIO -DRCF_USE_SF_SERIALIZATION \
++      -DBOOST_ASIO_DISABLE_EPOLL
+ CPPFLAGS = -I../../include
+ CXXTHREADS = -DRCF_USE_BOOST_THREADS
+ CSHARED =
diff --git a/packages/librcf/librcf_0.4.bb b/packages/librcf/librcf_0.4.bb
new file mode 100644 (file)
index 0000000..d375fa9
--- /dev/null
@@ -0,0 +1,46 @@
+DESCRIPTION = "A library for object-oriented inter process communication"
+SECTION = "base"
+PRIORITY = "optional"
+MAINTAINER = "Martin Dietze <dietze@4g-systems.com>
+LICENSE = "unknown"
+DEPENDS="zlib openssl boost-asio"
+RDEPENDS = "libstdc++5 libgcc1"
+
+# the SOURCE_URI requires authentication via web browser and cookie (gasp)
+# all we can do right now is download the file and save it under sources/
+SRC_URI = "http://www.codeproject.com/threads/Rcf_Ipc_For_Cpp/RCF-04.zip \
+       file://rcf-0.4-g++-4.1.diff;patch=1 \
+       file://rcf-0.4-openembedded.diff;patch=1"
+S = "${WORKDIR}/RCF-${PV}"
+
+CPPFLAGS_prepend = "-I../../include "
+BUILD_OPTIMIZATION = "-Os"
+
+do_compile() {
+       oe_runmake CXXFLAGS="-pthread ${CXXFLAGS}" -C src/RCF shared-mt
+       oe_runmake -C src/RCF shared-st
+       rm -f src/RCF/*.o
+       oe_runmake CXXFLAGS="-pthread ${CXXFLAGS}" -C src/RCF mt
+       oe_runmake -C src/RCF st
+}
+
+do_install() {
+       oe_runmake -C src/RCF prefix=/usr DESTDIR=${D} install
+       find ${D}/usr/include -name "*.diff" | xargs rm
+}
+
+do_stage() {
+       cd ${S}
+       install -d -m 775 ${STAGING_LIBDIR}
+       cp -dp src/RCF/libRCF[sm]t.a ${STAGING_LIBDIR}
+       cp -dp src/RCF/libRCF[sm]t.so* ${STAGING_LIBDIR}
+       install -d -m 775 ${STAGING_INCDIR}
+       tar -C include --exclude='*.diff' -cvf - . | tar -C ${STAGING_INCDIR} -xvf -
+}
+
+PACKAGES = "${PN}-mt ${PN}-st ${PN}-dev"
+FILES_${PN}-mt = "/usr/lib/libRCFmt.so*"
+FILES_${PN}-st = "/usr/lib/libRCFst.so*"
+FILES_${PN}-dev = "/usr/lib/libRCF[sm]t.a /usr/include"
+
+IPKG_ARCHS = "all mipsel ${MACHINE} mtx-1u"