hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC7.java
author mikael
Tue, 24 Dec 2013 11:48:39 -0800
changeset 22234 da823d78ad65
parent 19277 8952a5e25673
child 26293 5c7a054e59fe
permissions -rw-r--r--
8029233: Update copyright year to match last edit in jdk8 hotspot repository for 2013 Summary: Copyright year updated for files modified during 2013 Reviewed-by: twisti, iveresov
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     1
/*
22234
da823d78ad65 8029233: Update copyright year to match last edit in jdk8 hotspot repository for 2013
mikael
parents: 19277
diff changeset
     2
 * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     4
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
489c9b5090e2 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
489c9b5090e2 Initial load
duke
parents:
diff changeset
     7
 * published by the Free Software Foundation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     8
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
489c9b5090e2 Initial load
duke
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
489c9b5090e2 Initial load
duke
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
489c9b5090e2 Initial load
duke
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
489c9b5090e2 Initial load
duke
parents:
diff changeset
    13
 * accompanied this code).
489c9b5090e2 Initial load
duke
parents:
diff changeset
    14
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
489c9b5090e2 Initial load
duke
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    18
 *
5547
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 3261
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 3261
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 3261
diff changeset
    21
 * questions.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    22
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    23
 */
489c9b5090e2 Initial load
duke
parents:
diff changeset
    24
7452
b3fa838286de 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 7397
diff changeset
    25
import java.io.FileWriter;
b3fa838286de 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 7397
diff changeset
    26
import java.io.IOException;
b3fa838286de 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 7397
diff changeset
    27
import java.io.PrintWriter;
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    28
import java.nio.file.FileSystems;
7452
b3fa838286de 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 7397
diff changeset
    29
import java.util.Vector;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    30
489c9b5090e2 Initial load
duke
parents:
diff changeset
    31
public class WinGammaPlatformVC7 extends WinGammaPlatform {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    32
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    33
   // TODO How about moving all globals configs to its own BuildConfig?
2271
ff6d122287cb 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 1
diff changeset
    34
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    35
   String projectVersion() {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    36
      return "7.10";
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    37
   };
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    38
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    39
   public void writeProjectFile(String projectFileName, String projectName,
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    40
         Vector<BuildConfig> allConfigs) throws IOException {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    41
      System.out.println();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    42
      System.out.println("    Writing .vcproj file: " + projectFileName);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    43
      // If we got this far without an error, we're safe to actually
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    44
      // write the .vcproj file
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    45
      printWriter = new PrintWriter(new FileWriter(projectFileName));
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    46
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    47
      printWriter
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    48
      .println("<?xml version=\"1.0\" encoding=\"windows-1251\"?>");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    49
      startTag("VisualStudioProject", new String[] { "ProjectType",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    50
            "Visual C++", "Version", projectVersion(), "Name", projectName,
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    51
            "ProjectGUID", "{8822CB5C-1C41-41C2-8493-9F6E1994338B}",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    52
            "SccProjectName", "", "SccLocalPath", "" });
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    53
      startTag("Platforms");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    54
      tag("Platform",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    55
            new String[] { "Name",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    56
            (String) BuildConfig.getField(null, "PlatformName") });
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    57
      endTag();
8303
81a0b8663748 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 7452
diff changeset
    58
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    59
      startTag("Configurations");
8303
81a0b8663748 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 7452
diff changeset
    60
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    61
      for (BuildConfig cfg : allConfigs) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    62
         writeConfiguration(cfg);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    63
      }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    64
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    65
      endTag();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    66
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    67
      tag("References");
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    68
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    69
      writeFiles(allConfigs);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    70
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    71
      tag("Globals");
8303
81a0b8663748 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 7452
diff changeset
    72
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    73
      endTag();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    74
      printWriter.close();
8303
81a0b8663748 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 7452
diff changeset
    75
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    76
      System.out.println("    Done.");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    77
   }
