[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
non recursive make and BUILT_SOURCES: circular dependency error
From: |
Vincent Torri |
Subject: |
non recursive make and BUILT_SOURCES: circular dependency error |
Date: |
Wed, 13 Feb 2013 23:15:32 +0100 |
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)address@hidden@/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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- non recursive make and BUILT_SOURCES: circular dependency error,
Vincent Torri <=