Changeset 6733


Ignore:
Timestamp:
07/26/10 18:38:04 (9 years ago)
Author:
bselinsky
Message:

Update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/native/jar2lib/Jar2Lib.java

    r6312 r6733  
    2626 
    2727import java.util.Set; 
     28import java.util.Iterator; 
    2829import java.util.HashSet; 
    2930import java.util.StringTokenizer; 
     
    3839import java.io.File; 
    3940import java.io.FileReader; 
     41import java.io.FileWriter; 
    4042import java.io.BufferedReader; 
    4143import java.io.FileNotFoundException; 
     
    6466        private final String jarFileName; 
    6567        private final String classPath; 
     68        private final String extraCppFiles; 
     69        private final String includePaths; 
     70        private final String conflictsFile; 
     71        private final String jniLibPath; 
    6672        private final boolean mindep; 
    6773        private final boolean exportSymbols; 
    6874        private final Set<String> dependencyList; 
     75        static private String REPLACE = "# Automatically replaced"; 
     76        static private String REPLACE2 = "JNILIB_PATH_GOES_HERE"; 
    6977 
    7078         
     
    8088                String dependencies, 
    8189                String dependencyFile, 
    82                 String jarFileName) { 
     90                String conflictsFile, 
     91                String jarFileName, 
     92                String extraCppFiles, 
     93                String includePaths, 
     94                String jniLibPath) { 
    8395 
    8496                this.headerFileName = "out/src/" + headerFileName; 
     
    91103                this.exportSymbols = exportSymbols; 
    92104                this.dependencyList = new HashSet<String>(); 
     105                this.conflictsFile = conflictsFile; 
    93106                this.jarFileName = jarFileName; 
     107                this.extraCppFiles = extraCppFiles; 
     108                this.includePaths = includePaths; 
     109                this.jniLibPath = jniLibPath; 
     110 
     111System.out.println("HeaderInputPath is " + headerOutputPath); 
     112System.out.println("sourceInputPath is " + sourceOutputPath); 
    94113 
    95114                if ( (dependencies != null) && (dependencies.length() != 0) ) { 
    96115                        StringTokenizer st = new StringTokenizer(dependencies, "="); 
    97                         st.nextToken(); 
    98                         String depList = st.nextToken(); 
    99                         st = new StringTokenizer(depList, ","); 
    100                  
    101                         while (st.hasMoreTokens()) { 
    102                                 dependencyList.add(st.nextToken()); 
     116                        if (st.hasMoreElements()) { 
     117                                st.nextToken(); 
     118                                String depList = st.nextToken(); 
     119                                st = new StringTokenizer(depList, ","); 
     120                         
     121                                while (st.hasMoreTokens()) { 
     122                                        String token = (String)st.nextToken(); 
     123                                        try { 
     124                                                Class.forName(token); 
     125                                                dependencyList.add(token); 
     126                                        } catch (ClassNotFoundException cnfe) { 
     127                                                System.out.println("Ignoring exception: " + 
     128                                                        cnfe.toString()); 
     129                                        } 
     130                                } 
    103131                        } 
    104132                } 
     
    111139                                        String input; 
    112140                                        while ( (input = reader.readLine()) != null) { 
    113                                                 dependencyList.add(input); 
     141                                                if (!input.startsWith("#")) { 
     142                                                        if (input.trim().length() > 0) { 
     143                                                                System.out.println("### " + input); 
     144                                                                dependencyList.add(input); 
     145                                                        } 
     146                                                } 
    114147                                        } 
    115148                                } catch (java.io.FileNotFoundException fnfe) { 
     
    140173                SourceList cList = null; 
    141174                try { 
    142                         cList = new SourceList(sourceOutputPath, ".c:.cxx:.cpp"); 
     175                        cList = new SourceList(); 
     176                        cList.add(sourceOutputPath, ".c:.cxx:.cpp"); 
     177                        if (extraCppFiles != null) { 
     178                                String[] cppFiles = extraCppFiles.split(":"); 
     179                                File f; 
     180                                for (int i = 0; i < cppFiles.length; i++) { 
     181                                        f = new File(cppFiles[i]); 
     182                                        if (f.isDirectory()) { 
     183                                                cList.add(cppFiles[i], ".c:.cxx:.cpp"); 
     184                                        } else if (cppFiles[i].endsWith(".jar")) { 
     185                                                cList.add(new JarFile(cppFiles[i])); 
     186                                        } else { // Plain file 
     187                                                cList.add(cppFiles[i]); 
     188                                        } 
     189                                } 
     190                        } 
    143191                } catch (IOException ioe) { 
    144192                        System.err.println("IO Exception caught from SourceList"); 
    145193                        ioe.printStackTrace(); 
    146194                } 
    147          
     195 
     196                Iterator i = cList.files().iterator(); 
     197 
    148198                context.put("headerFile", headerFile); 
    149199                context.put("headerLabel", headerLabel); 
     
    162212                String headerFile = headerFileName + ".h"; 
    163213                String headerLabel = headerFile.toUpperCase().replaceAll("\\W", "_"); 
     214 
     215                // 
     216                // Add include paths to the cmake.vm file 
     217                // 
     218                File orig = new File("jace/cmake.vm.orig"); 
     219 
     220                try { 
     221                        File after = new File("jace/cmake.vm"); 
     222                        FileWriter writer = new FileWriter(after); 
     223         
     224                        BufferedReader reader = new BufferedReader(new FileReader(orig)); 
     225                        String s = ""; 
     226                        String input; 
     227                        while ( (input = reader.readLine()) != null) { 
     228                                s += input + "\n"; 
     229                        } 
     230 
     231                        if (includePaths != null) { 
     232                                int loc = s.indexOf(REPLACE); 
     233                 
     234                                String[] includes = includePaths.split(":"); 
     235                                String changed = s.substring(0, loc - 1); 
     236                                for (int i = 0; i < includes.length; i++) { 
     237                                changed += "\n  include_directories(\"" + includes[i] + "\")"; 
     238                                } 
     239                                changed += s.substring(loc + REPLACE.length()); 
     240 
     241                                int loc2 = changed.indexOf(REPLACE2); 
     242                                String changed2 = changed.substring(0, loc2); 
     243                                changed2 += jniLibPath + "/"; 
     244                changed2 += changed.substring(loc2 + REPLACE2.length() + 1); 
     245 
     246                                writer.write(changed2); 
     247                        } else { 
     248                                int loc2 = s.indexOf(REPLACE2); 
     249                                String changed2 = s.substring(0, loc2); 
     250                                changed2 += jniLibPath + "/"; 
     251                changed2 += s.substring(loc2 + REPLACE.length() + 1); 
     252 
     253                                writer.write(s); 
     254                        } 
     255                        writer.close(); 
     256                } catch (IOException ioe) { 
     257                        ioe.printStackTrace(); 
     258                        System.exit(1); 
     259                } 
    164260         
    165261                // initialize Velocity 
     
    177273                SourceList javaList = null; 
    178274                try { 
    179                         javaList = new SourceList(sourceInputPath, ".java"); 
     275                        if (sourceInputPath.length() > 0) { 
     276                                String[] paths = sourceInputPath.split(":"); 
     277                                javaList = new SourceList(); 
     278                                File f; 
     279                                for (int i = 0; i < paths.length; i++) { 
     280                                        f = new File(paths[i]); 
     281                                        if (f.isDirectory()) { 
     282                                                javaList.add(paths[i], ".java"); 
     283                                        } else if (paths[i].endsWith(".jar")) { 
     284                                                javaList.add(new JarFile(paths[i])); 
     285                                        } else { // Plain file 
     286                                                javaList.add(paths[i]); 
     287                                        } 
     288                                } 
     289                        } else if (jarFileName != null) { 
     290                                javaList = new SourceList(new JarFile(jarFileName)); 
     291                        } else { 
     292                                // Shouldn't get here 
     293                        } 
    180294                } catch (IOException ioe) { 
    181295                        System.err.println("IO Exception caught from SourceList"); 
     
    196310        } 
    197311 
     312        private void runFixProxies() { 
     313                try { 
     314                        new FixProxies(headerOutputPath, conflictsFile).fixProxies(); 
     315                        new FixProxies(sourceOutputPath, conflictsFile).fixProxies(); 
     316                } catch (IOException ioe) { 
     317                        System.out.println("Got an IO Exception"); 
     318                        System.out.println(ioe.toString()); 
     319                        ioe.printStackTrace(); 
     320                } 
     321        } 
     322 
    198323        public void runAutoProxy() { 
    199324 
    200325                AutoProxy ap = 
    201326                        new AutoProxy( 
    202                                 headerOutputPath, 
    203                                 sourceOutputPath, 
    204                                 headerOutputPath, 
    205                                 sourceOutputPath, 
     327                                headerOutputPath + "/include", 
     328                                sourceOutputPath + "/source", 
     329                                headerOutputPath + "/include", 
     330                                sourceOutputPath + "/source", 
    206331                                classPath, 
    207332                                mindep, 
     
    209334                                exportSymbols); 
    210335                System.out.println("Beginning Proxy generation."); 
    211                 System.out.println(headerInputPath); 
    212                 System.out.println(sourceInputPath); 
    213                 System.out.println(headerOutputPath); 
    214                 System.out.println(sourceOutputPath); 
    215                 System.out.println(classPath); 
    216336                try { 
    217337                        ap.generateProxies(); 
     
    247367                String sourceOutputPath = ""; 
    248368                String classPath = ""; 
    249                 boolean mindep = false; 
     369                boolean mindep = true; 
    250370                boolean exportSymbols = false; 
    251371                String dependencies = ""; 
    252372                String dependencyFile = ""; 
     373                String conflictsFile = ""; 
    253374                String jarFileName = null; 
     375                String jniLibPath = null; 
     376                String extraCppFiles = null; 
     377                String includePaths = null; 
    254378 
    255379                boolean headerInputPathDefined = false; 
     
    260384                boolean classPathDefined = false; 
    261385 
    262                 GetOpt go = new GetOpt(args, "h:s:H:S:C:f:D:j:em?"); 
     386for (int i = 0; i < args.length; i++) { 
     387System.out.println("WWWW " + args[i]); 
     388} 
     389                GetOpt go = new GetOpt(args, "L:I:x:h:s:H:S:c:C:f:d:D:j:em?"); 
    263390                go.optErr = true; 
    264                 int ch = -1; 
     391                int ch; 
    265392                // process options in command line arguments 
    266393                while ((ch = go.getopt()) != go.optEOF) { 
    267                         // System.out.println("Processing " + (char)ch); 
     394System.out.println("XXXX " + ((char)ch)); 
    268395                        if (ch == 'h') { 
    269396                                headerInputPath = go.optArgGet(); 
     
    281408                                classPath = go.optArgGet(); 
    282409                                classPathDefined = true; 
     410                        } else if (ch == 'c') { 
     411                                conflictsFile = go.optArgGet(); 
    283412                        } else if (ch == 'D') { 
    284413                                dependencyFile = go.optArgGet(); 
     
    287416                        } else if (ch == 'j') { 
    288417                                jarFileName = go.optArgGet(); 
     418                        } else if (ch == 'L') { 
     419                                jniLibPath = go.optArgGet(); 
    289420                        } else if (ch == 'f') { 
    290421                                headerFileName = go.optArgGet(); 
    291422                                headerFileNameDefined = true; 
    292423                        } else if (ch == 'm') { 
    293                                 mindep = true; 
     424                                mindep = false; 
     425                        } else if (ch == 'x') { 
     426                                extraCppFiles = go.optArgGet(); 
     427                        } else if (ch == 'I') { 
     428                                includePaths = go.optArgGet(); 
    294429                        } else if (ch == 'e') { 
    295430                                exportSymbols = true; 
     
    330465                                dependencies, 
    331466                                dependencyFile, 
    332                                 jarFileName); 
     467                                conflictsFile, 
     468                                jarFileName, 
     469                                extraCppFiles, 
     470                                includePaths, 
     471                                jniLibPath); 
    333472 
    334473                jar2Lib.createJaceHeader(); 
     
    336475                jar2Lib.runAutoProxy(); 
    337476 
     477                jar2Lib.runFixProxies(); 
     478 
    338479                jar2Lib.createCMakeList(); 
    339480        } 
Note: See TracChangeset for help on using the changeset viewer.