Hello, I am porting a library from a recursive make to a non recursive one. This library must generate c files wit ha tool named "ender_generator", using BUILT_SOURCES
I have that directory structure: Makefile.am data/ dom/ Makefile.mk svg/ Makefile.mk esvg_private.ender src/ lib/ dom/ Makefile.mk other c files css/ Makefile.mk other c files svg/ generated/ Makefile.mk Makefile.mk other c files in the top level Makefile.am: [code] lib_LTLIBRARIES = bin_PROGRAMS = check_PROGRAMS = CLEANFILES = EXTRA_DIST = include src/lib/css/Makefile.mk include src/lib/dom/Makefile.mk include src/lib/svg/generated/Makefile.mk etc... [/code] I have to generated files in src/lib/svg/generated/, using the ender_generate tool, using the file esvg_private.ender. src/lib/css/Makefile.mk and src/lib/dom/Makefile.mk are just standard files for creating a library. For example, src/lib/css/Makefile.mk : [code] CLEANFILES += \ src/lib/css/ecss_lexer.c \ src/lib/css/ecss_grammar.c \ src/lib/css/ecss_grammar.h lib_LTLIBRARIES += src/lib/css/libecss.la installed_cssheadersdir = $(pkgincludedir)-@VMAJ@/css dist_installed_cssheaders_DATA = src/lib/css/Ecss.h src_lib_css_libecss_la_SOURCES = \ src/lib/css/ecss_context.c \ src/lib/css/ecss_main.c \ src/lib/css/ecss_rule.c \ src/lib/css/ecss_selector.c \ src/lib/css/ecss_style.c \ src/lib/css/ecss_grammar.y \ src/lib/css/ecss_filter.c \ src/lib/css/ecss_filter_class.c \ src/lib/css/ecss_filter_id.c \ src/lib/css/ecss_lexer.l \ src/lib/css/ecss_private.h src_lib_css_libecss_la_YFLAGS = -d -p ecss_ src_lib_css_libecss_la_LFLAGS = -o$(LEX_OUTPUT_ROOT).c src_lib_css_libecss_la_CPPFLAGS = -DECSS_BUILD @ECSS_CFLAGS@ src_lib_css_libecss_la_LIBADD = @ECSS_LIBS@ @LEXLIB@ src_lib_css_libecss_la_LDFLAGS = -no-undefined -version-info @version_info@ [/code] Now, the src/lib/svg/generated/Makefile.mk file, which generates the c files: [code] GENERATED_FLAGS = -x GENERATED_ELEMENTS = \ src/lib/svg/generated/esvg_generated_element.c \ src/lib/svg/generated/esvg_generated_element_a.c GENERATED_TYPES = \ src/lib/svg/generated/esvg_generated_boolean_animated.c \ src/lib/svg/generated/esvg_generated_color.c GENERATED_FILES = $(GENERATED_ELEMENTS) $(GENERATED_TYPES) src_lib_svg_generated_esvg_generated_matrix_GFLAGS = -o src_lib_svg_generated_esvg_generated_rect_GFLAGS = -o CLEANFILES += $(GENERATED_FILES) BUILT_SOURCES = $(GENERATED_FILES) %.c: $(top_srcdir)/data/svg/esvg_private.ender ender_generator $(GENERATED_FLAGS) $(value $(addsuffix _GFLAGS,$(basename $@))) $(top_srcdir)/data/svg/esvg_private.ender $(basename $(subst esvg_generated_,,$@)) $@ [/code] GENERATED_ELEMENTS and GENERATED_TYPES have more files, but i have removes them so that it's a bit clearer to read. When I run 'make', I obtain the following output: [code] make: Circular data/svg/esvg_private.ender.c <- data/svg/esvg_private.ender dependency dropped. ender_generator -x ./data/svg/esvg_private.ender data/dom/Makefile.mk data/dom/Makefile.mk.c etc... [/code] So: 0) the recursive build works. Instead of Makefile.mk, we have usual Makefile.am files 1) I have not written the make rule in src/lib/svg/generated/Makefile.mk. I'm just porting to a non recursive build. 2) I don't understand where the circular dependency is (first line of the output above). Certainly from an implicit rule, but i don't see it 3) also, the second line of the output above shows the use of data/dom/Makefile.mk, and not the files of BUILT_SOURCES. So i'm really completely lost... any help is really welcome :-) thank you Vincent Torri