1noinst_LTLIBRARIES = libgda_sql_parser-5.0.la
2noinst_PROGRAMS =
3
4AM_CPPFLAGS = \
5	-I$(top_srcdir) -I$(srcdir)/.. \
6        -I$(top_builddir) \
7        $(COREDEPS_CFLAGS) \
8	$(LIBGDA_WFLAGDS)
9
10lemon$(EXEEXT_FOR_BUILD): lemon.c
11	$(CC_FOR_BUILD) -o lemon$(EXEEXT_FOR_BUILD) $(srcdir)/lemon.c
12
13gen_def$(EXEEXT_FOR_BUILD): gen_def.c
14	 $(CC_FOR_BUILD) -o gen_def$(EXEEXT_FOR_BUILD) -DSRCDIR=\"$(srcdir)\" $(srcdir)/gen_def.c
15
16parser.c parser.h: parser.y lemon$(EXEEXT_FOR_BUILD)
17	- ./lemon$(EXEEXT_FOR_BUILD) -d -T$(srcdir)/lempar.c $(srcdir)/parser.y
18
19delimiter.c delimiter.h: delimiter.y lemon$(EXEEXT_FOR_BUILD)
20	./lemon$(EXEEXT_FOR_BUILD) -q -d -T$(srcdir)/lempar.c $(srcdir)/delimiter.y
21
22token_types.h: gen_def$(EXEEXT_FOR_BUILD) delimiter.h parser.h
23	./gen_def$(EXEEXT_FOR_BUILD) > token_types.h
24
25libgda_sql_parser_headers = \
26	gda-sql-parser.h \
27	gda-sql-statement.h \
28	gda-statement-struct-decl.h \
29	gda-statement-struct.h \
30	gda-statement-struct-compound.h \
31	gda-statement-struct-delete.h \
32	gda-statement-struct-update.h \
33	gda-statement-struct-insert.h \
34	gda-statement-struct-parts.h \
35	gda-statement-struct-pspec.h \
36	gda-statement-struct-select.h \
37	gda-statement-struct-trans.h \
38	gda-statement-struct-unknown.h \
39	gda-statement-struct-util.h
40
41gda-sql-parser-enum-types.h: s-enum-types-h
42	@true
43
44s-enum-types-h: @REBUILD@ $(libgda_sql_parser_headers) Makefile
45	( cd $(srcdir) && glib-mkenums \
46	                --fhead "#ifndef __LIBGDA_SQL_PARSER_ENUM_TYPES_H__\n#define __LIBGDA_SQL_PARSER_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
47			--vhead "GType @enum_name@_get_type (void);\n#define GDA_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" 	\
48			--ftail "G_END_DECLS\n\n#endif /* __LIBGDA_ENUM_TYPES_H__ */" \
49		$(libgda_sql_parser_headers)) > tmp-gda-enum-types.h \
50	&& (cmp -s tmp-gda-enum-types.h gda-sql-parser-enum-types.h || cp tmp-gda-enum-types.h gda-sql-parser-enum-types.h ) \
51	&& rm -f tmp-gda-enum-types.h	\
52	&& echo timestamp > $(@F)
53
54gda-sql-parser-enum-types.c: s-enum-types-c
55	@true
56
57s-enum-types-c: @REBUILD@ $(libgda_sql_parser_headers) Makefile
58	( cd $(srcdir) && glib-mkenums \
59	                --fhead "#include <sql-parser/gda-sql-parser.h>\n" \
60	                --fhead "#include <sql-parser/gda-sql-statement.h>\n" \
61	                --fhead "#include <glib-object.h>" \
62			--vhead "GType\n@enum_name@_get_type (void)\n{\n  static GType etype = 0;\n  if (etype == 0) {\n    static const G@Type@Value values[] = {" 	\
63			--vprod "      { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
64			--vtail "      { 0, NULL, NULL }\n    };\n    etype = g_@type@_register_static (\"@EnumName@\", values);\n  }\n  return etype;\n}\n" \
65		$(libgda_sql_parser_headers)) > tmp-gda-enum-types.c \
66	&& (cmp -s tmp-gda-enum-types.c gda-sql-parser-enum-types.c || cp tmp-gda-enum-types.c gda-sql-parser-enum-types.c ) \
67	&& rm -f tmp-gda-enum-types.c \
68	&& echo timestamp > $(@F)
69
70# Generate the enums source code, with glib-mkenums:
71# This is based on the same Makefile.am stuff in pango:
72libgda_sql_parser_built_headers = gda-sql-parser-enum-types.h
73libgda_sql_parser_built_cfiles = gda-sql-parser-enum-types.c
74
75$(OBJECTS) $(libgda_sql_parser_5_0_la_OBJECTS): token_types.h
76libgda_sql_parserincludedir=$(includedir)/libgda-$(GDA_ABI_MAJOR_VERSION).$(GDA_ABI_MINOR_VERSION)/libgda/sql-parser
77libgda_sql_parserinclude_HEADERS=$(libgda_sql_parser_headers) $(libgda_sql_parser_built_headers)
78
79libgda_sql_parser_5_0_la_SOURCES = \
80	$(libgda_sql_parser_headers) \
81	$(libgda_sql_parser_built_headers) \
82	$(libgda_sql_parser_built_cfiles) \
83	gda-sql-parser-private.h \
84	parser.c \
85        parser.h \
86	delimiter.c \
87	delimiter.h \
88	token_types.h \
89        gda-sql-parser.c \
90        gda-statement-struct.c \
91	gda-statement-struct-compound.c \
92        gda-statement-struct-delete.c \
93        gda-statement-struct-update.c \
94        gda-statement-struct-insert.c \
95        gda-statement-struct-parts.c \
96        gda-statement-struct-pspec.c \
97        gda-statement-struct-select.c \
98        gda-statement-struct-trans.c \
99        gda-statement-struct-unknown.c \
100        gda-statement-struct-util.c
101
102EXTRA_DIST= parser.y delimiter.y lemon.c lempar.c gen_def.c parser_tokens.h
103
104CLEANFILES = parser.h parser.c parser.out delimiter.h delimiter.c delimiter.out token_types.h \
105	lemon$(EXEEXT_FOR_BUILD) gen_def$(EXEEXT_FOR_BUILD) \
106	$(libgda_sql_parser_built_headers) $(libgda_sql_parser_built_cfiles) \
107	gda-enum-types.h \
108	s-enum-types-h \
109	gda-enum-types.c \
110	s-enum-types-c
111