From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bo Forslund To: guile-gtk list Cc: Marius Vollmer Subject: SMP problems with examples/Makefile.am Date: Sat, 29 Dec 2001 19:12:00 -0000 Message-ID: <3C2E863A.BE4C0EF7@abc.se> X-SW-Source: 2001-q4/msg00036.html Message-ID: <20011229191200.h6Rjhp6Wm7hZVUKxlz_uvwy9JCenVoJR6FE5-D2O3w4@z> Hello! It is SMP problems with the Makefile in the examples dir. I tested 30-40 compiles of the examples on a single-CPU box using a Makefile built by the original Makefile.am containing the lines foo-glue.c: foo.defs build-guile-gtk glue $< >tmp && mv tmp $@ main.c: foo.defs build-guile-gtk main $< >tmp && mv tmp $@ And it just worked. Every time. On the dual-CPU box it failed most of the times with really odd result. Sometimes the build created a main.c identical to foo-glue.c. Sometimes the foo-glue.c or main.c was created with a couple of thousand NULL characters (displayed as ^@ in emacs) and a chopped off line with the extern sgtk_.... vars, and the rest of foo-glue.c as it should look. something like /* Generated by build-guile-gtk from "foo.defs". Do not edit. */ #include #include #include ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ several thousands of ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ info sgtk_gdk_cap_style_info; extern sgtk_enum_info sgtk_gdk_join_style_info; extern sgtk_enum_info sgtk_gdk_cursor_type_info; extern sgtk_enum_info sgtk_gdk_event_type_info; extern sgtk_enum_info sgtk_gdk_notify_type_info; ### The rest of the file OK. Having Makefile.am looking like this works on both the uni-cpu and the dual-cpu box. foo-glue.c: foo.defs build-guile-gtk glue $< >$@ main.c: foo.defs build-guile-gtk main $< >$@ I can't say that I really understand what the line "$< tmp && mv tmp $@" does. Doesn't the line "$< >$@" work very much the same? Perhaps someone can explain what can happen on parallell builds? Bo