2002-10-22 18:34:07 +04:00
# determine the compiler to use for C++ programs
# NOTE, a generator may set CMAKE_CXX_COMPILER before
# loading this file to force a compiler.
2002-11-08 23:46:08 +03:00
# use environment variable CXX first if defined by user, next use
# the cmake variable CMAKE_GENERATOR_CXX which can be defined by a generator
# as a default compiler
2002-10-22 18:34:07 +04:00
2002-11-09 01:24:45 +03:00
IF ( NOT CMAKE_CXX_COMPILER )
2002-11-19 23:55:19 +03:00
# if the user has specified CC via the environment, then use that without checking
2002-11-19 20:18:12 +03:00
IF ( $ENV{ CXX } MATCHES ".+" )
2002-11-19 23:55:19 +03:00
SET ( CMAKE_CXX_COMPILER_INIT $ENV{ CXX } )
# make sure we can find it
FIND_PROGRAM ( CMAKE_CXX_COMPILER_FULLPATH NAMES $ENV{ CXX } )
IF ( NOT CMAKE_CXX_COMPILER_FULLPATH )
MESSAGE ( SEND_ERROR "Could not find compiler set in environment variable CXX:\n$ENV{CXX}, make sure CXX does not have flags in it, use CXXFLAGS instead." )
ENDIF ( NOT CMAKE_CXX_COMPILER_FULLPATH )
ELSE ( $ENV{ CXX } MATCHES ".+" )
# if not in the envionment then search for the compiler in the path
SET ( CMAKE_CXX_COMPILER_LIST ${ CMAKE_GENERATOR_CXX } c++ g++ CC aCC cl bcc )
FIND_PROGRAM ( CMAKE_CXX_COMPILER_FULLPATH NAMES ${ CMAKE_CXX_COMPILER_LIST } )
GET_FILENAME_COMPONENT ( CMAKE_CXX_COMPILER_INIT
$ { C M A K E _ C X X _ C O M P I L E R _ F U L L P A T H } N A M E )
2002-11-19 20:18:12 +03:00
ENDIF ( $ENV{ CXX } MATCHES ".+" )
SET ( CMAKE_CXX_COMPILER ${ CMAKE_CXX_COMPILER_INIT }
C A C H E S T R I N G " C + + c o m p i l e r " )
2002-11-09 01:24:45 +03:00
ENDIF ( NOT CMAKE_CXX_COMPILER )
MARK_AS_ADVANCED ( CMAKE_CXX_COMPILER )
2002-10-23 02:17:07 +04:00
2002-11-08 23:46:08 +03:00
# set this to notfound right after so that it is searched for each time this
# file is included
SET ( CMAKE_CXX_COMPILER_FULLPATH NOTFOUND CACHE INTERNAL "full path to cxx compiler" FORCE )
2002-10-23 02:17:07 +04:00
# test to see if the cxx compiler is gnu
EXEC_PROGRAM ( ${ CMAKE_CXX_COMPILER } ARGS -E ${ CMAKE_ROOT } /Modules/CMakeTestGNU.c OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT RETURN_VALUE CMAKE_COMPILER_RETURN )
IF ( NOT CMAKE_COMPILER_RETURN )
IF ( ${ CMAKE_COMPILER_OUTPUT } MATCHES ".*THIS_IS_GNU.*" )
2002-11-08 23:46:08 +03:00
SET ( CMAKE_COMPILER_IS_GNUCXX 1 )
2002-10-23 02:17:07 +04:00
ENDIF ( ${ CMAKE_COMPILER_OUTPUT } MATCHES ".*THIS_IS_GNU.*" )
ENDIF ( NOT CMAKE_COMPILER_RETURN )
2002-10-24 00:53:53 +04:00
2002-10-25 22:08:17 +04:00
# configure all variables set in this file
CONFIGURE_FILE ( ${ CMAKE_ROOT } /Modules/CMakeCXXCompiler.cmake.in
2002-11-08 23:46:08 +03:00
$ { P R O J E C T _ B I N A R Y _ D I R } / C M a k e C X X C o m p i l e r . c m a k e I M M E D I A T E )
MARK_AS_ADVANCED ( CMAKE_CXX_COMPILER_FULLPATH )