/*
 * 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";
srcdir = "src";
 
sourceFiles = make.createFileList(srcdir, ".*\\.java");	

classFiles = make.substitute("(.*)\\.java", bldoutdir+"/$1.class", sourceFiles);
jarFiles = make.substitute("(.*)\\.java", "$1.class", sourceFiles);

compileList = new Vector();

//-------------------------------------------------------------------
//==-- SET SEARCH PATHS --==
make.addSearchPath(srcdir);

//-------------------------------------------------------------------
//==-- RULE FOR CREATING DIRECTORIES --==
make.createDirectoryRule(bldoutdir, null, true);
make.createDirectoryRule("doc", null, true);

//-------------------------------------------------------------------
//==-- REMOVE OLD CLASS FILES --==
make.createPatternRule(bldoutdir+"/(.*).class", "$1.java", "removeClass", false);
void removeClass(String target, String[] prereqs)
	{
	print(prereqs[0]);
	rm(target);
	compileList.add(prereqs[0]);
	}

//-------------------------------------------------------------------
//==-- COMPILE CLASS FILES --==
make.createPhonyRule("compile", bldoutdir+" "+make.arrayToString(classFiles), "compile");	
void compile(String target, String[] prereqs)
	{
	compileArray = (String[])compileList.toArray(new String[0]);
	String cmd = "javac -classpath "+bldoutdir+" -d "+bldoutdir+" "+make.arrayToString(compileArray);
	
	make.exec(cmd, true);
	}
	
//-------------------------------------------------------------------
//==-- CREATE JAR FILE --==
make.createExplicitRule("cpmaketest.jar", "compile", "createJar", true);	
void createJar(String target, String[] prereqs)
	{		
	print("Creating "+target);
	String cmd = "jar -cfm "+target+" manifest.txt -C "+bldoutdir+" .";

	make.exec(cmd);
	}

//-------------------------------------------------------------------
//==-- CREATE JAVADOCS --==
make.createPhonyRule("javadoc", "doc", "javadoc");
void javadoc(String target, String[] prereqs)
	{
	make.exec(srcdir, "javadoc -public -d ../doc "+make.arrayToString(sourceFiles), true);
	}
	
//-------------------------------------------------------------------
//==-- TEST --==
make.createPhonyRule("test", "cpmaketest.jar", "test");
void test(String target, String[] prereqs)
	{
	print("Running test");
	make.exec("java -jar cpmaketest.jar");
	}
	

make.setDefaultTarget("cpmaketest.jar");