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