# Intel Compiler (on Windows, using the Microsoft Standard Library) # (C) Copyright David Abrahams 2001. Permission to copy, use, # modify, sell and distribute this software is granted provided this # copyright notice appears in all copies. This software is provided # "as is" without express or implied warranty, and with no claim as # to its suitability for any purpose. # The following #// line will be used by the regression test table generation # program as the column heading for HTML tables. Must not include version number. #//Intel
C++
# singleton variables... set-as-singleton INTELC ; # compute INTEL tool path. You can either use the environment variable # setup that comes with the Intel compiler, or you can set the # INTEL_PATH or INTELC (in order to respect FTJam setup) environment # variables to point at the intel-win32 installation directory INTEL_PATH ?= $(INTELC) ; INTEL_TOOL_PATH ?= "$(INTEL_PATH)"\\bin\\ ; # if you have vc6 and vc7 installed, you may want your intel compiler # to use the VC7 libraries. In that case, you might set # INTEL_BASE_MSVC_TOOLSET = vc7 # instead. INTEL_BASE_MSVC_TOOLSET ?= msvc ; extends-toolset $(INTEL_BASE_MSVC_TOOLSET) ; VC_TOOL_PATH = $(INTEL_TOOL_PATH) ; VC_STDLIB_PATH = "$(INTEL_PATH)"\\bin ; VC_COMPILER = icl ; VC_LINKER = xilink ; # Extract the compiler version from its installation path local version = $(INTEL_VERSION) ; version ?= [ MATCH .*[\\/][Cc][Oo][Mm][Pp][Ii][Ll][Ee][Rr]([0-9])[0-9][\\/].* : $(INTEL_TOOL_PATH) ] ; # Reduce the number of spurious error messages C++FLAGS += /Qwn5 /Qwd985 ; # Detect illegal conversions in this program: # # # include # # include # int main() # { # char* a[20]; # std::vector v(20); # std::copy(v.begin(), v.end(), a); # return 0; # } C++FLAGS += /Qwe556 ; # Enable ADL C++FLAGS += -Qoption,c,--arg_dep_lookup ; #"c" works for C++, too if $(version) <= 5 { # remove options unrecognized by Intel5 C++FLAGS = [ difference $(C++FLAGS) : /Zc:wchar_t,forScope ] ; } else { C++FLAGS += /Zc:forScope ; # Add support for correct for loop scoping } # Add options recognized only by intel7 if $(version) >= 7 { C++FLAGS += /Qansi_alias ; } # tell the compiler about the base toolset. if $(VC_PDB_NAME) = vc60 { C++FLAGS += # Emulate VC6 /Qvc6 # no wchar_t support in vc6 dinkum library. Furthermore, in vc6 # compatibility-mode, wchar_t is not a distinct type from unsigned # short -DBOOST_NO_INTRINSIC_WCHAR_T ; } else { if $(version) > 5 { # Add support for wchar_t C++FLAGS += /Zc:wchar_t # Tell the dinkumware library about it. -D_NATIVE_WCHAR_T_DEFINED ; } version = [ MATCH ^[Vv][Cc]([0-9]+)([0-9])$ : $(VC_PDB_NAME) ] ; local minor ; if $(version[2]) != 0 { minor = .$(version[2]) ; } C++FLAGS += /Qvc$(version[1])$(minor) ; } # remove any duplicates caused by the additions above C++FLAGS = [ unique $(C++FLAGS) ] ; if $(VC_SETUP) { VC_SETUP = "CALL \"$(INTEL_TOOL_PATH)ICCVARS.BAT\" > nul" ; }