build: Place proto output in the same directory, also for EXTRAS
authorAndreas Hansson <andreas.hansson@arm.com>
Thu, 17 Oct 2013 15:20:45 +0000 (10:20 -0500)
committerAndreas Hansson <andreas.hansson@arm.com>
Thu, 17 Oct 2013 15:20:45 +0000 (10:20 -0500)
This patch changes the ProtoBuf builder such that the generated source
and header is placed in the build directory of the proto file. This
was previously not the case for the directories included as EXTRAS. To
make this work, we also ensure that the build directory for the EXTRAS
are added to the include path (which does not seem to automatically be
the case).

src/SConscript

index 3e9196cd5e7e21cedb8e4804b9106d6bd3bf1cb2..133541795ab2c17f70cefd93cb24df1945c42741 100755 (executable)
@@ -246,8 +246,8 @@ class ProtoBuf(SourceFile):
 
         # Currently, we stick to generating the C++ headers, so we
         # only need to track the source and header.
-        self.cc_file = File(joinpath(self.dirname, modname + '.pb.cc'))
-        self.hh_file = File(joinpath(self.dirname, modname + '.pb.h'))
+        self.cc_file = File(modname + '.pb.cc')
+        self.hh_file = File(modname + '.pb.h')
 
 class UnitTest(object):
     '''Create a UnitTest'''
@@ -335,6 +335,11 @@ for root, dirs, files in os.walk(base_dir, topdown=True):
 
 for extra_dir in extras_dir_list:
     prefix_len = len(dirname(extra_dir)) + 1
+
+    # Also add the corresponding build directory to pick up generated
+    # include files.
+    env.Append(CPPPATH=Dir(joinpath(env['BUILDDIR'], extra_dir[prefix_len:])))
+
     for root, dirs, files in os.walk(extra_dir, topdown=True):
         # if build lives in the extras directory, don't walk down it
         if 'build' in dirs: