diff --git a/SConstruct b/SConstruct index 429b0d8b5a907e14efa7b66a5b1466601c1e4628..84a6991cbfd2880120280542c9426e5f2ed65286 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 e87a038cb85568a2d23843be1c52ec0a7ee46c46..e825df277e06d1d9ba00f35b770066a59498b1a7 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 0000000000000000000000000000000000000000..67c93fbfe9043b7a4039f76d93275111ce17c173 --- /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