8303
81a0b8663748 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 7452
diff changeset
    78
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    79
   void writeCustomToolConfig(Vector<BuildConfig> configs, String[] customToolAttrs) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    80
      for (BuildConfig cfg : configs) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    81
         startTag("FileConfiguration",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    82
               new String[] { "Name", (String) cfg.get("Name") });
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    83
         tag("Tool", customToolAttrs);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    84
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    85
         endTag();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    86
      }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    87
   }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    88
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    89
   void writeFiles(Vector<BuildConfig> allConfigs) {
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    90
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    91
      // This code assummes there are no config specific includes.
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    92
      startTag("Files");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    93
      String sourceBase = BuildConfig.getFieldString(null, "SourceBase");
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    94
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    95
      // Use first config for all global absolute includes.
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    96
      BuildConfig baseConfig = allConfigs.firstElement();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    97
      Vector<String> rv = new Vector<String>();
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 5547
diff changeset
    98
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
    99
      // Then use first config for all relative includes
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   100
      Vector<String> ri = new Vector<String>();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   101
      baseConfig.collectRelevantVectors(ri, "RelativeSrcInclude");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   102
      for (String f : ri) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   103
         rv.add(sourceBase + Util.sep + f);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   104
      }
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 5547
diff changeset
   105
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   106
      baseConfig.collectRelevantVectors(rv, "AbsoluteSrcInclude");
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   107
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   108
      handleIncludes(rv, allConfigs);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   109
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   110
      startTag("Filter", new String[] { "Name", "Resource Files", "Filter",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   111
      "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" });
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   112
      endTag();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   113
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   114
      endTag();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   115
   }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   116
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   117
   // Will visit file tree for each include
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   118
   private void handleIncludes(Vector<String> includes, Vector<BuildConfig> allConfigs) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   119
      for (String path : includes)  {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   120
         FileTreeCreatorVC7 ftc = new FileTreeCreatorVC7(FileSystems.getDefault().getPath(path) , allConfigs, this);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   121
         try {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   122
            ftc.writeFileTree();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   123
         } catch (IOException e) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   124
            e.printStackTrace();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   125
         }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   126
      }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   127
   }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   128
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   129
   void writeConfiguration(BuildConfig cfg) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   130
      startTag("Configuration", new String[] { "Name", cfg.get("Name"),
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   131
            "OutputDirectory", cfg.get("OutputDir"),
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   132
            "IntermediateDirectory", cfg.get("OutputDir"),
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   133
            "ConfigurationType", "2", "UseOfMFC", "0",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   134
            "ATLMinimizesCRunTimeLibraryUsage", "FALSE" });
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   135
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   136
      tagV("Tool", cfg.getV("CompilerFlags"));
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   137
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   138
      tag("Tool", new String[] { "Name", "VCCustomBuildTool" });
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   139
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   140
      tagV("Tool", cfg.getV("LinkerFlags"));
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   141
19277
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   142
      String postBuildCmd = BuildConfig.getFieldString(null,
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   143
            "PostbuildCommand");
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   144
      if (postBuildCmd != null) {
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   145
         tag("Tool",
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   146
               new String[] {
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   147
               "Name",
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   148
               "VCPostBuildEventTool",
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   149
               "Description",
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   150
               BuildConfig
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   151
               .getFieldString(null, "PostbuildDescription"),
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   152
               // Caution: String.replace(String,String) is available
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   153
               // from JDK5 onwards only
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   154
               "CommandLine",
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   155
                   cfg.expandFormat(postBuildCmd.replace("\t",
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   156
                           "&#x0D;&#x0A;")) });
8952a5e25673 8022740: Visual 2008 IDE build is broken
iklam
parents: 13963
diff changeset
   157
      }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   158
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   159
      tag("Tool", new String[] { "Name", "VCPreBuildEventTool" });
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   160
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   161
      tag("Tool",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   162
            new String[] {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   163
            "Name",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   164
            "VCPreLinkEventTool",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   165
            "Description",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   166
            BuildConfig.getFieldString(null, "PrelinkDescription"),
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   167
            // Caution: String.replace(String,String) is available
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   168
            // from JDK5 onwards only
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   169
            "CommandLine",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   170
            cfg.expandFormat(BuildConfig.getFieldString(null,
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   171
                  "PrelinkCommand").replace("\t", "&#x0D;&#x0A;")) });
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   172
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   173
      tag("Tool", new String[] { "Name", "VCResourceCompilerTool",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   174
            "PreprocessorDefinitions", "NDEBUG", "Culture", "1033" });
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   175
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   176
      tag("Tool", new String[] { "Name", "VCMIDLTool",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   177
            "PreprocessorDefinitions", "NDEBUG", "MkTypLibCompatible",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   178
            "TRUE", "SuppressStartupBanner", "TRUE", "TargetEnvironment",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   179
            "1", "TypeLibraryName",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   180
            cfg.get("OutputDir") + Util.sep + "vm.tlb", "HeaderFileName",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   181
      "" });
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   182
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   183
      endTag();
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   184
   }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   185
