Add John MucCullough's simple key/value storage server.
[bluesky.git] / kvstore / SConscript
diff --git a/kvstore/SConscript b/kvstore/SConscript
new file mode 100644 (file)
index 0000000..6414023
--- /dev/null
@@ -0,0 +1,65 @@
+Import('env')
+
+protobuf = Builder(
+    action = (
+        'protoc --proto_path=${SOURCE.dir} --cpp_out=${TARGET.dir} $SOURCE'
+             ),
+    single_source = True,
+    )
+
+env["BUILDERS"]["Protobuf"] = protobuf
+
+env.ParseConfig("echo -I./protobufrpc")
+env.ParseConfig("echo -I/opt/local/include -L/opt/local/lib")
+
+if not env.has_key('LIBS'):
+    env['LIBS'] = []
+
+env['LIBS'] += ['protobuf',
+                'pthread',
+                'boost_thread-mt',
+                'boost_regex-mt',
+                'boost_system-mt',
+                'boost_program_options-mt',
+                'db']
+
+protobufrpc = SConscript(dirs=['./protobufrpc/'], exports='env')
+
+kvstore_proto_files = env.Protobuf(
+        target = [ 'kvstore.pb.cc', 'kvstore.pb.h' ],
+        source = 'kvstore.proto'
+    )
+
+kvservice_files = ['kvservice.cc', 'backend.cc']
+kvclient_files = ['kvclient.cc']
+
+kvservice = env.StaticLibrary('kvservice', kvservice_files)
+kvclient = env.StaticLibrary('kvclient', kvclient_files)
+kvstore_proto = env.StaticLibrary('kvstore', kvstore_proto_files)
+
+env.Program('kvstore', ['kvstore.cc']
+                       + kvservice
+                       + kvstore_proto
+                       + protobufrpc)
+
+env.Program('kvtest',
+            ['kvtest.cc']
+                    + kvservice
+                    + kvclient
+                    + kvstore_proto
+                    + protobufrpc,
+            LIBS=env['LIBS']+['gtest'])
+
+env.Program('kvbench',
+            ['kvbench.cc']
+                    + kvclient
+                    + kvstore_proto
+                    + protobufrpc)
+
+products = {
+            'kvservice': kvservice,
+            'kvclient': kvclient,
+            'kvstore_proto': kvstore_proto,
+           }
+
+Return('products')