Commit 1554265a authored by Bill Hoffman's avatar Bill Hoffman
Browse files

Remove CMakeSetup. Long live cmake-gui, start building Qt now.

parent 766f6608
......@@ -18,14 +18,9 @@ if(CPACK_GENERATOR MATCHES "NSIS")
"doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/ctest.html" "CTest Help"
"doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-modules.html" "CMake Modules Help"
"doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-commands.html" "CMake Commands Help"
"doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/CMakeSetup.html" "CMakeSetup Help"
"doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cpack.html" "CPack Help"
"http://www.cmake.org" "CMake Web Site"
)
# tell cpack the executables you want in the start menu as links
SET(CPACK_PACKAGE_EXECUTABLES "CMakeSetup" "CMakeSetup(deprecated)" )
# tell cpack to create a desktop link to CMakeSetup
SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\CMakeSetup.exe")
SET(CPACK_NSIS_DISPLAY_NAME "CMake @CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@ a cross-platform, open-source build system")
SET(CPACK_NSIS_PACKAGE_NAME "CMake @CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@")
SET(CPACK_NSIS_HELP_LINK "http://www.cmake.org")
......
......@@ -76,54 +76,11 @@ ENDMACRO(CMAKE_HANDLE_SYSTEM_LIBRARIES)
#-----------------------------------------------------------------------
# a macro to check for MFC and setup to build the MFC Dialog
# simply to improve readability of the main script
#-----------------------------------------------------------------------
MACRO(CMAKE_TEST_FOR_MFC)
SET(CMAKE_BUILD_ON_VISUAL_STUDIO 0)
IF(WIN32 AND NOT UNIX AND NOT BORLAND AND NOT MINGW )
SET(CMAKE_BUILD_ON_VISUAL_STUDIO 1)
ENDIF(WIN32 AND NOT UNIX AND NOT BORLAND AND NOT MINGW )
IF(CMAKE_BUILD_ON_VISUAL_STUDIO)
IF("CMake_HAVE_MFC" MATCHES "^CMake_HAVE_MFC$")
SET(CHECK_INCLUDE_FILE_VAR "afxwin.h")
CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx)
MESSAGE(STATUS "Looking for MFC")
TRY_COMPILE(CMake_HAVE_MFC
${CMAKE_BINARY_DIR}
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx
CMAKE_FLAGS
-DCMAKE_MFC_FLAG:STRING=2
-DCOMPILE_DEFINITIONS:STRING=-D_AFXDLL
OUTPUT_VARIABLE OUTPUT)
IF(CMake_HAVE_MFC)
MESSAGE(STATUS "Looking for MFC - found")
SET(CMake_HAVE_MFC 1 CACHE INTERNAL "Have MFC?")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
"Determining if MFC exists passed with the following output:\n"
"${OUTPUT}\n\n")
ELSE(CMake_HAVE_MFC)
MESSAGE(STATUS "Looking for MFC - not found")
SET(CMake_HAVE_MFC 0 CACHE INTERNAL "Have MFC?")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
"Determining if MFC exists failed with the following output:\n"
"${OUTPUT}\n\n")
ENDIF(CMake_HAVE_MFC)
ENDIF("CMake_HAVE_MFC" MATCHES "^CMake_HAVE_MFC$")
IF(CMake_HAVE_MFC)
OPTION(BUILD_MFCDialog "Whether to build the CMakeSetup MFC dialog." ON)
ELSE(CMake_HAVE_MFC)
SET(BUILD_MFCDialog 0)
ENDIF(CMake_HAVE_MFC)
ELSE(CMAKE_BUILD_ON_VISUAL_STUDIO)
SET(BUILD_MFCDialog 0)
ENDIF(CMAKE_BUILD_ON_VISUAL_STUDIO)
ENDMACRO(CMAKE_TEST_FOR_MFC)
SET(CMAKE_BUILD_ON_VISUAL_STUDIO 0)
IF(WIN32 AND NOT UNIX AND NOT BORLAND AND NOT MINGW )
SET(CMAKE_BUILD_ON_VISUAL_STUDIO 1)
ENDIF(WIN32 AND NOT UNIX AND NOT BORLAND AND NOT MINGW )
#-----------------------------------------------------------------------
......@@ -447,9 +404,6 @@ IF (UNIX)
ENDIF (UNIX)
# should we build the MFC dialog? (a macro defined in this file)
CMAKE_TEST_FOR_MFC()
# add the uninstall support
CONFIGURE_FILE(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
......
......@@ -469,12 +469,6 @@ IF(BUILD_CursesDialog)
INCLUDE(${CMake_SOURCE_DIR}/Source/CursesDialog/CMakeLists.txt)
ENDIF(BUILD_CursesDialog)
# MFC GUI
# MFC libraries are only available on Visual Studio
IF(BUILD_MFCDialog)
SUBDIRS(MFCDialog)
ENDIF(BUILD_MFCDialog)
# Qt GUI
OPTION(BUILD_QtDialog "Build Qt dialog for CMake" FALSE)
IF(BUILD_QtDialog)
......
// CMakeCommandLineInfo.cpp : command line arguments
//
#include "stdafx.h"
#include "CMakeCommandLineInfo.h"
#include "cmSystemTools.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
///////////////////////////////////////////////////////////////
// CMakeCommandLineInfo
CMakeCommandLineInfo::CMakeCommandLineInfo()
{
this->m_WhereSource = _T("");
this->m_WhereBuild = _T("");
this->m_AdvancedValues = FALSE;
this->m_GeneratorChoiceString = _T("");
this->m_LastUnknownParameter = _T("");
// Find the path to the CMakeSetup executable.
char fname[4096];
::GetModuleFileName(0, fname, 4096);
m_Argv0 = fname;
m_Argv.push_back(m_Argv0.c_str());
}
CMakeCommandLineInfo::~CMakeCommandLineInfo()
{
}
int CMakeCommandLineInfo::GetBoolValue(const CString& v) {
CString value = v;
value.MakeLower();
if (value == "1" ||
value == "on" ||
value == "true" ||
value == "yes")
{
return 1;
}
else if (value == "0" ||
value == "off" ||
value == "false" ||
value == "no")
{
return -1;
}
return 0;
}
///////////////////////////////////////////////////////////////
// Parse param
void CMakeCommandLineInfo::ParseParam(LPCTSTR lpszParam, BOOL bFlag, BOOL bLast)
{
// Construct the full name of the argument.
cmStdString param = lpszParam;
cmStdString value;
if(bFlag)
{
// Since bFlag is set, either a - or a / was removed from the
// parameter value. Assume it was a - unless the second character
// was a / which indicates a network path argument.
if(param.length() > 0 && param[0] == '/')
{
value = "/";
}
else
{
value = "-";
}
}
value += param;
// Add the argument and reset the argv table in case strings were
// moved.
m_Arguments.push_back(value);
m_Argv.clear();
m_Argv.push_back(m_Argv0.c_str());
for(unsigned int i=0; i < m_Arguments.size(); ++i)
{
m_Argv.push_back(m_Arguments[i].c_str());
}
// Look for known flags.
if(!bFlag)
{
this->m_LastUnknownParameter = lpszParam;
}
else
{
CString sParam(lpszParam);
// Single letter valued flag like /B=value or /B:value
CString value;
if (sParam[1] == '=' || sParam[1] == ':')
{
value = sParam.Right(sParam.GetLength() - 2);
}
else
{
value = sParam.Right(sParam.GetLength()-1);
}
int res;
switch (sParam[0])
{
case 'A':
res = CMakeCommandLineInfo::GetBoolValue(value);
if (res == 1)
{
this->m_AdvancedValues = TRUE;
}
else if (res == -1)
{
this->m_AdvancedValues = FALSE;
}
break;
case 'B':
{
std::string path = cmSystemTools::CollapseFullPath((const char*)value);
this->m_WhereBuild = path.c_str();
break;
}
case 'G':
this->m_GeneratorChoiceString = value;
break;
case 'H':
{
std::string path = cmSystemTools::CollapseFullPath((const char*)value);
this->m_WhereSource = path.c_str();
break;
}
}
}
// Call the base class to ensure proper command line processing
CCommandLineInfo::ParseParam(lpszParam, bFlag, bLast);
}
/*=========================================================================
Program: CMake - Cross-Platform Makefile Generator
Module: $RCSfile$
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
// CMakeCommandLineInfo.h : main header file for the command line arguments
//
#if !defined(CMAKECOMMANDLINEINFO_H)
#define CMAKECOMMANDLINEINFO_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "../cmStandardIncludes.h"
///////////////////////////////////////////////////////////////
// CMakeCommandLineInfo:
// See CMakeCommandLineInfo.cpp for the implementation of this class
//
class CMakeCommandLineInfo : public CCommandLineInfo
{
// Construction
public:
CMakeCommandLineInfo();
// Attributes
public:
CString m_WhereSource;
CString m_WhereBuild;
BOOL m_AdvancedValues;
CString m_GeneratorChoiceString;
CString m_LastUnknownParameter;
int GetArgC() { return static_cast<int>(m_Argv.size()); }
const char*const* GetArgV() { return &*m_Argv.begin(); }
std::string m_Argv0;
std::vector<cmStdString> m_Arguments;
std::vector<const char*> m_Argv;
// Operations
public:
void ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast);
// Implementation
public:
virtual ~CMakeCommandLineInfo();
protected:
static int GetBoolValue(const CString&);
};
#endif // !defined(CMAKECOMMANDLINEINFO_H)
// CMakeGenDialog.cpp : implementation file
//
#include "stdafx.h"
#include "CMakeSetup.h"
#include "CMakeGenDialog.h"
#include "../cmake.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCMakeGenDialog dialog
CCMakeGenDialog::CCMakeGenDialog(CWnd* pParent /*=NULL*/)
: CDialog(CCMakeGenDialog::IDD, pParent)
{
//{{AFX_DATA_INIT(CCMakeGenDialog)
//}}AFX_DATA_INIT
}
void CCMakeGenDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCMakeGenDialog)
DDX_Control(pDX, IDC_BuildForLabel, m_BuildForLabel);
DDX_Control(pDX, IDC_Generator, m_GeneratorChoice);
DDX_CBStringExact(pDX, IDC_Generator, m_GeneratorChoiceString);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCMakeGenDialog, CDialog)
//{{AFX_MSG_MAP(CCMakeGenDialog)
// NOTE: the ClassWizard will add message map macros here
ON_CBN_EDITCHANGE(IDC_Generator, OnEditchangeGenerator)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCMakeGenDialog message handler
void CCMakeGenDialog::OnEditchangeGenerator()
{
// TODO: Add your control notification handler code here
}
BOOL CCMakeGenDialog::OnInitDialog()
{
CDialog::OnInitDialog();
std::vector<std::string> names;
this->m_CMakeInstance->GetRegisteredGenerators(names);
for(std::vector<std::string>::iterator i = names.begin();
i != names.end(); ++i)
{
m_GeneratorChoice.AddString(i->c_str());
}
// we want to pick the best generator for their system first we check to
// see if they have run cmake before, if so we use that generator
std::string mp;
bool done = false;
// is the last generator set? If so use it
mp = "[HKEY_CURRENT_USER\\Software\\Kitware"
"\\CMakeSetup\\Settings\\StartPath;LastGenerator]";
cmSystemTools::ExpandRegistryValues(mp);
if(mp != "/registry")
{
m_GeneratorChoiceString = mp.c_str();
done = true;
}
struct regToGen
{
const char* Registry;
const char* GeneratorName;
};
regToGen installedGenerators[] = {
// VS 9
{ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft"
"\\VisualStudio\\9.0\\Setup;Dbghelp_path]", "Visual Studio 9 2008"},
// VS 8
{ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft"
"\\VisualStudio\\8.0\\Setup;Dbghelp_path]", "Visual Studio 8 2005"},
// VS 7.1
{"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft"
"\\VisualStudio\\7.1;InstallDir]", "Visual Studio 7 .NET 2003"},
// VS 7
{"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft"
"\\VisualStudio\\7.0;InstallDir]", "Visual Studio 7"},
{0,0}
};
for(regToGen* ptr = installedGenerators; ptr->Registry != 0 && !done; ptr++)
{
mp = ptr->Registry;
cmSystemTools::ExpandRegistryValues(mp);
if(mp != "/registry")
{
m_GeneratorChoiceString = ptr->GeneratorName;
done = true;
}
}
// if still not done just guess on VS 6
if (!done)
{
m_GeneratorChoiceString = "Visual Studio 6";
}
this->UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
/*=========================================================================
Program: CMake - Cross-Platform Makefile Generator
Module: $RCSfile$
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#if !defined(CMAKE_GEN_DIALOG_INCLUDED)
#define CMAKE_GEN_DIALOG_INCLUDED
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// CMakeGenDialog.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CCMakeGenDialog dialog
class cmake;
class CCMakeGenDialog : public CDialog
{
// Construction
public:
CCMakeGenDialog(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CCMakeGenDialog)
enum { IDD = IDD_GEN_DIALOG };
CStatic m_BuildForLabel;
CComboBox m_GeneratorChoice;
CString m_GeneratorChoiceString;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCMakeGenDialog)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CCMakeGenDialog)
virtual BOOL OnInitDialog();
afx_msg void OnEditchangeGenerator();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
cmake *m_CMakeInstance;
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif
SET( SRCS
CMakeSetup.h
CMakeSetup.cpp
MakeHelp.h
MakeHelp.cpp
CMakeGenDialog.h
CMakeGenDialog.cpp
CMakeSetup.rc
CMakeSetupDialog.h
CMakeSetupDialog.cpp
PathDialog.h
PathDialog.cpp
PropertyList.cpp
StdAfx.h
StdAfx.cpp
resource.h
CMakeCommandLineInfo.cpp
)
# add stuff to use MFC in this executable
ADD_DEFINITIONS(-D_AFXDLL)
# Use of CMAKE_MFC_FLAG
# Values:
# 0: Use Standard Windows Libraries
# 1: Use MFC in a Static Library
# 2: Use MFC in a Shared DLL
SET(CMAKE_MFC_FLAG 2)
ADD_EXECUTABLE(CMakeSetup WIN32 ${SRCS})
TARGET_LINK_LIBRARIES(CMakeSetup CMakeLib)
ADD_DEPENDENCIES(CMakeSetup cmake)
# some older versions of cmake do not have
# a patch version set so we need to set it
# so that a later if will not fail, this has
# to be done all the time for all generators
# since if statements are evaluated even if
# inside a false if, they must still parse so for
# if (CMAKE_PATCH_VERSION GREATER 4) not to
# fail CMAKE_PATCH_VERSION must be set
IF(${CMAKE_MAJOR_VERSION} LESS 3)
IF(NOT DEFINED CMAKE_PATCH_VERSION)
SET(CMAKE_PATCH_VERSION 0)
ENDIF(NOT DEFINED CMAKE_PATCH_VERSION)
ENDIF(${CMAKE_MAJOR_VERSION} LESS 3)
# for MSVC greater than 71 assume mt is around
# for other versions allow for the cache to be
# seeded with a value for CMAKE_MT_EXECUTABLE
# this allows for MSVC71 to build CMakeSetup that
# will have the manifest stuff for windows vista
IF(MSVC AND NOT MSVC60 AND NOT MSVC70 AND NOT MSVC71)
SET(CMAKE_MT_EXECUTABLE mt)
ENDIF(MSVC AND NOT MSVC60 AND NOT MSVC70 AND NOT MSVC71)
IF(CMAKE_MT_EXECUTABLE)
SET(exe "${CMAKE_CFG_INTDIR}/CMakeSetup.exe")
IF(EXECUTABLE_OUTPUT_PATH)
SET(exe "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/CMakeSetup.exe")
ENDIF(EXECUTABLE_OUTPUT_PATH)
# VERBATIM flag should be avoided if building with Visual Studio.
# (OK to add the flag if ${CMAKE_CFG_INTDIR} is "." which is one
# indicator that you are not building with Visual Studio.)
#
SET(verbatim_flag)
IF(NOT CMAKE_CONFIGURATION_TYPES)
# VERBATIM flag should also be avoided if using an older CMake.
# VERBATIM flag support was added in CMake 2.4.5
#
IF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} EQUAL 2.4)
IF(${CMAKE_PATCH_VERSION} GREATER 4)
SET(verbatim_flag "VERBATIM")
ENDIF(${CMAKE_PATCH_VERSION} GREATER 4)
ENDIF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} EQUAL 2.4)
IF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4)
SET(verbatim_flag "VERBATIM")
ENDIF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4)
IF(NOT verbatim_flag)
MESSAGE("${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): warning
warning: The VERBATIM flag for ADD_CUSTOM_COMMAND may be required to execute mt correctly,
but you are using a CMake ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} which does not parse the VERBATIM flag.
Upgrade to CMake 2.4.5 or later to eliminate this warning.")
ENDIF(NOT verbatim_flag)
ENDIF(NOT CMAKE_CONFIGURATION_TYPES)
SET(_CMAKE_INPUT_RESOURCE "-inputresource:${exe};#1")
# if msvc71 then you can not replace the resource
# but you can add one, so set the input resource to empty
IF(MSVC71)
SET(_CMAKE_INPUT_RESOURCE )
ENDIF(MSVC71)
# Solve the "things named like *Setup prompt for admin privileges
# on Vista" problem by merging a manifest fragment that contains a
# requestedExecutionLevel element:
#
ADD_CUSTOM_COMMAND(TARGET CMakeSetup
POST_BUILD COMMAND mt
"${_CMAKE_INPUT_RESOURCE}"
-manifest "${CMAKE_CURRENT_SOURCE_DIR}/CMakeSetupManifest.xml"
"-outputresource:${exe};#1"
${verbatim_flag}