489c9b5090e2 Initial load
duke
parents:
diff changeset
   186
489c9b5090e2 Initial load
duke
parents:
diff changeset
   187
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   188
   protected String getProjectExt() {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   189
      return ".vcproj";
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   190
   }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   191
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
   192
489c9b5090e2 Initial load
duke
parents:
diff changeset
   193
class CompilerInterfaceVC7 extends CompilerInterface {
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   194
   void getBaseCompilerFlags_common(Vector defines, Vector includes,
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   195
         String outDir, Vector rv) {
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   196
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   197
      // advanced M$ IDE (2003) can only recognize name if it's first or
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   198
      // second attribute in the tag - go guess
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   199
      addAttr(rv, "Name", "VCCLCompilerTool");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   200
      addAttr(rv, "AdditionalIncludeDirectories", Util.join(",", includes));
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   201
      addAttr(rv, "PreprocessorDefinitions",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   202
            Util.join(";", defines).replace("\"", "&quot;"));
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   203
      addAttr(rv, "PrecompiledHeaderThrough", "precompiled.hpp");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   204
      addAttr(rv, "PrecompiledHeaderFile", outDir + Util.sep + "vm.pch");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   205
      addAttr(rv, "AssemblerListingLocation", outDir);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   206
      addAttr(rv, "ObjectFile", outDir + Util.sep);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   207
      addAttr(rv, "ProgramDataBaseFileName", outDir + Util.sep + "jvm.pdb");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   208
      // Set /nologo optin
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   209
      addAttr(rv, "SuppressStartupBanner", "TRUE");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   210
      // Surpass the default /Tc or /Tp. 0 is compileAsDefault
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   211
      addAttr(rv, "CompileAs", "0");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   212
      // Set /W3 option. 3 is warningLevel_3
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   213
      addAttr(rv, "WarningLevel", "3");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   214
      // Set /WX option,
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   215
      addAttr(rv, "WarnAsError", "TRUE");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   216
      // Set /GS option
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   217
      addAttr(rv, "BufferSecurityCheck", "FALSE");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   218
      // Set /Zi option. 3 is debugEnabled
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   219
      addAttr(rv, "DebugInformationFormat", "3");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   220
   }
2271
ff6d122287cb 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 1
diff changeset
   221
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   222
   Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   223
      Vector rv = new Vector();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   224
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   225
      getBaseCompilerFlags_common(defines, includes, outDir, rv);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   226
      // Set /Yu option. 3 is pchUseUsingSpecific
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   227
      // Note: Starting VC8 pchUseUsingSpecific is 2 !!!
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   228
      addAttr(rv, "UsePrecompiledHeader", "3");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   229
      // Set /EHsc- option
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   230
      addAttr(rv, "ExceptionHandling", "FALSE");
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   231
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   232
      return rv;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   233
   }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   234
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   235
   Vector getBaseLinkerFlags(String outDir, String outDll, String platformName) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   236
      Vector rv = new Vector();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   237
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   238
      addAttr(rv, "Name", "VCLinkerTool");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   239
      addAttr(rv, "AdditionalOptions",
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   240
            "/export:JNI_GetDefaultJavaVMInitArgs "
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   241
                  + "/export:JNI_CreateJavaVM "
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   242
                  + "/export:JVM_FindClassFromBootLoader "
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   243
                  + "/export:JNI_GetCreatedJavaVMs "
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   244
                  + "/export:jio_snprintf /export:jio_printf "
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   245
                  + "/export:jio_fprintf /export:jio_vfprintf "
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   246
                  + "/export:jio_vsnprintf "
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   247
                  + "/export:JVM_GetVersionInfo "
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   248
                  + "/export:JVM_GetThreadStateNames "
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   249
                  + "/export:JVM_GetThreadStateValues "
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   250
                  + "/export:JVM_InitAgentProperties ");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   251
      addAttr(rv, "AdditionalDependencies", "Wsock32.lib winmm.lib");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   252
      addAttr(rv, "OutputFile", outDll);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   253
      // Set /INCREMENTAL option. 1 is linkIncrementalNo
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   254
      addAttr(rv, "LinkIncremental", "1");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   255
      addAttr(rv, "SuppressStartupBanner", "TRUE");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   256
      addAttr(rv, "ModuleDefinitionFile", outDir + Util.sep + "vm.def");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   257
      addAttr(rv, "ProgramDatabaseFile", outDir + Util.sep + "jvm.pdb");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   258
      // Set /SUBSYSTEM option. 2 is subSystemWindows
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   259
      addAttr(rv, "SubSystem", "2");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   260
      addAttr(rv, "BaseAddress", "0x8000000");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   261
      addAttr(rv, "ImportLibrary", outDir + Util.sep + "jvm.lib");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   262
      if (platformName.equals("Win32")) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   263
         // Set /MACHINE option. 1 is X86
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   264
         addAttr(rv, "TargetMachine", "1");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   265
      } else {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   266
         // Set /MACHINE option. 17 is X64
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   267
         addAttr(rv, "TargetMachine", "17");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   268
      }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   269
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   270
      return rv;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   271
   }
