On Fri, 2015-01-23 at 22:24 +0100, SF Markus Elfring wrote: > > it means that the open parenthesis that it didn't match was the > > "info" function on line 95. > > I find this detail hard to believe. > > I hope that the current KDevelop editor does not misguide me. The parentheses > pairs are found there as expected.
Then KDevelop is wrong. It appears that KDevelop's "makefile" editing mode doesn't properly handle backslash continuations. > Do you read the shown rule example eventually in the way that its recipe > does not end with "…_NOTIFICATION8)'))"? The _RULE_ does end with it, because the rule includes all the recipe lines that appear after the target. But variable/function invocations cannot span different lines of a recipe. They all must be contained within the same logical line, as I mentioned before. This is trivial to try out for yourself (like most things in make); just write a simple makefile: $ cat > Makefile <<EOF all: $(info hello \ there) $(info hello there) $ make hello there Makefile:2: *** unterminated call to function 'info': missing ')'. Stop. So the backslashed version (same logical line) works but the non-backslashed version (different logical lines) fails. I'm not sure why the linenumber is wrong though... hm... > > If you want that then you need a backslash at the end of line 96, to > > continue the logical line: > > I find that a backslash would not be needed at this place if would like to > keep the "RM command" on a separate logical line. It is definitely needed. As I've said, it is not possible for a single variable or function reference to span multiple logical lines. If you want to do this you have to use define/endef to create a variable that contains newlines, then use the variable in the recipe; see example below. I'm really not at all sure why you're using $(info ...) here... it won't actually do anything if you do that. define RUN_PARALLEL $(eval LET_RUN_DATA_EXPORT1_PARALLEL::=)@$(RM) '$(RESULT_SQL_DATABASE_NOTIFICATION8)' $(DATABASE_CLI) -c \ '$(SQL_SELECT_START)_parallel1 where static = 0 $(SQL_SELECT_END)' \ '$(DATABASE_NAME)' \ > '$(RESULT_FUNCTIONS_WITH_PREFIX_PARALLEL)' \ && $(TOUCH) '$(RESULT_SQL_DATABASE_NOTIFICATION8)' endef $(RESULT_FUNCTIONS_WITH_PREFIX1_PARALLEL) \ $(RESULT_SQL_DATABASE_NOTIFICATION8): \ initialise_database \ $(RESULT_SQL_DATABASE_NOTIFICATION4) $(info $(if $(LET_RUN_DATA_EXPORT1_PARALLEL),$(RUN_PARALLEL))) _______________________________________________ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make