costin 01/11/16 14:26:50 Modified: jk/jkant/java/org/apache/jk/ant/compilers GcjCompiler.java GcjLinker.java Log: Important change - allow the compilation of static files ( .properties, .dtd, etc ). GCJ can 'compile' those resources to .o files that are linked in the .so, in order to have a self-contained executable. ( it's the same with including them in a .jar file, for non-native compilation ) Added an experimental option to build .a file ( not yet completed - I'm still not sure how this work ) Revision Changes Path 1.5 +32 -14 jakarta-tomcat-connectors/jk/jkant/java/org/apache/jk/ant/compilers/GcjCompiler.java Index: GcjCompiler.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/jkant/java/org/apache/jk/ant/compilers/GcjCompiler.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- GcjCompiler.java 2001/11/11 01:09:59 1.4 +++ GcjCompiler.java 2001/11/16 22:26:50 1.5 @@ -69,20 +69,25 @@ * @author Costin Manolache */ public class GcjCompiler extends CcCompiler { - static GlobPatternMapper co_mapperS=new GlobPatternMapper(); - static { - co_mapperS.setFrom("*.java"); - co_mapperS.setTo("*.o"); - } public GcjCompiler() { super(); + co_mapper.setFrom("*.java"); + co_mapper.setTo("*.o"); } - public GlobPatternMapper getOMapper() { - return co_mapperS; + public String[] getTargetFiles( Source src ) { + File srcFile = src.getFile(); + String name=srcFile.getName(); + if( name.endsWith( ".java" ) ) { + return co_mapper.mapFileName( name ); + } else { + return new String[] + { name + ".o" }; + } } + /** Compile using libtool. */ public void compileSingleFile(Source sourceObj) throws BuildException { @@ -95,26 +100,39 @@ cmd.createArgument().setValue("-c" ); if( optG ) { - cmd.createArgument().setValue("-g" ); + // cmd.createArgument().setValue("-g" ); + cmd.createArgument().setValue("-ggdb3" ); + // cmd.createArgument().setValue("-save-temps" ); // cmd.createArgument().setValue("-Wall"); } addOptimize( cmd ); addExtraFlags( cmd ); cmd.createArgument().setValue("-fPIC" ); addIncludes( cmd ); - - cmd.createArgument().setValue( "-o" ); - File ff=new File( buildDir, sourceObj.getTargetFile(co_mapperS)); - cmd.createArgument().setValue( ff.toString() ); + String targetDir=sourceObj.getPackage(); try { - String targetDir=sourceObj.getPackage(); File f1=new File( buildDir, targetDir ); f1.mkdirs(); + cmd.createArgument().setValue( "-o" ); + String targetO[]=getTargetFiles( sourceObj ); + if( targetO==null ) { + log("no target for " + sourceObj.getFile() ); + return; + } + File ff=new File( f1, targetO[0]); + cmd.createArgument().setValue( ff.toString() ); } catch( Exception ex ) { ex.printStackTrace(); } - cmd.createArgument().setValue( source ); + if( ! source.endsWith(".java") ) { + cmd.createArgument().setValue("-R" ); + cmd.createArgument().setValue( targetDir + "/" + f.getName() ); + //System.out.println("XXX resource " + targetDir + "/" + f.getName() ); + } else { + // cmd.createArgument().setValue("-fno-bounds-check" ); + } + cmd.createArgument().setValue( source ); project.log( "Compiling " + source); if( debug > 0 ) 1.2 +30 -8 jakarta-tomcat-connectors/jk/jkant/java/org/apache/jk/ant/compilers/GcjLinker.java Index: GcjLinker.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/jkant/java/org/apache/jk/ant/compilers/GcjLinker.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- GcjLinker.java 2001/11/10 16:48:38 1.1 +++ GcjLinker.java 2001/11/16 22:26:50 1.2 @@ -69,17 +69,29 @@ * * @author Costin Manolache */ -public class GcjLinker extends SoTask implements LinkerAdapter { +public class GcjLinker extends LinkerAdapter { SoTask so; - protected static GlobPatternMapper lo_mapper=new GlobPatternMapper(); + protected static GlobPatternMapper co_mapper=new GlobPatternMapper(); static { - lo_mapper.setFrom("*.java"); - lo_mapper.setTo("*.o"); + co_mapper.setFrom("*.java"); + co_mapper.setTo("*.o"); } public GcjLinker() { so=this; - }; + } + + public String[] getTargetFiles( Source src ) { + File srcFile = src.getFile(); + String name=srcFile.getName(); + if( name.endsWith( ".java" ) ) + return co_mapper.mapFileName( name ); + else + return new String[] + { name + ".o" }; + } + + public void setSoTask(SoTask so ) { this.so=so; so.duplicateTo( this ); @@ -93,19 +105,29 @@ /** Link using libtool. */ public boolean link(Vector srcList) throws BuildException { +// link( srcList, false ); + link( srcList, true ); + return true; + } + public boolean link(Vector srcList, boolean shared) throws BuildException { Commandline cmd = new Commandline(); cmd.setExecutable( "gcj" ); - cmd.createArgument().setValue( "--shared" ); + if( shared ) + cmd.createArgument().setValue( "--shared" ); cmd.createArgument().setValue( "-o" ); - cmd.createArgument().setValue( soFile + ".so" ); + if( shared ) + cmd.createArgument().setValue( soFile + ".so" ); + else + cmd.createArgument().setValue( soFile + ".a" ); project.log( "Linking " + buildDir + "/" + soFile + ".so"); for( int i=0; i<srcList.size(); i++ ) { Source source=(Source)srcList.elementAt(i); - File srcF=new File(buildDir, source.getTargetFile(co_mapper)); + File f1=new File(buildDir, source.getPackage()); + File srcF=new File(f1, getTargetFiles(source)[0]); cmd.createArgument().setValue( srcF.toString() ); }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>