diff options
-rw-r--r-- | Modules/Platform/Windows-cl.cmake | 52 | ||||
-rw-r--r-- | Source/cmLocalVisualStudio7Generator.cxx | 83 |
2 files changed, 39 insertions, 96 deletions
diff --git a/Modules/Platform/Windows-cl.cmake b/Modules/Platform/Windows-cl.cmake index 61a0a0e..6bca892 100644 --- a/Modules/Platform/Windows-cl.cmake +++ b/Modules/Platform/Windows-cl.cmake @@ -33,11 +33,11 @@ SET(CMAKE_C_CREATE_STATIC_LIBRARY ${CMAKE_CXX_CREATE_STATIC_LIBRARY}) # compile a C++ file into an object file SET(CMAKE_CXX_COMPILE_OBJECT - "<CMAKE_CXX_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} <FLAGS> /TP -DWIN32 /Fo<OBJECT> -c <SOURCE>${CMAKE_END_TEMP_FILE}") + "<CMAKE_CXX_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} <FLAGS> /TP /Fo<OBJECT> -c <SOURCE>${CMAKE_END_TEMP_FILE}") # compile a C file into an object file SET(CMAKE_C_COMPILE_OBJECT - "<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} <FLAGS> -DWIN32 /Fo<OBJECT> -c <SOURCE>${CMAKE_END_TEMP_FILE}") + "<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} <FLAGS> /Fo<OBJECT> -c <SOURCE>${CMAKE_END_TEMP_FILE}") SET(CMAKE_C_LINK_EXECUTABLE @@ -150,15 +150,15 @@ ENDIF(CMAKE_GENERATOR MATCHES "NMake Makefiles") IF(CMAKE_COMPILER_2005) SET(CMAKE_BUILD_TYPE_INIT Debug) SET (CMAKE_CXX_FLAGS_INIT "/W3 /Zm1000 /EHsc /GR") - SET (CMAKE_CXX_FLAGS_DEBUG_INIT "/MDd /Zi /Od /RTC1") - SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/MD /O1 /D NDEBUG") - SET (CMAKE_CXX_FLAGS_RELEASE_INIT "/MD /O2 /D NDEBUG") - SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /D NDEBUG") + SET (CMAKE_CXX_FLAGS_DEBUG_INIT "/DWIN32 /D_DEBUG /D_WINDOWS /MDd /Zi /Ob0 /Od /RTC1") + SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/DWIN32 /D_WINDOWS /MD /O1 /Ob1 /D NDEBUG") + SET (CMAKE_CXX_FLAGS_RELEASE_INIT "/DWIN32 /D_WINDOWS /MD /O2 /Ob2 /D NDEBUG") + SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/DWIN32 /D_WINDOWS /MD /Zi /O2 /Ob1 /D NDEBUG") SET (CMAKE_C_FLAGS_INIT "/W3 /Zm1000") - SET (CMAKE_C_FLAGS_DEBUG_INIT "/MDd /Zi /Od /RTC1") - SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "/MD /O1 /D NDEBUG") - SET (CMAKE_C_FLAGS_RELEASE_INIT "/MD /O2 /D NDEBUG") - SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /D NDEBUG") + SET (CMAKE_C_FLAGS_DEBUG_INIT "/DWIN32 /D_DEBUG /D_WINDOWS /MDd /Zi /Ob0 /Od /RTC1") + SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "/DWIN32 /D_WINDOWS /MD /O1 /Ob1 /D NDEBUG") + SET (CMAKE_C_FLAGS_RELEASE_INIT "/DWIN32 /D_WINDOWS /MD /O2 /Ob2 /D NDEBUG") + SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/DWIN32 /D_WINDOWS /MD /Zi /O2 /Ob1 /D NDEBUG") SET (CMAKE_STANDARD_LIBRARIES "kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib " CACHE STRING "Libraries linked by defalut with all applications.") ELSE(CMAKE_COMPILER_2005) @@ -166,15 +166,15 @@ ELSE(CMAKE_COMPILER_2005) MESSAGE(STATUS "Using FREE VC TOOLS, NO DEBUG available") SET(CMAKE_BUILD_TYPE_INIT Release) SET (CMAKE_CXX_FLAGS_INIT "/W3 /Zm1000 /GX /GR") - SET (CMAKE_CXX_FLAGS_DEBUG_INIT "/MTd /Zi /Od /GZ") - SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/MT /O1") - SET (CMAKE_CXX_FLAGS_RELEASE_INIT "/MT /O2") - SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2") + SET (CMAKE_CXX_FLAGS_DEBUG_INIT "/DWIN32 /D_DEBUG /D_WINDOWS /MTd /Zi /Ob0 /Od /GZ") + SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/DWIN32 /D_WINDOWS /MT /O1 /Ob1") + SET (CMAKE_CXX_FLAGS_RELEASE_INIT "/DWIN32 /D_WINDOWS /MT /O2 /Ob2") + SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/DWIN32 /D_WINDOWS /MT /Zi /O2 /Ob1") SET (CMAKE_C_FLAGS_INIT "/W3 /Zm1000 /GX /GR") - SET (CMAKE_C_FLAGS_DEBUG_INIT "/MTd /Zi /Od /GZ") - SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "/MT /O1") - SET (CMAKE_C_FLAGS_RELEASE_INIT "/MT /O2") - SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2") + SET (CMAKE_C_FLAGS_DEBUG_INIT "/DWIN32 /D_DEBUG /D_WINDOWS /MTd /Zi /Ob0 /Od /GZ") + SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "/DWIN32 /D_WINDOWS /MT /O1 /Ob1") + SET (CMAKE_C_FLAGS_RELEASE_INIT "/DWIN32 /D_WINDOWS /MT /O2 /Ob2") + SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/DWIN32 /D_WINDOWS /MT /Zi /O2 /Ob1") SET (CMAKE_STANDARD_LIBRARIES "kernel32.lib user32.lib gdi32.lib advapi32.lib rpcrt4.lib" CACHE STRING "Libraries linked by defalut with all applications.") SET (CMAKE_STANDARD_LIBRARIES "kernel32.lib user32.lib gdi32.lib advapi32.lib rpcrt4.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib" CACHE STRING @@ -182,15 +182,15 @@ ELSE(CMAKE_COMPILER_2005) ELSE(CMAKE_USING_VC_FREE_TOOLS) SET(CMAKE_BUILD_TYPE_INIT Debug) SET (CMAKE_CXX_FLAGS_INIT "/W3 /Zm1000 /GX /GR") - SET (CMAKE_CXX_FLAGS_DEBUG_INIT "/MDd /Zi /Od /GZ") - SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/MD /O1 /D NDEBUG") - SET (CMAKE_CXX_FLAGS_RELEASE_INIT "/MD /O2 /D NDEBUG") - SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /D NDEBUG") + SET (CMAKE_CXX_FLAGS_DEBUG_INIT "/DWIN32 /D_DEBUG /D_WINDOWS /MDd /Zi /Ob0 /Od /GZ") + SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/DWIN32 /D_WINDOWS /MD /O1 /Ob1 /D NDEBUG") + SET (CMAKE_CXX_FLAGS_RELEASE_INIT "/DWIN32 /D_WINDOWS /MD /O2 /Ob2 /D NDEBUG") + SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/DWIN32 /D_WINDOWS /MD /Zi /O2 /Ob1 /D NDEBUG") SET (CMAKE_C_FLAGS_INIT "/W3 /Zm1000") - SET (CMAKE_C_FLAGS_DEBUG_INIT "/MDd /Zi /Od /GZ") - SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "/MD /O1 /D NDEBUG") - SET (CMAKE_C_FLAGS_RELEASE_INIT "/MD /O2 /D NDEBUG") - SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /D NDEBUG") + SET (CMAKE_C_FLAGS_DEBUG_INIT "/DWIN32 /D_DEBUG /D_WINDOWS /MDd /Zi /Ob0 /Od /GZ") + SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "/DWIN32 /D_WINDOWS /MD /O1 /Ob1 /D NDEBUG") + SET (CMAKE_C_FLAGS_RELEASE_INIT "/DWIN32 /D_WINDOWS /MD /O2 /Ob2 /D NDEBUG") + SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/DWIN32 /D_WINDOWS /MD /Zi /O2 /Ob1 /D NDEBUG") SET (CMAKE_STANDARD_LIBRARIES "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib" CACHE STRING "Libraries linked by defalut with all applications.") ENDIF(CMAKE_USING_VC_FREE_TOOLS) diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index d33364e..6364f7c 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -438,10 +438,6 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, } std::string flags; - std::string flagsRelease = " "; - std::string flagsMinSize = " "; - std::string flagsDebug = " "; - std::string flagsDebugRel = " "; if(strcmp(configType, "10") != 0) { const char* linkLanguage = target.GetLinkerLanguage(this->GetGlobalGenerator()); @@ -457,69 +453,13 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, baseFlagVar += linkLanguage; baseFlagVar += "_FLAGS"; flags = m_Makefile->GetRequiredDefinition(baseFlagVar.c_str()); - - std::string flagVar = baseFlagVar + "_RELEASE"; - flagsRelease += m_Makefile->GetRequiredDefinition(flagVar.c_str()); - - flagVar = baseFlagVar + "_MINSIZEREL"; - flagsMinSize += m_Makefile->GetRequiredDefinition(flagVar.c_str()); - - flagVar = baseFlagVar + "_DEBUG"; - flagsDebug += m_Makefile->GetRequiredDefinition(flagVar.c_str()); - - flagVar = baseFlagVar + "_RELWITHDEBINFO"; - flagsDebugRel += m_Makefile->GetRequiredDefinition(flagVar.c_str()); + std::string flagVar = baseFlagVar + std::string("_") + + cmSystemTools::UpperCase(configName); + flags += " "; + flags += m_Makefile->GetRequiredDefinition(flagVar.c_str()); } } - std::string programDatabase; - const char* pre = "WIN32,_DEBUG,_WINDOWS"; - // fill the flagMap for Debug, Release, MinSizeRel, and RelWithDebInfo - // also set the flags, and pre-defined macros - if(strcmp(configName, "Debug") == 0) - { - flagMap["InlineFunctionExpansion"] = "0"; - flagMap["Optimization"] = "0"; - flagMap["RuntimeLibrary"] = "3"; - flags += flagsDebug; - pre = "WIN32,_DEBUG,_WINDOWS"; - std::string libpath = m_LibraryOutputPath + - "$(OutDir)/" + libName + ".pdb"; - programDatabase = "\t\t\t\tProgramDatabaseFileName=\""; - programDatabase += libpath; - programDatabase += "\""; - } - else if (strcmp(configName, "Release") == 0) - { - flagMap["InlineFunctionExpansion"] = "1"; - flagMap["Optimization"] = "2"; - flagMap["RuntimeLibrary"] = "2"; - flags += flagsRelease; - pre = "WIN32,_WINDOWS"; - flags += flagsRelease; - } - else if(strcmp(configName, "MinSizeRel") == 0) - { - flagMap["InlineFunctionExpansion"] = "1"; - flagMap["Optimization"] = "1"; - flagMap["RuntimeLibrary"] = "2"; - pre = "WIN32,_WINDOWS"; - flags += flagsMinSize; - } - else if(strcmp(configName, "RelWithDebInfo") == 0) - { - flagMap["InlineFunctionExpansion"] = "1"; - flagMap["Optimization"] = "2"; - flagMap["RuntimeLibrary"] = "2"; - pre = "WIN32,_WINDOWS"; - flags += flagsDebugRel; - std::string libpath = m_LibraryOutputPath + - "$(OutDir)/" + libName + ".pdb"; - programDatabase = "\t\t\t\tProgramDatabaseFileName=\""; - programDatabase += libpath; - programDatabase += "\""; - } - // Add the target-specific flags. if(const char* targetFlags = target.GetProperty("COMPILE_FLAGS")) { @@ -598,7 +538,7 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, { fout << "\t\t\t\t" << m->first << "=\"" << m->second << "\"\n"; } - fout << "\t\t\t\tPreprocessorDefinitions=\"" << pre; + fout << "\t\t\t\tPreprocessorDefinitions=\""; if(target.GetType() == cmTarget::SHARED_LIBRARY || target.GetType() == cmTarget::MODULE_LIBRARY) { @@ -619,9 +559,12 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, fout << "\"\n"; fout << "\t\t\t\tAssemblerListingLocation=\"" << configName << "\"\n"; fout << "\t\t\t\tObjectFile=\"$(IntDir)\\\"\n"; - if(programDatabase.size()) - { - fout << programDatabase << "\n"; + std::map<cmStdString, cmStdString>::iterator mi = flagMap.find("DebugInformationFormat"); + if(mi != flagMap.end() && mi->second != "1") + { + fout << "\t\t\t\tProgramDatabaseFileName=\"" + << m_LibraryOutputPath + << "$(OutDir)/" << libName << ".pdb\"\n"; } fout << "/>\n"; // end of <Tool Name=VCCLCompilerTool fout << "\t\t\t<Tool\n\t\t\t\tName=\"VCCustomBuildTool\"/>\n"; @@ -634,12 +577,12 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, } // add the -D flags to the RC tool fout << "\"\n" - << "\t\t\t\tPreprocessorDefinitions=\"" << pre; + << "\t\t\t\tPreprocessorDefinitions=\""; this->OutputDefineFlags(defineFlags.c_str(), fout); fout << "\" />\n"; fout << "\t\t\t<Tool\n\t\t\t\tName=\"VCMIDLTool\"\n"; - fout << "\t\t\t\tPreprocessorDefinitions=\"" << pre; + fout << "\t\t\t\tPreprocessorDefinitions=\""; this->OutputDefineFlags(defineFlags.c_str(), fout); fout << "\"\n"; fout << "\t\t\t\tMkTypLibCompatible=\"FALSE\"\n"; |