make/common/shared/Defs-windows.gmk

Print this page
rev 185 : 6981043: Clean out all native code makefile logic from corba repository
Reviewed-by: jjg

  14 # version 2 for more details (a copy is included in the LICENSE file that
  15 # accompanied this code).
  16 #
  17 # You should have received a copy of the GNU General Public License version
  18 # 2 along with this work; if not, write to the Free Software Foundation,
  19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20 #
  21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22 # or visit www.oracle.com if you need additional information or have any
  23 # questions.
  24 #
  25 
  26 #
  27 # Definitions for Windows.
  28 #
  29 
  30 # Default for COMPILER_WARNINGS_FATAL on Windows (C++ compiler warnings)
  31 #    Level: Default is 3, 0 means none, 4 is the most but may be unreliable
  32 #    Some makefiles may have set this to 0 to turn off warnings completely,
  33 #    which also effectively creates a COMPILER_WARNINGS_FATAL=false situation.
  34 #    Program.gmk may turn this down to 2 (building .exe's).
  35 #    Windows 64bit platforms are less likely to be warning free.
  36 #    Historically, Windows 32bit builds should be mostly warning free.
  37 ifndef COMPILER_WARNING_LEVEL
  38   COMPILER_WARNING_LEVEL=3
  39 endif
  40 ifndef COMPILER_WARNINGS_FATAL
  41   COMPILER_WARNINGS_FATAL=false
  42 endif
  43 
  44 # Windows should use parallel compilation for best build times
  45 ifndef COMPILE_APPROACH
  46   COMPILE_APPROACH = normal
  47 endif
  48 
  49 # Indication that we are doing an incremental build.
  50 #    This may trigger the creation of make depend files.
  51 #    (This may not be working on windows yet, always force to false.)
  52 override INCREMENTAL_BUILD = false
  53 
  54 # WARNING: This is extremely touch stuff, between CYGWIN vs. MKS and all


  57 #
  58 # Notes:
  59 #   Keep all paths in the windows "mixed" style except CYGWIN UNXIXCOMMAND_PATH.
  60 #   Use of PrefixPath is critical, some variables must end with / (see NOTE).
  61 #   Use of quotes is critical due to possible spaces in paths coming from
  62 #     the environment variables, be careful.
  63 #   First convert \ to / with subst, keep it quoted due to blanks, then
  64 #     use cygpath -s or dosname -s to get the short non-blank name.
  65 #   If the MKS is old and doesn't have a dosname -s, you will be forced
  66 #     to set ALT variables with the short non-space directory names.
  67 #     If dosname doesn't appear to work, we won't use it.
  68 #     The dosname utility also wants to accept stdin if it is not supplied
  69 #     any path on the command line, this is really dangerous when using
  70 #     make variables that can easily become empty, so I use:
  71 #        echo $1 | dosname -s     instead of    dosname -s $1
  72 #     to prevent dosname from hanging up the make process when $1 is empty.
  73 #     The cygpath utility does not have this problem.
  74 #   The ALT values should never really have spaces or use \.
  75 #   Suspect these environment variables to have spaces and/or \ characters:
  76 #     SYSTEMROOT, SystemRoot, WINDIR, windir, PROGRAMFILES, ProgramFiles,
  77 #     MSTOOLS, Mstools, MSSDK, MSSdk, VC71COMNTOOLS, 
  78 #     MSVCDIR, MSVCDir.
  79 #     So use $(subst \,/,) on them first adding quotes and placing them in
  80 #         their own variable assigned with :=, then use FullPath.
  81 #
  82 
  83 # Use FullPath to get C:/ style non-spaces path. Never ends with a /!
  84 ifdef USING_CYGWIN
  85 # We assume cygpath is available in the search path
  86 #    NOTE: Use of 'pwd' with CYGWIN will not get you a mixed style path!
  87 CYGPATH_CMD=cygpath -a -s -m
  88 define FullPath
  89 $(shell $(CYGPATH_CMD) $1 2> $(DEV_NULL))
  90 endef
  91 define OptFullPath
  92 $(shell if [ "$1" != "" -a -d "$1" ]; then $(CYGPATH_CMD) "$1"; else echo "$1"; fi)
  93 endef
  94 else
  95 # Temporary until we upgrade to MKS 8.7, MKS pwd returns mixed mode path
  96 define FullPath
  97 $(shell cd $1 2> $(DEV_NULL) && pwd)


 184     else
 185       xPROGRAMFILES    :="$(_system_drive)/Program Files (x86)"
 186     endif
 187   endif
 188   ifeq ($(ARCH_DATA_MODEL), 32)
 189     SHORTPROGRAMFILES  :=$(call FullPath,$(xPROGRAMFILES))
 190   else
 191     ifdef PROGRAMW6432
 192       xPROGRAMW6432    :="$(subst \,/,$(PROGRAMW6432))"
 193     else
 194       xPROGRAMW6432    :="$(_system_drive)/Program Files"
 195     endif
 196     SHORTPROGRAMFILES  :=$(call FullPath,$(xPROGRAMW6432))
 197   endif
 198   ifneq ($(word 1,$(SHORTPROGRAMFILES)),$(SHORTPROGRAMFILES))
 199     SHORTPROGRAMFILES  :=
 200   endif
 201   export SHORTPROGRAMFILES
 202 endif
 203 
 204 # Compilers, SDK, and Visual Studio (MSDEV) [32bit is different from 64bit]
 205 ifeq ($(ARCH_DATA_MODEL), 32)
 206   ifndef SHORTMSVCDIR
 207     # Try looking in MSVCDIR or MSVCDir area first (set by vcvars32.bat)
 208     ifdef MSVCDIR
 209       xMSVCDIR         :="$(subst \,/,$(MSVCDIR))"
 210       SHORTMSVCDIR     :=$(call FullPath,$(xMSVCDIR))
 211     else
 212       ifdef MSVCDir
 213         xMSVCDIR       :="$(subst \,/,$(MSVCDir))"
 214         SHORTMSVCDIR   :=$(call FullPath,$(xMSVCDIR))
 215       else
 216         ifneq ($(SHORTPROGRAMFILES),)
 217           xMSVCDIR     :="$(SHORTPROGRAMFILES)/Microsoft Visual Studio .NET 2003/Vc7"
 218           SHORTMSVCDIR :=$(call FullPath,$(xMSVCDIR))
 219         endif
 220       endif
 221     endif
 222     ifneq ($(subst MSDev98,OLDOLDOLD,$(SHORTMSVCDIR)),$(SHORTMSVCDIR))
 223       SHORTMSVCDIR     :=
 224     endif
 225     # If we still don't have it, look for VS100COMNTOOLS, setup by installer?
 226     ifeq ($(SHORTMSVCDIR),)
 227       ifdef VS100COMNTOOLS  # /Common/Tools directory, use ../../Vc
 228         xVS100COMNTOOLS :="$(subst \,/,$(VS100COMNTOOLS))"
 229         _vs100tools     :=$(call FullPath,$(xVS100COMNTOOLS))
 230       endif
 231       ifneq ($(_vs100tools),)
 232         SHORTMSVCDIR   :=$(_vs100tools)/../../Vc
 233       endif
 234     endif
 235     export SHORTMSVCDIR
 236     # If we still don't have it, look for VS71COMNTOOLS, setup by installer?
 237     ifeq ($(SHORTMSVCDIR),)
 238       ifdef VS71COMNTOOLS  # /Common/Tools directory, use ../../Vc7
 239         xVS71COMNTOOLS :="$(subst \,/,$(VS71COMNTOOLS))"
 240         _vs71tools     :=$(call FullPath,$(xVS71COMNTOOLS))
 241       endif
 242       ifneq ($(_vs71tools),)
 243         SHORTMSVCDIR   :=$(_vs71tools)/../../Vc7
 244       endif
 245     endif
 246     export SHORTMSVCDIR
 247   endif
 248   ifneq ($(SHORTMSVCDIR),)
 249     SHORTCOMPILERBIN   :=$(SHORTMSVCDIR)/Bin
 250     SHORTPSDK          :=$(SHORTMSVCDIR)/PlatformSDK
 251     export SHORTCOMPILERBIN
 252     export SHORTPSDK
 253   endif
 254 endif
 255 
 256 # The Microsoft Platform SDK installed by itself
 257 ifneq ($(SHORTPROGRAMFILES),)
 258   ifndef SHORTPSDK
 259     xPSDK       :="$(SHORTPROGRAMFILES)/Microsoft Platform SDK"
 260     SHORTPSDK   :=$(call FullPath,$(xPSDK))
 261     ifeq ($(SHORTPSDK),)
 262       xPSDK     :="$(SHORTPROGRAMFILES)/Microsoft SDK"
 263       SHORTPSDK :=$(call FullPath,$(xMSSDK))
 264     endif
 265     export SHORTPSDK
 266   endif
 267 endif
 268 
 269 # If no SDK found yet, look in other places
 270 ifndef SHORTPSDK
 271   ifdef MSSDK
 272     xMSSDK      :="$(subst \,/,$(MSSDK))"
 273     SHORTPSDK   :=$(call FullPath,$(xMSSDK))
 274   else
 275     ifdef MSSdk
 276       xMSSDK    :="$(subst \,/,$(MSSdk))"
 277       SHORTPSDK :=$(call FullPath,$(xMSSDK))
 278     endif
 279   endif
 280   export SHORTPSDK
 281 endif
 282 
 283 # Compilers for 64bit are from SDK
 284 ifeq ($(ARCH_DATA_MODEL), 64)
 285   ifndef SHORTCOMPILERBIN
 286     ifdef VS100COMNTOOLS  # /Common7/Tools directory, use ../../Vc
 287       xVS100COMNTOOLS :="$(subst \,/,$(VS100COMNTOOLS))"
 288       _vs100tools     :=$(call FullPath,$(xVS100COMNTOOLS))
 289     endif
 290     ifneq ($(_vs100tools),)
 291       SHORTCOMPILERBIN :=$(_vs100tools)/../../Vc/bin/amd64
 292       xMSSDK70      :="C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/"
 293       MSSDK7        :=$(call FullPath,$(xMSSDK70))
 294       export MSSDK7
 295     else
 296       xMSSDK61 :="C:/Program Files/Microsoft SDKs/Windows/v6.1/"
 297       MSSDK61 :=$(call FullPath,$(xMSSDK61))
 298       xVS2008 :="C:/Program Files (x86)/Microsoft Visual Studio 9.0/"
 299       _vs2008 :=$(call FullPath,$(xVS2008))
 300       ifneq ($(_vs2008),)
 301         ifeq ($(ARCH), ia64)
 302           SHORTCOMPILERBIN :=$(_vs2008)/VC/Bin/x86_ia64
 303         endif
 304         ifeq ($(ARCH), amd64)
 305           SHORTCOMPILERBIN :=$(_vs2008)/VC/Bin/$(ARCH)
 306         endif
 307       else
 308         ifneq ($(SHORTPSDK),)
 309           ifeq ($(ARCH), ia64)
 310             SHORTCOMPILERBIN :=$(SHORTPSDK)/Bin/Win64
 311           endif
 312           ifeq ($(ARCH), amd64)
 313             SHORTCOMPILERBIN :=$(SHORTPSDK)/Bin/Win64/x86/$(ARCH)
 314           endif
 315         endif
 316       endif
 317     endif
 318     export SHORTCOMPILERBIN
 319   endif
 320 endif
 321 
 322 # Location on system where jdk installs might be
 323 ifneq ($(SHORTPROGRAMFILES),)
 324   USRJDKINSTANCES_PATH =$(SHORTPROGRAMFILES)/Java
 325 else
 326   USRJDKINSTANCES_PATH =$(_system_drive)/
 327 endif
 328 
 329 # SLASH_JAVA: location of all network accessable files
 330 ifndef SLASH_JAVA
 331   ifdef ALT_SLASH_JAVA
 332     xALT_SLASH_JAVA :="$(subst \,/,$(ALT_SLASH_JAVA))"
 333     SLASH_JAVA      :=$(call FullPath,$(xALT_SLASH_JAVA))
 334   else
 335     ifdef ALT_JDK_JAVA_DRIVE
 336       SLASH_JAVA  =$(JDK_JAVA_DRIVE)
 337     else
 338       SLASH_JAVA  =J:
 339     endif
 340   endif
 341   SLASH_JAVA:=$(call AltCheckSpaces,SLASH_JAVA)
 342   SLASH_JAVA:=$(call AltCheckValue,SLASH_JAVA)
 343   export SLASH_JAVA
 344 endif
 345 
 346 # JDK_DEVTOOLS_DIR: common path for all the java devtools
 347 ifndef JDK_DEVTOOLS_DIR
 348   ifdef ALT_JDK_DEVTOOLS_DIR
 349     xALT_JDK_DEVTOOLS_DIR :="$(subst \,/,$(ALT_JDK_DEVTOOLS_DIR))"
 350     JDK_DEVTOOLS_DIR      :=$(call FullPath,$(xALT_JDK_DEVTOOLS_DIR))
 351   else
 352     JDK_DEVTOOLS_DIR =$(SLASH_JAVA)/devtools
 353   endif
 354   JDK_DEVTOOLS_DIR:=$(call AltCheckSpaces,JDK_DEVTOOLS_DIR)
 355   JDK_DEVTOOLS_DIR:=$(call AltCheckValue,JDK_DEVTOOLS_DIR)
 356   export JDK_DEVTOOLS_DIR
 357 endif
 358 
 359 # COMPILER_PATH: path to where the compiler and tools are installed.
 360 #  NOTE: Must end with / so that it could be empty, allowing PATH usage.
 361 ifndef COMPILER_PATH
 362   ifdef ALT_COMPILER_PATH
 363     xALT_COMPILER_PATH  :="$(subst \,/,$(ALT_COMPILER_PATH))"
 364     fxALT_COMPILER_PATH :=$(call FullPath,$(xALT_COMPILER_PATH))
 365     COMPILER_PATH       :=$(call PrefixPath,$(fxALT_COMPILER_PATH))
 366   else
 367     COMPILER_PATH :=$(call PrefixPath,$(SHORTCOMPILERBIN))
 368   endif
 369   COMPILER_PATH :=$(call AltCheckSpaces,COMPILER_PATH)
 370   export COMPILER_PATH
 371 endif
 372 
 373 # MSDEVTOOLS_PATH: path to where the additional MS Compiler tools are.
 374 #  NOTE: Must end with / so that it could be empty, allowing PATH usage.
 375 ifndef MSDEVTOOLS_PATH
 376   ifdef ALT_MSDEVTOOLS_PATH
 377     xALT_MSDEVTOOLS_PATH  :="$(subst \,/,$(ALT_MSDEVTOOLS_PATH))"
 378     fxALT_MSDEVTOOLS_PATH :=$(call FullPath,$(xALT_MSDEVTOOLS_PATH))
 379     MSDEVTOOLS_PATH       :=$(call PrefixPath,$(fxALT_MSDEVTOOLS_PATH))
 380   else
 381     ifeq ($(ARCH_DATA_MODEL), 64)
 382       ifdef MSTOOLS
 383         xMSTOOLS  :="$(subst \,/,$(MSTOOLS))"
 384         _ms_tools :=$(call FullPath,$(xMSTOOLS))
 385       else
 386         ifdef Mstools
 387           xMSTOOLS  :="$(subst \,/,$(Mstools))"
 388           _ms_tools :=$(call FullPath,$(xMSTOOLS))
 389         else
 390           _ms_tools :=
 391         endif
 392       endif
 393       ifneq ($(_ms_tools),)
 394         _ms_tools_bin :=$(_ms_tools)/Bin
 395       else
 396         # Assumes compiler bin is .../Bin/win64/x86/AMD64, rc.exe is 3 levels up
 397         _ms_tools_bin :=$(SHORTCOMPILERBIN)/../../..
 398       endif
 399     else
 400       _ms_tools_bin :=$(SHORTCOMPILERBIN)
 401     endif
 402     MSDEVTOOLS_PATH :=$(call PrefixPath,$(_ms_tools_bin))
 403   endif
 404   MSDEVTOOLS_PATH:=$(call AltCheckSpaces,MSDEVTOOLS_PATH)
 405   export MSDEVTOOLS_PATH
 406 endif
 407 
 408 # DEVTOOLS_PATH: for other tools required for building (such as zip, etc.)
 409 #  NOTE: Must end with / so that it could be empty, allowing PATH usage.
 410 ifndef DEVTOOLS_PATH
 411   ifdef ALT_DEVTOOLS_PATH
 412     xALT_DEVTOOLS_PATH  :="$(subst \,/,$(ALT_DEVTOOLS_PATH))"
 413     fxALT_DEVTOOLS_PATH :=$(call FullPath,$(xALT_DEVTOOLS_PATH))
 414     DEVTOOLS_PATH       :=$(call PrefixPath,$(fxALT_DEVTOOLS_PATH))
 415   else
 416     ifdef USING_CYGWIN
 417       DEVTOOLS_PATH :=$(UNIXCOMMAND_PATH)
 418     else
 419       xDEVTOOLS_PATH  :="$(_system_drive)/utils"
 420       fxDEVTOOLS_PATH :=$(call FullPath,$(xDEVTOOLS_PATH))
 421       DEVTOOLS_PATH  :=$(call PrefixPath,$(fxDEVTOOLS_PATH))
 422     endif
 423   endif
 424   DEVTOOLS_PATH:=$(call AltCheckSpaces,DEVTOOLS_PATH)
 425   export DEVTOOLS_PATH
 426 endif
 427 



  14 # version 2 for more details (a copy is included in the LICENSE file that
  15 # accompanied this code).
  16 #
  17 # You should have received a copy of the GNU General Public License version
  18 # 2 along with this work; if not, write to the Free Software Foundation,
  19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20 #
  21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22 # or visit www.oracle.com if you need additional information or have any
  23 # questions.
  24 #
  25 
  26 #
  27 # Definitions for Windows.
  28 #
  29 
  30 # Default for COMPILER_WARNINGS_FATAL on Windows (C++ compiler warnings)
  31 #    Level: Default is 3, 0 means none, 4 is the most but may be unreliable
  32 #    Some makefiles may have set this to 0 to turn off warnings completely,
  33 #    which also effectively creates a COMPILER_WARNINGS_FATAL=false situation.

  34 #    Windows 64bit platforms are less likely to be warning free.
  35 #    Historically, Windows 32bit builds should be mostly warning free.
  36 ifndef COMPILER_WARNING_LEVEL
  37   COMPILER_WARNING_LEVEL=3
  38 endif
  39 ifndef COMPILER_WARNINGS_FATAL
  40   COMPILER_WARNINGS_FATAL=false
  41 endif
  42 
  43 # Windows should use parallel compilation for best build times
  44 ifndef COMPILE_APPROACH
  45   COMPILE_APPROACH = normal
  46 endif
  47 
  48 # Indication that we are doing an incremental build.
  49 #    This may trigger the creation of make depend files.
  50 #    (This may not be working on windows yet, always force to false.)
  51 override INCREMENTAL_BUILD = false
  52 
  53 # WARNING: This is extremely touch stuff, between CYGWIN vs. MKS and all


  56 #
  57 # Notes:
  58 #   Keep all paths in the windows "mixed" style except CYGWIN UNXIXCOMMAND_PATH.
  59 #   Use of PrefixPath is critical, some variables must end with / (see NOTE).
  60 #   Use of quotes is critical due to possible spaces in paths coming from
  61 #     the environment variables, be careful.
  62 #   First convert \ to / with subst, keep it quoted due to blanks, then
  63 #     use cygpath -s or dosname -s to get the short non-blank name.
  64 #   If the MKS is old and doesn't have a dosname -s, you will be forced
  65 #     to set ALT variables with the short non-space directory names.
  66 #     If dosname doesn't appear to work, we won't use it.
  67 #     The dosname utility also wants to accept stdin if it is not supplied
  68 #     any path on the command line, this is really dangerous when using
  69 #     make variables that can easily become empty, so I use:
  70 #        echo $1 | dosname -s     instead of    dosname -s $1
  71 #     to prevent dosname from hanging up the make process when $1 is empty.
  72 #     The cygpath utility does not have this problem.
  73 #   The ALT values should never really have spaces or use \.
  74 #   Suspect these environment variables to have spaces and/or \ characters:
  75 #     SYSTEMROOT, SystemRoot, WINDIR, windir, PROGRAMFILES, ProgramFiles,
  76 #     VC71COMNTOOLS, 
  77 #     MSVCDIR, MSVCDir.
  78 #     So use $(subst \,/,) on them first adding quotes and placing them in
  79 #         their own variable assigned with :=, then use FullPath.
  80 #
  81 
  82 # Use FullPath to get C:/ style non-spaces path. Never ends with a /!
  83 ifdef USING_CYGWIN
  84 # We assume cygpath is available in the search path
  85 #    NOTE: Use of 'pwd' with CYGWIN will not get you a mixed style path!
  86 CYGPATH_CMD=cygpath -a -s -m
  87 define FullPath
  88 $(shell $(CYGPATH_CMD) $1 2> $(DEV_NULL))
  89 endef
  90 define OptFullPath
  91 $(shell if [ "$1" != "" -a -d "$1" ]; then $(CYGPATH_CMD) "$1"; else echo "$1"; fi)
  92 endef
  93 else
  94 # Temporary until we upgrade to MKS 8.7, MKS pwd returns mixed mode path
  95 define FullPath
  96 $(shell cd $1 2> $(DEV_NULL) && pwd)


 183     else
 184       xPROGRAMFILES    :="$(_system_drive)/Program Files (x86)"
 185     endif
 186   endif
 187   ifeq ($(ARCH_DATA_MODEL), 32)
 188     SHORTPROGRAMFILES  :=$(call FullPath,$(xPROGRAMFILES))
 189   else
 190     ifdef PROGRAMW6432
 191       xPROGRAMW6432    :="$(subst \,/,$(PROGRAMW6432))"
 192     else
 193       xPROGRAMW6432    :="$(_system_drive)/Program Files"
 194     endif
 195     SHORTPROGRAMFILES  :=$(call FullPath,$(xPROGRAMW6432))
 196   endif
 197   ifneq ($(word 1,$(SHORTPROGRAMFILES)),$(SHORTPROGRAMFILES))
 198     SHORTPROGRAMFILES  :=
 199   endif
 200   export SHORTPROGRAMFILES
 201 endif
 202 






















































































































 203 # Location on system where jdk installs might be
 204 ifneq ($(SHORTPROGRAMFILES),)
 205   USRJDKINSTANCES_PATH =$(SHORTPROGRAMFILES)/Java
 206 else
 207   USRJDKINSTANCES_PATH =$(_system_drive)/
 208 endif
 209 
 210 # SLASH_JAVA: location of all network accessable files
 211 ifndef SLASH_JAVA
 212   ifdef ALT_SLASH_JAVA
 213     xALT_SLASH_JAVA :="$(subst \,/,$(ALT_SLASH_JAVA))"
 214     SLASH_JAVA      :=$(call FullPath,$(xALT_SLASH_JAVA))
 215   else
 216     ifdef ALT_JDK_JAVA_DRIVE
 217       SLASH_JAVA  =$(JDK_JAVA_DRIVE)
 218     else
 219       SLASH_JAVA  =J:
 220     endif
 221   endif
 222   SLASH_JAVA:=$(call AltCheckSpaces,SLASH_JAVA)
 223   SLASH_JAVA:=$(call AltCheckValue,SLASH_JAVA)
 224   export SLASH_JAVA
 225 endif
 226 
 227 # JDK_DEVTOOLS_DIR: common path for all the java devtools
 228 ifndef JDK_DEVTOOLS_DIR
 229   ifdef ALT_JDK_DEVTOOLS_DIR
 230     xALT_JDK_DEVTOOLS_DIR :="$(subst \,/,$(ALT_JDK_DEVTOOLS_DIR))"
 231     JDK_DEVTOOLS_DIR      :=$(call FullPath,$(xALT_JDK_DEVTOOLS_DIR))
 232   else
 233     JDK_DEVTOOLS_DIR =$(SLASH_JAVA)/devtools
 234   endif
 235   JDK_DEVTOOLS_DIR:=$(call AltCheckSpaces,JDK_DEVTOOLS_DIR)
 236   JDK_DEVTOOLS_DIR:=$(call AltCheckValue,JDK_DEVTOOLS_DIR)
 237   export JDK_DEVTOOLS_DIR
 238 endif
 239 

















































 240 # DEVTOOLS_PATH: for other tools required for building (such as zip, etc.)
 241 #  NOTE: Must end with / so that it could be empty, allowing PATH usage.
 242 ifndef DEVTOOLS_PATH
 243   ifdef ALT_DEVTOOLS_PATH
 244     xALT_DEVTOOLS_PATH  :="$(subst \,/,$(ALT_DEVTOOLS_PATH))"
 245     fxALT_DEVTOOLS_PATH :=$(call FullPath,$(xALT_DEVTOOLS_PATH))
 246     DEVTOOLS_PATH       :=$(call PrefixPath,$(fxALT_DEVTOOLS_PATH))
 247   else
 248     ifdef USING_CYGWIN
 249       DEVTOOLS_PATH :=$(UNIXCOMMAND_PATH)
 250     else
 251       xDEVTOOLS_PATH  :="$(_system_drive)/utils"
 252       fxDEVTOOLS_PATH :=$(call FullPath,$(xDEVTOOLS_PATH))
 253       DEVTOOLS_PATH  :=$(call PrefixPath,$(fxDEVTOOLS_PATH))
 254     endif
 255   endif
 256   DEVTOOLS_PATH:=$(call AltCheckSpaces,DEVTOOLS_PATH)
 257   export DEVTOOLS_PATH
 258 endif
 259