From 6622e5e6e2e36f510d9083a8a8dd1616bf6705b2 Mon Sep 17 00:00:00 2001
From: Dan Hirsch <thequux@upstandinghackers.com>
Date: Thu, 12 Sep 2013 10:39:50 -0700
Subject: [PATCH] Added build system for C++

---
 SConstruct                        |  6 ++++++
 src/SConscript                    | 12 ++++++++++--
 src/bindings/cpp/SConscript       | 14 ++++++++++++++
 src/{ => bindings/cpp}/hammer.cxx |  0
 src/{ => bindings/cpp}/hammer.hxx |  0
 5 files changed, 30 insertions(+), 2 deletions(-)
 create mode 100644 src/bindings/cpp/SConscript
 rename src/{ => bindings/cpp}/hammer.cxx (100%)
 rename src/{ => bindings/cpp}/hammer.hxx (100%)

diff --git a/SConstruct b/SConstruct
index 429b0d8b..84a6991c 100644
--- a/SConstruct
+++ b/SConstruct
@@ -1,5 +1,6 @@
 # -*- python -*-
 import os
+import os.path
 env = Environment()
 
 env.MergeFlags("-std=gnu99 -Wall -Wextra -Werror -Wno-unused-parameter -Wno-attributes -lrt")
@@ -28,8 +29,13 @@ else:
 if os.getenv("CC") == "clang":
     env.Replace(CC="clang",
                 CXX="clang++")
+
+#rootpath = env['ROOTPATH'] = os.path.abspath('.')
+#env.Append(CPPPATH=os.path.join('#', "hammer"))
+
 Export('env')
 
+
 env.SConscript(["src/SConscript"], variant_dir='build/$VARIANT/src')
 env.SConscript(["examples/SConscript"], variant_dir='build/$VARIANT/examples')
 
diff --git a/src/SConscript b/src/SConscript
index e87a038c..e825df27 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -1,6 +1,8 @@
 # -*- python -*-
 Import('env')
 
+bindings = ['cpp']
+
 parsers = ['parsers/%s.c'%s for s in
            ['action',
             'and',
@@ -50,11 +52,17 @@ tests = ['t_benchmark.c',
          't_grammar.c',
          't_misc.c']
 
-libhammer = env.SharedLibrary('hammer', parsers + backends + misc_hammer_parts)
-libhammer = env.StaticLibrary('hammer', parsers + backends + misc_hammer_parts)
+libhammer_shared = env.SharedLibrary('hammer', parsers + backends + misc_hammer_parts)
+libhammer_static = env.StaticLibrary('hammer', parsers + backends + misc_hammer_parts)
+
+
 
 testenv = env.Clone()
 testenv.ParseConfig('pkg-config --cflags --libs glib-2.0')
 testenv.Append(LIBS=['hammer'], LIBPATH=['.'])
 testenv.Program('test_suite', tests + ['test_suite.c'])
     
+Export("libhammer_static libhammer_shared")
+
+for b in bindings:
+    env.SConscript(["bindings/%s/SConscript" % b])
diff --git a/src/bindings/cpp/SConscript b/src/bindings/cpp/SConscript
new file mode 100644
index 00000000..67c93fbf
--- /dev/null
+++ b/src/bindings/cpp/SConscript
@@ -0,0 +1,14 @@
+# -*- python -*-
+
+print "In CPP"
+
+Import("libhammer_shared")
+Import("libhammer_static")
+Import("env")
+
+env.Append(CPPPATH=["../.."])
+
+binding_sources = ['hammer.cxx']
+
+libhammerxx_shared = env.SharedLibrary("hammer++", binding_sources + [libhammer_shared])
+libhammerxx_static = env.StaticLibrary("hammer++", binding_sources + [libhammer_static])
diff --git a/src/hammer.cxx b/src/bindings/cpp/hammer.cxx
similarity index 100%
rename from src/hammer.cxx
rename to src/bindings/cpp/hammer.cxx
diff --git a/src/hammer.hxx b/src/bindings/cpp/hammer.hxx
similarity index 100%
rename from src/hammer.hxx
rename to src/bindings/cpp/hammer.hxx
-- 
GitLab