1:/* 2: * Copyright (c) 2004, Brian Hawkins 3: * Permission is granted to use this code without restriction as long 4: * as this copyright notice appears in all source files. 5: */ 6: 7:var bldoutdir = "build"; 8:var srcdir = "src"; 9: 10:var sourceFiles = make.createFileList(srcdir, ".*\\.java"); 11: 12:var classFiles = make.substitute("(.*)\\.java", bldoutdir+"/$1.class", sourceFiles); 13:var jarFiles = make.substitute("(.*)\\.java", "$1.class", sourceFiles); 14: 15:var compileList = ""; 16: 17://------------------------------------------------------------------- 18://==-- SET SEARCH PATHS --== 19:make.addSearchPath(srcdir); 20: 21://------------------------------------------------------------------- 22://==-- RULE FOR CREATING DIRECTORIES --== 23:make.createDirectoryRule(bldoutdir, null, true); 24:make.createDirectoryRule("doc", null, true); 25: 26://------------------------------------------------------------------- 27://==-- REMOVE OLD CLASS FILES --== 28:make.createPatternRule(bldoutdir+"/(.*).class", "$1.java", "removeClass", false); 29:function removeClass(target, prereqs) 30: { 31: print(prereqs[0]); 32: make.del(target); 33: compileList = compileList + prereqs[0] + " "; 34: } 35: 36://------------------------------------------------------------------- 37://==-- COMPILE CLASS FILES --== 38:make.createPhonyRule("compile", bldoutdir+" "+make.arrayToString(classFiles), "compile"); 39:function compile(target, prereqs) 40: { 41: var cmd = "javac -classpath "+bldoutdir+" -d "+bldoutdir+" "+compileList; 42: 43: make.exec(cmd, true); 44: } 45: 46://------------------------------------------------------------------- 47://==-- CREATE JAR FILE --== 48:make.createExplicitRule("cpmaketest.jar", "compile", "createJar", true); 49:function createJar(target, prereqs) 50: { 51: print("Creating "+target); 52: var cmd = "jar -cfm "+target+" manifest.txt -C "+bldoutdir+" ."; 53: 54: make.exec(cmd); 55: } 56: 57://------------------------------------------------------------------- 58://==-- CREATE JAVADOCS --== 59:make.createPhonyRule("javadoc", "doc", "javadoc"); 60:function javadoc(target, prereqs) 61: { 62: make.exec(srcdir, "javadoc -public -d ../doc "+make.arrayToString(sourceFiles), true); 63: } 64: 65://------------------------------------------------------------------- 66://==-- TEST --== 67:make.createPhonyRule("test", "cpmaketest.jar", "test"); 68:function test(target, prereqs) 69: { 70: print("Running test"); 71: make.exec("java -jar cpmaketest.jar"); 72: } 73: 74: 75:make.setDefaultTarget("cpmaketest.jar"); 76: 77: