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