makefile - Generating bindings with automatic file list? -
i'm trying generate bindings using swig , automatic input file list. apparently not working (make
says there's nothing target 'bindings'). manually calling make make whatever.i
works intended.
i have following makefile.am now:
bin_programs = ptpcapture2 ptpcapture2_sources = *.scm bindsrcs = *.i bindscms = $(bindsrcs:.i=.scm) .i.scm: $(swig) -chicken -addextern $< .scm.c: bindings $(csc) -t -c $< bindings: $(bindscms)
what did miss or wrong?
if you're going use suffix rules, have add new suffixes list of known suffixes via .suffixes
special target:
.suffixes: .i .scm
it's simpler use pattern rules instead:
%.scm : %.i $(swig) -chicken -addextern $< %.c : %.scm bindings $(csc) -t -c $<
but real problem here have explicit wildcards, like:
ptpcapture2_sources := $(wildcard *.scm) bindsrcs := $(wildcard *.i)
why this? because globbing not expanded when variable assigned, it's expanded when rule run. means line:
bindscms = $(bindsrcs:.i=.scm)
sets bindscms
string *.scm
because bindsrcs
not expanded, it's still literal string *.i
.
why bad? because when make sees this:
bindings: *.scm
it tries expand wildcard *.scm
... none of files have been created yet , don't exist, , expands no files, , long target bindings
exists there's nothing rebuild (it has no prerequisites).
Comments
Post a Comment