# build.conf for congo default action: check group "lnhdrs", check "libcongo.a", check "congod" "all" action: check group "lnhdrs", check targets() "tests" action: check group "lnhdrs", check group "tests" "unit" action: check group "lnhdrs", check group "unit" set "CXXFLAGS" += "-ggdb" filesIn("src/libcongo") filter regexp("^src/libcongo/(.*)\\.h$", "congo/{re:1}.h"): rule "hln", group "lnhdrs", target file, input "src/libcongo/{re:1}.h" "libcongo.a": rule "lib", target file, set "CXXFLAGS" += "-fPIC -I. -Ilibbu++", input filesIn("src/libcongo") filter regexp("^.*\\.cpp$") "congod": rule "exe", target file, requires ["libbu++/libbu++.a", "libcongo.a"], set "LDFLAGS" += "-L. -lcongo -Llibbu++ -lbu++ -ldl", set "CXXFLAGS" += "-Icongo -Ilibbu++", set "FLEXFLAGS" = "--bison-bridge --bison-locations", input filesIn("src/congod") filter regexp(".*\\.(cpp|y|l)$") directoriesIn("src/libcongo/tests","tests/"): rule "exe", target file, group "tests", requires ["libcongo.a", "libbu++/libbu++.a"], set "CXXFLAGS" += "-I. -Ilibbu++", set "LDFLAGS" += "-L. -lcongo -Llibbu++ -lbu++", input filesIn("{fulldir}") filter regexp("^.*\\.cpp$") filesIn("src/libcongo/tests") filter regexp("^src/libcongo/tests/(.*)\\.cpp$", "tests/{re:1}"): rule "exe", target file, group "tests", requires ["libcongo.a", "libbu++.a"], set "CXXFLAGS" += "-I. -Ilibbu++", set "LDFLAGS" += "-L. -lcongo -Llibbu++ -lbu++", input "src/libcongo/{target}.cpp" rule "exe": matches regexp("(.*)\\.o$"), aggregate toString(" "), perform command("g++ -o {target} {match} {LDFLAGS}") rule "lib": matches regexp("(.*)\\.o$"), aggregate toString(" "), perform command("ar cr {target} {match}") rule "cpp": matches regexp("(.*)\\.(cpp|c)$"), produces "{re:1}.o", requires commandToList("g++ -M {CXXFLAGS} {match}", "make"), perform command("g++ {CXXFLAGS} -c -o {target} {match}") rule "bison": matches regexp("(.*)\\.y$"), produces ["{re:1}.tab.c", "{re:1}.tab.h", "{re:1}.output"], perform command("bison -v -b{re:1} {match}") rule "flex": matches regexp("(.*)\\.l$"), produces "{re:1}.yy.c", perform command("flex {FLEXFLAGS} -o {target} {match}") rule "hln": matches regexp("src/libcongo/(.*)\\.h"), produces "congo/{re:1}.h", perform command("ln -s ../src/libcongo/{re:1}.h {target}")