On 03/12/14 16:14, Samuel Iglesias Gonsálvez wrote: > On Wednesday, December 03, 2014 03:44:19 PM Samuel Iglesias Gonsálvez wrote: >> On Wednesday, December 03, 2014 03:29:46 PM Samuel Iglesias Gonsálvez wrote: >>> On Wednesday, December 03, 2014 11:34:10 AM Emil Velikov wrote: >>>> On 03/12/14 11:30, Emil Velikov wrote: >>>>> Hi Iago, >>>>> >>>>> On 01/12/14 11:04, Iago Toral Quiroga wrote: >>>>>> From: Jason Ekstrand <jason.ekstr...@intel.com> >>>>>> >>>>>> We were auto-generating it before. The problem was that the >>>>>> autogeneration >>>>>> tool we were using was called "copy, paste, and edit". Let's use a >>>>>> more >>>>>> sensible solution. >>>>>> >>>>>> Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> >>>>>> >>>>>> v2 by Samuel Iglesias <sigles...@igalia.com> >>>>>> - Remove format_pack.c as it is now autogenerated >>>>>> - Add usage of INDENT_FLAGS in Makefile.am >>>>>> - Remove trailing blank line >>>>>> >>>>>> v3 by Samuel Iglesias <sigles...@igalia.com> >>>>>> - Merge format_convert.py into format_parser.py >>>>>> >>>>>> - Adapt pack_*_* function generations >>>>>> >>>>>> - Fix out-of-tree build >>>>>> >>>>>> Signed-off-by: Samuel Iglesias Gonsalvez <sigles...@igalia.com> >>>>>> --- >>>>>> >>>>>> src/mesa/Makefile.am | 14 + >>>>>> src/mesa/Makefile.sources | 2 +- >>>>>> src/mesa/main/format_pack.c | 2982 >>>>>> -------------------------------------- >>>>>> src/mesa/main/format_pack.c.mako >>>>>> >>>>>> | 897 ++++++++++++ >>>>>> >>>>>> src/mesa/main/format_parser.py | 71 + >>>>>> src/mesa/main/run_mako.py | 7 + >>>>>> 6 files changed, 990 insertions(+), 2983 deletions(-) >>>>>> delete mode 100644 src/mesa/main/format_pack.c >>>>>> create mode 100644 src/mesa/main/format_pack.c.mako >>>>>> create mode 100644 src/mesa/main/run_mako.py >>>>>> >>>>>> diff --git a/src/mesa/Makefile.am b/src/mesa/Makefile.am >>>>>> index 932db4f..849c9da 100644 >>>>>> --- a/src/mesa/Makefile.am >>>>>> +++ b/src/mesa/Makefile.am >>>>>> @@ -19,6 +19,8 @@ >>>>>> >>>>>> # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR >>>>>> OTHER >>>>>> DEALINGS # IN THE SOFTWARE. >>>>>> >>>>>> +BUILDDIR_ABSOLUTE_PATH = $(PWD) >>>>>> + >>>>> >>>>> You should not need this new variable. Additionally I'm suspecting >>>>> this >>>>> is the reason between the build hickups you/Jason are seeing. >>>>> >>>>>> SUBDIRS = . main/tests >>>>>> >>>>>> if HAVE_X11_DRIVER >>>>>> >>>>>> @@ -66,6 +68,7 @@ BUILT_SOURCES = \ >>>>>> >>>>>> main/get_hash.h \ >>>>>> >>>>>> main/format_info.c \ >>>>>> >>>>>> $(BUILDDIR)main/git_sha1.h \ >>>>>> >>>>>> + $(BUILDDIR)main/format_pack.c \ >>>>>> >>>>>> $(BUILDDIR)program/program_parse.tab.c \ >>>>>> $(BUILDDIR)program/lex.yy.c >>>>>> >>>>>> CLEANFILES = \ >>>>>> >>>>>> @@ -89,6 +92,17 @@ main/format_info.c: main/formats.csv >>>>>> >>>>>> \>> >>>>>> >>>>>> $< > $@.tmp; >>>>>> \ >>>>>> >>>>>> mv $@.tmp $@; >>>>>> >>>>>> +$(BUILDDIR)main/format_pack.c: main/format_pack.c.mako >>>>>> main/formats.csv >>>>>> \ >>>>>> + main/run_mako.py >>>>>> main/format_parser.py >>>>>> + $(AM_V_GEN)set -e; >>>>>> \ >>>>>> + cd $(srcdir); >>>>>> \ >>>>>> + $(PYTHON2) $(PYTHON_FLAGS) main/run_mako.py >>>>>> \ >>>>>> + main/format_pack.c.mako main/formats.csv > >>>>>> \ >>>>>> + $(BUILDDIR_ABSOLUTE_PATH)/$@.tmp; >>>>>> \ >>>>>> + cd $(BUILDDIR_ABSOLUTE_PATH); >>>>>> \ >>>>>> + cat $@.tmp | $(INDENT) $(INDENT_FLAGS) > $@; >>>>>> \ >>>>>> + rm $@.tmp; >>>>>> + >>>>> >>>>> Can you prefix the files in the srcdir, and drop the tmp file (pipe >>>>> directly into indent). It will make the above ~1/2 the size and a bit >>>>> easier to follow :) >>>> >>>> Completely forgot, please add a couple of mines into the scons build >>>> while you're here. src/mapi/shared-glapi/SConscript could serve as an >>>> example. >>> >>> This is my first time modifying a SConscript file. Looking at what was >>> done >>> for format_info.c, I think that the following modification is enough to >>> have format_pack.c autogenerated: >>> >>> format_pack = env.CodeGenerate( >>> >>> target = 'main/format_pack.c', >>> script = 'main/run_mako.py', >>> template = 'main/format_pack.c.mako', >>> source = 'main/formats.csv', >>> command = python_cmd + ' $SCRIPT ' + ' $TEMPLATE $SOURCE | ' + >>> >>> '$INDENT $INDENT_FLAGS > $TARGET' >>> >>> ) >>> >>> I did a 80-char line wrap (it was not my email client), I suppose this is >>> valid in SConscript, right? scons -f SConscript did not complain about it. >> >> Comparing with the SConscript you told me, I did a couple of small >> modifications to my previous code: >> >> format_pack = env.CodeGenerate( >> target = 'main/format_pack.c', >> script = 'main/run_mako.py', >> source = 'main/format_pack.c.mako main/formats.csv', >> command = python_cmd + ' $SCRIPT ' + ' $SOURCE | ' + \ >> '$INDENT $INDENT_FLAGS > $TARGET' >> ) >> >> I think this is more or less what we need but, if someone with more >> experience on SConscript files sees a better way, it would be great to >> learn how to do it. >> >> I'm going to do some tests to check that this is building properly. >> > > I finally found a way of generating format_pack.c and format_unpack.c with > scons using env.CodeGenerate(). > > As env.CodeGenerate() only uses one 'source' argument (it fails if you run > what I wrote above), I ended up renaming format_pack.c.mako and > format_unpack.c.mako to be python scripts with the template content inline. > > Now, they auto-generate format_{pack,unpack}.c files by themselves using the > python mako module. Thanks to that, run_mako.py can be removed and both > SConscript and Makefile.am modifications are simpler. > > Any other idea/suggestion would be helpful. > Nicely done Sam. I realise that dealing with autotools/scons can be a pain, but it's a one-off job. This way new and old devs/users won't end up looking for a shaman just to get it compiling :P
With the comments for 14 & 15 addressed, I think that we're good on the build side of things :) Thanks Emil P.S. "Crazy" android people can update their build as they hit it :P _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev