1:version = "2.0b2"; 2:deprecation = "on"; 3:src_dir = "src"; 4:build_dir = "classes"; 5:lib_dir = "lib"; 6:dist_dir = "dist"; 7:test_src_dir = "tests/classes"; 8:javadoc_dir = "javadoc"; 9:bsf_src_dir = "bsf/src"; 10:classgen_src_dir = "asm/src"; 11: 12:javadoc_jar = dist_dir+"/javadoc.zip"; 13:core_jar = dist_dir+"/bsh-core-"+version+".jar"; 14:src_jar = dist_dir+"/bsh-"+version+"-src.jar"; 15:all_jar_name = "bsh-"+version+".jar"; 16:all_jar = dist_dir+"/"+all_jar_name; 17:commands_jar = dist_dir+"/bsh-commands-"+version+".jar"; 18:classpath_jar = dist_dir+"/bsh-classpath-"+version+".jar"; 19:reflect_jar = dist_dir+"/bsh-reflect-"+version+".jar"; 20:util_jar = dist_dir+"/bsh-util-"+version+".jar"; 21:bsf_jar = dist_dir+"/bsh-bsf-"+version+".jar"; 22:classgen_jar = dist_dir+"/bsh-classgen-"+version+".jar"; 23:bshservlet_wbsh_war = dist_dir+"/bshservlet-wbsh.war"; 24:bshservlet_war = dist_dir+"/bshservlet.war"; 25: 26:commands_bshdoc = "docs/manual/bshcommands-bshdoc.xml"; 27: 28: 29://------------------------------------------------------------------- 30://==-- JAR FILES TO ADD TO CLASSPATH --== 31:lib_fileset = make.createFileList(lib_dir, ".*\\.jar", 32: (make.INCLUDE_PATH | make.RECURSE)); 33:classpath = build_dir; 34:for (jarfile : lib_fileset) 35: classpath += File.pathSeparator+jarfile; 36: 37://------------------------------------------------------------------- 38://==-- SET SEARCH PATHS --== 39:make.addSearchPath(".*\\.java", src_dir); 40:make.addSearchPath(".*\\.java", classgen_src_dir); 41:make.addSearchPath(".*\\.java", bsf_src_dir); 42:make.addSearchPath(".*\\.java", test_src_dir); 43: 44://------------------------------------------------------------------- 45://==-- DIRECTORY CREATION RULES --== 46:make.createDirectoryRule(build_dir, null, true); 47:make.createDirectoryRule(dist_dir, null, true); 48:make.createDirectoryRule(javadoc_dir, null, true); 49: 50://------------------------------------------------------------------- 51://==-- RULE FOR bsh.jj --== 52:make.createExplicitRule(src_dir+"/bsh/bsh.jj", src_dir+"/bsh/bsh.jjt", "jjtree", true); 53:jjtree(String target, String[] prereqs) 54: { 55: print("Running jjtree"); 56: cmd = "java -classpath "+classpath+ 57: " jjtree -OUTPUT_DIRECTORY="+src_dir+"/bsh "+src_dir+"/bsh/bsh.jjt"; 58: make.exec(cmd); 59: } 60: 61://------------------------------------------------------------------- 62://==-- RULE FOR Parser.java --== 63:make.createExplicitRule(src_dir+"/bsh/Parser.java", src_dir+"/bsh/bsh.jjt", "javacc", true); 64:javacc(String target, String[] prereqs) 65: { 66: print("Running javacc"); 67: cmd = "java -classpath "+classpath+ 68: " javacc -OUTPUT_DIRECTORY="+src_dir+"/bsh "+src_dir+"/bsh/bsh.jj"; 69: make.exec(cmd); 70: } 71: 72:make.buildTarget(src_dir+"/bsh/Parser.java"); 73: 74: 75://------------------------------------------------------------------- 76://==-- CREATE SOURCE AND CLASS FILE LISTS --== 77:sourceFiles = make.createFileList(src_dir, ".*\\.java", 78: (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH)); 79:sourceFiles = make.combine(sourceFiles, make.createFileList(test_src_dir, ".*\\.java", 80: (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH))); 81:sourceFiles = make.combine(sourceFiles, make.createFileList(bsf_src_dir, ".*\\.java", 82: (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH))); 83:sourceFiles = make.combine(sourceFiles, make.createFileList(classgen_src_dir, ".*\\.java", 84: (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH))); 85: 86:classFiles = make.substitute("(.*)\\.java", build_dir+"/$1.class", sourceFiles); 87: 88: 89://------------------------------------------------------------------- 90://==-- CREATE LIST OF CLASS FILES TO BUILD --== 91:compileList = ""; 92:compileCnt = 0; 93:make.createPatternRule(build_dir+"/(.*).class", "$1.java", "removeClass", false); 94:removeClass(String target, String[] prereqs) 95: { 96: //print(prereqs[0]); //Prints the files that will be built 97: rm(target); 98: compileList += prereqs[0]+" "; 99: compileCnt ++; 100: } 101: 102://------------------------------------------------------------------- 103://==-- COMPILE CLASS FILES --== 104:make.createPhonyRule("compile", build_dir+" "+make.arrayToString(classFiles), "compile"); 105:compile(String target, String[] prereqs) 106: { 107: print("Compiling "+compileCnt+" source files"); 108: cmd = "javac -g -classpath "+classpath+" -d "+build_dir+ 109: " -sourcepath "+src_dir+" "+compileList; 110: make.exec(cmd, true); 111: } 112: 113://------------------------------------------------------------------- 114://==-- JAVADOC RULE --== 115:make.createPhonyRule("makejavadoc", javadoc_dir, "createJavaDoc"); 116:createJavaDoc(String target, String[] prereqs) 117: { 118: ps = make.getProperty("path.separator"); 119: cmd = "javadoc -d "+javadoc_dir+" -sourcepath "+src_dir+ps+classgen_src_dir+ 120: "-version -author -use -windowtitle BeanShell -doctitle <h1>BeanShell</h1> "+ 121: "-bottom <em>© 2000 pat@pat.net :-)</em> -quiet "+ 122: "bsh bsh.util bsh.classpath bsh.reflect"; 123: make.exec(cmd); 124: } 125: 126://------------------------------------------------------------------- 127://==-- COPY RULES --== 128:make.createCopyRule("copyCommands", null, src_dir+"/bsh/commands", 129: ".*\\.bsh", build_dir+"/bsh/commands"); 130:make.createCopyRule("copyLibs", null, src_dir+"/bsh/util/lib", 131: ".*", build_dir+"/bsh/util/lib"); 132:make.createCopyRule("copyServlet", null, src_dir+"/bsh/servlet", 133: "(.*\\.bsh)|(.*\\.template)", build_dir+"/bsh/servlet"); 134: 135://------------------------------------------------------------------- 136://==-- GENERAL JAR CREATE METHOD --== 137:createJar(String jarFile, String srcDir, String[] fileList, String manifest) 138: { 139: print("Creating "+jarFile); 140: fileList = make.substitute("(.++)", "-C "+srcDir+" $1", fileList); 141: if (manifest == null) 142: cmd = "jar -cf "+jarFile+" "+make.arrayToString(fileList); 143: else 144: cmd = "jar -cfm "+jarFile+" "+manifest+" "+make.arrayToString(fileList); 145: make.exec(cmd); 146: } 147: 148://------------------------------------------------------------------- 149://==-- GENERAL WAR CREATE METHOD --== 150:createWar(String warFile, String file, String webxml, String lib) 151: { 152: print("Creating "+warFile); 153: if (lib == null) 154: make.mkdir("temp/WEB-INF"); 155: else 156: { 157: make.mkdir("temp/WEB-INF/lib"); 158: make.copy(lib, "temp/WEB-INF/lib"); 159: } 160: 161: make.copy(file, "temp/"); 162: 163: make.copy(webxml, "temp/WEB-INF/web.xml"); 164: 165: cmd = "jar -cf "+warFile+" -C temp ."; 166: make.exec(cmd); 167: 168: make.deltree("temp"); 169: } 170: 171://------------------------------------------------------------------- 172://==-- ALL JAR FILE --== 173:make.createPhonyRule("jarall", all_jar, null); 174:make.createExplicitRule(all_jar, "compile copyCommands copyLibs copyServlet "+ 175: dist_dir, "createAllJar", true); 176:createAllJar(String target, String[] prereqs) 177: { 178: createJar(all_jar, build_dir, make.createFileList(build_dir, "bsh/(.*)", 179: (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH)), 180: src_dir+"/Manifest.console"); 181: } 182: 183://------------------------------------------------------------------- 184://==-- CORE JAR FILE --== 185:make.createPhonyRule("jarcore", core_jar, null); 186:make.createExplicitRule(core_jar, "compile "+dist_dir, "createCoreJar", true); 187:createCoreJar(String target, String[] prereqs) 188: { 189: createJar(core_jar, build_dir, make.createFileList(build_dir, "(bsh/[^/]*\\.class)", 190: "(bsh/Console.class)|(bsh/Remote.*)|(bsh/ClassGeneratorImpl.*)|"+ 191: "(bsh/ClassGeneratorUtil.*)|(bsh/DelayedEvalBshMethod.*)", 192: (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH)), 193: src_dir+"/Manifest.interp"); 194: } 195: 196://------------------------------------------------------------------- 197://==-- SOURCE JAR FILE --== 198:srcJarList = make.createFileList(".", "(.*)", 199: "(.*CVS.*)|(classes.*)|(dist.*)|(.*javadoc.*)|(.*\\.jar)|(.*\\.war)"+ 200: "|(.*\\.cvs.*)|(.cpmakecache)", 201: (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH)); 202:make.createPhonyRule("jarsrc", src_jar, null); 203:make.createExplicitRule(src_jar, make.arrayToString(srcJarList)+dist_dir, "createSrcJar", true); 204:createSrcJar(String target, String[] prereqs) 205: { 206: srcJarList = make.substitute("(.++)", "BeanShell/$1", srcJarList); 207: createJar(src_jar, "..", srcJarList, src_dir+"/Manifest.interp"); 208: } 209: 210://------------------------------------------------------------------- 211://==-- COMMANDS JAR FILE --== 212:make.createExplicitRule(commands_jar, dist_dir+" compile", "createCommandsJar", true); 213:createCommandsJar(String target, String[] prereqs) 214: { 215: createJar(commands_jar, build_dir, make.createFileList(build_dir, 216: "(bsh/commands/((.*\\.class)|(.*\\.bsh)))", 217: (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH)), null); 218: } 219: 220://------------------------------------------------------------------- 221://==-- CLASSPATH JAR FILE --== 222:make.createExplicitRule(classpath_jar, dist_dir+" compile", "createClasspathJar", true); 223:createClasspathJar(String target, String[] prereqs) 224: { 225: createJar(classpath_jar, build_dir, make.createFileList(build_dir, 226: "(bsh/classpath/.*\\.class)", 227: (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH)), null); 228: } 229: 230://------------------------------------------------------------------- 231://==-- REFLECT JAR FILE --== 232:make.createExplicitRule(reflect_jar, dist_dir+" compile", "createReflectJar", true); 233:createReflectJar(String target, String[] prereqs) 234: { 235: createJar(reflect_jar, build_dir, make.createFileList(build_dir, 236: "(bsh/reflect/.*\\.class)", 237: (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH)), null); 238: } 239: 240://------------------------------------------------------------------- 241://==-- UTIL JAR FILE --== 242:make.createExplicitRule(util_jar, dist_dir+" compile", "createUtilJar", true); 243:createUtilJar(String target, String[] prereqs) 244: { 245: createJar(util_jar, build_dir, make.createFileList(build_dir, 246: "(bsh/util/.*)", "(bsh/util/BeanShellBSFEngine.class)", 247: (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH)), null); 248: } 249: 250://------------------------------------------------------------------- 251://==-- BSF JAR FILE --== 252:make.createExplicitRule(bsf_jar, dist_dir+" compile", "createBsfJar", true); 253:createBsfJar(String target, String[] prereqs) 254: { 255: createJar(bsf_jar, build_dir, new String[] {"bsh/util/BeanShellBSFEngine.class"}, null); 256: } 257: 258://------------------------------------------------------------------- 259://==-- CLASSGEN JAR FILE --== 260:make.createExplicitRule(classgen_jar, dist_dir+" compile", "createClassgenJar", true); 261:createClassgenJar(String target, String[] prereqs) 262: { 263: classgenFileList = make.createFileList(build_dir, 264: "(bsh/ClassGeneratorImpl.*\\.class)|(bsh/ClassGeneratorUtil.*\\.class)|"+ 265: "(bsh/DelayedEvalBshMethod.*\\.class)", 266: (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH)); 267: classgenFileList = make.combine(classgenFileList, make.createFileList(build_dir, 268: "bsh/org/objectweb/asm.*\\.class", 269: (make.INCLUDE_PATH | make.RECURSE | make.RELATIVE_PATH))); 270: createJar(classgen_jar, build_dir, classgenFileList, null); 271: } 272: 273://------------------------------------------------------------------- 274://==-- JAVADOC JAR FILE --== 275:make.createExplicitRule(javadoc_jar, dist_dir+" makejavadoc", "createJavadocJar", true); 276:createJavadocJar(String target, String[] prereqs) 277: { 278: cmd = "jar -cf "+javadoc_jar+" -C "+javadoc_dir+" ."; 279: make.exec(cmd); 280: } 281: 282://------------------------------------------------------------------- 283://==-- SERVLET WBSH JAR FILE --== 284:make.createExplicitRule(bshservlet_wbsh_war, dist_dir+" compile", "createWbshServletWar", true); 285:createWbshServletWar(String target, String[] prereqs) 286: { 287: createWar(bshservlet_wbsh_war, src_dir+"/bsh/servlet/index.html", 288: src_dir+"/bsh/servlet/example-web.xml", all_jar); 289: } 290: 291://------------------------------------------------------------------- 292://==-- SERVLET JAR FILE --== 293:make.createExplicitRule(bshservlet_war, dist_dir+" compile", "createServletWar", true); 294:createServletWar(String target, String[] prereqs) 295: { 296: createWar(bshservlet_war, src_dir+"/bsh/servlet/index.html", 297: src_dir+"/bsh/servlet/example-web.xml", null); 298: } 299: 300://------------------------------------------------------------------- 301://==-- BSH DOC --== 302:bshDocDepFiles = make.arrayToString(make.createFileList("src/bsh/commands", ".*\\.bsh", 303: (make.INCLUDE_PATH | make.RECURSE))); 304:make.createExplicitRule(commands_bshdoc, bshDocDepFiles+all_jar, "createBshDoc", true); 305:createBshDoc(String target, String[] prereqs) 306: { 307: print("Creating "+target); 308: cmd = "java -classpath "+all_jar+" bsh.Interpreter scripts/bshdoc.bsh "+ 309: bshDocDepFiles; 310: 311: make.exec(null, cmd, true, null, commands_bshdoc); 312: } 313: 314://------------------------------------------------------------------- 315://==-- DISTRIBUTION RULE --== 316:make.createPhonyRule("distribute", new String[] { 317: core_jar, 318: all_jar, 319: src_jar, 320: commands_jar, 321: classpath_jar, 322: reflect_jar, 323: util_jar, 324: bsf_jar, 325: classgen_jar, 326: javadoc_jar, 327: bshservlet_wbsh_war, 328: bshservlet_war, 329: commands_bshdoc }, null); 330: 331://------------------------------------------------------------------- 332://==-- RUN SCRIPT --== 333:make.createPhonyRule("bsh", "compile", "runScript"); 334:runScript(String target, String[] prereqs) 335: { 336: file = make.getProperty("file"); 337: ps = make.getProperty("path.sererator"); 338: if (file == null) 339: { 340: print("Please specify a script file with \"-D file=script.bsh\" on the command line"); 341: return; 342: } 343: cmd = "java -classpath "+classpath+ps+build_dir+" bsh.Interpreter "+file; 344: make.exec(cmd); 345: } 346: 347://------------------------------------------------------------------- 348://==-- RUN TEST SUITE --== 349:make.createPhonyRule("test", all_jar, "test"); 350:test(String target, String[] prereqs) 351: { 352: make.setProperty("file", "tests/RunAllTests.bsh"); 353: runScript(null, null); 354: } 355: 356://------------------------------------------------------------------- 357://==-- CLEAN RULE --== 358://Can't use autoclean because it will remove Parser.java 359:make.createPhonyRule("clean", null, "clean"); 360:clean(String target, String[] prereqs) 361: { 362: print("Removing "+build_dir); 363: make.deltree(build_dir); 364: print("Removing "+dist_dir); 365: make.deltree(dist_dir); 366: print("Removing "+javadoc_dir); 367: make.deltree(javadoc_dir); 368: } 369: 370: 371://If the build file changes everything must be rebuilt 372://make.createPatternDependency("(.*\\.class)|(.*\\.jar)", "build.bsh"); 373: 374:make.setDefaultTarget(all_jar);