Hello,
First of all i try to replace the current makefile system with bjam Jamfiles. The code base has around 330 makefiles and these makefiles are configured for 3 platforms (windows, AIX and Linux). In several projects, source code is generated, what is needed for other projects as well.
All seems to work, except if source and header files are generated by flex/bison and are needed for other projects, then the compilation, and I, are confused.
Example, there lot more of these dependencies.
$(TOP)/appl/econf
$(TOP)/cfm
Initially i'm building an executable "econf" that needs a library "cfm"
Jamroot:
build-project appl ;
Jamfile econf:
exe econf
:
econf.c
../../cfm//cfm
: ;
Jamfile cfm:
import lex ;
using bison ;
lib scanner_expr : scanner.l expr.y : <link>static <include>. ;
lib cfm
:
[ glob *.c : chownnt.c ]
scanner_expr
:
<def-file>cfm.def
<link>static
<implicit-dependency>scanner_expr
;
The following error appears after building from $(TOP):
...patience...
...found 2218 targets...
...updating 16 targets...
gcc.compile.c build/cfm/gcc-4.5.3/debug/link-static/cfmparse.o
cfm/cfmparse.c:239:18: fatal error: expr.h: No such file or directory
compilation terminated.
"g++" -x c -O0 -fno-inline -Wall -pedantic -g -DDLLEXP= -DDLLIMP= -I"/usr/include/libxml2" -I"/usr/local/include/zlib" -I"build" -I"include" -I"include/msg" -I"rtl/include" -c -o "build/cfm/gcc-4.5.3/debug/link-static/cfmparse.o" "cfm/cfmparse.c"
It seems target scanner_expr is not build and there is no compile include: -I"build/cfm/gcc-4.5.3/debug/link-static" for the expr.h .
I'm lost within the implicit-dependency configuration. How should i do this ?
My idea about bjam is that you could everywhere start your build process, is this right ?
Regards,
Meindert