[anjuta/newproject] Implement variable support for autotools backend



commit 57d867f2cd438a59ca96957735a605371a7d3f56
Author: Sébastien Granjoux <seb sfo free fr>
Date:   Tue May 18 22:43:34 2010 +0200

    Implement variable support for autotools backend

 .gitignore                          |  106 +++++++++++---
 libanjuta/anjuta-token-list.c       |   32 ++++-
 libanjuta/anjuta-token-stream.c     |   21 ++--
 libanjuta/anjuta-token-stream.h     |    2 +-
 libanjuta/anjuta-token.c            |  269 ++++++++++++++++++++++++-----------
 libanjuta/anjuta-token.h            |    7 +-
 plugins/am-project/ac-parser.y      |    1 +
 plugins/am-project/ac-scanner.l     |    2 +-
 plugins/am-project/am-parser.y      |   79 +++++-----
 plugins/am-project/am-project.c     |  126 +++++++++++++++--
 plugins/am-project/am-project.h     |    3 +-
 plugins/am-project/am-scanner.h     |    3 +-
 plugins/am-project/am-scanner.l     |   72 ++++++----
 plugins/am-project/tests/anjuta.at  |    4 +-
 plugins/am-project/tests/anjuta.lst |  111 ++++++++++++++-
 15 files changed, 620 insertions(+), 218 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index a92530c..8b4002d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,26 +1,8 @@
-/*.bak
-/*.lo
-/*.o
-/*.orig
-/*.rej
-/*.tab.c
 /*~
-/.*.swp
-/.deps
-/.gitignore
-/.libs
-/GPATH
-/GRTAGS
-/GSYMS
-/GTAGS
-/ID
-/Makefile
-/Makefile.in
-/TAGS
-/_libs
 /anjuta.desktop
 /anjuta.desktop.in
 /autom4te.cache
+/*.bak
 /config.cache
 /config.h
 /config.log
@@ -29,21 +11,103 @@
 /config.status.lineno
 /configure
 /configure.lineno
+/.deps
+/.gitignore
+/GPATH
+/GRTAGS
+/GSYMS
+/GTAGS
+/ID
 /intltool-extract
 /intltool-extract.in
 /intltool-merge
 /intltool-merge.in
 /intltool-update
 /intltool-update.in
+/_libs
+/.libs
 /libtool
-/po/*.gmo
-/po/*.mo
+/*.lo
+/Makefile
+/Makefile.in
+/*.o
+/*.orig
+/po/ar.gmo
+/po/az.gmo
+/po/be.gmo
+/po/be latin gmo
+/po/bg.gmo
+/po/ca.gmo
+/po/ca valencia gmo
+/po/cs.gmo
+/po/da.gmo
+/po/de.gmo
+/po/dz.gmo
+/po/el.gmo
+/po/en_CA.gmo
+/po/en_GB.gmo
+/po/en shaw gmo
+/po/es.gmo
+/po/eu.gmo
+/po/fi.gmo
+/po/fr.gmo
+/po/ga.gmo
+/po/gl.gmo
+/po/gu.gmo
+/po/he.gmo
+/po/hi.gmo
+/po/hr.gmo
+/po/hu.gmo
+/po/id.gmo
 /po/.intltool-merge-cache
+/po/it.gmo
+/po/ja.gmo
+/po/kn.gmo
+/po/ko.gmo
+/po/lt.gmo
+/po/lv.gmo
+/po/mai.gmo
 /po/Makefile
 /po/Makefile.in
 /po/Makefile.in.in
+/po/mk.gmo
+/po/ml.gmo
+/po/*.mo
+/po/mr.gmo
+/po/ms.gmo
+/po/nb.gmo
+/po/ne.gmo
+/po/nl.gmo
+/po/oc.gmo
+/po/or.gmo
+/po/pa.gmo
+/po/pl.gmo
 /po/POTFILES
+/po/pt_BR.gmo
+/po/pt.gmo
+/po/ro.gmo
+/po/ru.gmo
+/po/rw.gmo
+/po/si.gmo
+/po/sk.gmo
+/po/sl.gmo
+/po/sq.gmo
+/po/sr.gmo
+/po/sr latin gmo
 /po/stamp-it
+/po/sv.gmo
+/po/te.gmo
+/po/th.gmo
+/po/tr.gmo
+/po/uk.gmo
+/po/vi.gmo
+/po/zh_CN.gmo
+/po/zh_HK.gmo
+/po/zh_TW.gmo
+/*.rej
 /so_locations
 /stamp-h1
+/.*.swp
+/*.tab.c
 /tags
+/TAGS
diff --git a/libanjuta/anjuta-token-list.c b/libanjuta/anjuta-token-list.c
index ba89ea3..3cf616e 100644
--- a/libanjuta/anjuta-token-list.c
+++ b/libanjuta/anjuta-token-list.c
@@ -22,6 +22,7 @@
 #include "libanjuta/anjuta-debug.h"
 
 #include <string.h>
+#include <stdio.h>
 
 /* Type definition
  *---------------------------------------------------------------------------*/