2271
ff6d122287cb 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 1
diff changeset
   272
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   273
   void getDebugCompilerFlags_common(String opt, Vector rv) {
2271
ff6d122287cb 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 1
diff changeset
   274
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   275
      // Set /On option
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   276
      addAttr(rv, "Optimization", opt);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   277
      // Set /FR option. 1 is brAllInfo
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   278
      addAttr(rv, "BrowseInformation", "1");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   279
      addAttr(rv, "BrowseInformationFile", "$(IntDir)" + Util.sep);
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   280
      // Set /MD option. 2 is rtMultiThreadedDLL
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   281
      addAttr(rv, "RuntimeLibrary", "2");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   282
      // Set /Oy- option
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   283
      addAttr(rv, "OmitFramePointers", "FALSE");
2271
ff6d122287cb 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 1
diff changeset
   284
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   285
   }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   286
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   287
   Vector getDebugCompilerFlags(String opt) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   288
      Vector rv = new Vector();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   289
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   290
      getDebugCompilerFlags_common(opt, rv);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   291
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   292
      return rv;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   293
   }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   294
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   295
   Vector getDebugLinkerFlags() {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   296
      Vector rv = new Vector();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   297
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   298
      addAttr(rv, "GenerateDebugInformation", "TRUE"); // == /DEBUG option
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   299
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   300
      return rv;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   301
   }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   302
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   303
   void getAdditionalNonKernelLinkerFlags(Vector rv) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   304
      extAttr(rv, "AdditionalOptions", "/export:AsyncGetCallTrace ");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   305
   }
7452
b3fa838286de 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 7397
diff changeset
   306
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   307
   void getProductCompilerFlags_common(Vector rv) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   308
      // Set /O2 option. 2 is optimizeMaxSpeed
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   309
      addAttr(rv, "Optimization", "2");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   310
      // Set /Oy- option
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   311
      addAttr(rv, "OmitFramePointers", "FALSE");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   312
      // Set /Ob option. 1 is expandOnlyInline
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   313
      addAttr(rv, "InlineFunctionExpansion", "1");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   314
      // Set /GF option.
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   315
      addAttr(rv, "StringPooling", "TRUE");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   316
      // Set /MD option. 2 is rtMultiThreadedDLL
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   317
      addAttr(rv, "RuntimeLibrary", "2");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   318
      // Set /Gy option
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   319
      addAttr(rv, "EnableFunctionLevelLinking", "TRUE");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   320
   }
8303
81a0b8663748 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 7452
diff changeset
   321
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   322
   Vector getProductCompilerFlags() {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   323
      Vector rv = new Vector();
8303
81a0b8663748 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 7452
diff changeset
   324
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   325
      getProductCompilerFlags_common(rv);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   326
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   327
      return rv;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   328
   }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   329
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   330
   Vector getProductLinkerFlags() {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   331
      Vector rv = new Vector();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   332
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   333
      // Set /OPT:REF option. 2 is optReferences
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   334
      addAttr(rv, "OptimizeReferences", "2");
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   335
      // Set /OPT:optFolding option. 2 is optFolding
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   336
      addAttr(rv, "EnableCOMDATFolding", "2");
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   337
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   338
      return rv;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   339
   }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   340
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   341
   String getOptFlag() {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   342
      return "2";
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   343
   }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   344
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   345
   String getNoOptFlag() {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   346
      return "0";
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   347
   }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   348
13892
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   349
   String makeCfgName(String flavourBuild, String platform) {
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   350
      return flavourBuild + "|" + platform;
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   351
   }
9ba13acea673 7163863: Updated projectcreator
neliasso
parents: 8860
diff changeset
   352
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   353
}