/* * Copyright (c) 2004, Brian Hawkins * Permission is granted to use this code without restriction as long * as this copyright notice appears in all source files. */ bldoutdir = "build"; build = make.getProperty("build", "debug"); progBin = "cpmaketest"; /* objExt and exeExt are set in the platform specific make file */ if (make.getProperty("os.name").startsWith("Windows")) sourceRelative("windows.bsh"); else sourceRelative("linux.bsh"); progBin = progBin + exeExt; srcFiles = new String[] { "main.cpp", "employee.cpp", "company.cpp" }; objs = make.substitute("(.*)\\.cpp", bldoutdir+"/$1"+objExt, srcFiles); includeDirs = new String[] { "include" }; //------------------------------------------------------------------- //==-- SET SEARCH PATHS --== make.addSearchPath(".*\\.hpp", "include"); make.addSearchPath(".*\\.cpp", "src"); //------------------------------------------------------------------- //==-- RULE FOR CREATING DIRECTORIES --== make.createDirectoryRule(bldoutdir, null, false); //------------------------------------------------------------------- //==-- COMPILE OBJECT RULE --== make.createPatternDependency(bldoutdir+"/(.*)\\"+objExt, bldoutdir); make.createPatternRule(bldoutdir+"/(.*)\\"+objExt, "$1.cpp", "compile", true); void compile(String target, String[] prereqs) { cmd = getCompileCommand(target, prereqs[0], includeDirs); make.exec(cmd); } //------------------------------------------------------------------- //==-- LINK EXECUTABLE --== make.createExplicitRule(bldoutdir+"/"+progBin, objs, "link", true); void link(String target, String[] prereqs) { print("Linking "+target+" for "+platform); cmd = getLinkCommand(target, prereqs); make.exec(cmd); } //------------------------------------------------------------------- //==-- TEST --== make.createPhonyRule("test", bldoutdir+"/"+progBin, "test"); void test(String target, String[] prereqs) { print("Running Test"); make.exec(bldoutdir, make.fullPath(bldoutdir)+"/"+progBin, true); } make.setDefaultTarget(bldoutdir+"/"+progBin);