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]>

Reply via email to