<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7653.2">
<TITLE>cmake 2.4.7 not setting default flags for C compiler with ICC</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<BR>
<P><FONT SIZE=2 FACE="Arial">I've noticed that cmake 2.4.7 does not set the flags for the different build</FONT>
<BR><FONT SIZE=2 FACE="Arial">types (Debug, Relase, etc.) for the icc (Intel) C compiler (cache</FONT>
<BR><FONT SIZE=2 FACE="Arial">variables CMAKE_C_FLAGS_*). I've made a simple test case below that</FONT>
<BR><FONT SIZE=2 FACE="Arial">shows these flags getting set for gcc, but not icc. The flags for the</FONT>
<BR><FONT SIZE=2 FACE="Arial">C++ compiler get set properly for both g++ and icpc (Intel C++</FONT>
<BR><FONT SIZE=2 FACE="Arial">compiler).</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">To get right to the issue, search for CMAKE_C_FLAGS_RELEASE below. It</FONT>
<BR><FONT SIZE=2 FACE="Arial">is set when CC=gcc, but not for CC=icc.</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">I discovered this when debugging an icc VXL build. Code compiled from</FONT>
<BR><FONT SIZE=2 FACE="Arial">C did not have any debug information because CMAKE_C_FLAGS_DEBUG was</FONT>
<BR><FONT SIZE=2 FACE="Arial">empty. A simple workaround is to set CMAKE_C_FLAGS to the flags you</FONT>
<BR><FONT SIZE=2 FACE="Arial">need, but I assume this is still a bug worth fixing.</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">Fred Wheeler</FONT>
</P>
<BR>
<P><FONT SIZE=2 FACE="Arial">#### system info ####</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">ssh magellan</FONT>
<BR><FONT SIZE=2 FACE="Arial">uname -a</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">Linux magellan 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">cmake --version</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">cmake version 2.4-patch 7</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial"># sets PATH, LD_LIBRARY_PATH, etc. for icc</FONT>
<BR><FONT SIZE=2 FACE="Arial">. /software/comp_intel/compiler90/x86/bin/iccvars.sh</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">icc -V</FONT>
<BR><FONT SIZE=2 FACE="Arial">Intel(R) C Compiler for 32-bit applications, Version 9.1 Build 20070215Z Package ID: l_cc_c_9.1.047</FONT>
<BR><FONT SIZE=2 FACE="Arial">Copyright (C) 1985-2007 Intel Corporation. All rights reserved.</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">icpc -V</FONT>
<BR><FONT SIZE=2 FACE="Arial">Intel(R) C++ Compiler for 32-bit applications, Version 9.1 Build 20070215Z Package ID: l_cc_c_9.1.047</FONT>
<BR><FONT SIZE=2 FACE="Arial">Copyright (C) 1985-2007 Intel Corporation. All rights reserved.</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">#### gcc test ####</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">rm -rf ~/tmp</FONT>
<BR><FONT SIZE=2 FACE="Arial">mkdir ~/tmp</FONT>
<BR><FONT SIZE=2 FACE="Arial">cd ~/tmp</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">touch CMakeLists.txt</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">CC=gcc CXX=g++ cmake \</FONT>
<BR><FONT SIZE=2 FACE="Arial"> -G "Unix Makefiles" \</FONT>
<BR><FONT SIZE=2 FACE="Arial"> .</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">-- Check for working C compiler: /usr/bin/gcc</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Check for working C compiler: /usr/bin/gcc -- works</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Check size of void*</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Check size of void* - done</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Check for working CXX compiler: /usr/bin/c++</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Check for working CXX compiler: /usr/bin/c++ -- works</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Configuring done</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Generating done# sets PATH, LD_LIBRARY_PATH, etc. for icc</FONT>
<BR><FONT SIZE=2 FACE="Arial">. /software/comp_intel/compiler90/x86/bin/iccvars.sh</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">-- Build files have been written to: /home/wheeler/tmp</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">grep 'CMAKE_C.*COMPILER.*FILEPATH' CMakeCache.txt </FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">grep 'CMAKE_C.*FLAGS.*STRING' CMakeCache.txt </FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">CMAKE_CXX_FLAGS:STRING=' '</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_CXX_FLAGS_DEBUG:STRING=-g</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_C_FLAGS:STRING=' '</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_C_FLAGS_DEBUG:STRING=-g</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">#### icc test ####</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">rm -rf ~/tmp</FONT>
<BR><FONT SIZE=2 FACE="Arial">mkdir ~/tmp</FONT>
<BR><FONT SIZE=2 FACE="Arial">cd ~/tmp</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">touch CMakeLists.txt</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">CC=icc CXX=icpc cmake \</FONT>
<BR><FONT SIZE=2 FACE="Arial"> -G "Unix Makefiles" \</FONT>
<BR><FONT SIZE=2 FACE="Arial"> .</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">-- Check for working C compiler: /opt/intel/compiler90/x86/bin/icc</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Check for working C compiler: /opt/intel/compiler90/x86/bin/icc -- works</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Check size of void*</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Check size of void* - done</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Check for working CXX compiler: /opt/intel/compiler90/x86/bin/icpc</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Check for working CXX compiler: /opt/intel/compiler90/x86/bin/icpc -- works</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Configuring done</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Generating done</FONT>
<BR><FONT SIZE=2 FACE="Arial">-- Build files have been written to: /home/wheeler/tmp</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">grep 'CMAKE_C.*COMPILER.*FILEPATH' CMakeCache.txt </FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">CMAKE_CXX_COMPILER:FILEPATH=/opt/intel/compiler90/x86/bin/icpc</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_C_COMPILER:FILEPATH=/opt/intel/compiler90/x86/bin/icc</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">grep 'CMAKE_C.*FLAGS.*STRING' CMakeCache.txt </FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">CMAKE_CXX_FLAGS:STRING=' '</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_CXX_FLAGS_DEBUG:STRING=-g</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_C_FLAGS:STRING=' '</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_C_FLAGS_DEBUG:STRING=</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_C_FLAGS_MINSIZEREL:STRING=</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_C_FLAGS_RELEASE:STRING=</FONT>
<BR><FONT SIZE=2 FACE="Arial">CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">###### end ####</FONT>
</P>
</BODY>
</HTML>