/* * 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. */ blddir = "build"; srcdir = "src"; extdir = "ext"; jardir = "jar"; jarfile = jardir+"/cpmake.jar"; sourceFiles = make.createFileList(srcdir, ".*\\.java", (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH)); classFiles = make.substitute("(.*)\\.java", blddir+"/$1.class", sourceFiles); extJarFiles = make.createFileList(extdir, ".*\\.jar"); compileList = ""; make.addSearchPath(".*\\.java", srcdir); make.setDefaultTarget(jarfile); //------------------------------------------------------------------- //==-- CLEAN CLASS FILES --== make.createPatternRule(blddir+"/(.*)\\.class", "$1.java", "removeClass", false); void removeClass(String target, String[] prereqs) { print(prereqs[0]); rm(target); compileList += prereqs[0] + " "; } //------------------------------------------------------------------- //==-- COMPILE --== make.createPhonyRule("compile", blddir+" "+make.arrayToString(classFiles), "compile"); void compile(String target, String[] prereqs) { if (make.getProperty("JIKESPATH") != null) { print("Compiling with Jikes"); cmd = "jikes -classpath "+make.getProperty("JIKESPATH")+";ext/bsh-1.3.0.jar;ext/jython.jar;ext/groovy.jar;"+ make.getProperty("path.separator")+blddir+" -d "+blddir+ " -sourcepath "+srcdir+" "+compileList; } else { print("Compiling with javac"); cmd = "javac -classpath ext/bsh-1.3.0.jar;ext/jython.jar;ext/groovy.jar;"+blddir+ " -d "+blddir+" -sourcepath "+srcdir+" "+compileList; } make.exec(cmd, true); } //------------------------------------------------------------------- //==-- DIRECTORY RULES --== make.createDirectoryRule(blddir, null, true); make.createDirectoryRule("doc", null, true); make.createDirectoryRule(jardir, null, true); //------------------------------------------------------------------- //==-- CREATE JAR FILE --== make.createExplicitRule(jarfile, new String[] {"compile", jardir}, "createJar", true); void createJar(String target, String[] prereqs) { print("Creating "+target); rm(target); String cmd = "jar -cfm "+target+" manifest.txt -C "+blddir+" ."; make.exec(cmd); } //------------------------------------------------------------------- //==-- JAVADOC DOCUMENTATION --== make.createPhonyRule("javadoc", "doc", "javadoc"); void javadoc(String target, String[] prereqs) { make.exec("javadoc -classpath ext/bsh-1.3.0.jar;ext/jython.jar;ext/groovy.jar;. -sourcepath src -public -d doc cpmake"); } //------------------------------------------------------------------- //==-- EXTRACT EXT JARS --== make.createPhonyRule("extractjars", "compile", "extractJars"); void extractJars(String target, String[] prereqs) { for (int I = 0; I < extJarFiles.length; I ++) { print("Extracting "+extJarFiles[I]); make.exec(blddir, "jar -xf ../ext/"+extJarFiles[I], true); } } //------------------------------------------------------------------- //==-- CREATE ONE JAR --== make.createPhonyRule("onejar", new String[] { "extractjars", jardir+"/cpmake.jar" }, null); //------------------------------------------------------------------- //==-- COMPILE TEST CODE --== make.createPhonyRule("test", "onejar", "test"); void test(String target, String[] prereqs) { print("running test"); cwd = "test/c++"; make.exec(cwd, "java -cp ../../jar/cpmake.jar cpmake.CPMake -f build.bsh clean test", true); make.exec(cwd, "java -cp ../../jar/cpmake.jar cpmake.CPMake -f build.py clean test clean", true); //make.exec(cwd, "java -cp ../../jar/cpmake.jar cpmake.CPMake -f build.groovy clean test clean", true); cwd = "test/java"; make.exec(cwd, "java -cp ../../jar/cpmake.jar cpmake.CPMake -f build.bsh clean test", true); make.exec(cwd, "java -cp ../../jar/cpmake.jar cpmake.CPMake -f build.py clean test clean", true); //make.exec(cwd, "java -cp ../../jar/cpmake.jar cpmake.CPMake -f build.groovy clean test clean", true); }