PROJECTS 	:= ldb
BB_ldb		:= inftp opi schapi tuxapi ldngn infgn ldgn ldcli lddim tuxcom \
           	   tuxjul env ldac ldsrv opign ldtup celltools lddim32 marshaler \
                   ldop inftl ldmrs ldgdd sla lddl infsync 
SHELL		:= sh
PROJ_BB       	:= $(foreach proj,${PROJECTS},$(foreach bb,$(BB_${proj}),$(addprefix ${proj}+,$(bb))))
BUILD_PROJ 	:= $(addprefix build+,${PROJECTS})
BUILD_BB     	:= $(addprefix build+,${PROJ_BB})

.PHONY : all ${PROJECTS} ${BUILD_PROJ} ${BUILD_BB}

all :  ${PROJECTS}

define proj_template
$(1): $(addprefix build+,$(1))
	@echo "proj_template $(1)"
endef

$(foreach proj,$(PROJECTS),$(eval $(call proj_template,$(proj))))

define build_proj_template
$(1):  $(foreach bb,$(BB_$(patsubst build+%,%,$(1))),$(addsuffix +$(bb),$(addprefix build+,$(patsubst build+%,%,$(1)))))
	@echo "build_proj_template $(1)"
endef

$(foreach proj,$(PROJECTS),$(eval $(call build_proj_template,$(addprefix build+,$(proj)))))

#
#(gdb) bt
##0  0xc0199cbc in _sigfillset+0x26fc () from /usr/lib/libc.2
##1  0xc0197e18 in _sigfillset+0x858 () from /usr/lib/libc.2
##2  0xc0198cfc in _sigfillset+0x173c () from /usr/lib/libc.2
##3  0xc0195bec in _sscanf+0x8fc () from /usr/lib/libc.2
##4  0xc019b510 in realloc+0x1a0 () from /usr/lib/libc.2
##5  0x1f738 in xrealloc (
#    ptr=0x40018f78 "build+ldb :  build+ldb+inftp build+ldb+opi build+ldb+schapi build+ldb+tuxapi build+ldb+ldngn build+ldb+in\
#fgn build+ldb+ldgn build+ldb+ld" <Address 0x40019000 out of bounds>, size=4294965501) at misc.c:384
##6  0xb5ec in variable_buffer_output (ptr=0x40018810 "@\001\2100@\001\224\360", string=0x40018498 "", length=1)
#    at expand.c:67
##7  0xba08 in variable_expand_string (line=0x40018810 "@\001\2100@\001\224\360",
#    string=0x40018459 "$(eval $(call build_proj_template,$(addprefix build+,$(proj))))", length=-1)
#    at expand.c:207
##8  0xc0e4 in variable_expand (line=0x40018459 "$(eval $(call build_proj_template,$(addprefix build+,$(proj))))")
#    at expand.c:415
##9  0xc224 in variable_expand_for_file (
#    line=0x40018459 "$(eval $(call build_proj_template,$(addprefix build+,$(proj))))", file=0x0) at expand.c:457
##10 0xc510 in allocated_variable_expand_for_file (
#    line=0x40018459 "$(eval $(call build_proj_template,$(addprefix build+,$(proj))))", file=0x0) at expand.c:555
##11 0x11478 in func_foreach (o=0x40017bf8 "build_proj_template", argv=0x68ff1870, funcname=0x36a98 "foreach")
#    at function.c:874
##12 0x12c80 in expand_builtin_function (o=0x40017bf8 "build_proj_template", argc=3, argv=0x68ff1870,
#    entry_p=0x40003604) at function.c:1864
##13 0x12fd8 in handle_function (op=0x68ff17a4, stringp=0x68ff17a8) at function.c:1964
##14 0xbac8 in variable_expand_string (line=0x40017bf8 "build_proj_template",
#    string=0x40017390 "$(foreach proj,$(PROJECTS),$(eval $(call build_proj_template,$(addprefix build+,$(proj)))))", length=9\
#1) at expand.c:235
##15 0x21c38 in eval (ebuf=0x68ff1574, set_default=1) at read.c:913
##16 0x20828 in eval_makefile (filename=0x40015148 "XXX", flags=0) at read.c:379
##17 0x201a8 in read_all_makefiles (makefiles=0x4000fe70) at read.c:205
##18 0x1b390 in main (argc=3, argv=0x68ff0694, envp=0x68ff06a4) at main.c:1444
#(gdb)