@@ -324,6 +325,11 @@ anjuta_token_first_word (AnjutaToken *list)
 
 	for (item = anjuta_token_first_item (list); item != NULL; item = anjuta_token_next_item (item))
 	{
+		if (anjuta_token_list (item) != list)
+		{
+			item = NULL;
+			break;
+		}
 		switch (anjuta_token_get_type (item))
 		{
 		case ANJUTA_TOKEN_START:
@@ -333,6 +339,7 @@ anjuta_token_first_word (AnjutaToken *list)
 			item = NULL;
 			break;
 		default:
+			if (anjuta_token_is_empty (item)) continue;
 			break;
 		}
 		break;
@@ -344,23 +351,31 @@ anjuta_token_first_word (AnjutaToken *list)
 AnjutaToken *
 anjuta_token_next_word (AnjutaToken *item)
 {
-	for (item = anjuta_token_next_item (item); item != NULL; item = anjuta_token_next_item (item))
+	AnjutaToken *next;
+	
+	for (next = anjuta_token_next_item (item); next != NULL; next = anjuta_token_next_item (next))
 	{
-		switch (anjuta_token_get_type (item))
+		if (anjuta_token_list (item) != anjuta_token_list (next))
+		{
+			next = NULL;
+			break;
+		}
+		switch (anjuta_token_get_type (next))
 		{
 		case ANJUTA_TOKEN_START:
 		case ANJUTA_TOKEN_NEXT:
 			continue;
 		case ANJUTA_TOKEN_LAST:
-			item = NULL;
-			break;	
+			next = NULL;
+			break;
 		default:
+			if (anjuta_token_is_empty (next)) continue;
 			break;
 		}
 		break;
 	}
-
-	return item;
+	
+	return next;
 }
 
 AnjutaToken *
@@ -371,6 +386,11 @@ anjuta_token_nth_word (AnjutaToken *list, guint n)
 
 	for (item = anjuta_token_first_item (list); item != NULL; item = anjuta_token_next_item (item))
 	{
+		if (anjuta_token_list (item) != list)
+		{
+			item = NULL;
+			break;
+		}
 		switch (anjuta_token_get_type (item))
 		{
 		case ANJUTA_TOKEN_START:
diff --git a/libanjuta/anjuta-token-stream.c b/libanjuta/anjuta-token-stream.c
index 04076d3..a1abc9f 100644
--- a/libanjuta/anjuta-token-stream.c
+++ b/libanjuta/anjuta-token-stream.c
@@ -143,7 +143,8 @@ anjuta_token_stream_tokenize (AnjutaTokenStream *stream, gint type, gsize length
                 else
                 {
                     /* Get several token */
-                    anjuta_token_append_child (frag, copy);
+                    anjuta_token_insert_after (frag, copy);
+                    anjuta_token_merge (frag, copy);
                 }
 
                 if (toklen == (length + stream->begin))
@@ -160,7 +161,8 @@ anjuta_token_stream_tokenize (AnjutaTokenStream *stream, gint type, gsize length
             }
             else
             {
-                anjuta_token_append_child (frag, copy);
+                anjuta_token_insert_after (frag, copy);
+                anjuta_token_merge (frag, copy);
                 length -= toklen;
                 end = anjuta_token_next (end);
                 stream->begin = 0;
@@ -285,7 +287,8 @@ anjuta_token_stream_get_current_directory (AnjutaTokenStream *stream)
 /**
  * anjuta_token_stream_push:
  * @parent: a parent #AnjutaTokenStream object or NULL.
- * @token: a token list.
+ * @root: a token or NULL
+ * @content: a token list.
  *
  * Create a new stream from a list of tokens. If a parent stream is passed,
  * the new stream keep a link on it, so we can return it when the new stream
@@ -294,22 +297,22 @@ anjuta_token_stream_get_current_directory (AnjutaTokenStream *stream)
  * Return value: The newly created stream.
  */
 AnjutaTokenStream *
-anjuta_token_stream_push (AnjutaTokenStream *parent, AnjutaToken *token, GFile *filename)
+anjuta_token_stream_push (AnjutaTokenStream *parent, AnjutaToken *root, AnjutaToken *content, GFile *filename)
 {
 	AnjutaTokenStream *child;
 
 	child = g_new (AnjutaTokenStream, 1);
-	child->first = token;
+	child->first = content;
 	child->pos = 0;
 	child->begin = 0;
 	child->parent = parent;
 
-	child->next = anjuta_token_next (token);
+	child->next = anjuta_token_next (content);
 	child->start = child->next;
-	child->last = anjuta_token_last (token);
-	if (child->last == token) child->last = NULL;
+	child->last = anjuta_token_last (content);
+	if (child->last == content) child->last = NULL;
 
-	child->root = anjuta_token_new_static (ANJUTA_TOKEN_FILE, NULL);
+	child->root = root == NULL ? anjuta_token_new_static (ANJUTA_TOKEN_FILE, NULL) : root;
 	if (filename == NULL)
 	{
 		child->current_directory = parent == NULL ? NULL : g_object_ref (parent->current_directory);
diff --git a/libanjuta/anjuta-token-stream.h b/libanjuta/anjuta-token-stream.h
index 7c4b174..170b34f 100644
--- a/libanjuta/anjuta-token-stream.h
+++ b/libanjuta/anjuta-token-stream.h
@@ -28,7 +28,7 @@ G_BEGIN_DECLS
 
 typedef struct _AnjutaTokenStream AnjutaTokenStream;
 
-AnjutaTokenStream *anjuta_token_stream_push (AnjutaTokenStream *stream, AnjutaToken *token, GFile *filename);
+AnjutaTokenStream *anjuta_token_stream_push (AnjutaTokenStream *stream, AnjutaToken *root, AnjutaToken *content, GFile *filename);
 AnjutaTokenStream *anjuta_token_stream_pop (AnjutaTokenStream *stream);
 
 AnjutaToken* anjuta_token_stream_get_root (AnjutaTokenStream *stream);
diff --git a/libanjuta/anjuta-token.c b/libanjuta/anjuta-token.c
index 7657906..f7d1319 100644
--- a/libanjuta/anjuta-token.c
+++ b/libanjuta/anjuta-token.c
@@ -96,6 +96,33 @@ struct _AnjutaToken
  *---------------------------------------------------------------------------*/
 
 static AnjutaToken *
+anjuta_token_next2 (AnjutaToken *token) 
+{
+	AnjutaToken *last = token;
+	AnjutaToken *next;
+
+	while (last != NULL)
+	{
+		next = last->next;
+		if (next == NULL)
+		{
+			last = last->parent;
+			if (last != NULL)
+			{
+				for (; last->last != NULL; last = last->last);
+			}
+		}
+		else
+		{
+			for (; next->children != NULL; next = next->children);
+			break;
+		}
+	}
+	
+	return next;
+} 
+ 
+static AnjutaToken *
 anjuta_token_next_child (AnjutaToken *child, AnjutaToken **last)
 {
 	if (child == NULL) return child;
@@ -132,20 +159,35 @@ anjuta_token_next_child (AnjutaToken *child, AnjutaToken **last)
 static AnjutaToken *
 anjuta_token_next_after_children (AnjutaToken *token)
 {
-	if (token->next != NULL)
-	{
-		return token->next;
-	}
-	else if (token->parent != NULL)
+	while (token->next == NULL)
 	{
-		return anjuta_token_next_after_children (token->parent);
-	}
-	else
+		token = token->parent;
+		if (token == NULL) return NULL;
+	};
+	
+	return token->next;
+}
+
+static AnjutaToken *
+anjuta_token_next_item_after_children (AnjutaToken *parent)
+{
+	AnjutaToken *token;
+	AnjutaToken *last;
+	
+	for (last = parent; last->last != NULL; last = last->last);
+
+	for (token = last; token->parent != NULL; token = token->parent)
 	{
-		return NULL;
+		if (token->parent == parent)
+		{
+			return anjuta_token_next_after_children (parent);
+		}
 	}
+	
+	return anjuta_token_next_after_children (last);
 }
 
+
 AnjutaToken *
 anjuta_token_copy (AnjutaToken *token)
 {
@@ -170,8 +212,16 @@ anjuta_token_copy (AnjutaToken *token)
 	return copy;
 }
 
+/**
+ * anjuta_token_unlink_token:
+ * @token: a #AnjutaToken object.
+ *
+ * Unlink a single token, not the complete item, from the token tree.
+ *
+ * Return value: the removed token tree
+ */
 static AnjutaToken *
-anjuta_token_unlink (AnjutaToken *token)
+anjuta_token_unlink_token (AnjutaToken *token)
 {
 
 	if (token->prev != NULL)
@@ -194,6 +244,36 @@ anjuta_token_unlink (AnjutaToken *token)
 	return token;
 }
 
+/**
+ * anjuta_token_insert_token_before:
+ * @sibling: a #AnjutaToken object.
+ * @token: a #AnjutaToken object.
+ *
+ * Insert token before sibling.
+ *
+ * Return value: inserted token
+ */
+static AnjutaToken *
+anjuta_token_insert_token_before (AnjutaToken *sibling, AnjutaToken *token)
+{
+	token->prev = sibling->prev;
+	token->next = sibling;
+
+	if (token->prev != NULL)
+	{
+		token->prev->next = token;
+	}
+	sibling->prev = token;
+	
+	if ((sibling->parent != NULL) && (sibling->parent->children == sibling))
+	{
+		sibling->parent->children = token;
+	}
+	token->parent = sibling->parent;
+	
+	return token;
+}
+
 static void
 anjuta_token_evaluate_token (AnjutaToken *token, GString *value, gboolean raw)
 {
@@ -219,80 +299,51 @@ anjuta_token_evaluate_token (AnjutaToken *token, GString *value, gboolean raw)
 }	
 
 static void
-anjuta_token_show (AnjutaToken *token, gint indent)
+anjuta_token_show (AnjutaToken *token, gint indent, gchar parent)
 {
-	fprintf (stdout, "%*s%p", indent, "", token);
-	fprintf (stdout, ": %d \"%.*s\" %p/%p %s\n",
+	static gchar type[] = "\0";
+	
+	type[0] = parent;
+	fprintf (stderr, "%*s%s %p", indent, "", type, token);
+	fprintf (stderr, ": %d \"%.*s\" %p/%p (%p/%p) %s\n",
 	    anjuta_token_get_type (token),
 	    anjuta_token_get_length (token),
 	    anjuta_token_get_string (token),
 	    token->last, token->children,
+		token->group, token->parent,
 	    anjuta_token_get_flags (token) & ANJUTA_TOKEN_REMOVED ? " (removed)" : "");
 }
 
 static AnjutaToken*
-anjuta_token_dump_child (AnjutaToken *token, gint indent)
+anjuta_token_dump_child (AnjutaToken *token, gint indent, gchar type)
 {
-
-	anjuta_token_show (token, indent);
+	AnjutaToken *last;
+	AnjutaToken *child;
 	
-	if (token->children != NULL)
+	anjuta_token_show (token, indent, type);
+	indent += 4;
+	
+	last = token;
+	if (token->last != NULL)
 	{
-		AnjutaToken *child;
-		AnjutaToken *next = NULL;
-		AnjutaToken *last = anjuta_token_next_after_children (token);
-		
-		for (child = token->children; child != NULL;)
+		do
 		{
-			if (child == last)
-			{
-				return child;
-			}
-			if (next == NULL)
-			{
-				next = anjuta_token_dump_child (child, indent + 4);
-			}
-			if (child == next)
-			{
-				next = NULL;
-				
-#if 0
-				/* Look for previous children */
-				for (child = anjuta_token_next (child); child != NULL; child = child->parent)
-				{
-					if (child->parent == token) break;
-				};
-				continue;
-#endif
-			}
-			child = anjuta_token_next (child);
+			child = last->next;
+			if (child == NULL) break;
+			last = anjuta_token_dump_child (child, indent, '+');
 		}
+		while (child != token->last);
 	}
 	
-	if (token->last != NULL)
+	if (token->children != NULL)
 	{
-		AnjutaToken *child;
-		AnjutaToken *next = NULL;
-		
-		for (child = anjuta_token_next (token); child != NULL; child = anjuta_token_next (child))
+		for (child = token->children; child != NULL; child = child->next)
 		{
-			if (next == NULL)
-			{
-				next = anjuta_token_dump_child (child, indent + 4);
-				if (child == token->last)
-				{
-					return child;
-				}
-			}
-			if (child == next) next = NULL;
-			if (child == token->last)
-			{
-				return child;
-			}
+			child = anjuta_token_dump_child (child, indent, '*');
 		}
 	}
-
-	return token;
+	
+	return last;
 }
 
 static gboolean
@@ -300,7 +351,7 @@ anjuta_token_check_child (AnjutaToken *token, AnjutaToken *parent)
 {
 	if (token->parent != parent)
 	{
-		anjuta_token_show (token, 0);
+		anjuta_token_show (token, 0, 0);
 		fprintf(stderr, "Error: Children has %p as parent instead of %p\n", token->parent, parent);
 		return FALSE;
 	}
@@ -463,13 +514,24 @@ AnjutaToken *
 anjuta_token_next_item (AnjutaToken *item)
 {
 	AnjutaToken *last;
+	AnjutaToken *next = item;
 
-	if (item == NULL) return NULL;
-
-	if ((item->group != NULL) && (item == item->group->last)) return NULL;
-	for (last = item; last->last != NULL; last = last->last);
-
-	return last->next;
+	while (next != NULL)
+	{
+		for (last = next; last->last != NULL; last = last->last);
+		next = last->next;
+		if (next == NULL)
+		{
+			next = last->parent;
+		}
+		else
+		{
+			for (; next->children != NULL; next = next->children);
+			break;
+		}
+	}
+	
+	return next;
 }
 
 AnjutaToken *
@@ -913,7 +975,7 @@ anjuta_token_merge_children (AnjutaToken *first, AnjutaToken *end)
 	{
 		anjuta_token_insert_before (end, first);
 	}
-	anjuta_token_unlink (end);
+	anjuta_token_unlink_token (end);
 	if (end->last != NULL)
 	{
 		first->last = end->last;
@@ -925,16 +987,41 @@ anjuta_token_merge_children (AnjutaToken *first, AnjutaToken *end)
 	return first;
 }
 
+/**
+ * anjuta_token_merge_previous:
+ * @list: a #AnjutaToken object representing a list
+ * @first: a #AnjutaToken object for the new beginning of the list
+ *
+ * If the list token is not already linked with first, it is inserted
+ * just before first.
+ * If the list token is already linked, it must be in the same list after
+ * first token. It it possible to have several tokens beweent list and
+ * first.
+ *
+ * Return value: the new list
+ */
 AnjutaToken *
-anjuta_token_merge_previous (AnjutaToken *first, AnjutaToken *end)
+anjuta_token_merge_previous (AnjutaToken *list, AnjutaToken *first)
 {
-	if ((end == NULL) || (first == end)) return first;
+	AnjutaToken *token;
+	
+	if ((first == NULL) || (list == first)) return list;
 
-	anjuta_token_unlink (first);
-	anjuta_token_insert_before (end, first);
-	end->group = first;
+	/* Change group of all tokens from end to first
+	 * if the list is already linked */
+	if ((list->prev != NULL) || (list->parent != NULL))
+	{
+		for (token = first; token != list; token = anjuta_token_next_item (token))
+		{
+			token->group = list;
+		}
+	}
+	
+	token = anjuta_token_next (list);
+	anjuta_token_unlink_token (list);
+	anjuta_token_insert_token_before (first, list);
 
-	return first;
+	return list;
 }
 
 AnjutaToken *anjuta_token_split (AnjutaToken *token, guint size)
@@ -1008,12 +1095,15 @@ anjuta_token_evaluate (AnjutaToken *token)
 
 	if (token != NULL)
 	{
-		AnjutaToken *last = token->last;
-		AnjutaToken *child;
+		AnjutaToken *next;
 		
-		for (child = token; child != NULL; child = anjuta_token_next_child (child, &last))
+		next = anjuta_token_next_item (token);
+		for (; token != next; token = anjuta_token_next2 (token))
 		{
-			anjuta_token_evaluate_token (child, value, TRUE);
+			if (token->children == NULL)
+			{
+				anjuta_token_evaluate_token (token, value, TRUE);
+			}
 		}
 	}
 
@@ -1021,6 +1111,13 @@ anjuta_token_evaluate (AnjutaToken *token)
 	return g_string_free (value, *(value->str) == '\0');
 }
 
+gboolean
+anjuta_token_is_empty (AnjutaToken *token)
+{
+	return (token == NULL) || ((token->data.length == 0) && (token->last == NULL) && (token->children == NULL));
+}
+
+
 /* Other functions
  *---------------------------------------------------------------------------*/
 
@@ -1063,7 +1160,7 @@ anjuta_token_dump (AnjutaToken *token)
 {
 	if (token == NULL) return;
 	
-	anjuta_token_dump_child (token, 0);
+	anjuta_token_dump_child (token, 0, 0);
 }
 
 void
@@ -1075,7 +1172,7 @@ anjuta_token_dump_link (AnjutaToken *token)
 
 	for (; token != last; token = anjuta_token_next (token))
 	{
-		anjuta_token_show (token, 0);
+		anjuta_token_show (token, 0, 0);
 	}
 }
 
@@ -1084,7 +1181,7 @@ anjuta_token_check (AnjutaToken *token)
 {
 	if ((token->children != NULL) && (token->last != NULL))
 	{
-		anjuta_token_show (token, 0);
+		anjuta_token_show (token, 0, 0);
 		fprintf(stderr, "Error: Previous token has both non NULL children and last\n");
 
 		return FALSE;
@@ -1213,7 +1310,7 @@ anjuta_token_free (AnjutaToken *token)
 	anjuta_token_free_children (token);
 
 	next = anjuta_token_next (token);
-	anjuta_token_unlink (token);
+	anjuta_token_unlink_token (token);
 	if ((token->data.pos != NULL) && !(token->data.flags & ANJUTA_TOKEN_STATIC))
 	{
 		g_free (token->data.pos);
diff --git a/libanjuta/anjuta-token.h b/libanjuta/anjuta-token.h
index 44a0e14..c27f982 100644
--- a/libanjuta/anjuta-token.h
+++ b/libanjuta/anjuta-token.h
@@ -39,7 +39,7 @@ typedef enum
 	ANJUTA_TOKEN_CONTENT,
 	ANJUTA_TOKEN_ARGUMENT,
 	ANJUTA_TOKEN_VALUE,
-	ANJUTA_TOKEN_EOV,
+	ANJUTA_TOKEN_EOV,	// 16390
 	ANJUTA_TOKEN_PARSED,
 	ANJUTA_TOKEN_KEYWORD,
 	ANJUTA_TOKEN_OPERATOR,
@@ -49,7 +49,7 @@ typedef enum
 	ANJUTA_TOKEN_STATEMENT,
 	ANJUTA_TOKEN_NUMBER,
 	ANJUTA_TOKEN_JUNK,
-	ANJUTA_TOKEN_COMMENT,
+	ANJUTA_TOKEN_COMMENT,	// 16400
 	ANJUTA_TOKEN_OPEN_QUOTE,
 	ANJUTA_TOKEN_CLOSE_QUOTE,
 	ANJUTA_TOKEN_ESCAPE,
@@ -59,7 +59,7 @@ typedef enum
 	ANJUTA_TOKEN_NEXT,
 	ANJUTA_TOKEN_LAST,
 	ANJUTA_TOKEN_ITEM,
-	ANJUTA_TOKEN_STRING,
+	ANJUTA_TOKEN_STRING,	// 16410
 	ANJUTA_TOKEN_ERROR,
 	ANJUTA_TOKEN_WORD,
 	ANJUTA_TOKEN_LIST,
@@ -129,6 +129,7 @@ AnjutaToken *anjuta_token_split (AnjutaToken *token, guint size);
 AnjutaToken *anjuta_token_cut (AnjutaToken *token, guint pos, guint size);
 
 gchar *anjuta_token_evaluate (AnjutaToken *token);
+gboolean anjuta_token_is_empty (AnjutaToken *token);
 
 void anjuta_token_dump (AnjutaToken *token);
 gboolean anjuta_token_check (AnjutaToken *token);
diff --git a/plugins/am-project/ac-parser.y b/plugins/am-project/ac-parser.y
index a8e0539..943fd3f 100644
--- a/plugins/am-project/ac-parser.y
+++ b/plugins/am-project/ac-parser.y
@@ -256,6 +256,7 @@ arg_list_body:
         //anjuta_token_dump ($2);
         //fprintf(stdout, "arg_list_body arg\n");
         //anjuta_token_dump ($3);
+        anjuta_token_merge ($1, $2);
         anjuta_token_merge ($1, $3);
         //fprintf(stdout, "arg_list_body merge\n");
         //anjuta_token_dump ($1);
diff --git a/plugins/am-project/ac-scanner.l b/plugins/am-project/ac-scanner.l
index 6ec7db9..09c1294 100644
--- a/plugins/am-project/ac-scanner.l
+++ b/plugins/am-project/ac-scanner.l
@@ -219,7 +219,7 @@ amp_ac_scanner_parse_token (AmpAcScanner *scanner, AnjutaToken *token, gint star
     AnjutaToken *first;
     AnjutaTokenStream *stream;
 
-    stream = anjuta_token_stream_push (scanner->stream, token, NULL);
+    stream = anjuta_token_stream_push (scanner->stream, NULL, token, NULL);
     first = anjuta_token_stream_get_root (stream);
 
     if (scanner->stream != NULL)
diff --git a/plugins/am-project/am-parser.y b/plugins/am-project/am-parser.y
index 1c5b0b6..ab7bc2e 100644
--- a/plugins/am-project/am-parser.y
+++ b/plugins/am-project/am-parser.y
@@ -31,7 +31,8 @@
 %}
 
 
-%token	EOL	'\n'
+%token	END_OF_FILE
+%token	END_OF_LINE	'\n'
 %token	SPACE
 %token	TAB '\t'
 %token	HASH '#'
@@ -157,7 +158,6 @@ amp_am_automake_variable (AnjutaToken *token)
 
 %}
 
-
 %%
 
 file:
@@ -165,27 +165,14 @@ file:
 	| file statement
 	;
 
-/*statement:
-	end_of_line
-	| space  end_of_line
-	| definition  end_of_line
-	| am_variable  end_of_line
-	| rule  command_list
-	| include
-	;*/
-
 statement:
 	end_of_line
 	| space  end_of_line
 	| definition  end_of_line
 	| am_variable  end_of_line
 	| include  end_of_line
-	| line  end_of_line {
-		g_message ("line");
-	}
-	| rule  command_list {
-		g_message ("rule");
-	}
+	| line  end_of_line
+	| rule  command_list
 	;
 	
 am_variable:
@@ -206,21 +193,34 @@ am_variable:
 
 include:
 	optional_space  include_token  value_list {
-		amp_am_scanner_include (scanner, $3);
+		$$ = anjuta_token_new_static (ANJUTA_TOKEN_LIST, NULL);
+		anjuta_token_merge ($$, $2);
+		anjuta_token_merge ($$, $3);
+		amp_am_scanner_include (scanner, $$);
 	}
 
 definition:
 	head_list  equal_token value_list {
-		g_message ("definition %s", anjuta_token_evaluate ($1));
+        $$ = anjuta_token_new_static (ANJUTA_TOKEN_DEFINITION, NULL);
+        anjuta_token_merge_own_children ($1);
+        anjuta_token_merge ($$, $1);
+        anjuta_token_merge ($$, $2);
+        anjuta_token_merge ($$, $3);
+        amp_am_scanner_update_variable (scanner, $$);
 	}
 	| head_list  equal_token {
-		g_message ("definition %s", anjuta_token_evaluate ($1));
+		$$ = anjuta_token_new_static (ANJUTA_TOKEN_DEFINITION, NULL);
+        anjuta_token_merge_own_children ($1);
+        anjuta_token_merge ($$, $1);
+        anjuta_token_merge ($$, $2);
+		amp_am_scanner_update_variable (scanner, $$);
 	}
 	;
 
 rule:
 	depend_list  end_of_line
-	| depend_list  SEMI_COLON  command_line  EOL
+	| depend_list  SEMI_COLON  command_line  END_OF_LINE
+	| depend_list  SEMI_COLON  command_line  END_OF_FILE
 	;
 
 depend_list:
@@ -229,7 +229,8 @@ depend_list:
 
 command_list:
 	/* empty */
-	| command_list TAB command_line EOL
+	| command_list TAB command_line END_OF_LINE
+	| command_list TAB command_line END_OF_FILE
 	;
 
 line:
@@ -238,9 +239,12 @@ line:
 
 /* Lists
  *----------------------------------------------------------------------------*/
-
+ 
 end_of_line:
-	EOL {
+	END_OF_LINE {
+		$$ = NULL;
+	}
+	| END_OF_FILE {
 		$$ = NULL;
 	}
 	| comment {
@@ -249,7 +253,7 @@ end_of_line:
 	;
 
 comment:
-	HASH not_eol_list EOL
+	HASH not_eol_list END_OF_LINE
 	;
 
 not_eol_list:
@@ -352,29 +356,19 @@ head:
 	| head variable_token
 	;
 
-/*value:
+value:
 	value_token {
 		$$ = anjuta_token_new_static (ANJUTA_TOKEN_ARGUMENT, NULL);
 		anjuta_token_merge ($$, $1);
 	}
-	| space_token {
+	| variable {
 		$$ = anjuta_token_new_static (ANJUTA_TOKEN_ARGUMENT, NULL);
-		anjuta_token_merge ($$, $1);
+		anjuta_token_insert_after ($1, $$);
 	}
 	| value value_token {
 		anjuta_token_merge ($1, $2);
 	}
-	| value space_token {
-		anjuta_token_merge ($1, $2);
-	}
-	;*/
-
-value:
-	value_token {
-		$$ = anjuta_token_new_static (ANJUTA_TOKEN_ARGUMENT, NULL);
-		anjuta_token_merge ($$, $1);
-	}
-	| value value_token {
+	| value variable {
 		anjuta_token_merge ($1, $2);
 	}
 	;
@@ -390,6 +384,12 @@ name_prerequisite:
 	| name_prerequisite variable_token
 	;
 
+variable:
+	variable_token {
+		amp_am_scanner_parse_variable (scanner, $$);
+	}
+	;
+
 /* Tokens
  *----------------------------------------------------------------------------*/
 
@@ -416,7 +416,6 @@ command_token:
 
 value_token:
 	name_token
-	| variable_token
 	| equal_token
 	| rule_token
 	| depend_token
diff --git a/plugins/am-project/am-project.c b/plugins/am-project/am-project.c
index 89052c2..83b518b 100644
--- a/plugins/am-project/am-project.c
+++ b/plugins/am-project/am-project.c
@@ -86,6 +86,14 @@ typedef enum {
 	AM_GROUP_TOKEN_LAST
 } AmpGroupTokenCategory;
 
+typedef struct _AmpVariable AmpVariable;
+
+struct _AmpVariable {
+	gchar *name;
+	AnjutaTokenType assign;
+	AnjutaToken *value;
+};
+
 typedef struct _AmpRootData AmpRootData;
 
 struct _AmpRootData {
@@ -101,6 +109,7 @@ struct _AmpGroupData {
 	AnjutaTokenFile *tfile;		/* Corresponding Makefile */
 	GList *tokens[AM_GROUP_TOKEN_LAST];					/* List of token used by this group */
 	AnjutaToken *make_token;
+	GHashTable *variables;
 };
 
 typedef enum _AmpTargetFlag
@@ -737,6 +746,44 @@ amp_project_free_module_hash (AmpProject *project)
 	}
 }
 
+/* Variable object
+ *---------------------------------------------------------------------------*/
+
+static const gchar *
+amp_variable_get_name (AmpVariable *variable)
+{
+	return variable->name;
+}
+
+static gchar *
+amp_variable_evaluate (AmpVariable *variable, AmpProject *project)
+{
+	return anjuta_token_evaluate (variable->value);
+}
+
+static AmpVariable*
+amp_variable_new (gchar *name, AnjutaTokenType assign, AnjutaToken *value)
+{
+    AmpVariable *variable = NULL;
+
+	g_return_val_if_fail (name != NULL, NULL);
+	
+	variable = g_slice_new0(AmpVariable); 
+	variable->name = g_strdup (name);
+	variable->assign = assign;
+	variable->value = value;
+
+	return variable;
+}
+
+static void
+amp_variable_free (AmpVariable *variable)
+{
+	g_free (variable->name);
+	
+    g_slice_free (AmpVariable, variable);
+}
+
 /* Group objects
  *---------------------------------------------------------------------------*/
 
@@ -803,7 +850,7 @@ amp_group_set_makefile (AmpGroup *node, GFile *makefile, AmpProject* project)
 		token = anjuta_token_file_load (group->tfile, NULL);
 			
 		scanner = amp_am_scanner_new (project, node);
-		group->make_token = amp_am_scanner_parse_token (scanner, token, makefile, NULL);
+		group->make_token = amp_am_scanner_parse_token (scanner, anjuta_token_new_static (ANJUTA_TOKEN_FILE, NULL), token, makefile, NULL);
 		amp_am_scanner_free (scanner);
 	}
 	else
@@ -833,6 +880,8 @@ amp_group_new (GFile *file, gboolean dist_only)
 						ANJUTA_PROJECT_CAN_REMOVE |
 						ANJUTA_PROJECT_CAN_SAVE;
 	group->dist_only = dist_only;
+	group->variables = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify)amp_variable_free);
+
 
     return g_node_new (group);
 }
@@ -852,7 +901,7 @@ amp_group_free (AmpGroup *node)
 		if (group->tokens[i] != NULL) g_list_free (group->tokens[i]);
 	}
     g_slice_free (AmpGroupData, group);
-	
+	if (group->variables) g_hash_table_destroy (group->variables);
 
 	g_node_destroy (node);
 }
@@ -1162,7 +1211,7 @@ amp_project_load_properties (AmpProject *project, AnjutaToken *macro, AnjutaToke
 {
 	AnjutaProjectProperty *item;
 	
-	//fprintf (stdout, "property list:\n");
+	//fprintf (stderr, "property list:\n");
 	//anjuta_token_dump (args);
 
 	project->ac_init = macro;
@@ -1276,7 +1325,7 @@ amp_project_load_config (AmpProject *project, AnjutaToken *arg_list)
 
 		/* File list */
 		scanner = amp_ac_scanner_new (project);
-		fprintf (stdout, "\nParse list\n");
+		fprintf (stderr, "\nParse list\n");
 		
 		arg = anjuta_token_first_item (arg_list);
 		list = amp_ac_scanner_parse_token (scanner, arg, AC_SPACE_LIST_STATE, NULL);
@@ -1356,7 +1405,7 @@ project_load_target (AmpProject *project, AnjutaToken *name, AnjutaTokenType tok
 	split_automake_variable (value, &flags, &install, NULL);
 
 	amp_group_add_token (parent, name, AM_GROUP_TARGET);
-	
+
 	for (arg = anjuta_token_first_word (list); arg != NULL; arg = anjuta_token_next_word (arg))
 	{
 		gchar *value;
@@ -1367,7 +1416,10 @@ project_load_target (AmpProject *project, AnjutaToken *name, AnjutaTokenType tok
 		gpointer find;
 
 		value = anjuta_token_evaluate (arg);
-		canon_id = canonicalize_automake_variable (value);		
+		
+		/* This happens for variable token which are considered as value */
+		if (value == NULL) continue;
+		canon_id = canonicalize_automake_variable (value);
 		
 		/* Check if target already exists */
 		find = value;
@@ -1815,7 +1867,7 @@ project_load_makefile (AmpProject *project, GFile *file, AnjutaProjectNode *pare
 		return group;
 	}
 	
-	/* Parse makefile.am */	
+	/* Parse makefile.am */
 	DEBUG_PRINT ("Parse: %s", g_file_get_uri (makefile));
 	tfile = amp_group_set_makefile (group, makefile, project);
 	g_hash_table_insert (project->files, makefile, tfile);
@@ -1882,6 +1934,7 @@ amp_project_set_am_variable (AmpProject* project, AmpGroup* group, AnjutaTokenTy
 	}
 }
 
+
 /* Public functions
  *---------------------------------------------------------------------------*/
 
@@ -1951,15 +2004,15 @@ amp_project_load_root (AmpProject *project, AnjutaProjectNode *node, GError **er
 	g_hash_table_insert (project->files, configure_file, project->configure_file);
 	g_object_add_toggle_ref (G_OBJECT (project->configure_file), remove_config_file, project);
 	arg = anjuta_token_file_load (project->configure_file, NULL);
-	//fprintf (stdout, "AC file before parsing\n");
+	//fprintf (stderr, "AC file before parsing\n");
 	//anjuta_token_dump (arg);
-	//fprintf (stdout, "\n");
+	//fprintf (stderr, "\n");
 	scanner = amp_ac_scanner_new (project);
 	project->configure_token = amp_ac_scanner_parse_token (scanner, arg, 0, &err);
-	//fprintf (stdout, "AC file after parsing\n");
+	//fprintf (stderr, "AC file after parsing\n");
 	//anjuta_token_check (arg);
 	//anjuta_token_dump (project->configure_token);
-	//fprintf (stdout, "\n");
+	//fprintf (stderr, "\n");
 	amp_ac_scanner_free (scanner);
 	if (project->configure_token == NULL)
 	{
@@ -3412,6 +3465,57 @@ amp_group_get_id (AmpGroup *group)
 	return g_file_get_uri (AMP_GROUP_DATA (group)->base.file);
 }
 
+void
+amp_group_update_variable (AmpGroup *group, AnjutaToken *variable)
+{
+	AnjutaToken *arg;
+	char *name = NULL;
+	AnjutaToken *value = NULL;
+	AmpVariable *var;
+
+	arg = anjuta_token_first_item (variable);
+	name = g_strstrip (anjuta_token_evaluate (arg));
+	arg = anjuta_token_next_item (arg);
+	value = anjuta_token_next_item (arg);
+
+	var = (AmpVariable *)g_hash_table_lookup (AMP_GROUP_DATA (group)->variables, name);
+	if (var != NULL)
+	{
+		var->value = value;
+	}
+	else
+	{
+		var = amp_variable_new (name, 0, value);
+		g_hash_table_insert (AMP_GROUP_DATA (group)->variables, var->name, var);
+	}
+
+	if (name) g_free (name);
+}
+
+AnjutaToken*
+amp_group_get_variable_token (AmpGroup *group, AnjutaToken *variable)
+{
+	guint length;
+	const gchar *string;
+	gchar *name;
+	AmpVariable *var;
+		
+	length = anjuta_token_get_length (variable);
+	string = anjuta_token_get_string (variable);
+	if (string[1] == '(')
+	{
+		name = g_strndup (string + 2, length - 3);
+	}
+	else
+	{
+		name = g_strndup (string + 1, 1);
+	}
+	var = g_hash_table_lookup (AMP_GROUP_DATA (group)->variables, name);
+	g_free (name);
+
+	return var != NULL ? var->value : NULL;
+}
+
 /* Target access functions
  *---------------------------------------------------------------------------*/
 
diff --git a/plugins/am-project/am-project.h b/plugins/am-project/am-project.h
index 087521b..6a45f89 100644
--- a/plugins/am-project/am-project.h
+++ b/plugins/am-project/am-project.h
@@ -89,7 +89,6 @@ void amp_project_load_config (AmpProject *project, AnjutaToken *arg_list);
 void amp_project_load_properties (AmpProject *project, AnjutaToken *macro, AnjutaToken *list);
 void amp_project_load_module (AmpProject *project, AnjutaToken *module);
 
-
 AmpGroup *amp_project_get_root (AmpProject *project);
 AmpGroup *amp_project_get_group (AmpProject *project, const gchar *id);
 AmpTarget *amp_project_get_target (AmpProject *project, const gchar *id);
@@ -139,6 +138,8 @@ void amp_node_all_foreach (AnjutaProjectNode *node, AnjutaProjectNodeFunc func,
 GFile *amp_group_get_directory (AmpGroup *group);
 GFile *amp_group_get_makefile (AmpGroup *group);
 gchar *amp_group_get_id (AmpGroup *group);
+void amp_group_update_variable (AmpGroup *group, AnjutaToken *variable);
+AnjutaToken* amp_group_get_variable_token (AmpGroup *group, AnjutaToken *variable);
 
 const gchar *amp_target_get_name (AmpTarget *target);
 gchar *amp_target_get_id (AmpTarget *target);
diff --git a/plugins/am-project/am-scanner.h b/plugins/am-project/am-scanner.h
index c1ed3b1..59eb367 100644
--- a/plugins/am-project/am-scanner.h
+++ b/plugins/am-project/am-scanner.h
@@ -39,10 +39,11 @@ typedef struct _AmpAmScanner AmpAmScanner;
 AmpAmScanner *amp_am_scanner_new (AmpProject *project, AmpGroup *group);
 void amp_am_scanner_free (AmpAmScanner *scanner);
 
-AnjutaToken *amp_am_scanner_parse_token (AmpAmScanner *scanner, AnjutaToken *token, GFile *filename, GError **error);
+AnjutaToken *amp_am_scanner_parse_token (AmpAmScanner *scanner, AnjutaToken *root, AnjutaToken *content, GFile *filename, GError **error);
 
 void amp_am_scanner_set_am_variable (AmpAmScanner *scanner, AnjutaTokenType variable, AnjutaToken *name, AnjutaToken *list);
 void amp_am_scanner_include (AmpAmScanner *scanner, AnjutaToken *name);
+void amp_am_scanner_update_variable (AmpAmScanner *scanner, AnjutaToken *variable);
 
 
 void amp_am_yyerror (YYLTYPE *loc, AmpAmScanner *scanner, char const *s);
diff --git a/plugins/am-project/am-scanner.l b/plugins/am-project/am-scanner.l
index 29b77bb..440ee29 100644
--- a/plugins/am-project/am-scanner.l
+++ b/plugins/am-project/am-scanner.l
@@ -16,7 +16,7 @@
  * You should have received a copy of the GNU General Public License along
  * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
- 
+
 %{
 
 #include "am-scanner.h"
@@ -35,7 +35,7 @@
 
 #define YY_DECL static int am_yylex (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner)
 
-#define YY_USER_INIT {yy_flex_debug = 1;}
+//#define YY_USER_INIT {yy_flex_debug = 1;}
 
 static int amp_am_scanner_parse_end (AmpAmScanner *scanner);
 
@@ -44,13 +44,14 @@ static int amp_am_scanner_parse_end (AmpAmScanner *scanner);
 
 struct _AmpAmScanner
 {
-    yyscan_t scanner;
+	yyscan_t scanner;
 
 	AnjutaTokenStream *stream;
 
-    AmpProject *project;
-    AmpGroup *group;
+	AmpProject *project;
+	AmpGroup *group;
 	GHashTable *orphan_properties;
+	gboolean eof;
 };
 
 %}
@@ -74,7 +75,9 @@ NAME          [^ \t\n\r:#=$"'`&@\\]*
 
 %%
 
-<INITIAL>\n 						{ RETURN (EOL); }
+<INITIAL><<EOF>>					{ gint ret = amp_am_scanner_parse_end (yyextra); if (ret !=1) return ret; }
+
+<INITIAL>\n 						{ RETURN (END_OF_LINE); }
 
 <INITIAL>([ ]|\\\n)([ \t]|\\\n)*	{ RETURN (SPACE); }
 
@@ -82,7 +85,7 @@ NAME          [^ \t\n\r:#=$"'`&@\\]*
 
 <INITIAL>([ ]|\\\n)([ \t]|\\\n)* 	{ RETURN (SPACE); }
 
-<INITIAL>([ \t])*#.*\n 				{ RETURN (EOL); }
+<INITIAL>([ \t])*#.*\n 				{ RETURN (END_OF_LINE); }
 
 <INITIAL>\t 						{ RETURN (TAB); }
 
@@ -202,16 +205,23 @@ NAME          [^ \t\n\r:#=$"'`&@\\]*
 static gint
 amp_am_scanner_parse_end (AmpAmScanner *scanner)
 {
-    yypop_buffer_state(scanner->scanner);
-    scanner->stream = anjuta_token_stream_pop (scanner->stream);
-
     if (scanner->stream == NULL)
     {
         yyterminate();
     }
     else
     {
-        return 1;
+        yypop_buffer_state(scanner->scanner);
+        scanner->stream = anjuta_token_stream_pop (scanner->stream);
+
+        if (scanner->stream == NULL)
+        {
+            yyterminate();
+        }
+        else
+        {
+            return 1;
+        }
     }
 }
 
@@ -241,43 +251,46 @@ amp_am_scanner_set_am_variable (AmpAmScanner *scanner, AnjutaTokenType variable,
 }
 
 void
-amp_am_scanner_include (AmpAmScanner *scanner, AnjutaToken *name)
+amp_am_scanner_include (AmpAmScanner *scanner, AnjutaToken *list)
 {
 	GFile *file;
 	AnjutaTokenFile *include;
 	AnjutaToken *token;
+	AnjutaToken *name;
 	gchar *filename;
 
+	name = anjuta_token_first_item (list);
+	name = anjuta_token_next_item (name);
 	filename = g_strstrip (anjuta_token_evaluate (name));
 	g_message ("read include =%s=", filename);
 	file = g_file_resolve_relative_path (anjuta_token_stream_get_current_directory (scanner->stream), filename);
 	g_free (filename);
 	include = anjuta_token_file_new (file);
 	token = anjuta_token_file_load (include, NULL);
-	//g_message ("read file =%s= arg %p", g_file_get_path (file), token);
-	amp_am_scanner_parse_token (scanner, token, file, NULL);
+	amp_am_scanner_parse_token (scanner, list, token, file, NULL);
 	g_object_unref (file);
 }
 
 void
+amp_am_scanner_update_variable (AmpAmScanner *scanner, AnjutaToken *variable)
+{
+    amp_group_update_variable (scanner->group, variable);
+}
+
+
+void
 amp_am_scanner_parse_variable (AmpAmScanner *scanner, AnjutaToken *variable)
 {
-	AnjutaToken *group;
+	AnjutaToken *value;
 	AnjutaToken *content;
 
 	anjuta_token_set_type (variable, ANJUTA_TOKEN_VARIABLE);
-	content = anjuta_token_new_static (ANJUTA_TOKEN_CONTENT, NULL);
-	anjuta_token_stream_append_token (scanner->stream, content);
 
-	/*group = mkp_project_get_variable_token (scanner->project, variable);
-	fprintf(stdout, "get variable %s is %p\n", anjuta_token_evaluate (variable), group);
-	if (group != NULL)
+	value = amp_group_get_variable_token (scanner->group, variable);
+	if (value != NULL)
 	{
-		fprintf (stdout,"variable %s\n", anjuta_token_get_string (variable));
-		//anjuta_token_dump (group);
-		amp_am_scanner_parse_token (scanner, group, NULL, NULL);
-		//anjuta_token_free (token);
-	}*/
+		amp_am_scanner_parse_token (scanner, variable, value, NULL, NULL);
+	}
 }
 
 
@@ -285,12 +298,12 @@ amp_am_scanner_parse_variable (AmpAmScanner *scanner, AnjutaToken *variable)
  *---------------------------------------------------------------------------*/
 
 AnjutaToken *
-amp_am_scanner_parse_token (AmpAmScanner *scanner, AnjutaToken *token, GFile *filename, GError **error)
+amp_am_scanner_parse_token (AmpAmScanner *scanner, AnjutaToken *root, AnjutaToken *content, GFile *filename, GError **error)
 {
     AnjutaToken *first;
     AnjutaTokenStream *stream;
 
-    stream = anjuta_token_stream_push (scanner->stream, token, filename);
+    stream = anjuta_token_stream_push (scanner->stream, root, content, filename);
     first = anjuta_token_stream_get_root (stream);
 
     if (scanner->stream != NULL)
@@ -341,8 +354,9 @@ amp_am_scanner_new (AmpProject *project, AmpGroup *group)
 
 	scanner = g_new0 (AmpAmScanner, 1);
 
-    scanner->project = project;
-    scanner->group = group;
+	scanner->project = project;
+	scanner->group = group;
+	scanner->eof = FALSE;
 
 	/* Create hash table for sources list */
 	scanner->orphan_properties = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify)g_free, (GDestroyNotify)amp_target_property_buffer_free);
diff --git a/plugins/am-project/tests/anjuta.at b/plugins/am-project/tests/anjuta.at
index 5da034d..6aa003f 100644
--- a/plugins/am-project/tests/anjuta.at
+++ b/plugins/am-project/tests/anjuta.at
@@ -1,5 +1,5 @@
 AT_SETUP([Load anjuta project])
-AT_PARSER_CHECK([load $at_top_srcdir \
+AT_PARSER_CHECK([load ../../$at_top_srcdir \
 		 list])
-AT_CHECK([diff output $at_srcdir/anjuta.lst])
+AT_CHECK([diff output ../../$at_srcdir/anjuta.lst])
 AT_CLEANUP
diff --git a/plugins/am-project/tests/anjuta.lst b/plugins/am-project/tests/anjuta.lst
index 7bee5e1..3429164 100644
--- a/plugins/am-project/tests/anjuta.lst
+++ b/plugins/am-project/tests/anjuta.lst
@@ -142,8 +142,69 @@
                     SOURCE (19:4:0:0:58): libanjuta/interfaces/ianjuta-vcs.c
                     SOURCE (19:4:0:0:59): libanjuta/interfaces/ianjuta-wizard.c
                     SOURCE (19:4:0:0:60): libanjuta/interfaces/libanjuta-iface-marshallers.c
-                TARGET (19:4:0:1): $(libanjuta_interfaces_include)
-                TARGET (19:4:0:2): $(files_idl)
+                TARGET (19:4:0:1): ianjuta-buildable.h
+                TARGET (19:4:0:2): ianjuta-builder.h
+                TARGET (19:4:0:3): ianjuta-debug-manager.h
+                TARGET (19:4:0:4): ianjuta-debugger.h
+                TARGET (19:4:0:5): ianjuta-debugger-breakpoint.h
+                TARGET (19:4:0:6): ianjuta-debugger-instruction.h
+                TARGET (19:4:0:7): ianjuta-debugger-memory.h
+                TARGET (19:4:0:8): ianjuta-debugger-register.h
+                TARGET (19:4:0:9): ianjuta-debugger-variable.h
+                TARGET (19:4:0:10): ianjuta-document.h
+                TARGET (19:4:0:11): ianjuta-document-manager.h
+                TARGET (19:4:0:12): ianjuta-editor.h
+                TARGET (19:4:0:13): ianjuta-editor-assist.h
+                TARGET (19:4:0:14): ianjuta-editor-cell.h
+                TARGET (19:4:0:15): ianjuta-editor-cell-style.h
+                TARGET (19:4:0:16): ianjuta-editor-comment.h
+                TARGET (19:4:0:17): ianjuta-editor-convert.h
+                TARGET (19:4:0:18): ianjuta-editor-factory.h
+                TARGET (19:4:0:19): ianjuta-editor-folds.h
+                TARGET (19:4:0:20): ianjuta-editor-goto.h
+                TARGET (19:4:0:21): ianjuta-editor-hover.h
+                TARGET (19:4:0:22): ianjuta-editor-language.h
+                TARGET (19:4:0:23): ianjuta-editor-line-mode.h
+                TARGET (19:4:0:24): ianjuta-editor-search.h
+                TARGET (19:4:0:25): ianjuta-editor-selection.h
+                TARGET (19:4:0:26): ianjuta-editor-tip.h
+                TARGET (19:4:0:27): ianjuta-editor-view.h
+                TARGET (19:4:0:28): ianjuta-editor-zoom.h
+                TARGET (19:4:0:29): ianjuta-environment.h
+                TARGET (19:4:0:30): ianjuta-file.h
+                TARGET (19:4:0:31): ianjuta-file-loader.h
+                TARGET (19:4:0:32): ianjuta-file-manager.h
+                TARGET (19:4:0:33): ianjuta-file-savable.h
+                TARGET (19:4:0:34): ianjuta-help.h
+                TARGET (19:4:0:35): ianjuta-indicable.h
+                TARGET (19:4:0:36): ianjuta-iterable.h
+                TARGET (19:4:0:37): ianjuta-iterable-tree.h
+                TARGET (19:4:0:38): ianjuta-language.h
+                TARGET (19:4:0:39): ianjuta-language-support.h
+                TARGET (19:4:0:40): ianjuta-loader.h
+                TARGET (19:4:0:41): ianjuta-macro.h
+                TARGET (19:4:0:42): ianjuta-markable.h
+                TARGET (19:4:0:43): ianjuta-message-manager.h
+                TARGET (19:4:0:44): ianjuta-message-view.h
+                TARGET (19:4:0:45): ianjuta-plugin-factory.h
+                TARGET (19:4:0:46): ianjuta-preferences.h
+                TARGET (19:4:0:47): ianjuta-print.h
+                TARGET (19:4:0:48): ianjuta-project.h
+                TARGET (19:4:0:49): ianjuta-project-backend.h
+                TARGET (19:4:0:50): ianjuta-project-manager.h
+                TARGET (19:4:0:51): ianjuta-provider.h
+                TARGET (19:4:0:52): ianjuta-stream.h
+                TARGET (19:4:0:53): ianjuta-stream-loader.h
+                TARGET (19:4:0:54): ianjuta-stream-savable.h
+                TARGET (19:4:0:55): ianjuta-symbol.h
+                TARGET (19:4:0:56): ianjuta-symbol-manager.h
+                TARGET (19:4:0:57): ianjuta-terminal.h
+                TARGET (19:4:0:58): ianjuta-todo.h
+                TARGET (19:4:0:59): ianjuta-vcs.h
+                TARGET (19:4:0:60): ianjuta-wizard.h
+                TARGET (19:4:0:61): libanjuta-iface-marshallers.h
+                TARGET (19:4:0:62): libanjuta-interfaces.h
+                TARGET (19:4:0:63): libanjuta.idl
             TARGET (19:4:1): libanjuta.la
                 SOURCE (19:4:1:0): libanjuta/anjuta-enum-types.h
                 SOURCE (19:4:1:1): libanjuta/anjuta-enum-types.c
@@ -213,10 +274,44 @@
                 SOURCE (19:4:2:0): libanjuta/anjuta-glade-catalog.c
             TARGET (19:4:3): catalog
                 SOURCE (19:4:3:0): libanjuta/anjuta-glade.xml
-            TARGET (19:4:4): $(libanjuta_include)
-            TARGET (19:4:5): anjuta-enum-types.h
-            TARGET (19:4:6): pkgconfig
-                SOURCE (19:4:6:0): libanjuta/libanjuta-1.0.pc
+            TARGET (19:4:4): libanjuta.h
+            TARGET (19:4:5): anjuta-debug.h
+            TARGET (19:4:6): anjuta-shell.h
+            TARGET (19:4:7): anjuta-status.h
+            TARGET (19:4:8): anjuta-encodings.h
+            TARGET (19:4:9): anjuta-convert.h
+            TARGET (19:4:10): anjuta-plugin.h
+            TARGET (19:4:11): anjuta-plugin-description.h
+            TARGET (19:4:12): anjuta-plugin-manager.h
+            TARGET (19:4:13): anjuta-plugin-handle.h
+            TARGET (19:4:14): anjuta-profile.h
+            TARGET (19:4:15): anjuta-profile-manager.h
+            TARGET (19:4:16): anjuta-marshal.h
+            TARGET (19:4:17): anjuta-utils.h
+            TARGET (19:4:18): anjuta-preferences-dialog.h
+            TARGET (19:4:19): anjuta-preferences.h
+            TARGET (19:4:20): anjuta-ui.h
+            TARGET (19:4:21): anjuta-launcher.h
+            TARGET (19:4:22): anjuta-session.h
+            TARGET (19:4:23): anjuta-save-prompt.h
+            TARGET (19:4:24): anjuta-serializer.h
+            TARGET (19:4:25): anjuta-error.h
+            TARGET (19:4:26): resources.h
+            TARGET (19:4:27): anjuta-vcs-status-tree-view.h
+            TARGET (19:4:28): anjuta-vcs-status.h
+            TARGET (19:4:29): anjuta-command.h
+            TARGET (19:4:30): anjuta-async-command.h
+            TARGET (19:4:31): anjuta-async-notify.h
+            TARGET (19:4:32): anjuta-sync-command.h
+            TARGET (19:4:33): anjuta-version.h
+            TARGET (19:4:34): gbf-project.h
+            TARGET (19:4:35): anjuta-project.h
+            TARGET (19:4:36): anjuta-command-queue.h
+            TARGET (19:4:37): anjuta-tabber.h
+            TARGET (19:4:38): anjuta-token.h
+            TARGET (19:4:39): anjuta-enum-types.h
+            TARGET (19:4:40): pkgconfig
+                SOURCE (19:4:40:0): libanjuta/libanjuta-1.0.pc
         GROUP (19:5): plugins
             GROUP (19:5:0): gtodo
                 TARGET (19:5:0:0): gtodo_ui
@@ -1337,7 +1432,6 @@
                     SOURCE (19:5:24:8:33): plugins/symbol-db/symbol-db-views.h
                     SOURCE (19:5:24:8:34): plugins/symbol-db/libgda-extra/gda-data-model-concat.c
                     SOURCE (19:5:24:8:35): plugins/symbol-db/libgda-extra/gda-data-model-concat.h
-                    SOURCE (19:5:24:8:36): plugins/symbol-db/$(BUILT_SOURCES)
             GROUP (19:5:25): git
                 TARGET (19:5:25:0): git_glade
                     SOURCE (19:5:25:0:0): plugins/git/anjuta-git.ui
@@ -1734,6 +1828,9 @@
                 SOURCE (19:6:4:7): src/action-callbacks.h
                 SOURCE (19:6:4:8): src/action-callbacks.c
                 SOURCE (19:6:4:9): src/main.c
+            TARGET (19:6:5): anjuta-shell
+                SOURCE (19:6:5:0): src/shell.c
+                SOURCE (19:6:5:1): src/shell.h
         GROUP (19:7): manuals
             GROUP (19:7:0): reference
                 GROUP (19:7:0:0): libanjuta



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]