Compiler-msvc.gmk 6.8 KB
Newer Older
D
duke 已提交
1
#
X
xdono 已提交
2
# Copyright 2005-2009 Sun Microsystems, Inc.  All Rights Reserved.
D
duke 已提交
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#

#
# MSVC Compiler settings
#

ifeq ($(PLATFORM), windows)
  CC           = $(COMPILER_PATH)cl
  CPP          = $(COMPILER_PATH)cl
  CXX          = $(COMPILER_PATH)cl
  CCC          = $(COMPILER_PATH)cl
  LIBEXE       = $(COMPILER_PATH)lib
  LINK         = $(COMPILER_PATH)link
  RC           = $(MSDEVTOOLS_PATH)rc
  LINK32       = $(LINK)
  RSC          = $(RC)
 
  # Fill in unknown values
  COMPILER_NAME=Unknown MSVC Compiler
  COMPILER_VERSION=
  REQUIRED_CC_VER=
  REQUIRED_LINK_VER=
  
  # unset any GNU Make settings of MFLAGS and MAKEFLAGS which may mess up nmake
  NMAKE          = MFLAGS= MAKEFLAGS= $(COMPILER_PATH)nmake -nologo

50
  # Compiler version and type (Always get word after "Version")
51 52 53 54 55
  ifndef CC_VER
    CC_VER  := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(SED) 's/.*\(Version.*\)/\1/' | $(NAWK) '{print $$2}')
    export CC_VER
  endif

D
duke 已提交
56 57
  # SDK-64 and MSVC6 put REBASE.EXE in a different places - go figure...
  ifeq ($(ARCH_DATA_MODEL), 32)
58 59 60 61
    ifndef LINK_VER
      LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}')
      export LINK_VER
    endif
D
duke 已提交
62 63 64
    CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
    ifeq ($(CC_MAJORVER), 13)
      # This should be: CC_VER=13.10.3077 LINK_VER=7.10.3077
65 66
      REQUIRED_CC_VER = 13.10.3077
      REQUIRED_LINK_VER = 7.10.3077
D
duke 已提交
67 68 69 70 71 72 73 74 75
      COMPILER_NAME=Visual Studio .NET 2003 Professional C++
      COMPILER_VERSION=VS2003
      REBASE     = $(COMPILER_PATH)../../Common7/Tools/Bin/rebase
      MTL        = $(COMPILER_PATH)../../Common7/Tools/Bin/midl
      ifndef COMPILER_PATH
	COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
      endif
    endif
    ifeq ($(CC_MAJORVER), 14)
76 77 78 79
      # This should be: CC_VER=14.00.50727.42 LINK_VER=8.00.50727.42
      REQUIRED_CC_VER = 14.00.50727.42
      REQUIRED_LINK_VER = 8.00.50727.42
      COMPILER_NAME=Visual Studio 8
D
duke 已提交
80 81 82 83 84 85 86
      COMPILER_VERSION=VS2005
      REBASE     = $(COMPILER_PATH)../../Common8/Tools/Bin/rebase
      MTL        = $(COMPILER_PATH)../../Common8/Tools/Bin/midl
      ifndef COMPILER_PATH
	COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
      endif
    endif
87 88 89 90 91 92 93 94 95 96 97 98 99
    ifeq ($(CC_MAJORVER), 15)
      # This should be: CC_VER=15.00.21022.08 LINK_VER=9.00.21022.08
      REQUIRED_CC_VER = 15.00.21022.08
      REQUIRED_LINK_VER = 9.00.21022.08
      COMPILER_NAME=Visual Studio 9
      COMPILER_VERSION=VS2008
      #rebase and midl moved out of Visual Studio into the SDK:
      REBASE     = $(MSDEVTOOLS_PATH)/rebase
      MTL        = $(MSDEVTOOLS_PATH)/midl.exe
      ifndef COMPILER_PATH
	COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
      endif
    endif
100 101 102 103 104 105 106 107 108 109 110 111 112
    ifeq ($(CC_MAJORVER), 16)
      # This should be: CC_VER=16.00.30319.01 LINK_VER=10.00.30319.01
      REQUIRED_CC_VER = 16.00.30319.01
      REQUIRED_LINK_VER = 10.00.30319.01
      COMPILER_NAME=Visual Studio 10
      COMPILER_VERSION=VS2010
      #rebase and midl moved out of Visual Studio into the SDK:
      REBASE     = $(MSDEVTOOLS_PATH)/rebase
      MTL        = $(MSDEVTOOLS_PATH)/midl.exe
      ifndef COMPILER_PATH
	COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
      endif
    endif
D
duke 已提交
113
  else
114
    # else ARCH_DATA_MODEL is 64
115 116 117 118
    ifndef LINK_VER
      LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}')
      export LINK_VER
    endif
D
duke 已提交
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
    CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
    CC_MINORVER :=$(call MinorVersion,$(CC_VER))
    CC_MICROVER :=$(call MicroVersion,$(CC_VER))
    ifeq ($(ARCH), ia64)
      REQUIRED_CC_VER = 13.00.9337.7
      REQUIRED_LINK_VER = 7.00.9337.7
    endif
    ifeq ($(ARCH), amd64)
      REQUIRED_CC_VER = 14.00.40310.41
      REQUIRED_LINK_VER = 8.00.40310.39
    endif
    ifeq ($(CC_MAJORVER), 13)
      ifeq ($(ARCH), ia64)
        # This should be: CC_VER=13.00.9337.7 LINK_VER=7.00.9337.7
        COMPILER_NAME=Microsoft Platform SDK - November 2001 Edition
        COMPILER_VERSION=VS2003
      endif
    endif
    ifeq ($(CC_MAJORVER), 14)
      ifeq ($(ARCH), amd64)
        ifeq ($(CC_MICROVER), 30701)
          # This should be: CC_VER=14.00.30701 LINK_VER=8.00.30701
	  # WARNING: it says 14, but it is such an early build it doesn't
	  #          have all the VS2005 compiler option changes, so treat
	  #          this like a VS2003 compiler.
          COMPILER_NAME=Microsoft Platform SDK - February 2003 Edition
          COMPILER_VERSION=VS2003
        else
          # This should be: CC_VER=14.00.40310.41 LINK_VER=8.00.40310.39
	  COMPILER_NAME=Microsoft Platform SDK - April 2005 Edition (3790.1830)
          COMPILER_VERSION=VS2005
        endif
      endif
    endif
153 154 155 156 157 158 159
    ifeq ($(CC_MAJORVER), 15)
      # This should be: CC_VER=15.00.21022.8 LINK_VER=9.00.21022.8
      REQUIRED_CC_VER = 15.00.21022.8
      REQUIRED_LINK_VER = 9.00.21022.8
      COMPILER_NAME=Windows SDK 6.1 Visual Studio 9
      COMPILER_VERSION=VS2008
      RC = $(MSSDK61)/bin/x64/rc
160
      REBASE = $(MSSDK61)/bin/x64/rebase
161
    else
162 163 164 165 166 167 168 169 170 171 172 173 174
      ifeq ($(CC_MAJORVER), 16)
        # This should be: CC_VER=16.00.30319.01 LINK_VER=9.00.30319.01
        REQUIRED_CC_VER = 16.00.30319.01
        REQUIRED_LINK_VER = 10.00.30319.01
        COMPILER_NAME=Microsoft Visual Studio 10
        COMPILER_VERSION=VS2010
        RC = $(MSSDK7)/bin/x64/rc
        REBASE = $(MSSDK7)/bin/x64/rebase
      else
        # This will cause problems if ALT_COMPILER_PATH is defined to ""
        # which is a directive to use the PATH.
        REBASE         = $(COMPILER_PATH)../REBASE
      endif
175
    endif
D
duke 已提交
176 177 178 179 180 181 182 183 184 185 186
    ifndef COMPILER_PATH
      COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
    endif
  endif
  ifndef COMPILER_VERSION
    COMPILER_VERSION := $(error COMPILER_VERSION cannot be empty here)
  endif
  # Shared library generation flag
  SHARED_LIBRARY_FLAG = -LD
endif